packages feed

bullet 0.1.1 → 0.2.1

raw patch · 296 files changed

+116688/−1237 lines, 296 filesdep +vect

Dependencies added: vect

Files

− Examples/BulletExample.hs
@@ -1,338 +0,0 @@-import Control.Monad-import Control.Concurrent.MVar-import System.Exit-import Graphics.UI.GLUT-import Graphics.Rendering.OpenGL-import Graphics.Rendering.OpenGL.GL.CoordTrans-import Unsafe.Coerce -- because realToFrac just doesn't cut it...--import Physics.Bullet-import Foreign hiding (rotate)--timerFrequencyMillis  ::  Timeout-timerFrequencyMillis  =   1--data BCube = BCube (GLfloat,GLfloat,GLfloat,PlRigidBodyHandle,(GLfloat,GLfloat,GLfloat,GLfloat))--data State = State {-      dworld     ::  PlDynamicsWorldHandle,-      cubes      ::  [BCube],-      viewAngle  ::  MVar GLfloat,-      viewHeight ::  MVar GLfloat,-      paused     ::  MVar Bool-    }--createBCube dw ((x,y,z), (w,h,d), m, col) = do-  shape <- plNewBoxShape w h d-  b <- plCreateRigidBody Foreign.nullPtr m shape-  plAddRigidBody dw b-  plSetPosition b (x,y,z)-  return $ BCube (unsafeCoerce w,unsafeCoerce h,unsafeCoerce d,b,col)--lightPosition = Vertex4 5 20 10 0--lightPositionDeltas = map calcDelta [0..lightSteps-1]-    where  Vertex4 lxo lyo lzo _ = lightPosition-           calcDelta l = (lightSize*(lx1*sin ll+lx2*cos ll),-                          lightSize*(ly1*sin ll+ly2*cos ll),-                          lightSize*(lz1*sin ll+lz2*cos ll))-               where  ll = 2*pi*l/lightSteps-                      ll1 = sqrt (lxo*lxo+lzo*lzo)-                      (lx1,ly1,lz1) = (lzo/ll1,0,-lxo/ll1)-                      ll2 = sqrt (lxo*lxo*lyo*lyo+(lxo*lxo+lzo*lzo)*(lxo*lxo+lzo*lzo)+lzo*lzo*lyo*lyo)-                      (lx2,ly2,lz2) = (-lxo*lyo/ll2,(lxo*lxo+lzo*lzo)/ll2,-lzo*lyo/ll2)--lightSteps = 8-lightSize = 0.3--camDistance = 8--makeState  ::  IO State-makeState  =   do-  sdk <- plNewBulletSdk-  dw <- plCreateDynamicsWorld sdk-  ang <- newMVar 0-  h <- newMVar (-6)-  p <- newMVar False--  -- set up bullet scene-  cs <- mapM (createBCube dw) $ [-             ((0,-0.1,0), (50.0,0.1,50.0), 0, (0.9,0.9,0.9,1)),-             ((4,15,-0.5), (1,1,1), 10, blue)-             ]-               ++ map (\x -> ((-5+x*0.5,0.5+10-abs(x-10),0), (0.5,0.5,0.5), 1, green)) [0..20]-               ++ map (\x -> let h = min 4.5 (5-abs(x-5)) in ((-5+x,h,0), (0.1,h,0.1), 2, yellow)) [1..9]--  return $ State {-               dworld = dw,-               cubes = cs,-               viewAngle = ang,-               viewHeight = h,-               paused = p-             }--    where  green = (0,1,0,1)-           yellow = (1,1,0,1)-           blue = (0,0,1,1)--display        ::  State -> DisplayCallback-display state  =   do-  loadIdentity-  height <- readMVar $ viewHeight state-  rotate (-atan ((height+3)/camDistance)*180/pi) (Vector3 1 0 (0 :: GLfloat))-  translate (Vector3 0 height (-camDistance))-  angle <- readMVar $ viewAngle state-  rotate angle (Vector3 0 1 0)--  scale (1 :: GLfloat) 1 1--  position (Light 0) $= lightPosition--  let cs = cubes state--  -- draw fully lit scene-  clear [ColorBuffer, DepthBuffer]-  cullFace $= Just Back--  forM_ cs $ \(BCube (w,h,d,body,(r,g,b,a))) -> do-    materialDiffuse Front $= Color4 r g b a-    preservingMatrix $ do-      -- get position and orientation of body-      (e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,eA,eB,eC,eD,eE,eF) <- plGetOpenGLMatrix body-      let f = unsafeCoerce-      m <- newMatrix ColumnMajor $ [f e0,f e1,f e2,f e3,f e4,f e5,f e6,f e7,f e8,f e9,f eA,f eB,f eC,f eD,f eE,f eF]-      -- set position and orientation of gl modelview matrix-      multMatrix (m :: GLmatrix GLfloat)-      drawCube w h d--  -- settings needed for casting-  depthMask $= Disabled-  stencilTest $= Enabled--  forM_ lightPositionDeltas $ \lpd -> do-    -- generate shadow volumes (note that they are open-ended!)-    svs <- forM (tail cs) $ \(BCube (w,h,d,body,_)) -> do-      (px,py,pz) <- plGetPosition body-      (ox,oy,oz,ow) <- plGetOrientation body-      return $ (body, cubeShadow lpd (-unsafeCoerce px,-unsafeCoerce py,-unsafeCoerce pz) (unsafeCoerce ow,-unsafeCoerce ox,-unsafeCoerce oy,-unsafeCoerce oz) w h d)--    renderShadows svs--  -- restore settings-  stencilTest $= Disabled-  depthMask $= Enabled--  flush-  swapBuffers--renderShadows svs = do-  -- increment stencil for the front faces of shadow volumes-  lighting $= Disabled-  colorMask $= Color4 Disabled Disabled Disabled Disabled-  stencilFunc $= (Always, 0, 0)-  stencilOp $= (OpKeep, OpKeep, OpIncrWrap)-  drawShadowVolumes svs--  -- decrement stencil for the back faces of shadow volumes-  cullFace $= Just Front-  stencilOp $= (OpKeep, OpKeep, OpDecrWrap)-  drawShadowVolumes svs--  -- apply shadow using the stencil buffer-  colorMask $= Color4 Enabled Enabled Enabled Enabled-  depthFunc $= Just Less-  stencilOp $= (OpZero, OpZero, OpZero)-  stencilFunc $= (Less, 0, 0xffffffff)-  lighting $= Enabled-  cullFace $= Just Back-  blend $= Enabled-  blendFunc $= (SrcAlpha, OneMinusSrcAlpha)--  materialDiffuse Front $= Color4 0 0 0 (0.4/lightSteps)-  preservingMatrix $ do-    loadIdentity-    renderPrimitive TriangleStrip $ do-      vertex $ Vertex3 (-10)   10  (-1 :: GLfloat)-      vertex $ Vertex3 (-10) (-10) (-1 :: GLfloat)-      vertex $ Vertex3   10    10  (-1 :: GLfloat)-      vertex $ Vertex3   10  (-10) (-1 :: GLfloat)--  blend $= Disabled--drawShadowVolumes svs =-  forM_ svs $ \(body,vs) -> do-    preservingMatrix $ do-      -- get position and orientation of body-      (e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,eA,eB,eC,eD,eE,eF) <- plGetOpenGLMatrix body-      let f = unsafeCoerce-      m <- newMatrix ColumnMajor $ [f e0,f e1,f e2,f e3,f e4,f e5,f e6,f e7,f e8,f e9,f eA,f eB,f eC,f eD,f eE,f eF]-      -- set position and orientation of gl modelview matrix-      multMatrix (m :: GLmatrix GLfloat)-      renderPrimitive Quads $ forM_ vs $ \(p1,p2,p3,p4) -> do-        vertex p1-        vertex p2-        vertex p3-        vertex p4--keyboard                            ::  State -> KeyboardMouseCallback-keyboard state key keyState mods _  =   do-  case (key, keyState) of-    (Char 'q', Down) -> exitWith ExitSuccess-    (Char '\27', Down) -> exitWith ExitSuccess-    --(Char 't', Down) -> modelCycle state $~ tail-    --(SpecialKey KeyHome, Down) -> resetState state-    (SpecialKey KeyLeft, Down) -> do-                       angle <- takeMVar $ viewAngle state-                       putMVar (viewAngle state) (angle+2)-    (SpecialKey KeyRight, Down) -> do-                       angle <- takeMVar $ viewAngle state-                       putMVar (viewAngle state) (angle-2)-    (SpecialKey KeyUp, Down) -> do-                       height <- takeMVar $ viewHeight state-                       putMVar (viewHeight state) (height-0.2)-    (SpecialKey KeyDown, Down) -> do-                       height <- takeMVar $ viewHeight state-                       putMVar (viewHeight state) (height+0.2)-    (Char 'p', Down) -> do-                       isPaused <- takeMVar $ paused state-                       putMVar (paused state) (not isPaused)-    (_, _) -> return ()--reshape                  ::  ReshapeCallback-reshape size@(Size w h)  =   do-  let  vp = 0.8-       aspect = fromIntegral w / fromIntegral h--  viewport $= (Position 0 0, size)--  matrixMode $= Projection-  loadIdentity-  frustum (-vp) vp (-vp / aspect) (vp / aspect) 1 1000--  matrixMode $= Modelview 0-  loadIdentity-  translate (Vector3 0 0 (-5 :: GLfloat))--timer        ::  State -> TimerCallback-timer state  =   do-  addTimerCallback timerFrequencyMillis (timer state)-  isPaused <- readMVar $ paused state-  when (not isPaused) $ plStepSimulation (dworld state) (fromIntegral(timerFrequencyMillis))-  postRedisplay Nothing--drawFace            ::  Normal3 GLfloat -> Vertex3 GLfloat -> Vertex3 GLfloat-                        -> Vertex3 GLfloat -> Vertex3 GLfloat -> IO ()-drawFace p q r s t  =   do-  let texCoord2f = texCoord :: TexCoord2 GLfloat -> IO ()-  normal p-  texCoord2f (TexCoord2 1 1)-  vertex q-  texCoord2f (TexCoord2 0 1)-  vertex r-  texCoord2f (TexCoord2 0 0)-  vertex s-  texCoord2f (TexCoord2 1 0)-  vertex t--drawCube                    ::  GLfloat -> GLfloat -> GLfloat -> IO ()-drawCube sx sy sz  =   do-  let  a = Vertex3   sx    sy    sz-       b = Vertex3   sx    sy  (-sz)-       c = Vertex3   sx  (-sy) (-sz)-       d = Vertex3   sx  (-sy)   sz-       e = Vertex3 (-sx)   sy    sz-       f = Vertex3 (-sx)   sy  (-sz)-       g = Vertex3 (-sx) (-sy) (-sz)-       h = Vertex3 (-sx) (-sy)   sz--       i = Normal3   1    0    0-       k = Normal3 (-1)   0    0-       l = Normal3   0    0  (-1)-       m = Normal3   0    0    1-       n = Normal3   0    1    0-       o = Normal3   0  (-1)   0--  renderPrimitive Quads $ do-    drawFace i d c b a-    drawFace k g h e f-    drawFace l c g f b-    drawFace m h d a e-    drawFace n e a b f-    drawFace o g c d h--cubeShadow (ldx,ldy,ldz) (x,y,z) (a,b,c,d) sx sy sz =-    map shadowFace $ filter shouldCast edges-    where  [oxx,oxy,oxz,oyx,oyy,oyz,ozx,ozy,ozz] =-               [a*a+b*b-c*c-d*d, 2*(b*c-a*d), 2*(a*c+b*d),-                2*(a*d+b*c), a*a-b*b+c*c-d*d, 2*(c*d-a*b),-                2*(b*d-a*c), 2*(a*b+c*d), a*a-b*b-c*c+d*d]--           Vertex4 lxo lyo lzo _ = lightPosition-           (lxt,lyt,lzt) = (lxo+ldx+x,lyo+ldy+y,lzo+ldz+z)-           (lx,ly,lz) = (lxt*oxx+lyt*oxy+lzt*oxz,-                         lxt*oyx+lyt*oyy+lzt*oyz,-                         lxt*ozx+lyt*ozy+lzt*ozz)--           ni = lx > sx-           nk = lx < (-sx)-           nl = lz < (-sz)-           nm = lz > sz-           nn = ly > sy-           no = ly < (-sy)--           va = ( sx, sy, sz)-           vb = ( sx, sy,-sz)-           vc = ( sx,-sy,-sz)-           vd = ( sx,-sy, sz)-           ve = (-sx, sy, sz)-           vf = (-sx, sy,-sz)-           vg = (-sx,-sy,-sz)-           vh = (-sx,-sy, sz)--           edges = [(vd,vc,ni,no),(vc,vb,ni,nl),(vb,va,ni,nn),(va,vd,ni,nm),-                    (vg,vh,nk,no),(vf,vg,nk,nl),(ve,vf,nk,nn),(vh,ve,nk,nm),-                    (vc,vg,nl,no),(vf,vb,nl,nn),(vh,vd,nm,no),(va,ve,nm,nn)]--           shouldCast (_,_,c1,c2) = (c1 && (not c2)) || (c2 && (not c1))--           shadowFace ((v1x,v1y,v1z),(v2x,v2y,v2z),n1,n2) =-               if n2 then-                      (Vertex3 v1x v1y v1z, Vertex3 v2x v2y v2z,-                       Vertex3 v3x v3y v3z, Vertex3 v4x v4y v4z)-               else-                      (Vertex3 v4x v4y v4z, Vertex3 v3x v3y v3z,-                       Vertex3 v2x v2y v2z, Vertex3 v1x v1y v1z)-               where  ss = 1000-                      v3x = v2x+(v2x-lx)*ss-                      v3y = v2y+(v2y-ly)*ss-                      v3z = v2z+(v2z-lz)*ss-                      v4x = v1x+(v1x-lx)*ss-                      v4y = v1y+(v1y-ly)*ss-                      v4z = v1z+(v1z-lz)*ss---main = do-  getArgsAndInitialize-  initialDisplayMode $= [RGBMode, WithDepthBuffer, WithStencilBuffer, DoubleBuffered, Multisampling]-  initialWindowSize $= Size 800 800-  createWindow "Bullet Example"--  state <- makeState-  displayCallback $= display state-  keyboardMouseCallback $= Just (keyboard state)-  reshapeCallback $= Just reshape-  addTimerCallback timerFrequencyMillis (timer state)--  materialDiffuse Front $= Color4 1 0.3 0.2 1-  materialSpecular Front $= Color4 0.3 0.3 0.3 1-  materialShininess Front $= 16-  lighting $= Enabled-  light (Light 0) $= Enabled--  depthFunc $= Just Less-  clearColor $= Color4 0.0 0.0 0.0 1--  clear [StencilBuffer]--  mainLoop-
− Examples/bullet-example-1.png

binary file changed (28784 → absent bytes)

− Examples/bullet-example-2.png

binary file changed (29785 → absent bytes)

LICENSE view
@@ -1,4 +1,4 @@-Copyright (c) 2009, Csaba Hruska+Copyright (c) 2009-2011, Csaba Hruska All rights reserved.  Redistribution and use in source and binary forms, with or without
− Physics/Bullet.hs
@@ -1,258 +0,0 @@-{-# CFILES cbits/bullet.c #-}  -- for Hugs (?)-module Physics.Bullet (-    PlQuaternion, PlVector3, PlRayCastResult, PlMatrix,-    PlPhysicsSdkHandle, PlDynamicsWorldHandle, PlRigidBodyHandle, PlUserDataHandle, PlCollisionShapeHandle, PlMeshInterfaceHandle,-    plNewBulletSdk, plDeletePhysicsSdk,---	plCreateSapBroadphase, plDestroyBroadphase,---	plCreateProxy, plDestroyProxy, plSetBoundingBox,---	plCreateCollisionWorld,-    plCreateDynamicsWorld, plDeleteDynamicsWorld, plStepSimulation, plAddRigidBody, plRemoveRigidBody,-    plCreateRigidBody, plDeleteRigidBody,-    plNewSphereShape, plNewBoxShape, plNewCapsuleShape, plNewConeShape, plNewCylinderShape, plNewCompoundShape,--    plAddChildShape, plDeleteShape, plNewConvexHullShape, plAddVertex, plNewMeshInterface,-	plAddTriangle, plNewStaticTriangleMeshShape,plNewGimpactTriangleMeshShape,plNewConvexTriangleMeshShape,-    plSetScaling, plGetOpenGLMatrix, plGetPosition, plGetOrientation, plSetPosition, plSetOrientation, plSetEuler---	plRayCast--) where--import Foreign-import Foreign.C.Types-import Foreign.Marshal.Array-{--typedef float 	plVector3[3];-typedef float 	plQuaternion[4];-typedef float 	plVehicleTuning[5];--typedef struct plRayCastResult {-	plRigidBodyHandle		m_body;  -	plCollisionShapeHandle	m_shape; 		-	plVector3				m_positionWorld; 		-	plVector3				m_normalWorld;-} plRayCastResult;--}---plRayCastResult---type PlRayCastResult = Ptr ()-data PlRayCastResult_ = PlRayCastResult_ PlRigidBodyHandle PlCollisionShapeHandle PlVector3 PlVector3-type PlRayCastResult = Ptr PlRayCastResult_--type PlQuaternion = Ptr CFloat--type PlVector3 = Ptr CFloat--type PlMatrix = Ptr CFloat--type PlVehicleTuning = Ptr CFloat--------------------------------------------data PlPhysicsSdk = PlPhysicsSdk-type PlPhysicsSdkHandle = Ptr PlPhysicsSdk--data PlDynamicsWorld = PlDynamicsWorld-type PlDynamicsWorldHandle = Ptr PlDynamicsWorld--data PlRigidBody = PlRigidBody-type PlRigidBodyHandle = Ptr PlRigidBody--type PlUserDataHandle = Ptr ()--data PlCollisionShape = PlCollisionShape-type PlCollisionShapeHandle = Ptr PlCollisionShape--data PlMeshInterface = PlMeshInterface-type PlMeshInterfaceHandle = Ptr PlMeshInterface--foreign import ccall unsafe "plNewBulletSdk"                plNewBulletSdk                  :: IO PlPhysicsSdkHandle-foreign import ccall unsafe "plDeletePhysicsSdk"		    plDeletePhysicsSdk              :: PlPhysicsSdkHandle -> IO ()---foreign import ccall "plCreateSapBroadphase"              plCreateSapBroadphase           :: Ptr a -> Ptr a -> IO (Ptr a)---foreign import ccall "plDestroyBroadphase"                plDestroyBroadphase             :: Ptr a -> IO()---foreign import ccall "plCreateProxy"                      plCreateProxy                   :: Ptr a -> Ptr a -> CCFloat -> CCFloat -> CCFloat -> CCFloat -> CCFloat -> CCFloat -> IO( Ptr a )---foreign import ccall "plDestroyProxy"                     plDestroyProxy                  :: Ptr a -> Ptr a -> IO()---foreign import ccall "plSetBoundingBox"                   plSetBoundingBox                :: Ptr a -> CCFloat -> CCFloat -> CCFloat -> CCFloat -> CCFloat -> CCFloat -> IO()---foreign import ccall "plCreateCollisionWorld"             plCreateCollisionWorld          :: Ptr a -> IO( Ptr a )-foreign import ccall unsafe "plCreateDynamicsWorld"         plCreateDynamicsWorld           :: PlPhysicsSdkHandle -> IO PlDynamicsWorldHandle-foreign import ccall unsafe "plDeleteDynamicsWorld"         plDeleteDynamicsWorld           :: PlDynamicsWorldHandle -> IO ()-foreign import ccall unsafe "plStepSimulation"              plStepSimulation                :: PlDynamicsWorldHandle -> CFloat -> IO ()-foreign import ccall unsafe "plAddRigidBody"                plAddRigidBody                  :: PlDynamicsWorldHandle -> PlRigidBodyHandle -> IO ()-foreign import ccall unsafe "plRemoveRigidBody"             plRemoveRigidBody               :: PlDynamicsWorldHandle -> PlRigidBodyHandle -> IO ()-foreign import ccall unsafe "plCreateRigidBody"             plCreateRigidBody               :: PlUserDataHandle -> CFloat -> PlCollisionShapeHandle -> IO PlRigidBodyHandle-foreign import ccall unsafe "plDeleteRigidBody"             plDeleteRigidBody               :: PlRigidBodyHandle -> IO ()-foreign import ccall unsafe "plNewSphereShape"              plNewSphereShape                :: CFloat -> IO PlCollisionShapeHandle-foreign import ccall unsafe "plNewBoxShape"                 plNewBoxShape                   :: CFloat -> CFloat -> CFloat -> IO PlCollisionShapeHandle-foreign import ccall unsafe "plNewCapsuleShape"             plNewCapsuleShape               :: CFloat -> CFloat -> IO PlCollisionShapeHandle-foreign import ccall unsafe "plNewConeShape"                plNewConeShape                  :: CFloat -> CFloat -> IO PlCollisionShapeHandle-foreign import ccall unsafe "plNewCylinderShape"            plNewCylinderShape              :: CFloat -> CFloat -> IO PlCollisionShapeHandle-foreign import ccall unsafe "plNewCompoundShape"            plNewCompoundShape              :: IO PlCollisionShapeHandle-foreign import ccall unsafe "plAddChildShape"               plAddChildShape_                :: PlCollisionShapeHandle -> PlCollisionShapeHandle -> PlVector3 -> PlQuaternion -> IO ()-foreign import ccall unsafe "plDeleteShape"                 plDeleteShape                   :: PlCollisionShapeHandle -> IO ()-foreign import ccall unsafe "plNewConvexHullShape"          plNewConvexHullShape            :: Ptr CFloat -> Int -> Int -> IO PlCollisionShapeHandle--foreign import ccall unsafe "plAddVertex"                   plAddVertex                     :: PlCollisionShapeHandle -> CFloat -> CFloat -> CFloat -> IO ()--foreign import ccall unsafe "plNewMeshInterface"            plNewMeshInterface              :: IO PlMeshInterfaceHandle-foreign import ccall unsafe "plAddTriangle"                 plAddTriangle_                  :: PlMeshInterfaceHandle -> PlVector3 -> PlVector3 -> PlVector3 -> Int -> IO ()-foreign import ccall unsafe "plNewStaticTriangleMeshShape"  plNewStaticTriangleMeshShape    :: PlMeshInterfaceHandle -> IO PlCollisionShapeHandle-foreign import ccall unsafe "plNewGimpactTriangleMeshShape" plNewGimpactTriangleMeshShape   :: PlMeshInterfaceHandle -> IO PlCollisionShapeHandle-foreign import ccall unsafe "plNewConvexTriangleMeshShape"  plNewConvexTriangleMeshShape    :: PlMeshInterfaceHandle -> IO PlCollisionShapeHandle--foreign import ccall unsafe "plSetScaling"                  plSetScaling_                   :: PlCollisionShapeHandle -> PlVector3 -> IO ()-foreign import ccall unsafe "plGetOpenGLMatrix"             plGetOpenGLMatrix_              :: PlRigidBodyHandle -> PlMatrix -> IO ()-foreign import ccall unsafe "plGetPosition"                 plGetPosition_                  :: PlRigidBodyHandle -> PlVector3 -> IO ()-foreign import ccall unsafe "plGetOrientation"              plGetOrientation_               :: PlRigidBodyHandle -> PlQuaternion -> IO ()-foreign import ccall unsafe "plSetPosition"                 plSetPosition_                  :: PlRigidBodyHandle -> PlVector3 -> IO ()-foreign import ccall unsafe "plSetOrientation"              plSetOrientation_               :: PlRigidBodyHandle -> PlQuaternion -> IO ()-foreign import ccall unsafe "plSetEuler"                    plSetEuler                      :: CFloat -> CFloat -> CFloat -> PlQuaternion -> IO ()-foreign import ccall unsafe "plRayCast"                     plRayCast                       :: PlDynamicsWorldHandle -> PlVector3 -> PlVector3 -> PlRayCastResult -> IO Int---- TODO : new functions-{--plCreateRaycastVehicle :: PlVehicleTuning -> PlRigidBodyHandle -> IO PlRaycastVehicleHandle-plAddVehicle :: PlDynamicsWorldHandle -> PlRaycastVehicleHandle -> IO ()-plSetCoordinateSystem :: PlRaycastVehicleHandle -> Int -> Int -> Int -> IO ()-plAddWheel :: PlCFloat3 -> PlCFloat3 -> PlCFloat3 -> CFloat -> CFloat -> PlCFloat5 -> Bool -> IO (wheelinfo ????)---	btRaycastVehicle::btVehicleTuning	m_tuning;-	btVehicleRaycaster*	m_vehicleRayCaster;-	btRaycastVehicle*	m_vehicle;-	btCollisionShape*	m_wheelShape;--	btWheelInfo&	addWheel( const btVector3& connectionPointCS0, const btVector3& wheelDirectionCS0,const btVector3& wheelAxleCS,btScalar suspensionRestLength,btScalar wheelRadius,const btVehicleTuning& tuning, bool isFrontWheel);--	class btVehicleTuning-		{-			public:--			btVehicleTuning()-				:m_suspensionStiffness(btScalar(5.88)),-				m_suspensionCompression(btScalar(0.83)),-				m_suspensionDamping(btScalar(0.88)),-				m_maxSuspensionTravelCm(btScalar(500.)),-				m_frictionSlip(btScalar(10.5))-			{-			}-			btScalar	m_suspensionStiffness;-			btScalar	m_suspensionCompression;-			btScalar	m_suspensionDamping;-			btScalar	m_maxSuspensionTravelCm;-			btScalar	m_frictionSlip;--		};--}---- more nice wrappers-plGetOpenGLMatrix body =-    allocaArray 16 f-  where-    f p = do-        plGetOpenGLMatrix_ body p-        e0 <- peekElemOff p 0-        e1 <- peekElemOff p 1-        e2 <- peekElemOff p 2-        e3 <- peekElemOff p 3-        e4 <- peekElemOff p 4-        e5 <- peekElemOff p 5-        e6 <- peekElemOff p 6-        e7 <- peekElemOff p 7-        e8 <- peekElemOff p 8-        e9 <- peekElemOff p 9-        eA <- peekElemOff p 10-        eB <- peekElemOff p 11-        eC <- peekElemOff p 12-        eD <- peekElemOff p 13-        eE <- peekElemOff p 14-        eF <- peekElemOff p 15-        return (e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,eA,eB,eC,eD,eE,eF)-        --mapM (peekElemOff m) [0..15]--packCFloat3 p (x,y,z) = do-    pokeElemOff p 0  x -    pokeElemOff p 1  y-    pokeElemOff p 2  z--unpackCFloat3 p = do-    x <- peekElemOff p 0-    y <- peekElemOff p 1-    z <- peekElemOff p 2-    return (x,y,z)--packCFloat4 p (x,y,z,w) = do-    pokeElemOff p 0 x -    pokeElemOff p 1 y-    pokeElemOff p 2 z-    pokeElemOff p 3 w--unpackCFloat4 p = do-    x <- peekElemOff p 0-    y <- peekElemOff p 1-    z <- peekElemOff p 2-    w <- peekElemOff p 3-    return (x,y,z,w)--packCFloat5 p (x,y,z,w,q) = do-    pokeElemOff p 0 x -    pokeElemOff p 1 y-    pokeElemOff p 2 z-    pokeElemOff p 3 w-    pokeElemOff p 4 q--unpackCFloat5 p = do-    x <- peekElemOff p 0-    y <- peekElemOff p 1-    z <- peekElemOff p 2-    w <- peekElemOff p 3-    q <- peekElemOff p 4-    return (x,y,z,w,q)--plGetPosition body =-    allocaArray 3 f-  where-    f p = do-        plGetPosition_ body p-        unpackCFloat3 p--plSetPosition b pos =-    allocaArray 3 f-  where-    f p = do-        packCFloat3 p pos-        plSetPosition_ b p--plGetOrientation body =-    allocaArray 4 f-  where-    f p = do-        plGetOrientation_ body p-        unpackCFloat4 p--plSetOrientation b o =-    allocaArray 4 f-  where-    f p = do-        packCFloat4 p o-        plSetOrientation_ b p--plAddChildShape compShape chShape chPos chOrig =-    allocaArray 7 f-  where-    f p = do-        packCFloat3 p chPos-        packCFloat4 (advancePtr p 3) chOrig-        plAddChildShape_ compShape chShape p (advancePtr p 3)--plAddTriangle meshInterface v0 v1 v2 rmDup =-    allocaArray 9 f-  where-    f p = do-        packCFloat3 p v0-        packCFloat3 (advancePtr p 3) v1-        packCFloat3 (advancePtr p 6) v2-        plAddTriangle_ meshInterface p (advancePtr p 3) (advancePtr p 6) $ if rmDup then 1 else 0--plSetScaling shape v =-    allocaArray 3 f-  where-    f p = do-        packCFloat3 p v-        plSetScaling_ shape p
+ Physics/Bullet/Raw.chs view
@@ -0,0 +1,183 @@+{-#LANGUAGE ForeignFunctionInterface#-}+#include "Bullet.h"+module Physics.Bullet.Raw (+module Physics.Bullet.Raw.BulletSoftBody,+module Physics.Bullet.Raw.LinearMath,+module Physics.Bullet.Raw.BulletDynamics,+module Physics.Bullet.Raw.BulletCollision,+module Physics.Bullet.Raw+) where+import Control.Monad+import Foreign.Marshal.Alloc+import Foreign.ForeignPtr+import Foreign.Ptr+import Physics.Bullet.Raw.C2HS+import Physics.Bullet.Raw.Types+import Physics.Bullet.Raw.Class+import Physics.Bullet.Raw.BulletSoftBody+import Physics.Bullet.Raw.LinearMath+import Physics.Bullet.Raw.BulletDynamics+import Physics.Bullet.Raw.BulletCollision+-- * btGLDebugDrawer+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.h?r=2223#14>+     <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.cpp?r=2223>+-}+{#fun btGLDebugDrawer_new as btGLDebugDrawer    {  } -> `BtGLDebugDrawer' mkBtGLDebugDrawer* #}+{#fun btGLDebugDrawer_free    `( BtGLDebugDrawerClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.h?r=2223#29>+     <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.cpp?r=2223>+-}+{#fun btGLDebugDrawer_draw3dText as btGLDebugDrawer_draw3dText    `( BtGLDebugDrawerClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ location+,  `String'  -- ^ textString+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.h?r=2223#29>+     <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.cpp?r=2223>+-}+{#fun btGLDebugDrawer_draw3dText as btGLDebugDrawer_draw3dText'    `( BtGLDebugDrawerClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ location+,  `String'  -- ^ textString+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.h?r=2223#23>+     <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.cpp?r=2223>+-}+{#fun btGLDebugDrawer_drawTriangle as btGLDebugDrawer_drawTriangle    `( BtGLDebugDrawerClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ a+, withVector3* `Vector3'  peekVector3* -- ^ b+, withVector3* `Vector3'  peekVector3* -- ^ c+, withVector3* `Vector3'  peekVector3* -- ^ color+,  `Float'  -- ^ alpha+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.h?r=2223#23>+     <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.cpp?r=2223>+-}+{#fun btGLDebugDrawer_drawTriangle as btGLDebugDrawer_drawTriangle'    `( BtGLDebugDrawerClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ a+, allocaVector3-  `Vector3'  peekVector3* -- ^ b+, allocaVector3-  `Vector3'  peekVector3* -- ^ c+, allocaVector3-  `Vector3'  peekVector3* -- ^ color+,  `Float'  -- ^ alpha+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.h?r=2223#21>+     <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.cpp?r=2223>+-}+{#fun btGLDebugDrawer_drawBox as btGLDebugDrawer_drawBox    `( BtGLDebugDrawerClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ boxMin+, withVector3* `Vector3'  peekVector3* -- ^ boxMax+, withVector3* `Vector3'  peekVector3* -- ^ color+,  `Float'  -- ^ alpha+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.h?r=2223#21>+     <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.cpp?r=2223>+-}+{#fun btGLDebugDrawer_drawBox as btGLDebugDrawer_drawBox'    `( BtGLDebugDrawerClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ boxMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ boxMax+, allocaVector3-  `Vector3'  peekVector3* -- ^ color+,  `Float'  -- ^ alpha+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.h?r=2223#25>+     <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.cpp?r=2223>+-}+{#fun btGLDebugDrawer_drawContactPoint as btGLDebugDrawer_drawContactPoint    `( BtGLDebugDrawerClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ PointOnB+, withVector3* `Vector3'  peekVector3* -- ^ normalOnB+,  `Float'  -- ^ distance+,  `Int'  -- ^ lifeTime+, withVector3* `Vector3'  peekVector3* -- ^ color+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.h?r=2223#25>+     <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.cpp?r=2223>+-}+{#fun btGLDebugDrawer_drawContactPoint as btGLDebugDrawer_drawContactPoint'    `( BtGLDebugDrawerClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ PointOnB+, allocaVector3-  `Vector3'  peekVector3* -- ^ normalOnB+,  `Float'  -- ^ distance+,  `Int'  -- ^ lifeTime+, allocaVector3-  `Vector3'  peekVector3* -- ^ color+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.h?r=2223#16>+     <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.cpp?r=2223>+-}+{#fun btGLDebugDrawer_drawLine0 as btGLDebugDrawer_drawLine    `( BtGLDebugDrawerClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ from+, withVector3* `Vector3'  peekVector3* -- ^ to+, withVector3* `Vector3'  peekVector3* -- ^ fromColor+, withVector3* `Vector3'  peekVector3* -- ^ toColor+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.h?r=2223#16>+     <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.cpp?r=2223>+-}+{#fun btGLDebugDrawer_drawLine0 as btGLDebugDrawer_drawLine'    `( BtGLDebugDrawerClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ from+, allocaVector3-  `Vector3'  peekVector3* -- ^ to+, allocaVector3-  `Vector3'  peekVector3* -- ^ fromColor+, allocaVector3-  `Vector3'  peekVector3* -- ^ toColor+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.h?r=2223#16>+     <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.cpp?r=2223>+-}+{#fun btGLDebugDrawer_drawLine0 as btGLDebugDrawer_drawLine0    `( BtGLDebugDrawerClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ from+, withVector3* `Vector3'  peekVector3* -- ^ to+, withVector3* `Vector3'  peekVector3* -- ^ fromColor+, withVector3* `Vector3'  peekVector3* -- ^ toColor+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.h?r=2223#16>+     <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.cpp?r=2223>+-}+{#fun btGLDebugDrawer_drawLine0 as btGLDebugDrawer_drawLine0'    `( BtGLDebugDrawerClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ from+, allocaVector3-  `Vector3'  peekVector3* -- ^ to+, allocaVector3-  `Vector3'  peekVector3* -- ^ fromColor+, allocaVector3-  `Vector3'  peekVector3* -- ^ toColor+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.h?r=2223#18>+     <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.cpp?r=2223>+-}+{#fun btGLDebugDrawer_drawLine1 as btGLDebugDrawer_drawLine1    `( BtGLDebugDrawerClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ from+, withVector3* `Vector3'  peekVector3* -- ^ to+, withVector3* `Vector3'  peekVector3* -- ^ color+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.h?r=2223#18>+     <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.cpp?r=2223>+-}+{#fun btGLDebugDrawer_drawLine1 as btGLDebugDrawer_drawLine1'    `( BtGLDebugDrawerClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ from+, allocaVector3-  `Vector3'  peekVector3* -- ^ to+, allocaVector3-  `Vector3'  peekVector3* -- ^ color+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.h?r=2223#27>+     <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.cpp?r=2223>+-}+{#fun btGLDebugDrawer_reportErrorWarning as btGLDebugDrawer_reportErrorWarning    `( BtGLDebugDrawerClass bc )' =>     { withBt* `bc'  -- ^ +,  `String'  -- ^ warningString+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.h?r=2223#33>+     <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.cpp?r=2223>+-}+{#fun btGLDebugDrawer_getDebugMode as btGLDebugDrawer_getDebugMode    `( BtGLDebugDrawerClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.h?r=2223#31>+     <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.cpp?r=2223>+-}+{#fun btGLDebugDrawer_setDebugMode as btGLDebugDrawer_setDebugMode    `( BtGLDebugDrawerClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ debugMode+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.h?r=2223#20>+     <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.cpp?r=2223>+-}+{#fun btGLDebugDrawer_drawSphere as btGLDebugDrawer_drawSphere    `( BtGLDebugDrawerClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ p+,  `Float'  -- ^ radius+, withVector3* `Vector3'  peekVector3* -- ^ color+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.h?r=2223#20>+     <http://code.google.com/p/bullet/source/browse/trunk/src/GLDebugDrawer.cpp?r=2223>+-}+{#fun btGLDebugDrawer_drawSphere as btGLDebugDrawer_drawSphere'    `( BtGLDebugDrawerClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ p+,  `Float'  -- ^ radius+, allocaVector3-  `Vector3'  peekVector3* -- ^ color+ } ->  `()'  #}
+ Physics/Bullet/Raw/BulletCollision.chs view
@@ -0,0 +1,22 @@+{-#LANGUAGE ForeignFunctionInterface#-}+#include "Bullet.h"+module Physics.Bullet.Raw.BulletCollision (+module Physics.Bullet.Raw.BulletCollision.CollisionShapes,+module Physics.Bullet.Raw.BulletCollision.Gimpact,+module Physics.Bullet.Raw.BulletCollision.BroadphaseCollision,+module Physics.Bullet.Raw.BulletCollision.NarrowPhaseCollision,+module Physics.Bullet.Raw.BulletCollision.CollisionDispatch,+module Physics.Bullet.Raw.BulletCollision+) where+import Control.Monad+import Foreign.Marshal.Alloc+import Foreign.ForeignPtr+import Foreign.Ptr+import Physics.Bullet.Raw.C2HS+import Physics.Bullet.Raw.Types+import Physics.Bullet.Raw.Class+import Physics.Bullet.Raw.BulletCollision.CollisionShapes+import Physics.Bullet.Raw.BulletCollision.Gimpact+import Physics.Bullet.Raw.BulletCollision.BroadphaseCollision+import Physics.Bullet.Raw.BulletCollision.NarrowPhaseCollision+import Physics.Bullet.Raw.BulletCollision.CollisionDispatch
+ Physics/Bullet/Raw/BulletCollision/BroadphaseCollision.chs view
@@ -0,0 +1,2473 @@+{-#LANGUAGE ForeignFunctionInterface#-}+#include "Bullet.h"+module Physics.Bullet.Raw.BulletCollision.BroadphaseCollision (+module Physics.Bullet.Raw.BulletCollision.BroadphaseCollision+) where+import Control.Monad+import Foreign.Marshal.Alloc+import Foreign.ForeignPtr+import Foreign.Ptr+import Physics.Bullet.Raw.C2HS+import Physics.Bullet.Raw.Types+import Physics.Bullet.Raw.Class+-- * IClone+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#242>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_IClone_new as btDbvt_IClone    {  } -> `BtDbvt_IClone' mkBtDbvt_IClone* #}+{#fun btDbvt_IClone_free    `( BtDbvt_ICloneClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#244>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_IClone_CloneLeaf as btDbvt_IClone_CloneLeaf    `( BtDbvt_ICloneClass bc , BtDbvtNodeClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ arg0+ } ->  `()'  #}+-- * ICollide+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#224>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_ICollide_new as btDbvt_ICollide    {  } -> `BtDbvt_ICollide' mkBtDbvt_ICollide* #}+{#fun btDbvt_ICollide_free    `( BtDbvt_ICollideClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#226>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_ICollide_Process0 as btDbvt_ICollide_Process    `( BtDbvt_ICollideClass bc , BtDbvtNodeClass p0 , BtDbvtNodeClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ arg0+, withBt* `p1'  -- ^ arg1+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#226>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_ICollide_Process0 as btDbvt_ICollide_Process0    `( BtDbvt_ICollideClass bc , BtDbvtNodeClass p0 , BtDbvtNodeClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ arg0+, withBt* `p1'  -- ^ arg1+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#227>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_ICollide_Process1 as btDbvt_ICollide_Process1    `( BtDbvt_ICollideClass bc , BtDbvtNodeClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ arg0+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#228>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_ICollide_Process2 as btDbvt_ICollide_Process2    `( BtDbvt_ICollideClass bc , BtDbvtNodeClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ n+,  `Float'  -- ^ arg1+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#230>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_ICollide_AllLeaves as btDbvt_ICollide_AllLeaves    `( BtDbvt_ICollideClass bc , BtDbvtNodeClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ arg0+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#229>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_ICollide_Descent as btDbvt_ICollide_Descent    `( BtDbvt_ICollideClass bc , BtDbvtNodeClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ arg0+ } ->  `Bool'  #}+-- * IWriter+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#238>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_IWriter_WriteLeaf as btDbvt_IWriter_WriteLeaf    `( BtDbvt_IWriterClass bc , BtDbvtNodeClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ arg0+,  `Int'  -- ^ index+,  `Int'  -- ^ parent+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#237>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_IWriter_WriteNode as btDbvt_IWriter_WriteNode    `( BtDbvt_IWriterClass bc , BtDbvtNodeClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ arg0+,  `Int'  -- ^ index+,  `Int'  -- ^ parent+,  `Int'  -- ^ child0+,  `Int'  -- ^ child1+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#236>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_IWriter_Prepare as btDbvt_IWriter_Prepare    `( BtDbvt_IWriterClass bc , BtDbvtNodeClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ root+,  `Int'  -- ^ numnodes+ } ->  `()'  #}+-- * bt32BitAxisSweep3+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btAxisSweep3.h?r=2223#1046>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp?r=2223>+-}+{#fun bt32BitAxisSweep3_new as bt32BitAxisSweep3    `( BtOverlappingPairCacheClass p3 )' =>     {  withVector3* `Vector3' , withVector3* `Vector3' ,  `Word32' , withBt* `p3' ,  `Bool'  } -> `Bt32BitAxisSweep3' mkBt32BitAxisSweep3* #}+{#fun bt32BitAxisSweep3_free    `( Bt32BitAxisSweep3Class bc )' =>     { withBt* `bc'  } -> `()' #}+-- * btAxisSweep3+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btAxisSweep3.h?r=2223#1035>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp?r=2223>+-}+{#fun btAxisSweep3_new as btAxisSweep3    `( BtOverlappingPairCacheClass p3 )' =>     {  withVector3* `Vector3' , withVector3* `Vector3' ,  `Int' , withBt* `p3' ,  `Bool'  } -> `BtAxisSweep3' mkBtAxisSweep3* #}+{#fun btAxisSweep3_free    `( BtAxisSweep3Class bc )' =>     { withBt* `bc'  } -> `()' #}+-- * btBroadphaseAabbCallback+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h?r=2223#32>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.cpp?r=2223>+-}+{#fun btBroadphaseAabbCallback_process as btBroadphaseAabbCallback_process    `( BtBroadphaseAabbCallbackClass bc , BtBroadphaseProxyClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy+ } ->  `Bool'  #}+-- * btBroadphaseInterface+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h?r=2223#61>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.cpp?r=2223>+-}+{#fun btBroadphaseInterface_rayTest as btBroadphaseInterface_rayTest    `( BtBroadphaseInterfaceClass bc , BtBroadphaseRayCallbackClass p2 )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ rayFrom+, withVector3* `Vector3'  peekVector3* -- ^ rayTo+, withBt* `p2'  -- ^ rayCallback+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h?r=2223#61>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.cpp?r=2223>+-}+{#fun btBroadphaseInterface_rayTest as btBroadphaseInterface_rayTest'    `( BtBroadphaseInterfaceClass bc , BtBroadphaseRayCallbackClass p2 )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ rayFrom+, allocaVector3-  `Vector3'  peekVector3* -- ^ rayTo+, withBt* `p2'  -- ^ rayCallback+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h?r=2223#58>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.cpp?r=2223>+-}+{#fun btBroadphaseInterface_setAabb as btBroadphaseInterface_setAabb    `( BtBroadphaseInterfaceClass bc , BtBroadphaseProxyClass p0 , BtDispatcherClass p3 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+, withBt* `p3'  -- ^ dispatcher+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h?r=2223#58>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.cpp?r=2223>+-}+{#fun btBroadphaseInterface_setAabb as btBroadphaseInterface_setAabb'    `( BtBroadphaseInterfaceClass bc , BtBroadphaseProxyClass p0 , BtDispatcherClass p3 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+, withBt* `p3'  -- ^ dispatcher+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h?r=2223#73>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.cpp?r=2223>+-}+{#fun btBroadphaseInterface_getBroadphaseAabb as btBroadphaseInterface_getBroadphaseAabb    `( BtBroadphaseInterfaceClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h?r=2223#73>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.cpp?r=2223>+-}+{#fun btBroadphaseInterface_getBroadphaseAabb as btBroadphaseInterface_getBroadphaseAabb'    `( BtBroadphaseInterfaceClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h?r=2223#76>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.cpp?r=2223>+-}+{#fun btBroadphaseInterface_resetPool as btBroadphaseInterface_resetPool    `( BtBroadphaseInterfaceClass bc , BtDispatcherClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ dispatcher+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h?r=2223#66>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.cpp?r=2223>+-}+{#fun btBroadphaseInterface_calculateOverlappingPairs as btBroadphaseInterface_calculateOverlappingPairs    `( BtBroadphaseInterfaceClass bc , BtDispatcherClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ dispatcher+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h?r=2223#78>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.cpp?r=2223>+-}+{#fun btBroadphaseInterface_printStats as btBroadphaseInterface_printStats    `( BtBroadphaseInterfaceClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h?r=2223#59>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.cpp?r=2223>+-}+{#fun btBroadphaseInterface_getAabb as btBroadphaseInterface_getAabb    `( BtBroadphaseInterfaceClass bc , BtBroadphaseProxyClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h?r=2223#59>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.cpp?r=2223>+-}+{#fun btBroadphaseInterface_getAabb as btBroadphaseInterface_getAabb'    `( BtBroadphaseInterfaceClass bc , BtBroadphaseProxyClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h?r=2223#63>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.cpp?r=2223>+-}+{#fun btBroadphaseInterface_aabbTest as btBroadphaseInterface_aabbTest    `( BtBroadphaseInterfaceClass bc , BtBroadphaseAabbCallbackClass p2 )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+, withBt* `p2'  -- ^ callback+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h?r=2223#63>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.cpp?r=2223>+-}+{#fun btBroadphaseInterface_aabbTest as btBroadphaseInterface_aabbTest'    `( BtBroadphaseInterfaceClass bc , BtBroadphaseAabbCallbackClass p2 )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+, withBt* `p2'  -- ^ callback+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h?r=2223#68>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.cpp?r=2223>+-}+{#fun btBroadphaseInterface_getOverlappingPairCache0 as btBroadphaseInterface_getOverlappingPairCache    `( BtBroadphaseInterfaceClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtOverlappingPairCache' mkBtOverlappingPairCache*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h?r=2223#68>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.cpp?r=2223>+-}+{#fun btBroadphaseInterface_getOverlappingPairCache0 as btBroadphaseInterface_getOverlappingPairCache0    `( BtBroadphaseInterfaceClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtOverlappingPairCache' mkBtOverlappingPairCache*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h?r=2223#69>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.cpp?r=2223>+-}+{#fun btBroadphaseInterface_getOverlappingPairCache1 as btBroadphaseInterface_getOverlappingPairCache1    `( BtBroadphaseInterfaceClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtOverlappingPairCache' mkBtOverlappingPairCache*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h?r=2223#57>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.cpp?r=2223>+-}+{#fun btBroadphaseInterface_destroyProxy as btBroadphaseInterface_destroyProxy    `( BtBroadphaseInterfaceClass bc , BtBroadphaseProxyClass p0 , BtDispatcherClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy+, withBt* `p1'  -- ^ dispatcher+ } ->  `()'  #}+-- * btBroadphasePair+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h?r=2223#188>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp?r=2223>+-}+{#fun btBroadphasePair_new0 as btBroadphasePair0    {  } -> `BtBroadphasePair' mkBtBroadphasePair* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h?r=2223#206>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp?r=2223>+-}+{#fun btBroadphasePair_new1 as btBroadphasePair1    `( BtBroadphaseProxyClass p0 , BtBroadphaseProxyClass p1 )' =>     {  withBt* `p0' , withBt* `p1'  } -> `BtBroadphasePair' mkBtBroadphasePair* #}+{#fun btBroadphasePair_free    `( BtBroadphasePairClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h?r=2223#226>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp?r=2223>+-}+{#fun btBroadphasePair_m_pProxy0_set    `( BtBroadphasePairClass bc , BtBroadphaseProxyClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h?r=2223#227>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp?r=2223>+-}+{#fun btBroadphasePair_m_pProxy1_set    `( BtBroadphasePairClass bc , BtBroadphaseProxyClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h?r=2223#229>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp?r=2223>+-}+{#fun btBroadphasePair_m_algorithm_set    `( BtBroadphasePairClass bc , BtCollisionAlgorithmClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+-- * btBroadphasePairSortPredicate+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h?r=2223#246>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp?r=2223>+-}+{#fun btBroadphasePairSortPredicate_new as btBroadphasePairSortPredicate    {  } -> `BtBroadphasePairSortPredicate' mkBtBroadphasePairSortPredicate* #}+{#fun btBroadphasePairSortPredicate_free    `( BtBroadphasePairSortPredicateClass bc )' =>     { withBt* `bc'  } -> `()' #}+-- * btBroadphaseProxy+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h?r=2223#118>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp?r=2223>+-}+{#fun btBroadphaseProxy_new0 as btBroadphaseProxy0    {  } -> `BtBroadphaseProxy' mkBtBroadphaseProxy* #}+{#fun btBroadphaseProxy_free    `( BtBroadphaseProxyClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h?r=2223#139>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp?r=2223>+-}+{#fun btBroadphaseProxy_isConvex as btBroadphaseProxy_isConvex    `( )' =>     {   `Int'  -- ^ proxyType+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h?r=2223#164>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp?r=2223>+-}+{#fun btBroadphaseProxy_isInfinite as btBroadphaseProxy_isInfinite    `( )' =>     {   `Int'  -- ^ proxyType+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h?r=2223#112>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp?r=2223>+-}+{#fun btBroadphaseProxy_getUid as btBroadphaseProxy_getUid    `( BtBroadphaseProxyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h?r=2223#149>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp?r=2223>+-}+{#fun btBroadphaseProxy_isConcave as btBroadphaseProxy_isConcave    `( )' =>     {   `Int'  -- ^ proxyType+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h?r=2223#144>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp?r=2223>+-}+{#fun btBroadphaseProxy_isNonMoving as btBroadphaseProxy_isNonMoving    `( )' =>     {   `Int'  -- ^ proxyType+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h?r=2223#154>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp?r=2223>+-}+{#fun btBroadphaseProxy_isCompound as btBroadphaseProxy_isCompound    `( )' =>     {   `Int'  -- ^ proxyType+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h?r=2223#134>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp?r=2223>+-}+{#fun btBroadphaseProxy_isPolyhedral as btBroadphaseProxy_isPolyhedral    `( )' =>     {   `Int'  -- ^ proxyType+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h?r=2223#169>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp?r=2223>+-}+{#fun btBroadphaseProxy_isConvex2d as btBroadphaseProxy_isConvex2d    `( )' =>     {   `Int'  -- ^ proxyType+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h?r=2223#159>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp?r=2223>+-}+{#fun btBroadphaseProxy_isSoftBody as btBroadphaseProxy_isSoftBody    `( )' =>     {   `Int'  -- ^ proxyType+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h?r=2223#110>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp?r=2223>+-}+{#fun btBroadphaseProxy_m_aabbMax_set    `( BtBroadphaseProxyClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h?r=2223#110>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp?r=2223>+-}+{#fun btBroadphaseProxy_m_aabbMax_get    `( BtBroadphaseProxyClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h?r=2223#109>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp?r=2223>+-}+{#fun btBroadphaseProxy_m_aabbMin_set    `( BtBroadphaseProxyClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h?r=2223#109>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp?r=2223>+-}+{#fun btBroadphaseProxy_m_aabbMin_get    `( BtBroadphaseProxyClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h?r=2223#104>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp?r=2223>+-}+{#fun btBroadphaseProxy_m_collisionFilterGroup_set    `( BtBroadphaseProxyClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h?r=2223#104>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp?r=2223>+-}+{#fun btBroadphaseProxy_m_collisionFilterGroup_get    `( BtBroadphaseProxyClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h?r=2223#105>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp?r=2223>+-}+{#fun btBroadphaseProxy_m_collisionFilterMask_set    `( BtBroadphaseProxyClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h?r=2223#105>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp?r=2223>+-}+{#fun btBroadphaseProxy_m_collisionFilterMask_get    `( BtBroadphaseProxyClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h?r=2223#107>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp?r=2223>+-}+{#fun btBroadphaseProxy_m_uniqueId_set    `( BtBroadphaseProxyClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h?r=2223#107>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp?r=2223>+-}+{#fun btBroadphaseProxy_m_uniqueId_get    `( BtBroadphaseProxyClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btBroadphaseRayCallback+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h?r=2223#41>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.cpp?r=2223>+-}+{#fun btBroadphaseRayCallback_m_lambda_max_set    `( BtBroadphaseRayCallbackClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h?r=2223#41>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.cpp?r=2223>+-}+{#fun btBroadphaseRayCallback_m_lambda_max_get    `( BtBroadphaseRayCallbackClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h?r=2223#39>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.cpp?r=2223>+-}+{#fun btBroadphaseRayCallback_m_rayDirectionInverse_set    `( BtBroadphaseRayCallbackClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h?r=2223#39>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.cpp?r=2223>+-}+{#fun btBroadphaseRayCallback_m_rayDirectionInverse_get    `( BtBroadphaseRayCallbackClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+-- * btBvhSubtreeInfo+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#131>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btBvhSubtreeInfo_new as btBvhSubtreeInfo    {  } -> `BtBvhSubtreeInfo' mkBtBvhSubtreeInfo* #}+{#fun btBvhSubtreeInfo_free    `( BtBvhSubtreeInfoClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#137>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btBvhSubtreeInfo_setAabbFromQuantizeNode as btBvhSubtreeInfo_setAabbFromQuantizeNode    `( BtBvhSubtreeInfoClass bc , BtQuantizedBvhNodeClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ quantizedNode+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#126>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btBvhSubtreeInfo_m_rootNodeIndex_set    `( BtBvhSubtreeInfoClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#126>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btBvhSubtreeInfo_m_rootNodeIndex_get    `( BtBvhSubtreeInfoClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#128>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btBvhSubtreeInfo_m_subtreeSize_set    `( BtBvhSubtreeInfoClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#128>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btBvhSubtreeInfo_m_subtreeSize_get    `( BtBvhSubtreeInfoClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btBvhSubtreeInfoData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#502>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btBvhSubtreeInfoData_new as btBvhSubtreeInfoData    {  } -> `BtBvhSubtreeInfoData' mkBtBvhSubtreeInfoData* #}+{#fun btBvhSubtreeInfoData_free    `( BtBvhSubtreeInfoDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#503>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btBvhSubtreeInfoData_m_rootNodeIndex_set    `( BtBvhSubtreeInfoDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#503>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btBvhSubtreeInfoData_m_rootNodeIndex_get    `( BtBvhSubtreeInfoDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#504>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btBvhSubtreeInfoData_m_subtreeSize_set    `( BtBvhSubtreeInfoDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#504>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btBvhSubtreeInfoData_m_subtreeSize_get    `( BtBvhSubtreeInfoDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btCollisionAlgorithm+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h?r=2223#74>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp?r=2223>+-}+{#fun btCollisionAlgorithm_calculateTimeOfImpact as btCollisionAlgorithm_calculateTimeOfImpact    `( BtCollisionAlgorithmClass bc , BtCollisionObjectClass p0 , BtCollisionObjectClass p1 , BtDispatcherInfoClass p2 , BtManifoldResultClass p3 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ body0+, withBt* `p1'  -- ^ body1+, withBt* `p2'  -- ^ dispatchInfo+, withBt* `p3'  -- ^ resultOut+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h?r=2223#72>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp?r=2223>+-}+{#fun btCollisionAlgorithm_processCollision as btCollisionAlgorithm_processCollision    `( BtCollisionAlgorithmClass bc , BtCollisionObjectClass p0 , BtCollisionObjectClass p1 , BtDispatcherInfoClass p2 , BtManifoldResultClass p3 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ body0+, withBt* `p1'  -- ^ body1+, withBt* `p2'  -- ^ dispatchInfo+, withBt* `p3'  -- ^ resultOut+ } ->  `()'  #}+-- * btCollisionAlgorithmConstructionInfo+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h?r=2223#33>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp?r=2223>+-}+{#fun btCollisionAlgorithmConstructionInfo_new0 as btCollisionAlgorithmConstructionInfo0    {  } -> `BtCollisionAlgorithmConstructionInfo' mkBtCollisionAlgorithmConstructionInfo* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h?r=2223#38>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp?r=2223>+-}+{#fun btCollisionAlgorithmConstructionInfo_new1 as btCollisionAlgorithmConstructionInfo1    `( BtDispatcherClass p0 )' =>     {  withBt* `p0' ,  `Int'  } -> `BtCollisionAlgorithmConstructionInfo' mkBtCollisionAlgorithmConstructionInfo* #}+{#fun btCollisionAlgorithmConstructionInfo_free    `( BtCollisionAlgorithmConstructionInfoClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h?r=2223#44>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp?r=2223>+-}+{#fun btCollisionAlgorithmConstructionInfo_m_dispatcher1_set    `( BtCollisionAlgorithmConstructionInfoClass bc , BtDispatcherClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h?r=2223#45>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp?r=2223>+-}+{#fun btCollisionAlgorithmConstructionInfo_m_manifold_set    `( BtCollisionAlgorithmConstructionInfoClass bc , BtPersistentManifoldClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+-- * btDbvt+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#265>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_new as btDbvt    {  } -> `BtDbvt' mkBtDbvt* #}+{#fun btDbvt_free    `( BtDbvtClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#694>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_enumLeaves as btDbvt_enumLeaves    `(  BtDbvtNodeClass p0 , BtDbvt_ICollideClass p1 )' =>     {  withBt* `p0'  -- ^ root+, withBt* `p1'  -- ^ policy+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#271>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_optimizeIncremental as btDbvt_optimizeIncremental    `( BtDbvtClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ passes+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#996>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_rayTest as btDbvt_rayTest    `(  BtDbvtNodeClass p0 , BtDbvt_ICollideClass p3 )' =>     {  withBt* `p0'  -- ^ root+, withVector3* `Vector3'  peekVector3* -- ^ rayFrom+, withVector3* `Vector3'  peekVector3* -- ^ rayTo+, withBt* `p3'  -- ^ policy+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#996>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_rayTest as btDbvt_rayTest'    `(  BtDbvtNodeClass p0 , BtDbvt_ICollideClass p3 )' =>     {  withBt* `p0'  -- ^ root+, allocaVector3-  `Vector3'  peekVector3* -- ^ rayFrom+, allocaVector3-  `Vector3'  peekVector3* -- ^ rayTo+, withBt* `p3'  -- ^ policy+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#270>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_optimizeTopDown as btDbvt_optimizeTopDown    `( BtDbvtClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ bu_treshold+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#680>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_enumNodes as btDbvt_enumNodes    `(  BtDbvtNodeClass p0 , BtDbvt_ICollideClass p1 )' =>     {  withBt* `p0'  -- ^ root+, withBt* `p1'  -- ^ policy+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#279>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_write as btDbvt_write    `( BtDbvtClass bc , BtDbvt_IWriterClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ iwriter+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#268>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_empty as btDbvt_empty    `( BtDbvtClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#910>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_collideTV as btDbvt_collideTV    `( BtDbvtClass bc , BtDbvtNodeClass p0 , BtDbvtAabbMmClass p1 , BtDbvt_ICollideClass p2 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ root+, withBt* `p1'  -- ^ vol+, withBt* `p2'  -- ^ policy+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#1216>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_collideTU as btDbvt_collideTU    `(  BtDbvtNodeClass p0 , BtDbvt_ICollideClass p1 )' =>     {  withBt* `p0'  -- ^ root+, withBt* `p1'  -- ^ policy+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#712>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_collideTT as btDbvt_collideTT    `( BtDbvtClass bc , BtDbvtNodeClass p0 , BtDbvtNodeClass p1 , BtDbvt_ICollideClass p2 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ root0+, withBt* `p1'  -- ^ root1+, withBt* `p2'  -- ^ policy+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#777>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_collideTTpersistentStack as btDbvt_collideTTpersistentStack    `( BtDbvtClass bc , BtDbvtNodeClass p0 , BtDbvtNodeClass p1 , BtDbvt_ICollideClass p2 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ root0+, withBt* `p1'  -- ^ root1+, withBt* `p2'  -- ^ policy+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#280>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_clone as btDbvt_clone    `( BtDbvtClass bc , BtDbvtClass p0 , BtDbvt_ICloneClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ dest+, withBt* `p1'  -- ^ iclone+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#287>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_benchmark as btDbvt_benchmark    `( )' =>     {  } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#273>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_update0 as btDbvt_update    `( BtDbvtClass bc , BtDbvtNodeClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ leaf+,  `Int'  -- ^ lookahead+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#273>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_update0 as btDbvt_update0    `( BtDbvtClass bc , BtDbvtNodeClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ leaf+,  `Int'  -- ^ lookahead+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#274>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_update1 as btDbvt_update1    `( BtDbvtClass bc , BtDbvtNodeClass p0 , BtDbvtAabbMmClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ leaf+, withBt* `p1'  -- ^ volume+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#275>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_update2 as btDbvt_update2    `( BtDbvtClass bc , BtDbvtNodeClass p0 , BtDbvtAabbMmClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ leaf+, withBt* `p1'  -- ^ volume+, withVector3* `Vector3'  peekVector3* -- ^ velocity+,  `Float'  -- ^ margin+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#275>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_update2 as btDbvt_update2'    `( BtDbvtClass bc , BtDbvtNodeClass p0 , BtDbvtAabbMmClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ leaf+, withBt* `p1'  -- ^ volume+, allocaVector3-  `Vector3'  peekVector3* -- ^ velocity+,  `Float'  -- ^ margin+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#276>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_update3 as btDbvt_update3    `( BtDbvtClass bc , BtDbvtNodeClass p0 , BtDbvtAabbMmClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ leaf+, withBt* `p1'  -- ^ volume+, withVector3* `Vector3'  peekVector3* -- ^ velocity+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#276>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_update3 as btDbvt_update3'    `( BtDbvtClass bc , BtDbvtNodeClass p0 , BtDbvtAabbMmClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ leaf+, withBt* `p1'  -- ^ volume+, allocaVector3-  `Vector3'  peekVector3* -- ^ velocity+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#277>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_update4 as btDbvt_update4    `( BtDbvtClass bc , BtDbvtNodeClass p0 , BtDbvtAabbMmClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ leaf+, withBt* `p1'  -- ^ volume+,  `Float'  -- ^ margin+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#282>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_countLeaves as btDbvt_countLeaves    `(  BtDbvtNodeClass p0 )' =>     {  withBt* `p0'  -- ^ node+ } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#278>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_remove as btDbvt_remove    `( BtDbvtClass bc , BtDbvtNodeClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ leaf+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#281>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_maxdepth as btDbvt_maxdepth    `(  BtDbvtNodeClass p0 )' =>     {  withBt* `p0'  -- ^ node+ } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#267>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_clear as btDbvt_clear    `( BtDbvtClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#269>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_optimizeBottomUp as btDbvt_optimizeBottomUp    `( BtDbvtClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#255>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_m_free_set    `( BtDbvtClass bc , BtDbvtNodeClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#257>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_m_leaves_set    `( BtDbvtClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#257>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_m_leaves_get    `( BtDbvtClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#256>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_m_lkhd_set    `( BtDbvtClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#256>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_m_lkhd_get    `( BtDbvtClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#258>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_m_opath_set    `( BtDbvtClass bc )' =>     { withBt* `bc' ,  `Word32'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#258>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_m_opath_get    `( BtDbvtClass bc )' =>     { withBt* `bc'  } ->  `Word32'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#254>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_m_root_set    `( BtDbvtClass bc , BtDbvtNodeClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+-- * btDbvtAabbMm+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#131>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvtAabbMm_new as btDbvtAabbMm    {  } -> `BtDbvtAabbMm' mkBtDbvtAabbMm* #}+{#fun btDbvtAabbMm_free    `( BtDbvtAabbMmClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#446>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvtAabbMm_SignedExpand as btDbvtAabbMm_SignedExpand    `( BtDbvtAabbMmClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ e+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#446>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvtAabbMm_SignedExpand as btDbvtAabbMm_SignedExpand'    `( BtDbvtAabbMmClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ e+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#134>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvtAabbMm_Extents as btDbvtAabbMm_Extents    `( BtDbvtAabbMmClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#132>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvtAabbMm_Center as btDbvtAabbMm_Center    `( BtDbvtAabbMmClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#133>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvtAabbMm_Lengths as btDbvtAabbMm_Lengths    `( BtDbvtAabbMmClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#136>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvtAabbMm_Maxs as btDbvtAabbMm_Maxs    `( BtDbvtAabbMmClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#493>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvtAabbMm_ProjectMinimum as btDbvtAabbMm_ProjectMinimum    `( BtDbvtAabbMmClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ v+,  `Word32'  -- ^ signs+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#493>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvtAabbMm_ProjectMinimum as btDbvtAabbMm_ProjectMinimum'    `( BtDbvtAabbMmClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ v+,  `Word32'  -- ^ signs+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#465>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvtAabbMm_Classify as btDbvtAabbMm_Classify    `( BtDbvtAabbMmClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ n+,  `Float'  -- ^ o+,  `Int'  -- ^ s+ } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#465>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvtAabbMm_Classify as btDbvtAabbMm_Classify'    `( BtDbvtAabbMmClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ n+,  `Float'  -- ^ o+,  `Int'  -- ^ s+ } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#454>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvtAabbMm_Contain as btDbvtAabbMm_Contain    `( BtDbvtAabbMmClass bc , BtDbvtAabbMmClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ a+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#135>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvtAabbMm_Mins as btDbvtAabbMm_Mins    `( BtDbvtAabbMmClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#440>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvtAabbMm_Expand as btDbvtAabbMm_Expand    `( BtDbvtAabbMmClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ e+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#440>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvtAabbMm_Expand as btDbvtAabbMm_Expand'    `( BtDbvtAabbMmClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ e+ } ->  `()'  #}+-- * btDbvtBroadphase+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#101>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_new as btDbvtBroadphase    `( BtOverlappingPairCacheClass p0 )' =>     {  withBt* `p0'  } -> `BtDbvtBroadphase' mkBtDbvtBroadphase* #}+{#fun btDbvtBroadphase_free    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#110>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_rayTest as btDbvtBroadphase_rayTest    `( BtDbvtBroadphaseClass bc , BtBroadphaseRayCallbackClass p2 )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ rayFrom+, withVector3* `Vector3'  peekVector3* -- ^ rayTo+, withBt* `p2'  -- ^ rayCallback+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#110>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_rayTest as btDbvtBroadphase_rayTest'    `( BtDbvtBroadphaseClass bc , BtBroadphaseRayCallbackClass p2 )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ rayFrom+, allocaVector3-  `Vector3'  peekVector3* -- ^ rayTo+, withBt* `p2'  -- ^ rayCallback+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#124>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_performDeferredRemoval as btDbvtBroadphase_performDeferredRemoval    `( BtDbvtBroadphaseClass bc , BtDispatcherClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ dispatcher+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#109>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_setAabb as btDbvtBroadphase_setAabb    `( BtDbvtBroadphaseClass bc , BtBroadphaseProxyClass p0 , BtDispatcherClass p3 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+, withBt* `p3'  -- ^ dispatcher+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#109>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_setAabb as btDbvtBroadphase_setAabb'    `( BtDbvtBroadphaseClass bc , BtBroadphaseProxyClass p0 , BtDispatcherClass p3 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+, withBt* `p3'  -- ^ dispatcher+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#115>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_getOverlappingPairCache0 as btDbvtBroadphase_getOverlappingPairCache    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtOverlappingPairCache' mkBtOverlappingPairCache*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#115>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_getOverlappingPairCache0 as btDbvtBroadphase_getOverlappingPairCache0    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtOverlappingPairCache' mkBtOverlappingPairCache*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#116>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_getOverlappingPairCache1 as btDbvtBroadphase_getOverlappingPairCache1    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtOverlappingPairCache' mkBtOverlappingPairCache*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#126>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_setVelocityPrediction as btDbvtBroadphase_setVelocityPrediction    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ prediction+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#141>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_benchmark as btDbvtBroadphase_benchmark    `(  BtBroadphaseInterfaceClass p0 )' =>     {  withBt* `p0'  -- ^ arg0+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#103>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_collide as btDbvtBroadphase_collide    `( BtDbvtBroadphaseClass bc , BtDispatcherClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ dispatcher+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#122>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_resetPool as btDbvtBroadphase_resetPool    `( BtDbvtBroadphaseClass bc , BtDispatcherClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ dispatcher+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#130>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_getVelocityPrediction as btDbvtBroadphase_getVelocityPrediction    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#114>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_calculateOverlappingPairs as btDbvtBroadphase_calculateOverlappingPairs    `( BtDbvtBroadphaseClass bc , BtDispatcherClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ dispatcher+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#139>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_setAabbForceUpdate as btDbvtBroadphase_setAabbForceUpdate    `( BtDbvtBroadphaseClass bc , BtBroadphaseProxyClass p0 , BtDispatcherClass p3 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ absproxy+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+, withBt* `p3'  -- ^ arg3+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#139>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_setAabbForceUpdate as btDbvtBroadphase_setAabbForceUpdate'    `( BtDbvtBroadphaseClass bc , BtBroadphaseProxyClass p0 , BtDispatcherClass p3 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ absproxy+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+, withBt* `p3'  -- ^ arg3+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#117>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_getBroadphaseAabb as btDbvtBroadphase_getBroadphaseAabb    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#117>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_getBroadphaseAabb as btDbvtBroadphase_getBroadphaseAabb'    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#118>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_printStats as btDbvtBroadphase_printStats    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#113>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_getAabb as btDbvtBroadphase_getAabb    `( BtDbvtBroadphaseClass bc , BtBroadphaseProxyClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#113>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_getAabb as btDbvtBroadphase_getAabb'    `( BtDbvtBroadphaseClass bc , BtBroadphaseProxyClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#111>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_aabbTest as btDbvtBroadphase_aabbTest    `( BtDbvtBroadphaseClass bc , BtBroadphaseAabbCallbackClass p2 )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+, withBt* `p2'  -- ^ callback+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#111>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_aabbTest as btDbvtBroadphase_aabbTest'    `( BtDbvtBroadphaseClass bc , BtBroadphaseAabbCallbackClass p2 )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+, withBt* `p2'  -- ^ callback+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#104>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_optimize as btDbvtBroadphase_optimize    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#108>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_destroyProxy as btDbvtBroadphase_destroyProxy    `( BtDbvtBroadphaseClass bc , BtBroadphaseProxyClass p0 , BtDispatcherClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy+, withBt* `p1'  -- ^ dispatcher+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#73>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_m_paircache_set    `( BtDbvtBroadphaseClass bc , BtOverlappingPairCacheClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#74>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_m_prediction_set    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#74>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_m_prediction_get    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#75>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_m_stageCurrent_set    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#75>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_m_stageCurrent_get    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#76>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_m_fupdates_set    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#76>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_m_fupdates_get    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#77>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_m_dupdates_set    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#77>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_m_dupdates_get    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#78>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_m_cupdates_set    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#78>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_m_cupdates_get    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#79>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_m_newpairs_set    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#79>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_m_newpairs_get    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#80>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_m_fixedleft_set    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#80>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_m_fixedleft_get    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#81>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_m_updates_call_set    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc' ,  `Word32'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#81>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_m_updates_call_get    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc'  } ->  `Word32'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#82>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_m_updates_done_set    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc' ,  `Word32'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#82>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_m_updates_done_get    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc'  } ->  `Word32'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#83>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_m_updates_ratio_set    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#83>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_m_updates_ratio_get    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#84>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_m_pid_set    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#84>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_m_pid_get    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#85>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_m_cid_set    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#85>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_m_cid_get    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#86>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_m_gid_set    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#86>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_m_gid_get    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#87>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_m_releasepaircache_set    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc' ,  `Bool'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#87>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_m_releasepaircache_get    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc'  } ->  `Bool'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#88>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_m_deferedcollide_set    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc' ,  `Bool'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#88>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_m_deferedcollide_get    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc'  } ->  `Bool'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#89>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_m_needcleanup_set    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc' ,  `Bool'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#89>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtBroadphase_m_needcleanup_get    `( BtDbvtBroadphaseClass bc )' =>     { withBt* `bc'  } ->  `Bool'   #}+-- * btDbvtNode+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#174>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvtNode_new as btDbvtNode    {  } -> `BtDbvtNode' mkBtDbvtNode* #}+{#fun btDbvtNode_free    `( BtDbvtNodeClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#178>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvtNode_isinternal as btDbvtNode_isinternal    `( BtDbvtNodeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#177>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvtNode_isleaf as btDbvtNode_isleaf    `( BtDbvtNodeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#176>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvtNode_parent_set    `( BtDbvtNodeClass bc , BtDbvtNodeClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+-- * btDbvtProxy+{#fun btDbvtProxy_free    `( BtDbvtProxyClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#46>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtProxy_leaf_set    `( BtDbvtProxyClass bc , BtDbvtNodeClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#48>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtProxy_stage_set    `( BtDbvtProxyClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h?r=2223#48>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp?r=2223>+-}+{#fun btDbvtProxy_stage_get    `( BtDbvtProxyClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btDispatcher+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.h?r=2223#83>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp?r=2223>+-}+{#fun btDispatcher_releaseManifold as btDispatcher_releaseManifold    `( BtDispatcherClass bc , BtPersistentManifoldClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ manifold+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.h?r=2223#93>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp?r=2223>+-}+{#fun btDispatcher_getNumManifolds as btDispatcher_getNumManifolds    `( BtDispatcherClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.h?r=2223#85>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp?r=2223>+-}+{#fun btDispatcher_clearManifold as btDispatcher_clearManifold    `( BtDispatcherClass bc , BtPersistentManifoldClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ manifold+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.h?r=2223#79>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp?r=2223>+-}+{#fun btDispatcher_findAlgorithm as btDispatcher_findAlgorithm    `( BtDispatcherClass bc , BtCollisionObjectClass p0 , BtCollisionObjectClass p1 , BtPersistentManifoldClass p2 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ body0+, withBt* `p1'  -- ^ body1+, withBt* `p2'  -- ^ sharedManifold+ } ->  `BtCollisionAlgorithm' mkBtCollisionAlgorithm*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.h?r=2223#89>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp?r=2223>+-}+{#fun btDispatcher_needsResponse as btDispatcher_needsResponse    `( BtDispatcherClass bc , BtCollisionObjectClass p0 , BtCollisionObjectClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ body0+, withBt* `p1'  -- ^ body1+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.h?r=2223#91>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp?r=2223>+-}+{#fun btDispatcher_dispatchAllCollisionPairs as btDispatcher_dispatchAllCollisionPairs    `( BtDispatcherClass bc , BtOverlappingPairCacheClass p0 , BtDispatcherInfoClass p1 , BtDispatcherClass p2 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ pairCache+, withBt* `p1'  -- ^ dispatchInfo+, withBt* `p2'  -- ^ dispatcher+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.h?r=2223#87>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp?r=2223>+-}+{#fun btDispatcher_needsCollision as btDispatcher_needsCollision    `( BtDispatcherClass bc , BtCollisionObjectClass p0 , BtCollisionObjectClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ body0+, withBt* `p1'  -- ^ body1+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.h?r=2223#95>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp?r=2223>+-}+{#fun btDispatcher_getManifoldByIndexInternal as btDispatcher_getManifoldByIndexInternal    `( BtDispatcherClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BtPersistentManifold' mkBtPersistentManifold*  #}+-- * btDispatcherInfo+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.h?r=2223#38>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp?r=2223>+-}+{#fun btDispatcherInfo_new as btDispatcherInfo    {  } -> `BtDispatcherInfo' mkBtDispatcherInfo* #}+{#fun btDispatcherInfo_free    `( BtDispatcherInfoClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.h?r=2223#64>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp?r=2223>+-}+{#fun btDispatcherInfo_m_allowedCcdPenetration_set    `( BtDispatcherInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.h?r=2223#64>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp?r=2223>+-}+{#fun btDispatcherInfo_m_allowedCcdPenetration_get    `( BtDispatcherInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.h?r=2223#66>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp?r=2223>+-}+{#fun btDispatcherInfo_m_convexConservativeDistanceThreshold_set    `( BtDispatcherInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.h?r=2223#66>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp?r=2223>+-}+{#fun btDispatcherInfo_m_convexConservativeDistanceThreshold_get    `( BtDispatcherInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.h?r=2223#60>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp?r=2223>+-}+{#fun btDispatcherInfo_m_debugDraw_set    `( BtDispatcherInfoClass bc , BtIDebugDrawClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.h?r=2223#57>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp?r=2223>+-}+{#fun btDispatcherInfo_m_dispatchFunc_set    `( BtDispatcherInfoClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.h?r=2223#57>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp?r=2223>+-}+{#fun btDispatcherInfo_m_dispatchFunc_get    `( BtDispatcherInfoClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.h?r=2223#62>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp?r=2223>+-}+{#fun btDispatcherInfo_m_enableSPU_set    `( BtDispatcherInfoClass bc )' =>     { withBt* `bc' ,  `Bool'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.h?r=2223#62>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp?r=2223>+-}+{#fun btDispatcherInfo_m_enableSPU_get    `( BtDispatcherInfoClass bc )' =>     { withBt* `bc'  } ->  `Bool'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.h?r=2223#61>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp?r=2223>+-}+{#fun btDispatcherInfo_m_enableSatConvex_set    `( BtDispatcherInfoClass bc )' =>     { withBt* `bc' ,  `Bool'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.h?r=2223#61>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp?r=2223>+-}+{#fun btDispatcherInfo_m_enableSatConvex_get    `( BtDispatcherInfoClass bc )' =>     { withBt* `bc'  } ->  `Bool'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.h?r=2223#67>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp?r=2223>+-}+{#fun btDispatcherInfo_m_stackAllocator_set    `( BtDispatcherInfoClass bc , BtStackAllocClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.h?r=2223#56>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp?r=2223>+-}+{#fun btDispatcherInfo_m_stepCount_set    `( BtDispatcherInfoClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.h?r=2223#56>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp?r=2223>+-}+{#fun btDispatcherInfo_m_stepCount_get    `( BtDispatcherInfoClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.h?r=2223#58>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp?r=2223>+-}+{#fun btDispatcherInfo_m_timeOfImpact_set    `( BtDispatcherInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.h?r=2223#58>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp?r=2223>+-}+{#fun btDispatcherInfo_m_timeOfImpact_get    `( BtDispatcherInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.h?r=2223#55>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp?r=2223>+-}+{#fun btDispatcherInfo_m_timeStep_set    `( BtDispatcherInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.h?r=2223#55>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp?r=2223>+-}+{#fun btDispatcherInfo_m_timeStep_get    `( BtDispatcherInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.h?r=2223#59>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp?r=2223>+-}+{#fun btDispatcherInfo_m_useContinuous_set    `( BtDispatcherInfoClass bc )' =>     { withBt* `bc' ,  `Bool'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.h?r=2223#59>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp?r=2223>+-}+{#fun btDispatcherInfo_m_useContinuous_get    `( BtDispatcherInfoClass bc )' =>     { withBt* `bc'  } ->  `Bool'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.h?r=2223#65>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp?r=2223>+-}+{#fun btDispatcherInfo_m_useConvexConservativeDistanceUtil_set    `( BtDispatcherInfoClass bc )' =>     { withBt* `bc' ,  `Bool'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.h?r=2223#65>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp?r=2223>+-}+{#fun btDispatcherInfo_m_useConvexConservativeDistanceUtil_get    `( BtDispatcherInfoClass bc )' =>     { withBt* `bc'  } ->  `Bool'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.h?r=2223#63>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp?r=2223>+-}+{#fun btDispatcherInfo_m_useEpa_set    `( BtDispatcherInfoClass bc )' =>     { withBt* `bc' ,  `Bool'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.h?r=2223#63>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp?r=2223>+-}+{#fun btDispatcherInfo_m_useEpa_get    `( BtDispatcherInfoClass bc )' =>     { withBt* `bc'  } ->  `Bool'   #}+-- * btHashedOverlappingPairCache+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#101>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btHashedOverlappingPairCache_new as btHashedOverlappingPairCache    {  } -> `BtHashedOverlappingPairCache' mkBtHashedOverlappingPairCache* #}+{#fun btHashedOverlappingPairCache_free    `( BtHashedOverlappingPairCacheClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#168>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btHashedOverlappingPairCache_getOverlapFilterCallback as btHashedOverlappingPairCache_getOverlapFilterCallback    `( BtHashedOverlappingPairCacheClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtOverlapFilterCallback' mkBtOverlapFilterCallback*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#122>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btHashedOverlappingPairCache_addOverlappingPair as btHashedOverlappingPairCache_addOverlappingPair    `( BtHashedOverlappingPairCacheClass bc , BtBroadphaseProxyClass p0 , BtBroadphaseProxyClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy0+, withBt* `p1'  -- ^ proxy1+ } ->  `BtBroadphasePair' mkBtBroadphasePair*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#105>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btHashedOverlappingPairCache_removeOverlappingPairsContainingProxy as btHashedOverlappingPairCache_removeOverlappingPairsContainingProxy    `( BtHashedOverlappingPairCacheClass bc , BtBroadphaseProxyClass p0 , BtDispatcherClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy+, withBt* `p1'  -- ^ dispatcher+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#109>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btHashedOverlappingPairCache_needsBroadphaseCollision as btHashedOverlappingPairCache_needsBroadphaseCollision    `( BtHashedOverlappingPairCacheClass bc , BtBroadphaseProxyClass p0 , BtBroadphaseProxyClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy0+, withBt* `p1'  -- ^ proxy1+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#163>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btHashedOverlappingPairCache_findPair as btHashedOverlappingPairCache_findPair    `( BtHashedOverlappingPairCacheClass bc , BtBroadphaseProxyClass p0 , BtBroadphaseProxyClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy0+, withBt* `p1'  -- ^ proxy1+ } ->  `BtBroadphasePair' mkBtBroadphasePair*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#134>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btHashedOverlappingPairCache_cleanProxyFromPairs as btHashedOverlappingPairCache_cleanProxyFromPairs    `( BtHashedOverlappingPairCacheClass bc , BtBroadphaseProxyClass p0 , BtDispatcherClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy+, withBt* `p1'  -- ^ dispatcher+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#159>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btHashedOverlappingPairCache_cleanOverlappingPair as btHashedOverlappingPairCache_cleanOverlappingPair    `( BtHashedOverlappingPairCacheClass bc , BtBroadphasePairClass p0 , BtDispatcherClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ pair+, withBt* `p1'  -- ^ dispatcher+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#178>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btHashedOverlappingPairCache_getNumOverlappingPairs as btHashedOverlappingPairCache_getNumOverlappingPairs    `( BtHashedOverlappingPairCacheClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#165>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btHashedOverlappingPairCache_GetCount as btHashedOverlappingPairCache_GetCount    `( BtHashedOverlappingPairCacheClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#137>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btHashedOverlappingPairCache_processAllOverlappingPairs as btHashedOverlappingPairCache_processAllOverlappingPairs    `( BtHashedOverlappingPairCacheClass bc , BtOverlapCallbackClass p0 , BtDispatcherClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ arg0+, withBt* `p1'  -- ^ dispatcher+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#139>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btHashedOverlappingPairCache_getOverlappingPairArrayPtr0 as btHashedOverlappingPairCache_getOverlappingPairArrayPtr    `( BtHashedOverlappingPairCacheClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtBroadphasePair' mkBtBroadphasePair*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#139>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btHashedOverlappingPairCache_getOverlappingPairArrayPtr0 as btHashedOverlappingPairCache_getOverlappingPairArrayPtr0    `( BtHashedOverlappingPairCacheClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtBroadphasePair' mkBtBroadphasePair*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#144>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btHashedOverlappingPairCache_getOverlappingPairArrayPtr1 as btHashedOverlappingPairCache_getOverlappingPairArrayPtr1    `( BtHashedOverlappingPairCacheClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtBroadphasePair' mkBtBroadphasePair*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#173>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btHashedOverlappingPairCache_setOverlapFilterCallback as btHashedOverlappingPairCache_setOverlapFilterCallback    `( BtHashedOverlappingPairCacheClass bc , BtOverlapFilterCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ callback+ } ->  `()'  #}+-- * btMultiSapBroadphase+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h?r=2223#116>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp?r=2223>+-}+{#fun btMultiSapBroadphase_addToChildBroadphase as btMultiSapBroadphase_addToChildBroadphase    `( BtMultiSapBroadphaseClass bc , BtMultiSapBroadphase_btMultiSapProxyClass p0 , BtBroadphaseProxyClass p1 , BtBroadphaseInterfaceClass p2 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ parentMultiSapProxy+, withBt* `p1'  -- ^ childProxy+, withBt* `p2'  -- ^ childBroadphase+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h?r=2223#114>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp?r=2223>+-}+{#fun btMultiSapBroadphase_rayTest as btMultiSapBroadphase_rayTest    `( BtMultiSapBroadphaseClass bc , BtBroadphaseRayCallbackClass p2 )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ rayFrom+, withVector3* `Vector3'  peekVector3* -- ^ rayTo+, withBt* `p2'  -- ^ rayCallback+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h?r=2223#114>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp?r=2223>+-}+{#fun btMultiSapBroadphase_rayTest as btMultiSapBroadphase_rayTest'    `( BtMultiSapBroadphaseClass bc , BtBroadphaseRayCallbackClass p2 )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ rayFrom+, allocaVector3-  `Vector3'  peekVector3* -- ^ rayTo+, withBt* `p2'  -- ^ rayCallback+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h?r=2223#111>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp?r=2223>+-}+{#fun btMultiSapBroadphase_setAabb as btMultiSapBroadphase_setAabb    `( BtMultiSapBroadphaseClass bc , BtBroadphaseProxyClass p0 , BtDispatcherClass p3 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+, withBt* `p3'  -- ^ dispatcher+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h?r=2223#111>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp?r=2223>+-}+{#fun btMultiSapBroadphase_setAabb as btMultiSapBroadphase_setAabb'    `( BtMultiSapBroadphaseClass bc , BtBroadphaseProxyClass p0 , BtDispatcherClass p3 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+, withBt* `p3'  -- ^ dispatcher+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h?r=2223#123>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp?r=2223>+-}+{#fun btMultiSapBroadphase_getOverlappingPairCache0 as btMultiSapBroadphase_getOverlappingPairCache    `( BtMultiSapBroadphaseClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtOverlappingPairCache' mkBtOverlappingPairCache*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h?r=2223#123>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp?r=2223>+-}+{#fun btMultiSapBroadphase_getOverlappingPairCache0 as btMultiSapBroadphase_getOverlappingPairCache0    `( BtMultiSapBroadphaseClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtOverlappingPairCache' mkBtOverlappingPairCache*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h?r=2223#127>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp?r=2223>+-}+{#fun btMultiSapBroadphase_getOverlappingPairCache1 as btMultiSapBroadphase_getOverlappingPairCache1    `( BtMultiSapBroadphaseClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtOverlappingPairCache' mkBtOverlappingPairCache*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h?r=2223#140>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp?r=2223>+-}+{#fun btMultiSapBroadphase_buildTree as btMultiSapBroadphase_buildTree    `( BtMultiSapBroadphaseClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ bvhAabbMin+, withVector3* `Vector3'  peekVector3* -- ^ bvhAabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h?r=2223#140>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp?r=2223>+-}+{#fun btMultiSapBroadphase_buildTree as btMultiSapBroadphase_buildTree'    `( BtMultiSapBroadphaseClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ bvhAabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ bvhAabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h?r=2223#147>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp?r=2223>+-}+{#fun btMultiSapBroadphase_resetPool as btMultiSapBroadphase_resetPool    `( BtMultiSapBroadphaseClass bc , BtDispatcherClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ dispatcher+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h?r=2223#119>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp?r=2223>+-}+{#fun btMultiSapBroadphase_calculateOverlappingPairs as btMultiSapBroadphase_calculateOverlappingPairs    `( BtMultiSapBroadphaseClass bc , BtDispatcherClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ dispatcher+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h?r=2223#121>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp?r=2223>+-}+{#fun btMultiSapBroadphase_testAabbOverlap as btMultiSapBroadphase_testAabbOverlap    `( BtMultiSapBroadphaseClass bc , BtBroadphaseProxyClass p0 , BtBroadphaseProxyClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy0+, withBt* `p1'  -- ^ proxy1+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h?r=2223#112>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp?r=2223>+-}+{#fun btMultiSapBroadphase_getAabb as btMultiSapBroadphase_getAabb    `( BtMultiSapBroadphaseClass bc , BtBroadphaseProxyClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h?r=2223#112>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp?r=2223>+-}+{#fun btMultiSapBroadphase_getAabb as btMultiSapBroadphase_getAabb'    `( BtMultiSapBroadphaseClass bc , BtBroadphaseProxyClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h?r=2223#142>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp?r=2223>+-}+{#fun btMultiSapBroadphase_printStats as btMultiSapBroadphase_printStats    `( BtMultiSapBroadphaseClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h?r=2223#134>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp?r=2223>+-}+{#fun btMultiSapBroadphase_getBroadphaseAabb as btMultiSapBroadphase_getBroadphaseAabb    `( BtMultiSapBroadphaseClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h?r=2223#134>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp?r=2223>+-}+{#fun btMultiSapBroadphase_getBroadphaseAabb as btMultiSapBroadphase_getBroadphaseAabb'    `( BtMultiSapBroadphaseClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h?r=2223#110>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp?r=2223>+-}+{#fun btMultiSapBroadphase_destroyProxy as btMultiSapBroadphase_destroyProxy    `( BtMultiSapBroadphaseClass bc , BtBroadphaseProxyClass p0 , BtDispatcherClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy+, withBt* `p1'  -- ^ dispatcher+ } ->  `()'  #}+-- * btMultiSapProxy+{#fun btMultiSapBroadphase_btMultiSapProxy_free    `( BtMultiSapBroadphase_btMultiSapProxyClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h?r=2223#67>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp?r=2223>+-}+{#fun btMultiSapBroadphase_btMultiSapProxy_m_aabbMax_set    `( BtMultiSapBroadphase_btMultiSapProxyClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h?r=2223#67>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp?r=2223>+-}+{#fun btMultiSapBroadphase_btMultiSapProxy_m_aabbMax_get    `( BtMultiSapBroadphase_btMultiSapProxyClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h?r=2223#66>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp?r=2223>+-}+{#fun btMultiSapBroadphase_btMultiSapProxy_m_aabbMin_set    `( BtMultiSapBroadphase_btMultiSapProxyClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h?r=2223#66>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp?r=2223>+-}+{#fun btMultiSapBroadphase_btMultiSapProxy_m_aabbMin_get    `( BtMultiSapBroadphase_btMultiSapProxyClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h?r=2223#69>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp?r=2223>+-}+{#fun btMultiSapBroadphase_btMultiSapProxy_m_shapeType_set    `( BtMultiSapBroadphase_btMultiSapProxyClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h?r=2223#69>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp?r=2223>+-}+{#fun btMultiSapBroadphase_btMultiSapProxy_m_shapeType_get    `( BtMultiSapBroadphase_btMultiSapProxyClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btNodeOverlapCallback+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#155>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btNodeOverlapCallback_processNode as btNodeOverlapCallback_processNode    `( BtNodeOverlapCallbackClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ subPart+,  `Int'  -- ^ triangleIndex+ } ->  `()'  #}+-- * btNullPairCache+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#387>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btNullPairCache_new as btNullPairCache    {  } -> `BtNullPairCache' mkBtNullPairCache* #}+{#fun btNullPairCache_free    `( BtNullPairCacheClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#458>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btNullPairCache_sortOverlappingPairs as btNullPairCache_sortOverlappingPairs    `( BtNullPairCacheClass bc , BtDispatcherClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ dispatcher+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#439>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btNullPairCache_setInternalGhostPairCallback as btNullPairCache_setInternalGhostPairCallback    `( BtNullPairCacheClass bc , BtOverlappingPairCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ arg0+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#444>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btNullPairCache_addOverlappingPair as btNullPairCache_addOverlappingPair    `( BtNullPairCacheClass bc , BtBroadphaseProxyClass p0 , BtBroadphaseProxyClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ arg0+, withBt* `p1'  -- ^ arg1+ } ->  `BtBroadphasePair' mkBtBroadphasePair*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#454>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btNullPairCache_removeOverlappingPairsContainingProxy as btNullPairCache_removeOverlappingPairsContainingProxy    `( BtNullPairCacheClass bc , BtBroadphaseProxyClass p0 , BtDispatcherClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ arg0+, withBt* `p1'  -- ^ arg1+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#434>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btNullPairCache_hasDeferredRemoval as btNullPairCache_hasDeferredRemoval    `( BtNullPairCacheClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#429>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btNullPairCache_findPair as btNullPairCache_findPair    `( BtNullPairCacheClass bc , BtBroadphaseProxyClass p0 , BtBroadphaseProxyClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ arg0+, withBt* `p1'  -- ^ arg1+ } ->  `BtBroadphasePair' mkBtBroadphasePair*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#416>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btNullPairCache_cleanProxyFromPairs as btNullPairCache_cleanProxyFromPairs    `( BtNullPairCacheClass bc , BtBroadphaseProxyClass p0 , BtDispatcherClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ arg0+, withBt* `p1'  -- ^ arg1+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#406>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btNullPairCache_cleanOverlappingPair as btNullPairCache_cleanOverlappingPair    `( BtNullPairCacheClass bc , BtBroadphasePairClass p0 , BtDispatcherClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ arg0+, withBt* `p1'  -- ^ arg1+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#411>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btNullPairCache_getNumOverlappingPairs as btNullPairCache_getNumOverlappingPairs    `( BtNullPairCacheClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#421>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btNullPairCache_setOverlapFilterCallback as btNullPairCache_setOverlapFilterCallback    `( BtNullPairCacheClass bc , BtOverlapFilterCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ arg0+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#393>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btNullPairCache_getOverlappingPairArrayPtr0 as btNullPairCache_getOverlappingPairArrayPtr    `( BtNullPairCacheClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtBroadphasePair' mkBtBroadphasePair*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#393>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btNullPairCache_getOverlappingPairArrayPtr0 as btNullPairCache_getOverlappingPairArrayPtr0    `( BtNullPairCacheClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtBroadphasePair' mkBtBroadphasePair*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#397>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btNullPairCache_getOverlappingPairArrayPtr1 as btNullPairCache_getOverlappingPairArrayPtr1    `( BtNullPairCacheClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtBroadphasePair' mkBtBroadphasePair*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#425>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btNullPairCache_processAllOverlappingPairs as btNullPairCache_processAllOverlappingPairs    `( BtNullPairCacheClass bc , BtOverlapCallbackClass p0 , BtDispatcherClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ arg0+, withBt* `p1'  -- ^ arg1+ } ->  `()'  #}+-- * btOptimizedBvhNode+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#96>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btOptimizedBvhNode_new as btOptimizedBvhNode    {  } -> `BtOptimizedBvhNode' mkBtOptimizedBvhNode* #}+{#fun btOptimizedBvhNode_free    `( BtOptimizedBvhNodeClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#100>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btOptimizedBvhNode_m_aabbMinOrg_set    `( BtOptimizedBvhNodeClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#100>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btOptimizedBvhNode_m_aabbMinOrg_get    `( BtOptimizedBvhNodeClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#101>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btOptimizedBvhNode_m_aabbMaxOrg_set    `( BtOptimizedBvhNodeClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#101>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btOptimizedBvhNode_m_aabbMaxOrg_get    `( BtOptimizedBvhNodeClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#104>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btOptimizedBvhNode_m_escapeIndex_set    `( BtOptimizedBvhNodeClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#104>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btOptimizedBvhNode_m_escapeIndex_get    `( BtOptimizedBvhNodeClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#108>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btOptimizedBvhNode_m_subPart_set    `( BtOptimizedBvhNodeClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#108>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btOptimizedBvhNode_m_subPart_get    `( BtOptimizedBvhNodeClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#109>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btOptimizedBvhNode_m_triangleIndex_set    `( BtOptimizedBvhNodeClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#109>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btOptimizedBvhNode_m_triangleIndex_get    `( BtOptimizedBvhNodeClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btOptimizedBvhNodeDoubleData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#520>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btOptimizedBvhNodeDoubleData_new as btOptimizedBvhNodeDoubleData    {  } -> `BtOptimizedBvhNodeDoubleData' mkBtOptimizedBvhNodeDoubleData* #}+{#fun btOptimizedBvhNodeDoubleData_free    `( BtOptimizedBvhNodeDoubleDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#523>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btOptimizedBvhNodeDoubleData_m_escapeIndex_set    `( BtOptimizedBvhNodeDoubleDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#523>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btOptimizedBvhNodeDoubleData_m_escapeIndex_get    `( BtOptimizedBvhNodeDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#524>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btOptimizedBvhNodeDoubleData_m_subPart_set    `( BtOptimizedBvhNodeDoubleDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#524>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btOptimizedBvhNodeDoubleData_m_subPart_get    `( BtOptimizedBvhNodeDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#525>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btOptimizedBvhNodeDoubleData_m_triangleIndex_set    `( BtOptimizedBvhNodeDoubleDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#525>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btOptimizedBvhNodeDoubleData_m_triangleIndex_get    `( BtOptimizedBvhNodeDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btOptimizedBvhNodeFloatData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#510>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btOptimizedBvhNodeFloatData_new as btOptimizedBvhNodeFloatData    {  } -> `BtOptimizedBvhNodeFloatData' mkBtOptimizedBvhNodeFloatData* #}+{#fun btOptimizedBvhNodeFloatData_free    `( BtOptimizedBvhNodeFloatDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#513>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btOptimizedBvhNodeFloatData_m_escapeIndex_set    `( BtOptimizedBvhNodeFloatDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#513>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btOptimizedBvhNodeFloatData_m_escapeIndex_get    `( BtOptimizedBvhNodeFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#514>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btOptimizedBvhNodeFloatData_m_subPart_set    `( BtOptimizedBvhNodeFloatDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#514>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btOptimizedBvhNodeFloatData_m_subPart_get    `( BtOptimizedBvhNodeFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#515>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btOptimizedBvhNodeFloatData_m_triangleIndex_set    `( BtOptimizedBvhNodeFloatDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#515>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btOptimizedBvhNodeFloatData_m_triangleIndex_get    `( BtOptimizedBvhNodeFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btOverlapCallback+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#34>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btOverlapCallback_processOverlap as btOverlapCallback_processOverlap    `( BtOverlapCallbackClass bc , BtBroadphasePairClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ pair+ } ->  `Bool'  #}+-- * btOverlapFilterCallback+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#43>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btOverlapFilterCallback_needBroadphaseCollision as btOverlapFilterCallback_needBroadphaseCollision    `( BtOverlapFilterCallbackClass bc , BtBroadphaseProxyClass p0 , BtBroadphaseProxyClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy0+, withBt* `p1'  -- ^ proxy1+ } ->  `Bool'  #}+-- * btOverlappingPairCache+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#87>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btOverlappingPairCache_sortOverlappingPairs as btOverlappingPairCache_sortOverlappingPairs    `( BtOverlappingPairCacheClass bc , BtDispatcherClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ dispatcher+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#85>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btOverlappingPairCache_setInternalGhostPairCallback as btOverlappingPairCache_setInternalGhostPairCallback    `( BtOverlappingPairCacheClass bc , BtOverlappingPairCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ ghostPairCallback+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#77>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btOverlappingPairCache_setOverlapFilterCallback as btOverlappingPairCache_setOverlapFilterCallback    `( BtOverlappingPairCacheClass bc , BtOverlapFilterCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ callback+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#81>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btOverlappingPairCache_findPair as btOverlappingPairCache_findPair    `( BtOverlappingPairCacheClass bc , BtBroadphaseProxyClass p0 , BtBroadphaseProxyClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy0+, withBt* `p1'  -- ^ proxy1+ } ->  `BtBroadphasePair' mkBtBroadphasePair*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#75>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btOverlappingPairCache_cleanProxyFromPairs as btOverlappingPairCache_cleanProxyFromPairs    `( BtOverlappingPairCacheClass bc , BtBroadphaseProxyClass p0 , BtDispatcherClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy+, withBt* `p1'  -- ^ dispatcher+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#71>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btOverlappingPairCache_cleanOverlappingPair as btOverlappingPairCache_cleanOverlappingPair    `( BtOverlappingPairCacheClass bc , BtBroadphasePairClass p0 , BtDispatcherClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ pair+, withBt* `p1'  -- ^ dispatcher+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#73>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btOverlappingPairCache_getNumOverlappingPairs as btOverlappingPairCache_getNumOverlappingPairs    `( BtOverlappingPairCacheClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#79>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btOverlappingPairCache_processAllOverlappingPairs as btOverlappingPairCache_processAllOverlappingPairs    `( BtOverlappingPairCacheClass bc , BtOverlapCallbackClass p0 , BtDispatcherClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ arg0+, withBt* `p1'  -- ^ dispatcher+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#65>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btOverlappingPairCache_getOverlappingPairArrayPtr0 as btOverlappingPairCache_getOverlappingPairArrayPtr    `( BtOverlappingPairCacheClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtBroadphasePair' mkBtBroadphasePair*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#65>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btOverlappingPairCache_getOverlappingPairArrayPtr0 as btOverlappingPairCache_getOverlappingPairArrayPtr0    `( BtOverlappingPairCacheClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtBroadphasePair' mkBtBroadphasePair*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#67>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btOverlappingPairCache_getOverlappingPairArrayPtr1 as btOverlappingPairCache_getOverlappingPairArrayPtr1    `( BtOverlappingPairCacheClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtBroadphasePair' mkBtBroadphasePair*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#83>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btOverlappingPairCache_hasDeferredRemoval as btOverlappingPairCache_hasDeferredRemoval    `( BtOverlappingPairCacheClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+-- * btOverlappingPairCallback+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h?r=2223#32>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.cpp?r=2223>+-}+{#fun btOverlappingPairCallback_addOverlappingPair as btOverlappingPairCallback_addOverlappingPair    `( BtOverlappingPairCallbackClass bc , BtBroadphaseProxyClass p0 , BtBroadphaseProxyClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy0+, withBt* `p1'  -- ^ proxy1+ } ->  `BtBroadphasePair' mkBtBroadphasePair*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h?r=2223#36>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.cpp?r=2223>+-}+{#fun btOverlappingPairCallback_removeOverlappingPairsContainingProxy as btOverlappingPairCallback_removeOverlappingPairsContainingProxy    `( BtOverlappingPairCallbackClass bc , BtBroadphaseProxyClass p0 , BtDispatcherClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy0+, withBt* `p1'  -- ^ dispatcher+ } ->  `()'  #}+-- * btQuantizedBvh+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#334>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvh_new as btQuantizedBvh    {  } -> `BtQuantizedBvh' mkBtQuantizedBvh* #}+{#fun btQuantizedBvh_free    `( BtQuantizedBvhClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#470>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvh_getAlignmentSerializationPadding as btQuantizedBvh_getAlignmentSerializationPadding    `( )' =>     {  } ->  `Word32'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#343>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvh_buildInternal as btQuantizedBvh_buildInternal    `( BtQuantizedBvhClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#479>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvh_deSerializeFloat as btQuantizedBvh_deSerializeFloat    `( BtQuantizedBvhClass bc , BtQuantizedBvhFloatDataClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ quantizedBvhFloatData+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#486>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvh_isQuantized as btQuantizedBvh_isQuantized    `( BtQuantizedBvhClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#340>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvh_setQuantizationValues as btQuantizedBvh_setQuantizationValues    `( BtQuantizedBvhClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ bvhAabbMin+, withVector3* `Vector3'  peekVector3* -- ^ bvhAabbMax+,  `Float'  -- ^ quantizationMargin+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#340>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvh_setQuantizationValues as btQuantizedBvh_setQuantizationValues'    `( BtQuantizedBvhClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ bvhAabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ bvhAabbMax+,  `Float'  -- ^ quantizationMargin+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#346>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvh_reportAabbOverlappingNodex as btQuantizedBvh_reportAabbOverlappingNodex    `( BtQuantizedBvhClass bc , BtNodeOverlapCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ nodeCallback+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#346>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvh_reportAabbOverlappingNodex as btQuantizedBvh_reportAabbOverlappingNodex'    `( BtQuantizedBvhClass bc , BtNodeOverlapCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ nodeCallback+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#348>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvh_reportBoxCastOverlappingNodex as btQuantizedBvh_reportBoxCastOverlappingNodex    `( BtQuantizedBvhClass bc , BtNodeOverlapCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ nodeCallback+, withVector3* `Vector3'  peekVector3* -- ^ raySource+, withVector3* `Vector3'  peekVector3* -- ^ rayTarget+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#348>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvh_reportBoxCastOverlappingNodex as btQuantizedBvh_reportBoxCastOverlappingNodex'    `( BtQuantizedBvhClass bc , BtNodeOverlapCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ nodeCallback+, allocaVector3-  `Vector3'  peekVector3* -- ^ raySource+, allocaVector3-  `Vector3'  peekVector3* -- ^ rayTarget+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#462>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvh_calculateSerializeBufferSize as btQuantizedBvh_calculateSerializeBufferSize    `( BtQuantizedBvhClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Word32'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#347>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvh_reportRayOverlappingNodex as btQuantizedBvh_reportRayOverlappingNodex    `( BtQuantizedBvhClass bc , BtNodeOverlapCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ nodeCallback+, withVector3* `Vector3'  peekVector3* -- ^ raySource+, withVector3* `Vector3'  peekVector3* -- ^ rayTarget+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#347>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvh_reportRayOverlappingNodex as btQuantizedBvh_reportRayOverlappingNodex'    `( BtQuantizedBvhClass bc , BtNodeOverlapCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ nodeCallback+, allocaVector3-  `Vector3'  peekVector3* -- ^ raySource+, allocaVector3-  `Vector3'  peekVector3* -- ^ rayTarget+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#481>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvh_deSerializeDouble as btQuantizedBvh_deSerializeDouble    `( BtQuantizedBvhClass bc , BtQuantizedBvhDoubleDataClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ quantizedBvhDoubleData+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#572>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvh_calculateSerializeBufferSizeNew as btQuantizedBvh_calculateSerializeBufferSizeNew    `( BtQuantizedBvhClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+-- * btQuantizedBvhDoubleData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#555>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhDoubleData_new as btQuantizedBvhDoubleData    {  } -> `BtQuantizedBvhDoubleData' mkBtQuantizedBvhDoubleData* #}+{#fun btQuantizedBvhDoubleData_free    `( BtQuantizedBvhDoubleDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#563>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhDoubleData_m_contiguousNodesPtr_set    `( BtQuantizedBvhDoubleDataClass bc , BtOptimizedBvhNodeDoubleDataClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#559>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhDoubleData_m_curNodeIndex_set    `( BtQuantizedBvhDoubleDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#559>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhDoubleData_m_curNodeIndex_get    `( BtQuantizedBvhDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#561>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhDoubleData_m_numContiguousLeafNodes_set    `( BtQuantizedBvhDoubleDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#561>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhDoubleData_m_numContiguousLeafNodes_get    `( BtQuantizedBvhDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#562>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhDoubleData_m_numQuantizedContiguousNodes_set    `( BtQuantizedBvhDoubleDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#562>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhDoubleData_m_numQuantizedContiguousNodes_get    `( BtQuantizedBvhDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#567>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhDoubleData_m_numSubtreeHeaders_set    `( BtQuantizedBvhDoubleDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#567>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhDoubleData_m_numSubtreeHeaders_get    `( BtQuantizedBvhDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#564>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhDoubleData_m_quantizedContiguousNodesPtr_set    `( BtQuantizedBvhDoubleDataClass bc , BtQuantizedBvhNodeDataClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#568>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhDoubleData_m_subTreeInfoPtr_set    `( BtQuantizedBvhDoubleDataClass bc , BtBvhSubtreeInfoDataClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#566>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhDoubleData_m_traversalMode_set    `( BtQuantizedBvhDoubleDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#566>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhDoubleData_m_traversalMode_get    `( BtQuantizedBvhDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#560>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhDoubleData_m_useQuantization_set    `( BtQuantizedBvhDoubleDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#560>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhDoubleData_m_useQuantization_get    `( BtQuantizedBvhDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btQuantizedBvhFloatData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#538>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhFloatData_new as btQuantizedBvhFloatData    {  } -> `BtQuantizedBvhFloatData' mkBtQuantizedBvhFloatData* #}+{#fun btQuantizedBvhFloatData_free    `( BtQuantizedBvhFloatDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#546>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhFloatData_m_contiguousNodesPtr_set    `( BtQuantizedBvhFloatDataClass bc , BtOptimizedBvhNodeFloatDataClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#542>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhFloatData_m_curNodeIndex_set    `( BtQuantizedBvhFloatDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#542>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhFloatData_m_curNodeIndex_get    `( BtQuantizedBvhFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#544>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhFloatData_m_numContiguousLeafNodes_set    `( BtQuantizedBvhFloatDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#544>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhFloatData_m_numContiguousLeafNodes_get    `( BtQuantizedBvhFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#545>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhFloatData_m_numQuantizedContiguousNodes_set    `( BtQuantizedBvhFloatDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#545>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhFloatData_m_numQuantizedContiguousNodes_get    `( BtQuantizedBvhFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#550>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhFloatData_m_numSubtreeHeaders_set    `( BtQuantizedBvhFloatDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#550>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhFloatData_m_numSubtreeHeaders_get    `( BtQuantizedBvhFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#547>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhFloatData_m_quantizedContiguousNodesPtr_set    `( BtQuantizedBvhFloatDataClass bc , BtQuantizedBvhNodeDataClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#548>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhFloatData_m_subTreeInfoPtr_set    `( BtQuantizedBvhFloatDataClass bc , BtBvhSubtreeInfoDataClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#549>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhFloatData_m_traversalMode_set    `( BtQuantizedBvhFloatDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#549>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhFloatData_m_traversalMode_get    `( BtQuantizedBvhFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#543>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhFloatData_m_useQuantization_set    `( BtQuantizedBvhFloatDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#543>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhFloatData_m_useQuantization_get    `( BtQuantizedBvhFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btQuantizedBvhNode+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#59>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhNode_new as btQuantizedBvhNode    {  } -> `BtQuantizedBvhNode' mkBtQuantizedBvhNode* #}+{#fun btQuantizedBvhNode_free    `( BtQuantizedBvhNodeClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#73>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhNode_getEscapeIndex as btQuantizedBvhNode_getEscapeIndex    `( BtQuantizedBvhNodeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#78>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhNode_getTriangleIndex as btQuantizedBvhNode_getTriangleIndex    `( BtQuantizedBvhNodeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#84>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhNode_getPartId as btQuantizedBvhNode_getPartId    `( BtQuantizedBvhNodeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#68>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhNode_isLeafNode as btQuantizedBvhNode_isLeafNode    `( BtQuantizedBvhNodeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#66>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhNode_m_escapeIndexOrTriangleIndex_set    `( BtQuantizedBvhNodeClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#66>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhNode_m_escapeIndexOrTriangleIndex_get    `( BtQuantizedBvhNodeClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btQuantizedBvhNodeData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#531>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhNodeData_new as btQuantizedBvhNodeData    {  } -> `BtQuantizedBvhNodeData' mkBtQuantizedBvhNodeData* #}+{#fun btQuantizedBvhNodeData_free    `( BtQuantizedBvhNodeDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#534>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhNodeData_m_escapeIndexOrTriangleIndex_set    `( BtQuantizedBvhNodeDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h?r=2223#534>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhNodeData_m_escapeIndexOrTriangleIndex_get    `( BtQuantizedBvhNodeDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btSimpleBroadphase+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h?r=2223#123>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp?r=2223>+-}+{#fun btSimpleBroadphase_new as btSimpleBroadphase    `( BtOverlappingPairCacheClass p1 )' =>     {   `Int' , withBt* `p1'  } -> `BtSimpleBroadphase' mkBtSimpleBroadphase* #}+{#fun btSimpleBroadphase_free    `( BtSimpleBroadphaseClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h?r=2223#138>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp?r=2223>+-}+{#fun btSimpleBroadphase_rayTest as btSimpleBroadphase_rayTest    `( BtSimpleBroadphaseClass bc , BtBroadphaseRayCallbackClass p2 )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ rayFrom+, withVector3* `Vector3'  peekVector3* -- ^ rayTo+, withBt* `p2'  -- ^ rayCallback+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h?r=2223#138>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp?r=2223>+-}+{#fun btSimpleBroadphase_rayTest as btSimpleBroadphase_rayTest'    `( BtSimpleBroadphaseClass bc , BtBroadphaseRayCallbackClass p2 )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ rayFrom+, allocaVector3-  `Vector3'  peekVector3* -- ^ rayTo+, withBt* `p2'  -- ^ rayCallback+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h?r=2223#135>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp?r=2223>+-}+{#fun btSimpleBroadphase_setAabb as btSimpleBroadphase_setAabb    `( BtSimpleBroadphaseClass bc , BtBroadphaseProxyClass p0 , BtDispatcherClass p3 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+, withBt* `p3'  -- ^ dispatcher+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h?r=2223#135>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp?r=2223>+-}+{#fun btSimpleBroadphase_setAabb as btSimpleBroadphase_setAabb'    `( BtSimpleBroadphaseClass bc , BtBroadphaseProxyClass p0 , BtDispatcherClass p3 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+, withBt* `p3'  -- ^ dispatcher+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h?r=2223#141>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp?r=2223>+-}+{#fun btSimpleBroadphase_getOverlappingPairCache0 as btSimpleBroadphase_getOverlappingPairCache    `( BtSimpleBroadphaseClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtOverlappingPairCache' mkBtOverlappingPairCache*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h?r=2223#141>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp?r=2223>+-}+{#fun btSimpleBroadphase_getOverlappingPairCache0 as btSimpleBroadphase_getOverlappingPairCache0    `( BtSimpleBroadphaseClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtOverlappingPairCache' mkBtOverlappingPairCache*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h?r=2223#145>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp?r=2223>+-}+{#fun btSimpleBroadphase_getOverlappingPairCache1 as btSimpleBroadphase_getOverlappingPairCache1    `( BtSimpleBroadphaseClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtOverlappingPairCache' mkBtOverlappingPairCache*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h?r=2223#132>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp?r=2223>+-}+{#fun btSimpleBroadphase_calculateOverlappingPairs as btSimpleBroadphase_calculateOverlappingPairs    `( BtSimpleBroadphaseClass bc , BtDispatcherClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ dispatcher+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h?r=2223#150>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp?r=2223>+-}+{#fun btSimpleBroadphase_testAabbOverlap as btSimpleBroadphase_testAabbOverlap    `( BtSimpleBroadphaseClass bc , BtBroadphaseProxyClass p0 , BtBroadphaseProxyClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy0+, withBt* `p1'  -- ^ proxy1+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h?r=2223#136>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp?r=2223>+-}+{#fun btSimpleBroadphase_getAabb as btSimpleBroadphase_getAabb    `( BtSimpleBroadphaseClass bc , BtBroadphaseProxyClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h?r=2223#136>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp?r=2223>+-}+{#fun btSimpleBroadphase_getAabb as btSimpleBroadphase_getAabb'    `( BtSimpleBroadphaseClass bc , BtBroadphaseProxyClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h?r=2223#139>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp?r=2223>+-}+{#fun btSimpleBroadphase_aabbTest as btSimpleBroadphase_aabbTest    `( BtSimpleBroadphaseClass bc , BtBroadphaseAabbCallbackClass p2 )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+, withBt* `p2'  -- ^ callback+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h?r=2223#139>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp?r=2223>+-}+{#fun btSimpleBroadphase_aabbTest as btSimpleBroadphase_aabbTest'    `( BtSimpleBroadphaseClass bc , BtBroadphaseAabbCallbackClass p2 )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+, withBt* `p2'  -- ^ callback+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h?r=2223#161>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp?r=2223>+-}+{#fun btSimpleBroadphase_printStats as btSimpleBroadphase_printStats    `( BtSimpleBroadphaseClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h?r=2223#127>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp?r=2223>+-}+{#fun btSimpleBroadphase_aabbOverlap as btSimpleBroadphase_aabbOverlap    `(  BtSimpleBroadphaseProxyClass p0 , BtSimpleBroadphaseProxyClass p1 )' =>     {  withBt* `p0'  -- ^ proxy0+, withBt* `p1'  -- ^ proxy1+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h?r=2223#155>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp?r=2223>+-}+{#fun btSimpleBroadphase_getBroadphaseAabb as btSimpleBroadphase_getBroadphaseAabb    `( BtSimpleBroadphaseClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h?r=2223#155>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp?r=2223>+-}+{#fun btSimpleBroadphase_getBroadphaseAabb as btSimpleBroadphase_getBroadphaseAabb'    `( BtSimpleBroadphaseClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h?r=2223#134>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp?r=2223>+-}+{#fun btSimpleBroadphase_destroyProxy as btSimpleBroadphase_destroyProxy    `( BtSimpleBroadphaseClass bc , BtBroadphaseProxyClass p0 , BtDispatcherClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy+, withBt* `p1'  -- ^ dispatcher+ } ->  `()'  #}+-- * btSimpleBroadphaseProxy+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h?r=2223#30>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp?r=2223>+-}+{#fun btSimpleBroadphaseProxy_new0 as btSimpleBroadphaseProxy0    {  } -> `BtSimpleBroadphaseProxy' mkBtSimpleBroadphaseProxy* #}+{#fun btSimpleBroadphaseProxy_free    `( BtSimpleBroadphaseProxyClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h?r=2223#40>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp?r=2223>+-}+{#fun btSimpleBroadphaseProxy_GetNextFree as btSimpleBroadphaseProxy_GetNextFree    `( BtSimpleBroadphaseProxyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h?r=2223#39>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp?r=2223>+-}+{#fun btSimpleBroadphaseProxy_SetNextFree as btSimpleBroadphaseProxy_SetNextFree    `( BtSimpleBroadphaseProxyClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ next+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h?r=2223#25>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp?r=2223>+-}+{#fun btSimpleBroadphaseProxy_m_nextFree_set    `( BtSimpleBroadphaseProxyClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h?r=2223#25>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp?r=2223>+-}+{#fun btSimpleBroadphaseProxy_m_nextFree_get    `( BtSimpleBroadphaseProxyClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btSortedOverlappingPairCache+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#300>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btSortedOverlappingPairCache_new as btSortedOverlappingPairCache    {  } -> `BtSortedOverlappingPairCache' mkBtSortedOverlappingPairCache* #}+{#fun btSortedOverlappingPairCache_free    `( BtSortedOverlappingPairCacheClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#378>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btSortedOverlappingPairCache_sortOverlappingPairs as btSortedOverlappingPairCache_sortOverlappingPairs    `( BtSortedOverlappingPairCacheClass bc , BtDispatcherClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ dispatcher+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#373>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btSortedOverlappingPairCache_setInternalGhostPairCallback as btSortedOverlappingPairCache_setInternalGhostPairCallback    `( BtSortedOverlappingPairCacheClass bc , BtOverlappingPairCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ ghostPairCallback+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#358>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btSortedOverlappingPairCache_getOverlapFilterCallback as btSortedOverlappingPairCache_getOverlapFilterCallback    `( BtSortedOverlappingPairCacheClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtOverlapFilterCallback' mkBtOverlapFilterCallback*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#309>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btSortedOverlappingPairCache_addOverlappingPair as btSortedOverlappingPairCache_addOverlappingPair    `( BtSortedOverlappingPairCacheClass bc , BtBroadphaseProxyClass p0 , BtBroadphaseProxyClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy0+, withBt* `p1'  -- ^ proxy1+ } ->  `BtBroadphasePair' mkBtBroadphasePair*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#316>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btSortedOverlappingPairCache_removeOverlappingPairsContainingProxy as btSortedOverlappingPairCache_removeOverlappingPairsContainingProxy    `( BtSortedOverlappingPairCacheClass bc , BtBroadphaseProxyClass p0 , BtDispatcherClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy+, withBt* `p1'  -- ^ dispatcher+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#319>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btSortedOverlappingPairCache_needsBroadphaseCollision as btSortedOverlappingPairCache_needsBroadphaseCollision    `( BtSortedOverlappingPairCacheClass bc , BtBroadphaseProxyClass p0 , BtBroadphaseProxyClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy0+, withBt* `p1'  -- ^ proxy1+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#368>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btSortedOverlappingPairCache_hasDeferredRemoval as btSortedOverlappingPairCache_hasDeferredRemoval    `( BtSortedOverlappingPairCacheClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#311>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btSortedOverlappingPairCache_findPair as btSortedOverlappingPairCache_findPair    `( BtSortedOverlappingPairCacheClass bc , BtBroadphaseProxyClass p0 , BtBroadphaseProxyClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy0+, withBt* `p1'  -- ^ proxy1+ } ->  `BtBroadphasePair' mkBtBroadphasePair*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#314>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btSortedOverlappingPairCache_cleanProxyFromPairs as btSortedOverlappingPairCache_cleanProxyFromPairs    `( BtSortedOverlappingPairCacheClass bc , BtBroadphaseProxyClass p0 , BtDispatcherClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy+, withBt* `p1'  -- ^ dispatcher+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#307>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btSortedOverlappingPairCache_cleanOverlappingPair as btSortedOverlappingPairCache_cleanOverlappingPair    `( BtSortedOverlappingPairCacheClass bc , BtBroadphasePairClass p0 , BtDispatcherClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ pair+, withBt* `p1'  -- ^ dispatcher+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#353>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btSortedOverlappingPairCache_getNumOverlappingPairs as btSortedOverlappingPairCache_getNumOverlappingPairs    `( BtSortedOverlappingPairCacheClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#303>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btSortedOverlappingPairCache_processAllOverlappingPairs as btSortedOverlappingPairCache_processAllOverlappingPairs    `( BtSortedOverlappingPairCacheClass bc , BtOverlapCallbackClass p0 , BtDispatcherClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ arg0+, withBt* `p1'  -- ^ dispatcher+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#343>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btSortedOverlappingPairCache_getOverlappingPairArrayPtr0 as btSortedOverlappingPairCache_getOverlappingPairArrayPtr    `( BtSortedOverlappingPairCacheClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtBroadphasePair' mkBtBroadphasePair*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#343>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btSortedOverlappingPairCache_getOverlappingPairArrayPtr0 as btSortedOverlappingPairCache_getOverlappingPairArrayPtr0    `( BtSortedOverlappingPairCacheClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtBroadphasePair' mkBtBroadphasePair*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#348>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btSortedOverlappingPairCache_getOverlappingPairArrayPtr1 as btSortedOverlappingPairCache_getOverlappingPairArrayPtr1    `( BtSortedOverlappingPairCacheClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtBroadphasePair' mkBtBroadphasePair*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h?r=2223#363>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp?r=2223>+-}+{#fun btSortedOverlappingPairCache_setOverlapFilterCallback as btSortedOverlappingPairCache_setOverlapFilterCallback    `( BtSortedOverlappingPairCacheClass bc , BtOverlapFilterCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ callback+ } ->  `()'  #}+-- * sStkCLN+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#218>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_sStkCLN_new as btDbvt_sStkCLN    `( BtDbvtNodeClass p0 , BtDbvtNodeClass p1 )' =>     {  withBt* `p0' , withBt* `p1'  } -> `BtDbvt_sStkCLN' mkBtDbvt_sStkCLN* #}+{#fun btDbvt_sStkCLN_free    `( BtDbvt_sStkCLNClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#216>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_sStkCLN_node_set    `( BtDbvt_sStkCLNClass bc , BtDbvtNodeClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#217>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_sStkCLN_parent_set    `( BtDbvt_sStkCLNClass bc , BtDbvtNodeClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+-- * sStkNN+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#197>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_sStkNN_new0 as btDbvt_sStkNN0    {  } -> `BtDbvt_sStkNN' mkBtDbvt_sStkNN* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#198>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_sStkNN_new1 as btDbvt_sStkNN1    `( BtDbvtNodeClass p0 , BtDbvtNodeClass p1 )' =>     {  withBt* `p0' , withBt* `p1'  } -> `BtDbvt_sStkNN' mkBtDbvt_sStkNN* #}+{#fun btDbvt_sStkNN_free    `( BtDbvt_sStkNNClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#195>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_sStkNN_a_set    `( BtDbvt_sStkNNClass bc , BtDbvtNodeClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#196>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_sStkNN_b_set    `( BtDbvt_sStkNNClass bc , BtDbvtNodeClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+-- * sStkNP+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#204>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_sStkNP_new as btDbvt_sStkNP    `( BtDbvtNodeClass p0 )' =>     {  withBt* `p0' ,  `Word32'  } -> `BtDbvt_sStkNP' mkBtDbvt_sStkNP* #}+{#fun btDbvt_sStkNP_free    `( BtDbvt_sStkNPClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#203>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_sStkNP_mask_set    `( BtDbvt_sStkNPClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#203>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_sStkNP_mask_get    `( BtDbvt_sStkNPClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#202>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_sStkNP_node_set    `( BtDbvt_sStkNPClass bc , BtDbvtNodeClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+-- * sStkNPS+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#211>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_sStkNPS_new0 as btDbvt_sStkNPS0    {  } -> `BtDbvt_sStkNPS' mkBtDbvt_sStkNPS* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#212>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_sStkNPS_new1 as btDbvt_sStkNPS1    `( BtDbvtNodeClass p0 )' =>     {  withBt* `p0' ,  `Word32' ,  `Float'  } -> `BtDbvt_sStkNPS' mkBtDbvt_sStkNPS* #}+{#fun btDbvt_sStkNPS_free    `( BtDbvt_sStkNPSClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#209>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_sStkNPS_mask_set    `( BtDbvt_sStkNPSClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#209>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_sStkNPS_mask_get    `( BtDbvt_sStkNPSClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#208>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_sStkNPS_node_set    `( BtDbvt_sStkNPSClass bc , BtDbvtNodeClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#210>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_sStkNPS_value_set    `( BtDbvt_sStkNPSClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.h?r=2223#210>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/BroadphaseCollision/btDbvt.cpp?r=2223>+-}+{#fun btDbvt_sStkNPS_value_get    `( BtDbvt_sStkNPSClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}
+ Physics/Bullet/Raw/BulletCollision/CollisionDispatch.chs view
@@ -0,0 +1,1650 @@+{-#LANGUAGE ForeignFunctionInterface#-}+#include "Bullet.h"+module Physics.Bullet.Raw.BulletCollision.CollisionDispatch (+module Physics.Bullet.Raw.BulletCollision.CollisionDispatch+) where+import Control.Monad+import Foreign.Marshal.Alloc+import Foreign.ForeignPtr+import Foreign.Ptr+import Physics.Bullet.Raw.C2HS+import Physics.Bullet.Raw.Types+import Physics.Bullet.Raw.Class+-- * AllHitsRayResultCallback+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#269>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_AllHitsRayResultCallback_new as btCollisionWorld_AllHitsRayResultCallback    {  withVector3* `Vector3' , withVector3* `Vector3'  } -> `BtCollisionWorld_AllHitsRayResultCallback' mkBtCollisionWorld_AllHitsRayResultCallback* #}+{#fun btCollisionWorld_AllHitsRayResultCallback_free    `( BtCollisionWorld_AllHitsRayResultCallbackClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#284>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_AllHitsRayResultCallback_addSingleResult as btCollisionWorld_AllHitsRayResultCallback_addSingleResult    `( BtCollisionWorld_AllHitsRayResultCallbackClass bc , BtCollisionWorld_LocalRayResultClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ rayResult+,  `Bool'  -- ^ normalInWorldSpace+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#277>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_AllHitsRayResultCallback_m_rayFromWorld_set    `( BtCollisionWorld_AllHitsRayResultCallbackClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#277>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_AllHitsRayResultCallback_m_rayFromWorld_get    `( BtCollisionWorld_AllHitsRayResultCallbackClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#278>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_AllHitsRayResultCallback_m_rayToWorld_set    `( BtCollisionWorld_AllHitsRayResultCallbackClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#278>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_AllHitsRayResultCallback_m_rayToWorld_get    `( BtCollisionWorld_AllHitsRayResultCallbackClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+-- * ClosestConvexResultCallback+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#367>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_ClosestConvexResultCallback_new as btCollisionWorld_ClosestConvexResultCallback    {  withVector3* `Vector3' , withVector3* `Vector3'  } -> `BtCollisionWorld_ClosestConvexResultCallback' mkBtCollisionWorld_ClosestConvexResultCallback* #}+{#fun btCollisionWorld_ClosestConvexResultCallback_free    `( BtCollisionWorld_ClosestConvexResultCallbackClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#381>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_ClosestConvexResultCallback_addSingleResult as btCollisionWorld_ClosestConvexResultCallback_addSingleResult    `( BtCollisionWorld_ClosestConvexResultCallbackClass bc , BtCollisionWorld_LocalConvexResultClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ convexResult+,  `Bool'  -- ^ normalInWorldSpace+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#374>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_ClosestConvexResultCallback_m_convexFromWorld_set    `( BtCollisionWorld_ClosestConvexResultCallbackClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#374>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_ClosestConvexResultCallback_m_convexFromWorld_get    `( BtCollisionWorld_ClosestConvexResultCallbackClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#375>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_ClosestConvexResultCallback_m_convexToWorld_set    `( BtCollisionWorld_ClosestConvexResultCallbackClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#375>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_ClosestConvexResultCallback_m_convexToWorld_get    `( BtCollisionWorld_ClosestConvexResultCallbackClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#379>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_ClosestConvexResultCallback_m_hitCollisionObject_set    `( BtCollisionWorld_ClosestConvexResultCallbackClass bc , BtCollisionObjectClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#377>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_ClosestConvexResultCallback_m_hitNormalWorld_set    `( BtCollisionWorld_ClosestConvexResultCallbackClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#377>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_ClosestConvexResultCallback_m_hitNormalWorld_get    `( BtCollisionWorld_ClosestConvexResultCallbackClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#378>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_ClosestConvexResultCallback_m_hitPointWorld_set    `( BtCollisionWorld_ClosestConvexResultCallbackClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#378>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_ClosestConvexResultCallback_m_hitPointWorld_get    `( BtCollisionWorld_ClosestConvexResultCallbackClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+-- * ClosestRayResultCallback+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#235>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_ClosestRayResultCallback_new as btCollisionWorld_ClosestRayResultCallback    {  withVector3* `Vector3' , withVector3* `Vector3'  } -> `BtCollisionWorld_ClosestRayResultCallback' mkBtCollisionWorld_ClosestRayResultCallback* #}+{#fun btCollisionWorld_ClosestRayResultCallback_free    `( BtCollisionWorld_ClosestRayResultCallbackClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#247>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_ClosestRayResultCallback_addSingleResult as btCollisionWorld_ClosestRayResultCallback_addSingleResult    `( BtCollisionWorld_ClosestRayResultCallbackClass bc , BtCollisionWorld_LocalRayResultClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ rayResult+,  `Bool'  -- ^ normalInWorldSpace+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#244>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_ClosestRayResultCallback_m_hitNormalWorld_set    `( BtCollisionWorld_ClosestRayResultCallbackClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#244>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_ClosestRayResultCallback_m_hitNormalWorld_get    `( BtCollisionWorld_ClosestRayResultCallbackClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#245>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_ClosestRayResultCallback_m_hitPointWorld_set    `( BtCollisionWorld_ClosestRayResultCallbackClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#245>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_ClosestRayResultCallback_m_hitPointWorld_get    `( BtCollisionWorld_ClosestRayResultCallbackClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#241>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_ClosestRayResultCallback_m_rayFromWorld_set    `( BtCollisionWorld_ClosestRayResultCallbackClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#241>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_ClosestRayResultCallback_m_rayFromWorld_get    `( BtCollisionWorld_ClosestRayResultCallbackClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#242>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_ClosestRayResultCallback_m_rayToWorld_set    `( BtCollisionWorld_ClosestRayResultCallbackClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#242>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_ClosestRayResultCallback_m_rayToWorld_get    `( BtCollisionWorld_ClosestRayResultCallbackClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+-- * ContactResultCallback+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#424>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_ContactResultCallback_addSingleResult as btCollisionWorld_ContactResultCallback_addSingleResult    `( BtCollisionWorld_ContactResultCallbackClass bc , BtManifoldPointClass p0 , BtCollisionObjectClass p1 , BtCollisionObjectClass p4 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ cp+, withBt* `p1'  -- ^ colObj0+,  `Int'  -- ^ partId0+,  `Int'  -- ^ index0+, withBt* `p4'  -- ^ colObj1+,  `Int'  -- ^ partId1+,  `Int'  -- ^ index1+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#417>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_ContactResultCallback_needsCollision as btCollisionWorld_ContactResultCallback_needsCollision    `( BtCollisionWorld_ContactResultCallbackClass bc , BtBroadphaseProxyClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy0+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#404>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_ContactResultCallback_m_collisionFilterGroup_set    `( BtCollisionWorld_ContactResultCallbackClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#404>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_ContactResultCallback_m_collisionFilterGroup_get    `( BtCollisionWorld_ContactResultCallbackClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#405>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_ContactResultCallback_m_collisionFilterMask_set    `( BtCollisionWorld_ContactResultCallbackClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#405>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_ContactResultCallback_m_collisionFilterMask_get    `( BtCollisionWorld_ContactResultCallbackClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * ConvexResultCallback+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#362>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_ConvexResultCallback_addSingleResult as btCollisionWorld_ConvexResultCallback_addSingleResult    `( BtCollisionWorld_ConvexResultCallbackClass bc , BtCollisionWorld_LocalConvexResultClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ convexResult+,  `Bool'  -- ^ normalInWorldSpace+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#355>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_ConvexResultCallback_needsCollision as btCollisionWorld_ConvexResultCallback_needsCollision    `( BtCollisionWorld_ConvexResultCallbackClass bc , BtBroadphaseProxyClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy0+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#348>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_ConvexResultCallback_hasHit as btCollisionWorld_ConvexResultCallback_hasHit    `( BtCollisionWorld_ConvexResultCallbackClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#333>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_ConvexResultCallback_m_closestHitFraction_set    `( BtCollisionWorld_ConvexResultCallbackClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#333>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_ConvexResultCallback_m_closestHitFraction_get    `( BtCollisionWorld_ConvexResultCallbackClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#334>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_ConvexResultCallback_m_collisionFilterGroup_set    `( BtCollisionWorld_ConvexResultCallbackClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#334>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_ConvexResultCallback_m_collisionFilterGroup_get    `( BtCollisionWorld_ConvexResultCallbackClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#335>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_ConvexResultCallback_m_collisionFilterMask_set    `( BtCollisionWorld_ConvexResultCallbackClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#335>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_ConvexResultCallback_m_collisionFilterMask_get    `( BtCollisionWorld_ConvexResultCallbackClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * CreateFunc+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h?r=2223#55>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp?r=2223>+-}+{#fun btSphereSphereCollisionAlgorithm_CreateFunc_new as btSphereSphereCollisionAlgorithm_CreateFunc    {  } -> `BtSphereSphereCollisionAlgorithm_CreateFunc' mkBtSphereSphereCollisionAlgorithm_CreateFunc* #}+{#fun btSphereSphereCollisionAlgorithm_CreateFunc_free    `( BtSphereSphereCollisionAlgorithm_CreateFuncClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h?r=2223#56>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp?r=2223>+-}+{#fun btSphereSphereCollisionAlgorithm_CreateFunc_CreateCollisionAlgorithm as btSphereSphereCollisionAlgorithm_CreateFunc_CreateCollisionAlgorithm    `( BtSphereSphereCollisionAlgorithm_CreateFuncClass bc , BtCollisionAlgorithmConstructionInfoClass p0 , BtCollisionObjectClass p1 , BtCollisionObjectClass p2 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ ci+, withBt* `p1'  -- ^ body0+, withBt* `p2'  -- ^ body1+ } ->  `BtCollisionAlgorithm' mkBtCollisionAlgorithm*  #}+-- * CreateFunc+{#fun btConvexConvexAlgorithm_CreateFunc_free    `( BtConvexConvexAlgorithm_CreateFuncClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h?r=2223#99>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp?r=2223>+-}+{#fun btConvexConvexAlgorithm_CreateFunc_CreateCollisionAlgorithm as btConvexConvexAlgorithm_CreateFunc_CreateCollisionAlgorithm    `( BtConvexConvexAlgorithm_CreateFuncClass bc , BtCollisionAlgorithmConstructionInfoClass p0 , BtCollisionObjectClass p1 , BtCollisionObjectClass p2 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ ci+, withBt* `p1'  -- ^ body0+, withBt* `p2'  -- ^ body1+ } ->  `BtCollisionAlgorithm' mkBtCollisionAlgorithm*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h?r=2223#91>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp?r=2223>+-}+{#fun btConvexConvexAlgorithm_CreateFunc_m_simplexSolver_set    `( BtConvexConvexAlgorithm_CreateFuncClass bc , BtVoronoiSimplexSolverClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h?r=2223#92>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp?r=2223>+-}+{#fun btConvexConvexAlgorithm_CreateFunc_m_numPerturbationIterations_set    `( BtConvexConvexAlgorithm_CreateFuncClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h?r=2223#92>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp?r=2223>+-}+{#fun btConvexConvexAlgorithm_CreateFunc_m_numPerturbationIterations_get    `( BtConvexConvexAlgorithm_CreateFuncClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h?r=2223#93>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp?r=2223>+-}+{#fun btConvexConvexAlgorithm_CreateFunc_m_minimumPointsPerturbationThreshold_set    `( BtConvexConvexAlgorithm_CreateFuncClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h?r=2223#93>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp?r=2223>+-}+{#fun btConvexConvexAlgorithm_CreateFunc_m_minimumPointsPerturbationThreshold_get    `( BtConvexConvexAlgorithm_CreateFuncClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * LocalConvexResult+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#314>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_LocalConvexResult_new as btCollisionWorld_LocalConvexResult    `( BtCollisionObjectClass p0 , BtCollisionWorld_LocalShapeInfoClass p1 )' =>     {  withBt* `p0' , withBt* `p1' , withVector3* `Vector3' , withVector3* `Vector3' ,  `Float'  } -> `BtCollisionWorld_LocalConvexResult' mkBtCollisionWorld_LocalConvexResult* #}+{#fun btCollisionWorld_LocalConvexResult_free    `( BtCollisionWorld_LocalConvexResultClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#323>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_LocalConvexResult_m_hitCollisionObject_set    `( BtCollisionWorld_LocalConvexResultClass bc , BtCollisionObjectClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#327>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_LocalConvexResult_m_hitFraction_set    `( BtCollisionWorld_LocalConvexResultClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#327>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_LocalConvexResult_m_hitFraction_get    `( BtCollisionWorld_LocalConvexResultClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#325>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_LocalConvexResult_m_hitNormalLocal_set    `( BtCollisionWorld_LocalConvexResultClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#325>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_LocalConvexResult_m_hitNormalLocal_get    `( BtCollisionWorld_LocalConvexResultClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#326>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_LocalConvexResult_m_hitPointLocal_set    `( BtCollisionWorld_LocalConvexResultClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#326>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_LocalConvexResult_m_hitPointLocal_get    `( BtCollisionWorld_LocalConvexResultClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#324>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_LocalConvexResult_m_localShapeInfo_set    `( BtCollisionWorld_LocalConvexResultClass bc , BtCollisionWorld_LocalShapeInfoClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+-- * LocalRayResult+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#179>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_LocalRayResult_new as btCollisionWorld_LocalRayResult    `( BtCollisionObjectClass p0 , BtCollisionWorld_LocalShapeInfoClass p1 )' =>     {  withBt* `p0' , withBt* `p1' , withVector3* `Vector3' ,  `Float'  } -> `BtCollisionWorld_LocalRayResult' mkBtCollisionWorld_LocalRayResult* #}+{#fun btCollisionWorld_LocalRayResult_free    `( BtCollisionWorld_LocalRayResultClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#187>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_LocalRayResult_m_collisionObject_set    `( BtCollisionWorld_LocalRayResultClass bc , BtCollisionObjectClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#190>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_LocalRayResult_m_hitFraction_set    `( BtCollisionWorld_LocalRayResultClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#190>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_LocalRayResult_m_hitFraction_get    `( BtCollisionWorld_LocalRayResultClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#189>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_LocalRayResult_m_hitNormalLocal_set    `( BtCollisionWorld_LocalRayResultClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#189>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_LocalRayResult_m_hitNormalLocal_get    `( BtCollisionWorld_LocalRayResultClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#188>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_LocalRayResult_m_localShapeInfo_set    `( BtCollisionWorld_LocalRayResultClass bc , BtCollisionWorld_LocalShapeInfoClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+-- * LocalShapeInfo+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#166>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_LocalShapeInfo_new as btCollisionWorld_LocalShapeInfo    {  } -> `BtCollisionWorld_LocalShapeInfo' mkBtCollisionWorld_LocalShapeInfo* #}+{#fun btCollisionWorld_LocalShapeInfo_free    `( BtCollisionWorld_LocalShapeInfoClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#167>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_LocalShapeInfo_m_shapePart_set    `( BtCollisionWorld_LocalShapeInfoClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#167>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_LocalShapeInfo_m_shapePart_get    `( BtCollisionWorld_LocalShapeInfoClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#168>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_LocalShapeInfo_m_triangleIndex_set    `( BtCollisionWorld_LocalShapeInfoClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#168>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_LocalShapeInfo_m_triangleIndex_get    `( BtCollisionWorld_LocalShapeInfoClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * RayResultCallback+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#230>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_RayResultCallback_addSingleResult as btCollisionWorld_RayResultCallback_addSingleResult    `( BtCollisionWorld_RayResultCallbackClass bc , BtCollisionWorld_LocalRayResultClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ rayResult+,  `Bool'  -- ^ normalInWorldSpace+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#222>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_RayResultCallback_needsCollision as btCollisionWorld_RayResultCallback_needsCollision    `( BtCollisionWorld_RayResultCallbackClass bc , BtBroadphaseProxyClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ proxy0+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#207>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_RayResultCallback_hasHit as btCollisionWorld_RayResultCallback_hasHit    `( BtCollisionWorld_RayResultCallbackClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#197>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_RayResultCallback_m_closestHitFraction_set    `( BtCollisionWorld_RayResultCallbackClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#197>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_RayResultCallback_m_closestHitFraction_get    `( BtCollisionWorld_RayResultCallbackClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#199>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_RayResultCallback_m_collisionFilterGroup_set    `( BtCollisionWorld_RayResultCallbackClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#199>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_RayResultCallback_m_collisionFilterGroup_get    `( BtCollisionWorld_RayResultCallbackClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#200>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_RayResultCallback_m_collisionFilterMask_set    `( BtCollisionWorld_RayResultCallbackClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#200>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_RayResultCallback_m_collisionFilterMask_get    `( BtCollisionWorld_RayResultCallbackClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#198>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_RayResultCallback_m_collisionObject_set    `( BtCollisionWorld_RayResultCallbackClass bc , BtCollisionObjectClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#202>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_RayResultCallback_m_flags_set    `( BtCollisionWorld_RayResultCallbackClass bc )' =>     { withBt* `bc' ,  `Word32'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#202>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_RayResultCallback_m_flags_get    `( BtCollisionWorld_RayResultCallbackClass bc )' =>     { withBt* `bc'  } ->  `Word32'   #}+-- * btActivatingCollisionAlgorithm+-- * btCollisionAlgorithmCreateFunc+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionCreateFunc.h?r=2223#30>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionCreateFunc.cpp?r=2223>+-}+{#fun btCollisionAlgorithmCreateFunc_new as btCollisionAlgorithmCreateFunc    {  } -> `BtCollisionAlgorithmCreateFunc' mkBtCollisionAlgorithmCreateFunc* #}+{#fun btCollisionAlgorithmCreateFunc_free    `( BtCollisionAlgorithmCreateFuncClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionCreateFunc.h?r=2223#36>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionCreateFunc.cpp?r=2223>+-}+{#fun btCollisionAlgorithmCreateFunc_CreateCollisionAlgorithm as btCollisionAlgorithmCreateFunc_CreateCollisionAlgorithm    `( BtCollisionAlgorithmCreateFuncClass bc , BtCollisionAlgorithmConstructionInfoClass p0 , BtCollisionObjectClass p1 , BtCollisionObjectClass p2 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ arg0+, withBt* `p1'  -- ^ body0+, withBt* `p2'  -- ^ body1+ } ->  `BtCollisionAlgorithm' mkBtCollisionAlgorithm*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionCreateFunc.h?r=2223#28>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionCreateFunc.cpp?r=2223>+-}+{#fun btCollisionAlgorithmCreateFunc_m_swapped_set    `( BtCollisionAlgorithmCreateFuncClass bc )' =>     { withBt* `bc' ,  `Bool'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionCreateFunc.h?r=2223#28>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionCreateFunc.cpp?r=2223>+-}+{#fun btCollisionAlgorithmCreateFunc_m_swapped_get    `( BtCollisionAlgorithmCreateFuncClass bc )' =>     { withBt* `bc'  } ->  `Bool'   #}+-- * btCollisionConfiguration+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionConfiguration.h?r=2223#41>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionConfiguration.cpp?r=2223>+-}+{#fun btCollisionConfiguration_getStackAllocator as btCollisionConfiguration_getStackAllocator    `( BtCollisionConfigurationClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtStackAlloc' mkBtStackAlloc*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionConfiguration.h?r=2223#43>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionConfiguration.cpp?r=2223>+-}+{#fun btCollisionConfiguration_getCollisionAlgorithmCreateFunc as btCollisionConfiguration_getCollisionAlgorithmCreateFunc    `( BtCollisionConfigurationClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ proxyType0+,  `Int'  -- ^ proxyType1+ } ->  `BtCollisionAlgorithmCreateFunc' mkBtCollisionAlgorithmCreateFunc*  #}+-- * btCollisionDispatcher+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h?r=2223#107>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp?r=2223>+-}+{#fun btCollisionDispatcher_new as btCollisionDispatcher    `( BtCollisionConfigurationClass p0 )' =>     {  withBt* `p0'  } -> `BtCollisionDispatcher' mkBtCollisionDispatcher* #}+{#fun btCollisionDispatcher_free    `( BtCollisionDispatcherClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h?r=2223#74>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp?r=2223>+-}+{#fun btCollisionDispatcher_getDispatcherFlags as btCollisionDispatcher_getDispatcherFlags    `( BtCollisionDispatcherClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h?r=2223#144>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp?r=2223>+-}+{#fun btCollisionDispatcher_getCollisionConfiguration0 as btCollisionDispatcher_getCollisionConfiguration    `( BtCollisionDispatcherClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtCollisionConfiguration' mkBtCollisionConfiguration*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h?r=2223#144>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp?r=2223>+-}+{#fun btCollisionDispatcher_getCollisionConfiguration0 as btCollisionDispatcher_getCollisionConfiguration0    `( BtCollisionDispatcherClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtCollisionConfiguration' mkBtCollisionConfiguration*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h?r=2223#149>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp?r=2223>+-}+{#fun btCollisionDispatcher_getCollisionConfiguration1 as btCollisionDispatcher_getCollisionConfiguration1    `( BtCollisionDispatcherClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtCollisionConfiguration' mkBtCollisionConfiguration*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h?r=2223#79>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp?r=2223>+-}+{#fun btCollisionDispatcher_setDispatcherFlags as btCollisionDispatcher_setDispatcherFlags    `( BtCollisionDispatcherClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ flags+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h?r=2223#113>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp?r=2223>+-}+{#fun btCollisionDispatcher_releaseManifold as btCollisionDispatcher_releaseManifold    `( BtCollisionDispatcherClass bc , BtPersistentManifoldClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ manifold+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h?r=2223#154>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp?r=2223>+-}+{#fun btCollisionDispatcher_setCollisionConfiguration as btCollisionDispatcher_setCollisionConfiguration    `( BtCollisionDispatcherClass bc , BtCollisionConfigurationClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ config+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h?r=2223#87>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp?r=2223>+-}+{#fun btCollisionDispatcher_getNumManifolds as btCollisionDispatcher_getNumManifolds    `( BtCollisionDispatcherClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h?r=2223#116>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp?r=2223>+-}+{#fun btCollisionDispatcher_clearManifold as btCollisionDispatcher_clearManifold    `( BtCollisionDispatcherClass bc , BtPersistentManifoldClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ manifold+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h?r=2223#85>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp?r=2223>+-}+{#fun btCollisionDispatcher_registerCollisionCreateFunc as btCollisionDispatcher_registerCollisionCreateFunc    `( BtCollisionDispatcherClass bc , BtCollisionAlgorithmCreateFuncClass p2 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ proxyType0+,  `Int'  -- ^ proxyType1+, withBt* `p2'  -- ^ createFunc+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h?r=2223#138>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp?r=2223>+-}+{#fun btCollisionDispatcher_defaultNearCallback as btCollisionDispatcher_defaultNearCallback    `(  BtBroadphasePairClass p0 , BtCollisionDispatcherClass p1 , BtDispatcherInfoClass p2 )' =>     {  withBt* `p0'  -- ^ collisionPair+, withBt* `p1'  -- ^ dispatcher+, withBt* `p2'  -- ^ dispatchInfo+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h?r=2223#119>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp?r=2223>+-}+{#fun btCollisionDispatcher_findAlgorithm as btCollisionDispatcher_findAlgorithm    `( BtCollisionDispatcherClass bc , BtCollisionObjectClass p0 , BtCollisionObjectClass p1 , BtPersistentManifoldClass p2 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ body0+, withBt* `p1'  -- ^ body1+, withBt* `p2'  -- ^ sharedManifold+ } ->  `BtCollisionAlgorithm' mkBtCollisionAlgorithm*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h?r=2223#123>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp?r=2223>+-}+{#fun btCollisionDispatcher_needsResponse as btCollisionDispatcher_needsResponse    `( BtCollisionDispatcherClass bc , BtCollisionObjectClass p0 , BtCollisionObjectClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ body0+, withBt* `p1'  -- ^ body1+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h?r=2223#125>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp?r=2223>+-}+{#fun btCollisionDispatcher_dispatchAllCollisionPairs as btCollisionDispatcher_dispatchAllCollisionPairs    `( BtCollisionDispatcherClass bc , BtOverlappingPairCacheClass p0 , BtDispatcherInfoClass p1 , BtDispatcherClass p2 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ pairCache+, withBt* `p1'  -- ^ dispatchInfo+, withBt* `p2'  -- ^ dispatcher+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h?r=2223#121>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp?r=2223>+-}+{#fun btCollisionDispatcher_needsCollision as btCollisionDispatcher_needsCollision    `( BtCollisionDispatcherClass bc , BtCollisionObjectClass p0 , BtCollisionObjectClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ body0+, withBt* `p1'  -- ^ body1+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h?r=2223#97>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp?r=2223>+-}+{#fun btCollisionDispatcher_getManifoldByIndexInternal0 as btCollisionDispatcher_getManifoldByIndexInternal    `( BtCollisionDispatcherClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BtPersistentManifold' mkBtPersistentManifold*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h?r=2223#97>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp?r=2223>+-}+{#fun btCollisionDispatcher_getManifoldByIndexInternal0 as btCollisionDispatcher_getManifoldByIndexInternal0    `( BtCollisionDispatcherClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BtPersistentManifold' mkBtPersistentManifold*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h?r=2223#102>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp?r=2223>+-}+{#fun btCollisionDispatcher_getManifoldByIndexInternal1 as btCollisionDispatcher_getManifoldByIndexInternal1    `( BtCollisionDispatcherClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BtPersistentManifold' mkBtPersistentManifold*  #}+-- * btCollisionObject+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#190>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_new as btCollisionObject    {  } -> `BtCollisionObject' mkBtCollisionObject* #}+{#fun btCollisionObject_free    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#410>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_getCcdSquareMotionThreshold as btCollisionObject_getCcdSquareMotionThreshold    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#255>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_activate as btCollisionObject_activate    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ +,  `Bool'  -- ^ forceActivation+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#332>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_setInterpolationLinearVelocity as btCollisionObject_setInterpolationLinearVelocity    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ linvel+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#332>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_setInterpolationLinearVelocity as btCollisionObject_setInterpolationLinearVelocity'    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ linvel+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#274>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_getFriction as btCollisionObject_getFriction    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#367>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_setCompanionId as btCollisionObject_setCompanionId    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ id+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#337>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_setInterpolationAngularVelocity as btCollisionObject_setInterpolationAngularVelocity    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ angvel+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#337>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_setInterpolationAngularVelocity as btCollisionObject_setInterpolationAngularVelocity'    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ angvel+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#295>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_setWorldTransform as btCollisionObject_setWorldTransform    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ worldTrans+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#295>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_setWorldTransform as btCollisionObject_setWorldTransform'    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ worldTrans+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#362>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_getCompanionId as btCollisionObject_getCompanionId    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#162>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_setContactProcessingThreshold as btCollisionObject_setContactProcessingThreshold    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ contactProcessingThreshold+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#327>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_setInterpolationWorldTransform as btCollisionObject_setInterpolationWorldTransform    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ trans+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#327>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_setInterpolationWorldTransform as btCollisionObject_setInterpolationWorldTransform'    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ trans+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#342>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_getInterpolationLinearVelocity as btCollisionObject_getInterpolationLinearVelocity    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#140>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_mergesSimulationIslands as btCollisionObject_mergesSimulationIslands    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#194>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_setCollisionShape as btCollisionObject_setCollisionShape    `( BtCollisionObjectClass bc , BtCollisionShapeClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ collisionShape+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#418>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_setCcdMotionThreshold as btCollisionObject_setCcdMotionThreshold    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ ccdMotionThreshold+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#352>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_getIslandTag as btCollisionObject_getIslandTag    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#517>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_calculateSerializeBufferSize as btCollisionObject_calculateSerializeBufferSize    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#405>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_getCcdMotionThreshold as btCollisionObject_getCcdMotionThreshold    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#436>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_checkCollideWith as btCollisionObject_checkCollideWith    `( BtCollisionObjectClass bc , BtCollisionObjectClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ co+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#146>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_getAnisotropicFriction as btCollisionObject_getAnisotropicFriction    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#347>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_getInterpolationAngularVelocity as btCollisionObject_getInterpolationAngularVelocity    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#253>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_forceActivationState as btCollisionObject_forceActivationState    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ newState+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#171>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_isStaticObject as btCollisionObject_isStaticObject    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#270>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_setFriction as btCollisionObject_setFriction    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ frict+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#317>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_getInterpolationWorldTransform0 as btCollisionObject_getInterpolationWorldTransform    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#317>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_getInterpolationWorldTransform0 as btCollisionObject_getInterpolationWorldTransform0    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#322>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_getInterpolationWorldTransform1 as btCollisionObject_getInterpolationWorldTransform1    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#357>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_setIslandTag as btCollisionObject_setIslandTag    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ tag+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#377>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_setHitFraction as btCollisionObject_setHitFraction    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ hitFraction+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#449>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_serializeSingleObject as btCollisionObject_serializeSingleObject    `( BtCollisionObjectClass bc , BtSerializerClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ serializer+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#383>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_getCollisionFlags as btCollisionObject_getCollisionFlags    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#248>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_getDeactivationTime as btCollisionObject_getDeactivationTime    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#200>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_getCollisionShape0 as btCollisionObject_getCollisionShape    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtCollisionShape' mkBtCollisionShape*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#200>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_getCollisionShape0 as btCollisionObject_getCollisionShape0    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtCollisionShape' mkBtCollisionShape*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#205>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_getCollisionShape1 as btCollisionObject_getCollisionShape1    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtCollisionShape' mkBtCollisionShape*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#150>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_setAnisotropicFriction as btCollisionObject_setAnisotropicFriction    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ anisotropicFriction+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#150>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_setAnisotropicFriction as btCollisionObject_setAnisotropicFriction'    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ anisotropicFriction+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#301>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_getBroadphaseHandle0 as btCollisionObject_getBroadphaseHandle    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtBroadphaseProxy' mkBtBroadphaseProxy*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#301>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_getBroadphaseHandle0 as btCollisionObject_getBroadphaseHandle0    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtBroadphaseProxy' mkBtBroadphaseProxy*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#306>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_getBroadphaseHandle1 as btCollisionObject_getBroadphaseHandle1    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtBroadphaseProxy' mkBtBroadphaseProxy*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#400>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_setCcdSweptSphereRadius as btCollisionObject_setCcdSweptSphereRadius    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ radius+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#285>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_getWorldTransform0 as btCollisionObject_getWorldTransform    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#285>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_getWorldTransform0 as btCollisionObject_getWorldTransform0    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#290>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_getWorldTransform1 as btCollisionObject_getWorldTransform1    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#388>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_setCollisionFlags as btCollisionObject_setCollisionFlags    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ flags+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#222>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_internalSetTemporaryCollisionShape as btCollisionObject_internalSetTemporaryCollisionShape    `( BtCollisionObjectClass bc , BtCollisionShapeClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ collisionShape+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#372>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_getHitFraction as btCollisionObject_getHitFraction    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#257>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_isActive as btCollisionObject_isActive    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#242>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_setActivationState as btCollisionObject_setActivationState    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ newState+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#280>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_getInternalType as btCollisionObject_getInternalType    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#240>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_getActivationState as btCollisionObject_getActivationState    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#185>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_hasContactResponse as btCollisionObject_hasContactResponse    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#210>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_getRootCollisionShape0 as btCollisionObject_getRootCollisionShape    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtCollisionShape' mkBtCollisionShape*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#210>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_getRootCollisionShape0 as btCollisionObject_getRootCollisionShape0    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtCollisionShape' mkBtCollisionShape*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#215>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_getRootCollisionShape1 as btCollisionObject_getRootCollisionShape1    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtCollisionShape' mkBtCollisionShape*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#266>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_getRestitution as btCollisionObject_getRestitution    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#394>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_getCcdSweptSphereRadius as btCollisionObject_getCcdSweptSphereRadius    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#166>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_getContactProcessingThreshold as btCollisionObject_getContactProcessingThreshold    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#244>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_setDeactivationTime as btCollisionObject_setDeactivationTime    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ time+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#180>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_isStaticOrKinematicObject as btCollisionObject_isStaticOrKinematicObject    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#262>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_setRestitution as btCollisionObject_setRestitution    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ rest+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#155>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_hasAnisotropicFriction as btCollisionObject_hasAnisotropicFriction    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#311>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_setBroadphaseHandle as btCollisionObject_setBroadphaseHandle    `( BtCollisionObjectClass bc , BtBroadphaseProxyClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ handle+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#175>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObject_isKinematicObject as btCollisionObject_isKinematicObject    `( BtCollisionObjectClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+-- * btCollisionObjectDoubleData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#455>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectDoubleData_new as btCollisionObjectDoubleData    {  } -> `BtCollisionObjectDoubleData' mkBtCollisionObjectDoubleData* #}+{#fun btCollisionObjectDoubleData_free    `( BtCollisionObjectDoubleDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#478>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectDoubleData_m_activationState1_set    `( BtCollisionObjectDoubleDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#478>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectDoubleData_m_activationState1_get    `( BtCollisionObjectDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#472>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectDoubleData_m_ccdMotionThreshold_set    `( BtCollisionObjectDoubleDataClass bc )' =>     { withBt* `bc' ,  `Double'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#472>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectDoubleData_m_ccdMotionThreshold_get    `( BtCollisionObjectDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Double'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#471>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectDoubleData_m_ccdSweptSphereRadius_set    `( BtCollisionObjectDoubleDataClass bc )' =>     { withBt* `bc' ,  `Double'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#471>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectDoubleData_m_ccdSweptSphereRadius_get    `( BtCollisionObjectDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Double'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#480>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectDoubleData_m_checkCollideWith_set    `( BtCollisionObjectDoubleDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#480>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectDoubleData_m_checkCollideWith_get    `( BtCollisionObjectDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#475>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectDoubleData_m_collisionFlags_set    `( BtCollisionObjectDoubleDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#475>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectDoubleData_m_collisionFlags_get    `( BtCollisionObjectDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#477>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectDoubleData_m_companionId_set    `( BtCollisionObjectDoubleDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#477>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectDoubleData_m_companionId_get    `( BtCollisionObjectDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#466>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectDoubleData_m_contactProcessingThreshold_set    `( BtCollisionObjectDoubleDataClass bc )' =>     { withBt* `bc' ,  `Double'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#466>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectDoubleData_m_contactProcessingThreshold_get    `( BtCollisionObjectDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Double'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#467>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectDoubleData_m_deactivationTime_set    `( BtCollisionObjectDoubleDataClass bc )' =>     { withBt* `bc' ,  `Double'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#467>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectDoubleData_m_deactivationTime_get    `( BtCollisionObjectDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Double'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#468>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectDoubleData_m_friction_set    `( BtCollisionObjectDoubleDataClass bc )' =>     { withBt* `bc' ,  `Double'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#468>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectDoubleData_m_friction_get    `( BtCollisionObjectDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Double'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#474>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectDoubleData_m_hasAnisotropicFriction_set    `( BtCollisionObjectDoubleDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#474>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectDoubleData_m_hasAnisotropicFriction_get    `( BtCollisionObjectDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#470>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectDoubleData_m_hitFraction_set    `( BtCollisionObjectDoubleDataClass bc )' =>     { withBt* `bc' ,  `Double'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#470>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectDoubleData_m_hitFraction_get    `( BtCollisionObjectDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Double'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#479>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectDoubleData_m_internalType_set    `( BtCollisionObjectDoubleDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#479>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectDoubleData_m_internalType_get    `( BtCollisionObjectDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#476>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectDoubleData_m_islandTag1_set    `( BtCollisionObjectDoubleDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#476>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectDoubleData_m_islandTag1_get    `( BtCollisionObjectDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#459>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectDoubleData_m_name_set    `( BtCollisionObjectDoubleDataClass bc )' =>     { withBt* `bc' ,  `String'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#459>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectDoubleData_m_name_get    `( BtCollisionObjectDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `String'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#469>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectDoubleData_m_restitution_set    `( BtCollisionObjectDoubleDataClass bc )' =>     { withBt* `bc' ,  `Double'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#469>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectDoubleData_m_restitution_get    `( BtCollisionObjectDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Double'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#458>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectDoubleData_m_rootCollisionShape_set    `( BtCollisionObjectDoubleDataClass bc , BtCollisionShapeDataClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+-- * btCollisionObjectFloatData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#487>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectFloatData_new as btCollisionObjectFloatData    {  } -> `BtCollisionObjectFloatData' mkBtCollisionObjectFloatData* #}+{#fun btCollisionObjectFloatData_free    `( BtCollisionObjectFloatDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#510>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectFloatData_m_activationState1_set    `( BtCollisionObjectFloatDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#510>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectFloatData_m_activationState1_get    `( BtCollisionObjectFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#504>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectFloatData_m_ccdMotionThreshold_set    `( BtCollisionObjectFloatDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#504>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectFloatData_m_ccdMotionThreshold_get    `( BtCollisionObjectFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#503>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectFloatData_m_ccdSweptSphereRadius_set    `( BtCollisionObjectFloatDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#503>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectFloatData_m_ccdSweptSphereRadius_get    `( BtCollisionObjectFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#512>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectFloatData_m_checkCollideWith_set    `( BtCollisionObjectFloatDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#512>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectFloatData_m_checkCollideWith_get    `( BtCollisionObjectFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#507>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectFloatData_m_collisionFlags_set    `( BtCollisionObjectFloatDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#507>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectFloatData_m_collisionFlags_get    `( BtCollisionObjectFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#509>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectFloatData_m_companionId_set    `( BtCollisionObjectFloatDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#509>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectFloatData_m_companionId_get    `( BtCollisionObjectFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#498>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectFloatData_m_contactProcessingThreshold_set    `( BtCollisionObjectFloatDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#498>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectFloatData_m_contactProcessingThreshold_get    `( BtCollisionObjectFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#499>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectFloatData_m_deactivationTime_set    `( BtCollisionObjectFloatDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#499>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectFloatData_m_deactivationTime_get    `( BtCollisionObjectFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#500>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectFloatData_m_friction_set    `( BtCollisionObjectFloatDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#500>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectFloatData_m_friction_get    `( BtCollisionObjectFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#506>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectFloatData_m_hasAnisotropicFriction_set    `( BtCollisionObjectFloatDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#506>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectFloatData_m_hasAnisotropicFriction_get    `( BtCollisionObjectFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#502>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectFloatData_m_hitFraction_set    `( BtCollisionObjectFloatDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#502>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectFloatData_m_hitFraction_get    `( BtCollisionObjectFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#511>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectFloatData_m_internalType_set    `( BtCollisionObjectFloatDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#511>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectFloatData_m_internalType_get    `( BtCollisionObjectFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#508>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectFloatData_m_islandTag1_set    `( BtCollisionObjectFloatDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#508>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectFloatData_m_islandTag1_get    `( BtCollisionObjectFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#491>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectFloatData_m_name_set    `( BtCollisionObjectFloatDataClass bc )' =>     { withBt* `bc' ,  `String'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#491>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectFloatData_m_name_get    `( BtCollisionObjectFloatDataClass bc )' =>     { withBt* `bc'  } ->  `String'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#501>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectFloatData_m_restitution_set    `( BtCollisionObjectFloatDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#501>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectFloatData_m_restitution_get    `( BtCollisionObjectFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.h?r=2223#490>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp?r=2223>+-}+{#fun btCollisionObjectFloatData_m_rootCollisionShape_set    `( BtCollisionObjectFloatDataClass bc , BtCollisionShapeDataClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+-- * btCollisionWorld+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#109>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_new as btCollisionWorld    `( BtDispatcherClass p0 , BtBroadphaseInterfaceClass p1 , BtCollisionConfigurationClass p2 )' =>     {  withBt* `p0' , withBt* `p1' , withBt* `p2'  } -> `BtCollisionWorld' mkBtCollisionWorld* #}+{#fun btCollisionWorld_free    `( BtCollisionWorldClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#113>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_setBroadphase as btCollisionWorld_setBroadphase    `( BtCollisionWorldClass bc , BtBroadphaseInterfaceClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ pairCache+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#504>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_serialize as btCollisionWorld_serialize    `( BtCollisionWorldClass bc , BtSerializerClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ serializer+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#134>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_getDispatcher0 as btCollisionWorld_getDispatcher    `( BtCollisionWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtDispatcher' mkBtDispatcher*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#134>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_getDispatcher0 as btCollisionWorld_getDispatcher0    `( BtCollisionWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtDispatcher' mkBtDispatcher*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#139>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_getDispatcher1 as btCollisionWorld_getDispatcher1    `( BtCollisionWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtDispatcher' mkBtDispatcher*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#484>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_getDispatchInfo0 as btCollisionWorld_getDispatchInfo    `( BtCollisionWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtDispatcherInfo' mkBtDispatcherInfo*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#484>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_getDispatchInfo0 as btCollisionWorld_getDispatchInfo0    `( BtCollisionWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtDispatcherInfo' mkBtDispatcherInfo*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#489>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_getDispatchInfo1 as btCollisionWorld_getDispatchInfo1    `( BtCollisionWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtDispatcherInfo' mkBtDispatcherInfo*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#153>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_getDebugDrawer as btCollisionWorld_getDebugDrawer    `( BtCollisionWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtIDebugDraw' mkBtIDebugDraw*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#482>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_performDiscreteCollisionDetection as btCollisionWorld_performDiscreteCollisionDetection    `( BtCollisionWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#160>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_debugDrawObject as btCollisionWorld_debugDrawObject    `( BtCollisionWorldClass bc , BtCollisionShapeClass p1 )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ worldTransform+, withBt* `p1'  -- ^ shape+, withVector3* `Vector3'  peekVector3* -- ^ color+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#160>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_debugDrawObject as btCollisionWorld_debugDrawObject'    `( BtCollisionWorldClass bc , BtCollisionShapeClass p1 )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ worldTransform+, withBt* `p1'  -- ^ shape+, allocaVector3-  `Vector3'  peekVector3* -- ^ color+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#436>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_rayTest as btCollisionWorld_rayTest    `( BtCollisionWorldClass bc , BtCollisionWorld_RayResultCallbackClass p2 )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ rayFromWorld+, withVector3* `Vector3'  peekVector3* -- ^ rayToWorld+, withBt* `p2'  -- ^ resultCallback+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#436>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_rayTest as btCollisionWorld_rayTest'    `( BtCollisionWorldClass bc , BtCollisionWorld_RayResultCallbackClass p2 )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ rayFromWorld+, allocaVector3-  `Vector3'  peekVector3* -- ^ rayToWorld+, withBt* `p2'  -- ^ resultCallback+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#467>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_addCollisionObject as btCollisionWorld_addCollisionObject    `( BtCollisionWorldClass bc , BtCollisionObjectClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ collisionObject+,  `Int'  -- ^ collisionFilterGroup+,  `Int'  -- ^ collisionFilterMask+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#498>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_setForceUpdateAllAabbs as btCollisionWorld_setForceUpdateAllAabbs    `( BtCollisionWorldClass bc )' =>     { withBt* `bc'  -- ^ +,  `Bool'  -- ^ forceUpdateAllAabbs+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#444>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_contactTest as btCollisionWorld_contactTest    `( BtCollisionWorldClass bc , BtCollisionObjectClass p0 , BtCollisionWorld_ContactResultCallbackClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ colObj+, withBt* `p1'  -- ^ resultCallback+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#494>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_getForceUpdateAllAabbs as btCollisionWorld_getForceUpdateAllAabbs    `( BtCollisionWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#146>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_updateAabbs as btCollisionWorld_updateAabbs    `( BtCollisionWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#148>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_setDebugDrawer as btCollisionWorld_setDebugDrawer    `( BtCollisionWorldClass bc , BtIDebugDrawClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ debugDrawer+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#158>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_debugDrawWorld as btCollisionWorld_debugDrawWorld    `( BtCollisionWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#440>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_convexSweepTest as btCollisionWorld_convexSweepTest    `( BtCollisionWorldClass bc , BtConvexShapeClass p0 , BtCollisionWorld_ConvexResultCallbackClass p3 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ castShape+, withTransform* `Transform'  peekTransform* -- ^ from+, withTransform* `Transform'  peekTransform* -- ^ to+, withBt* `p3'  -- ^ resultCallback+,  `Float'  -- ^ allowedCcdPenetration+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#440>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_convexSweepTest as btCollisionWorld_convexSweepTest'    `( BtCollisionWorldClass bc , BtConvexShapeClass p0 , BtCollisionWorld_ConvexResultCallbackClass p3 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ castShape+, allocaTransform-  `Transform'  peekTransform* -- ^ from+, allocaTransform-  `Transform'  peekTransform* -- ^ to+, withBt* `p3'  -- ^ resultCallback+,  `Float'  -- ^ allowedCcdPenetration+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#429>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_getNumCollisionObjects as btCollisionWorld_getNumCollisionObjects    `( BtCollisionWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#448>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_contactPairTest as btCollisionWorld_contactPairTest    `( BtCollisionWorldClass bc , BtCollisionObjectClass p0 , BtCollisionObjectClass p1 , BtCollisionWorld_ContactResultCallbackClass p2 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ colObjA+, withBt* `p1'  -- ^ colObjB+, withBt* `p2'  -- ^ resultCallback+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#118>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_getBroadphase0 as btCollisionWorld_getBroadphase    `( BtCollisionWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtBroadphaseInterface' mkBtBroadphaseInterface*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#118>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_getBroadphase0 as btCollisionWorld_getBroadphase0    `( BtCollisionWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtBroadphaseInterface' mkBtBroadphaseInterface*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#123>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_getBroadphase1 as btCollisionWorld_getBroadphase1    `( BtCollisionWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtBroadphaseInterface' mkBtBroadphaseInterface*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#458>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_rayTestSingle as btCollisionWorld_rayTestSingle    `(  BtCollisionObjectClass p2 , BtCollisionShapeClass p3 , BtCollisionWorld_RayResultCallbackClass p5 )' =>     {  withTransform* `Transform'  peekTransform* -- ^ rayFromTrans+, withTransform* `Transform'  peekTransform* -- ^ rayToTrans+, withBt* `p2'  -- ^ collisionObject+, withBt* `p3'  -- ^ collisionShape+, withTransform* `Transform'  peekTransform* -- ^ colObjWorldTransform+, withBt* `p5'  -- ^ resultCallback+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#458>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_rayTestSingle as btCollisionWorld_rayTestSingle'    `(  BtCollisionObjectClass p2 , BtCollisionShapeClass p3 , BtCollisionWorld_RayResultCallbackClass p5 )' =>     {  allocaTransform-  `Transform'  peekTransform* -- ^ rayFromTrans+, allocaTransform-  `Transform'  peekTransform* -- ^ rayToTrans+, withBt* `p2'  -- ^ collisionObject+, withBt* `p3'  -- ^ collisionShape+, allocaTransform-  `Transform'  peekTransform* -- ^ colObjWorldTransform+, withBt* `p5'  -- ^ resultCallback+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#465>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_objectQuerySingle as btCollisionWorld_objectQuerySingle    `(  BtConvexShapeClass p0 , BtCollisionObjectClass p3 , BtCollisionShapeClass p4 , BtCollisionWorld_ConvexResultCallbackClass p6 )' =>     {  withBt* `p0'  -- ^ castShape+, withTransform* `Transform'  peekTransform* -- ^ rayFromTrans+, withTransform* `Transform'  peekTransform* -- ^ rayToTrans+, withBt* `p3'  -- ^ collisionObject+, withBt* `p4'  -- ^ collisionShape+, withTransform* `Transform'  peekTransform* -- ^ colObjWorldTransform+, withBt* `p6'  -- ^ resultCallback+,  `Float'  -- ^ allowedPenetration+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#465>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_objectQuerySingle as btCollisionWorld_objectQuerySingle'    `(  BtConvexShapeClass p0 , BtCollisionObjectClass p3 , BtCollisionShapeClass p4 , BtCollisionWorld_ConvexResultCallbackClass p6 )' =>     {  withBt* `p0'  -- ^ castShape+, allocaTransform-  `Transform'  peekTransform* -- ^ rayFromTrans+, allocaTransform-  `Transform'  peekTransform* -- ^ rayToTrans+, withBt* `p3'  -- ^ collisionObject+, withBt* `p4'  -- ^ collisionShape+, allocaTransform-  `Transform'  peekTransform* -- ^ colObjWorldTransform+, withBt* `p6'  -- ^ resultCallback+,  `Float'  -- ^ allowedPenetration+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#144>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_updateSingleAabb as btCollisionWorld_updateSingleAabb    `( BtCollisionWorldClass bc , BtCollisionObjectClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ colObj+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#128>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_getPairCache as btCollisionWorld_getPairCache    `( BtCollisionWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtOverlappingPairCache' mkBtOverlappingPairCache*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.h?r=2223#480>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp?r=2223>+-}+{#fun btCollisionWorld_removeCollisionObject as btCollisionWorld_removeCollisionObject    `( BtCollisionWorldClass bc , BtCollisionObjectClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ collisionObject+ } ->  `()'  #}+-- * btConvexConvexAlgorithm+{#fun btConvexConvexAlgorithm_free    `( BtConvexConvexAlgorithmClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h?r=2223#69>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp?r=2223>+-}+{#fun btConvexConvexAlgorithm_calculateTimeOfImpact as btConvexConvexAlgorithm_calculateTimeOfImpact    `( BtConvexConvexAlgorithmClass bc , BtCollisionObjectClass p0 , BtCollisionObjectClass p1 , BtDispatcherInfoClass p2 , BtManifoldResultClass p3 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ body0+, withBt* `p1'  -- ^ body1+, withBt* `p2'  -- ^ dispatchInfo+, withBt* `p3'  -- ^ resultOut+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h?r=2223#79>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp?r=2223>+-}+{#fun btConvexConvexAlgorithm_setLowLevelOfDetail as btConvexConvexAlgorithm_setLowLevelOfDetail    `( BtConvexConvexAlgorithmClass bc )' =>     { withBt* `bc'  -- ^ +,  `Bool'  -- ^ useLowLevel+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h?r=2223#67>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp?r=2223>+-}+{#fun btConvexConvexAlgorithm_processCollision as btConvexConvexAlgorithm_processCollision    `( BtConvexConvexAlgorithmClass bc , BtCollisionObjectClass p0 , BtCollisionObjectClass p1 , BtDispatcherInfoClass p2 , BtManifoldResultClass p3 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ body0+, withBt* `p1'  -- ^ body1+, withBt* `p2'  -- ^ dispatchInfo+, withBt* `p3'  -- ^ resultOut+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h?r=2223#82>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp?r=2223>+-}+{#fun btConvexConvexAlgorithm_getManifold as btConvexConvexAlgorithm_getManifold    `( BtConvexConvexAlgorithmClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtPersistentManifold' mkBtPersistentManifold*  #}+-- * btDefaultCollisionConfiguration+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h?r=2223#95>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp?r=2223>+-}+{#fun btDefaultCollisionConfiguration_new as btDefaultCollisionConfiguration    `( BtDefaultCollisionConstructionInfoClass p0 )' =>     {  withBt* `p0'  } -> `BtDefaultCollisionConfiguration' mkBtDefaultCollisionConfiguration* #}+{#fun btDefaultCollisionConfiguration_free    `( BtDefaultCollisionConfigurationClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h?r=2223#110>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp?r=2223>+-}+{#fun btDefaultCollisionConfiguration_getStackAllocator as btDefaultCollisionConfiguration_getStackAllocator    `( BtDefaultCollisionConfigurationClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtStackAlloc' mkBtStackAlloc*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h?r=2223#115>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp?r=2223>+-}+{#fun btDefaultCollisionConfiguration_getSimplexSolver as btDefaultCollisionConfiguration_getSimplexSolver    `( BtDefaultCollisionConfigurationClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtVoronoiSimplexSolver' mkBtVoronoiSimplexSolver*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h?r=2223#130>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp?r=2223>+-}+{#fun btDefaultCollisionConfiguration_setConvexConvexMultipointIterations as btDefaultCollisionConfiguration_setConvexConvexMultipointIterations    `( BtDefaultCollisionConfigurationClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ numPerturbationIterations+,  `Int'  -- ^ minimumPointsPerturbationThreshold+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h?r=2223#121>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp?r=2223>+-}+{#fun btDefaultCollisionConfiguration_getCollisionAlgorithmCreateFunc as btDefaultCollisionConfiguration_getCollisionAlgorithmCreateFunc    `( BtDefaultCollisionConfigurationClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ proxyType0+,  `Int'  -- ^ proxyType1+ } ->  `BtCollisionAlgorithmCreateFunc' mkBtCollisionAlgorithmCreateFunc*  #}+-- * btDefaultCollisionConstructionInfo+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h?r=2223#34>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp?r=2223>+-}+{#fun btDefaultCollisionConstructionInfo_new as btDefaultCollisionConstructionInfo    {  } -> `BtDefaultCollisionConstructionInfo' mkBtDefaultCollisionConstructionInfo* #}+{#fun btDefaultCollisionConstructionInfo_free    `( BtDefaultCollisionConstructionInfoClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h?r=2223#30>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp?r=2223>+-}+{#fun btDefaultCollisionConstructionInfo_m_customCollisionAlgorithmMaxElementSize_set    `( BtDefaultCollisionConstructionInfoClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h?r=2223#30>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp?r=2223>+-}+{#fun btDefaultCollisionConstructionInfo_m_customCollisionAlgorithmMaxElementSize_get    `( BtDefaultCollisionConstructionInfoClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h?r=2223#29>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp?r=2223>+-}+{#fun btDefaultCollisionConstructionInfo_m_defaultMaxCollisionAlgorithmPoolSize_set    `( BtDefaultCollisionConstructionInfoClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h?r=2223#29>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp?r=2223>+-}+{#fun btDefaultCollisionConstructionInfo_m_defaultMaxCollisionAlgorithmPoolSize_get    `( BtDefaultCollisionConstructionInfoClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h?r=2223#28>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp?r=2223>+-}+{#fun btDefaultCollisionConstructionInfo_m_defaultMaxPersistentManifoldPoolSize_set    `( BtDefaultCollisionConstructionInfoClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h?r=2223#28>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp?r=2223>+-}+{#fun btDefaultCollisionConstructionInfo_m_defaultMaxPersistentManifoldPoolSize_get    `( BtDefaultCollisionConstructionInfoClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h?r=2223#31>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp?r=2223>+-}+{#fun btDefaultCollisionConstructionInfo_m_defaultStackAllocatorSize_set    `( BtDefaultCollisionConstructionInfoClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h?r=2223#31>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp?r=2223>+-}+{#fun btDefaultCollisionConstructionInfo_m_defaultStackAllocatorSize_get    `( BtDefaultCollisionConstructionInfoClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h?r=2223#25>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp?r=2223>+-}+{#fun btDefaultCollisionConstructionInfo_m_stackAlloc_set    `( BtDefaultCollisionConstructionInfoClass bc , BtStackAllocClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h?r=2223#32>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp?r=2223>+-}+{#fun btDefaultCollisionConstructionInfo_m_useEpaPenetrationAlgorithm_set    `( BtDefaultCollisionConstructionInfoClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h?r=2223#32>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp?r=2223>+-}+{#fun btDefaultCollisionConstructionInfo_m_useEpaPenetrationAlgorithm_get    `( BtDefaultCollisionConstructionInfoClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btManifoldResult+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btManifoldResult.h?r=2223#55>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btManifoldResult.cpp?r=2223>+-}+{#fun btManifoldResult_new0 as btManifoldResult0    {  } -> `BtManifoldResult' mkBtManifoldResult* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btManifoldResult.h?r=2223#66>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btManifoldResult.cpp?r=2223>+-}+{#fun btManifoldResult_new1 as btManifoldResult1    `( BtCollisionObjectClass p0 , BtCollisionObjectClass p1 )' =>     {  withBt* `p0' , withBt* `p1'  } -> `BtManifoldResult' mkBtManifoldResult* #}+{#fun btManifoldResult_free    `( BtManifoldResultClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btManifoldResult.h?r=2223#75>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btManifoldResult.cpp?r=2223>+-}+{#fun btManifoldResult_getPersistentManifold0 as btManifoldResult_getPersistentManifold    `( BtManifoldResultClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtPersistentManifold' mkBtPersistentManifold*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btManifoldResult.h?r=2223#75>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btManifoldResult.cpp?r=2223>+-}+{#fun btManifoldResult_getPersistentManifold0 as btManifoldResult_getPersistentManifold0    `( BtManifoldResultClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtPersistentManifold' mkBtPersistentManifold*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btManifoldResult.h?r=2223#79>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btManifoldResult.cpp?r=2223>+-}+{#fun btManifoldResult_getPersistentManifold1 as btManifoldResult_getPersistentManifold1    `( BtManifoldResultClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtPersistentManifold' mkBtPersistentManifold*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btManifoldResult.h?r=2223#116>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btManifoldResult.cpp?r=2223>+-}+{#fun btManifoldResult_getBody0Internal as btManifoldResult_getBody0Internal    `( BtManifoldResultClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtCollisionObject' mkBtCollisionObject*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btManifoldResult.h?r=2223#97>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btManifoldResult.cpp?r=2223>+-}+{#fun btManifoldResult_addContactPoint as btManifoldResult_addContactPoint    `( BtManifoldResultClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ normalOnBInWorld+, withVector3* `Vector3'  peekVector3* -- ^ pointInWorld+,  `Float'  -- ^ depth+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btManifoldResult.h?r=2223#97>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btManifoldResult.cpp?r=2223>+-}+{#fun btManifoldResult_addContactPoint as btManifoldResult_addContactPoint'    `( BtManifoldResultClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ normalOnBInWorld+, allocaVector3-  `Vector3'  peekVector3* -- ^ pointInWorld+,  `Float'  -- ^ depth+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btManifoldResult.h?r=2223#121>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btManifoldResult.cpp?r=2223>+-}+{#fun btManifoldResult_getBody1Internal as btManifoldResult_getBody1Internal    `( BtManifoldResultClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtCollisionObject' mkBtCollisionObject*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btManifoldResult.h?r=2223#90>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btManifoldResult.cpp?r=2223>+-}+{#fun btManifoldResult_setShapeIdentifiersB as btManifoldResult_setShapeIdentifiersB    `( BtManifoldResultClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ partId1+,  `Int'  -- ^ index1+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btManifoldResult.h?r=2223#84>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btManifoldResult.cpp?r=2223>+-}+{#fun btManifoldResult_setShapeIdentifiersA as btManifoldResult_setShapeIdentifiersA    `( BtManifoldResultClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ partId0+,  `Int'  -- ^ index0+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btManifoldResult.h?r=2223#99>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btManifoldResult.cpp?r=2223>+-}+{#fun btManifoldResult_refreshContactPoints as btManifoldResult_refreshContactPoints    `( BtManifoldResultClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btManifoldResult.h?r=2223#70>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btManifoldResult.cpp?r=2223>+-}+{#fun btManifoldResult_setPersistentManifold as btManifoldResult_setPersistentManifold    `( BtManifoldResultClass bc , BtPersistentManifoldClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ manifoldPtr+ } ->  `()'  #}+-- * btSphereSphereCollisionAlgorithm+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h?r=2223#35>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp?r=2223>+-}+{#fun btSphereSphereCollisionAlgorithm_new0 as btSphereSphereCollisionAlgorithm0    `( BtPersistentManifoldClass p0 , BtCollisionAlgorithmConstructionInfoClass p1 , BtCollisionObjectClass p2 , BtCollisionObjectClass p3 )' =>     {  withBt* `p0' , withBt* `p1' , withBt* `p2' , withBt* `p3'  } -> `BtSphereSphereCollisionAlgorithm' mkBtSphereSphereCollisionAlgorithm* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h?r=2223#37>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp?r=2223>+-}+{#fun btSphereSphereCollisionAlgorithm_new1 as btSphereSphereCollisionAlgorithm1    `( BtCollisionAlgorithmConstructionInfoClass p0 )' =>     {  withBt* `p0'  } -> `BtSphereSphereCollisionAlgorithm' mkBtSphereSphereCollisionAlgorithm* #}+{#fun btSphereSphereCollisionAlgorithm_free    `( BtSphereSphereCollisionAlgorithmClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h?r=2223#42>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp?r=2223>+-}+{#fun btSphereSphereCollisionAlgorithm_calculateTimeOfImpact as btSphereSphereCollisionAlgorithm_calculateTimeOfImpact    `( BtSphereSphereCollisionAlgorithmClass bc , BtCollisionObjectClass p0 , BtCollisionObjectClass p1 , BtDispatcherInfoClass p2 , BtManifoldResultClass p3 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ body0+, withBt* `p1'  -- ^ body1+, withBt* `p2'  -- ^ dispatchInfo+, withBt* `p3'  -- ^ resultOut+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h?r=2223#40>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp?r=2223>+-}+{#fun btSphereSphereCollisionAlgorithm_processCollision as btSphereSphereCollisionAlgorithm_processCollision    `( BtSphereSphereCollisionAlgorithmClass bc , BtCollisionObjectClass p0 , BtCollisionObjectClass p1 , BtDispatcherInfoClass p2 , BtManifoldResultClass p3 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ body0+, withBt* `p1'  -- ^ body1+, withBt* `p2'  -- ^ dispatchInfo+, withBt* `p3'  -- ^ resultOut+ } ->  `()'  #}
+ Physics/Bullet/Raw/BulletCollision/CollisionShapes.chs view
@@ -0,0 +1,3917 @@+{-#LANGUAGE ForeignFunctionInterface#-}+#include "Bullet.h"+module Physics.Bullet.Raw.BulletCollision.CollisionShapes (+module Physics.Bullet.Raw.BulletCollision.CollisionShapes+) where+import Control.Monad+import Foreign.Marshal.Alloc+import Foreign.ForeignPtr+import Foreign.Ptr+import Physics.Bullet.Raw.C2HS+import Physics.Bullet.Raw.Types+import Physics.Bullet.Raw.Class+-- * btBU_Simplex1to4+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.h?r=2223#33>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.cpp?r=2223>+-}+{#fun btBU_Simplex1to4_new0 as btBU_Simplex1to40    {  } -> `BtBU_Simplex1to4' mkBtBU_Simplex1to4* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.h?r=2223#35>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.cpp?r=2223>+-}+{#fun btBU_Simplex1to4_new1 as btBU_Simplex1to41    {  withVector3* `Vector3'  } -> `BtBU_Simplex1to4' mkBtBU_Simplex1to4* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.h?r=2223#36>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.cpp?r=2223>+-}+{#fun btBU_Simplex1to4_new2 as btBU_Simplex1to42    {  withVector3* `Vector3' , withVector3* `Vector3'  } -> `BtBU_Simplex1to4' mkBtBU_Simplex1to4* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.h?r=2223#37>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.cpp?r=2223>+-}+{#fun btBU_Simplex1to4_new3 as btBU_Simplex1to43    {  withVector3* `Vector3' , withVector3* `Vector3' , withVector3* `Vector3'  } -> `BtBU_Simplex1to4' mkBtBU_Simplex1to4* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.h?r=2223#38>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.cpp?r=2223>+-}+{#fun btBU_Simplex1to4_new4 as btBU_Simplex1to44    {  withVector3* `Vector3' , withVector3* `Vector3' , withVector3* `Vector3' , withVector3* `Vector3'  } -> `BtBU_Simplex1to4' mkBtBU_Simplex1to4* #}+{#fun btBU_Simplex1to4_free    `( BtBU_Simplex1to4Class bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.h?r=2223#41>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.cpp?r=2223>+-}+{#fun btBU_Simplex1to4_reset as btBU_Simplex1to4_reset    `( BtBU_Simplex1to4Class bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.h?r=2223#60>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.cpp?r=2223>+-}+{#fun btBU_Simplex1to4_getNumPlanes as btBU_Simplex1to4_getNumPlanes    `( BtBU_Simplex1to4Class bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.h?r=2223#64>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.cpp?r=2223>+-}+{#fun btBU_Simplex1to4_getIndex as btBU_Simplex1to4_getIndex    `( BtBU_Simplex1to4Class bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ i+ } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.h?r=2223#54>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.cpp?r=2223>+-}+{#fun btBU_Simplex1to4_getNumEdges as btBU_Simplex1to4_getNumEdges    `( BtBU_Simplex1to4Class bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.h?r=2223#70>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.cpp?r=2223>+-}+{#fun btBU_Simplex1to4_getName as btBU_Simplex1to4_getName    `( BtBU_Simplex1to4Class bc )' =>     { withBt* `bc'  -- ^ + } ->  `String'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.h?r=2223#58>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.cpp?r=2223>+-}+{#fun btBU_Simplex1to4_getVertex as btBU_Simplex1to4_getVertex    `( BtBU_Simplex1to4Class bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ i+, withVector3* `Vector3'  peekVector3* -- ^ vtx+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.h?r=2223#58>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.cpp?r=2223>+-}+{#fun btBU_Simplex1to4_getVertex as btBU_Simplex1to4_getVertex'    `( BtBU_Simplex1to4Class bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ i+, allocaVector3-  `Vector3'  peekVector3* -- ^ vtx+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.h?r=2223#56>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.cpp?r=2223>+-}+{#fun btBU_Simplex1to4_getEdge as btBU_Simplex1to4_getEdge    `( BtBU_Simplex1to4Class bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ i+, withVector3* `Vector3'  peekVector3* -- ^ pa+, withVector3* `Vector3'  peekVector3* -- ^ pb+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.h?r=2223#56>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.cpp?r=2223>+-}+{#fun btBU_Simplex1to4_getEdge as btBU_Simplex1to4_getEdge'    `( BtBU_Simplex1to4Class bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ i+, allocaVector3-  `Vector3'  peekVector3* -- ^ pa+, allocaVector3-  `Vector3'  peekVector3* -- ^ pb+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.h?r=2223#48>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.cpp?r=2223>+-}+{#fun btBU_Simplex1to4_addVertex as btBU_Simplex1to4_addVertex    `( BtBU_Simplex1to4Class bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ pt+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.h?r=2223#48>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.cpp?r=2223>+-}+{#fun btBU_Simplex1to4_addVertex as btBU_Simplex1to4_addVertex'    `( BtBU_Simplex1to4Class bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ pt+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.h?r=2223#66>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.cpp?r=2223>+-}+{#fun btBU_Simplex1to4_isInside as btBU_Simplex1to4_isInside    `( BtBU_Simplex1to4Class bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ pt+,  `Float'  -- ^ tolerance+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.h?r=2223#66>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.cpp?r=2223>+-}+{#fun btBU_Simplex1to4_isInside as btBU_Simplex1to4_isInside'    `( BtBU_Simplex1to4Class bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ pt+,  `Float'  -- ^ tolerance+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.h?r=2223#62>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.cpp?r=2223>+-}+{#fun btBU_Simplex1to4_getPlane as btBU_Simplex1to4_getPlane    `( BtBU_Simplex1to4Class bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ planeNormal+, withVector3* `Vector3'  peekVector3* -- ^ planeSupport+,  `Int'  -- ^ i+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.h?r=2223#62>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.cpp?r=2223>+-}+{#fun btBU_Simplex1to4_getPlane as btBU_Simplex1to4_getPlane'    `( BtBU_Simplex1to4Class bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ planeNormal+, allocaVector3-  `Vector3'  peekVector3* -- ^ planeSupport+,  `Int'  -- ^ i+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.h?r=2223#46>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.cpp?r=2223>+-}+{#fun btBU_Simplex1to4_getAabb as btBU_Simplex1to4_getAabb    `( BtBU_Simplex1to4Class bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ t+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.h?r=2223#46>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.cpp?r=2223>+-}+{#fun btBU_Simplex1to4_getAabb as btBU_Simplex1to4_getAabb'    `( BtBU_Simplex1to4Class bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ t+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.h?r=2223#52>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTetrahedronShape.cpp?r=2223>+-}+{#fun btBU_Simplex1to4_getNumVertices as btBU_Simplex1to4_getNumVertices    `( BtBU_Simplex1to4Class bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+-- * btBoxShape+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.h?r=2223#83>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.cpp?r=2223>+-}+{#fun btBoxShape_new as btBoxShape    {  withVector3* `Vector3'  } -> `BtBoxShape' mkBtBoxShape* #}+{#fun btBoxShape_free    `( BtBoxShapeClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.h?r=2223#118>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.cpp?r=2223>+-}+{#fun btBoxShape_calculateLocalInertia as btBoxShape_calculateLocalInertia    `( BtBoxShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, withVector3* `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.h?r=2223#118>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.cpp?r=2223>+-}+{#fun btBoxShape_calculateLocalInertia as btBoxShape_calculateLocalInertia'    `( BtBoxShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, allocaVector3-  `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.h?r=2223#130>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.cpp?r=2223>+-}+{#fun btBoxShape_getNumPlanes as btBoxShape_getNumPlanes    `( BtBoxShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.h?r=2223#48>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.cpp?r=2223>+-}+{#fun btBoxShape_localGetSupportingVertex as btBoxShape_localGetSupportingVertex    `( BtBoxShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.h?r=2223#48>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.cpp?r=2223>+-}+{#fun btBoxShape_localGetSupportingVertex as btBoxShape_localGetSupportingVertex'    `( BtBoxShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.h?r=2223#102>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.cpp?r=2223>+-}+{#fun btBoxShape_setLocalScaling as btBoxShape_setLocalScaling    `( BtBoxShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.h?r=2223#102>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.cpp?r=2223>+-}+{#fun btBoxShape_setLocalScaling as btBoxShape_setLocalScaling'    `( BtBoxShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.h?r=2223#157>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.cpp?r=2223>+-}+{#fun btBoxShape_getPlaneEquation as btBoxShape_getPlaneEquation    `( BtBoxShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector4* `Vector4'  peekVector4* -- ^ plane+,  `Int'  -- ^ i+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.h?r=2223#157>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.cpp?r=2223>+-}+{#fun btBoxShape_getPlaneEquation as btBoxShape_getPlaneEquation'    `( BtBoxShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector4-  `Vector4'  peekVector4* -- ^ plane+,  `Int'  -- ^ i+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.h?r=2223#286>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.cpp?r=2223>+-}+{#fun btBoxShape_getPreferredPenetrationDirection as btBoxShape_getPreferredPenetrationDirection    `( BtBoxShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+, withVector3* `Vector3'  peekVector3* -- ^ penetrationVector+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.h?r=2223#286>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.cpp?r=2223>+-}+{#fun btBoxShape_getPreferredPenetrationDirection as btBoxShape_getPreferredPenetrationDirection'    `( BtBoxShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+, allocaVector3-  `Vector3'  peekVector3* -- ^ penetrationVector+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.h?r=2223#140>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.cpp?r=2223>+-}+{#fun btBoxShape_getNumEdges as btBoxShape_getNumEdges    `( BtBoxShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.h?r=2223#276>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.cpp?r=2223>+-}+{#fun btBoxShape_getName as btBoxShape_getName    `( BtBoxShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `String'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.h?r=2223#146>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.cpp?r=2223>+-}+{#fun btBoxShape_getVertex as btBoxShape_getVertex    `( BtBoxShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ i+, withVector3* `Vector3'  peekVector3* -- ^ vtx+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.h?r=2223#146>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.cpp?r=2223>+-}+{#fun btBoxShape_getVertex as btBoxShape_getVertex'    `( BtBoxShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ i+, allocaVector3-  `Vector3'  peekVector3* -- ^ vtx+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.h?r=2223#187>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.cpp?r=2223>+-}+{#fun btBoxShape_getEdge as btBoxShape_getEdge    `( BtBoxShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ i+, withVector3* `Vector3'  peekVector3* -- ^ pa+, withVector3* `Vector3'  peekVector3* -- ^ pb+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.h?r=2223#187>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.cpp?r=2223>+-}+{#fun btBoxShape_getEdge as btBoxShape_getEdge'    `( BtBoxShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ i+, allocaVector3-  `Vector3'  peekVector3* -- ^ pa+, allocaVector3-  `Vector3'  peekVector3* -- ^ pb+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.h?r=2223#258>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.cpp?r=2223>+-}+{#fun btBoxShape_isInside as btBoxShape_isInside    `( BtBoxShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ pt+,  `Float'  -- ^ tolerance+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.h?r=2223#258>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.cpp?r=2223>+-}+{#fun btBoxShape_isInside as btBoxShape_isInside'    `( BtBoxShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ pt+,  `Float'  -- ^ tolerance+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.h?r=2223#120>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.cpp?r=2223>+-}+{#fun btBoxShape_getPlane as btBoxShape_getPlane    `( BtBoxShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ planeNormal+, withVector3* `Vector3'  peekVector3* -- ^ planeSupport+,  `Int'  -- ^ i+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.h?r=2223#120>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.cpp?r=2223>+-}+{#fun btBoxShape_getPlane as btBoxShape_getPlane'    `( BtBoxShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ planeNormal+, allocaVector3-  `Vector3'  peekVector3* -- ^ planeSupport+,  `Int'  -- ^ i+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.h?r=2223#42>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.cpp?r=2223>+-}+{#fun btBoxShape_getHalfExtentsWithoutMargin as btBoxShape_getHalfExtentsWithoutMargin    `( BtBoxShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.h?r=2223#281>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.cpp?r=2223>+-}+{#fun btBoxShape_getNumPreferredPenetrationDirections as btBoxShape_getNumPreferredPenetrationDirections    `( BtBoxShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.h?r=2223#114>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.cpp?r=2223>+-}+{#fun btBoxShape_getAabb as btBoxShape_getAabb    `( BtBoxShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ t+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.h?r=2223#114>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.cpp?r=2223>+-}+{#fun btBoxShape_getAabb as btBoxShape_getAabb'    `( BtBoxShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ t+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.h?r=2223#91>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.cpp?r=2223>+-}+{#fun btBoxShape_setMargin as btBoxShape_setMargin    `( BtBoxShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ collisionMargin+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.h?r=2223#135>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.cpp?r=2223>+-}+{#fun btBoxShape_getNumVertices as btBoxShape_getNumVertices    `( BtBoxShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.h?r=2223#34>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.cpp?r=2223>+-}+{#fun btBoxShape_getHalfExtentsWithMargin as btBoxShape_getHalfExtentsWithMargin    `( BtBoxShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.h?r=2223#59>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.cpp?r=2223>+-}+{#fun btBoxShape_localGetSupportingVertexWithoutMargin as btBoxShape_localGetSupportingVertexWithoutMargin    `( BtBoxShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.h?r=2223#59>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBoxShape.cpp?r=2223>+-}+{#fun btBoxShape_localGetSupportingVertexWithoutMargin as btBoxShape_localGetSupportingVertexWithoutMargin'    `( BtBoxShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+-- * btBvhTriangleMeshShape+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h?r=2223#43>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btBvhTriangleMeshShape_new0 as btBvhTriangleMeshShape0    `( BtStridingMeshInterfaceClass p0 )' =>     {  withBt* `p0' ,  `Bool' ,  `Bool'  } -> `BtBvhTriangleMeshShape' mkBtBvhTriangleMeshShape* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h?r=2223#46>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btBvhTriangleMeshShape_new1 as btBvhTriangleMeshShape1    `( BtStridingMeshInterfaceClass p0 )' =>     {  withBt* `p0' ,  `Bool' , withVector3* `Vector3' , withVector3* `Vector3' ,  `Bool'  } -> `BtBvhTriangleMeshShape' mkBtBvhTriangleMeshShape* #}+{#fun btBvhTriangleMeshShape_free    `( BtBvhTriangleMeshShapeClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h?r=2223#132>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btBvhTriangleMeshShape_calculateSerializeBufferSize as btBvhTriangleMeshShape_calculateSerializeBufferSize    `( BtBvhTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h?r=2223#80>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btBvhTriangleMeshShape_buildOptimizedBvh as btBvhTriangleMeshShape_buildOptimizedBvh    `( BtBvhTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h?r=2223#71>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btBvhTriangleMeshShape_setLocalScaling as btBvhTriangleMeshShape_setLocalScaling    `( BtBvhTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h?r=2223#71>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btBvhTriangleMeshShape_setLocalScaling as btBvhTriangleMeshShape_setLocalScaling'    `( BtBvhTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h?r=2223#57>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btBvhTriangleMeshShape_performRaycast as btBvhTriangleMeshShape_performRaycast    `( BtBvhTriangleMeshShapeClass bc , BtTriangleCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ callback+, withVector3* `Vector3'  peekVector3* -- ^ raySource+, withVector3* `Vector3'  peekVector3* -- ^ rayTarget+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h?r=2223#57>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btBvhTriangleMeshShape_performRaycast as btBvhTriangleMeshShape_performRaycast'    `( BtBvhTriangleMeshShapeClass bc , BtTriangleCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ callback+, allocaVector3-  `Vector3'  peekVector3* -- ^ raySource+, allocaVector3-  `Vector3'  peekVector3* -- ^ rayTarget+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h?r=2223#87>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btBvhTriangleMeshShape_setTriangleInfoMap as btBvhTriangleMeshShape_setTriangleInfoMap    `( BtBvhTriangleMeshShapeClass bc , BtTriangleInfoMapClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ triangleInfoMap+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h?r=2223#82>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btBvhTriangleMeshShape_usesQuantizedAabbCompression as btBvhTriangleMeshShape_usesQuantizedAabbCompression    `( BtBvhTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h?r=2223#68>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btBvhTriangleMeshShape_getName as btBvhTriangleMeshShape_getName    `( BtBvhTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `String'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h?r=2223#92>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btBvhTriangleMeshShape_getTriangleInfoMap0 as btBvhTriangleMeshShape_getTriangleInfoMap    `( BtBvhTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtTriangleInfoMap' mkBtTriangleInfoMap*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h?r=2223#92>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btBvhTriangleMeshShape_getTriangleInfoMap0 as btBvhTriangleMeshShape_getTriangleInfoMap0    `( BtBvhTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtTriangleInfoMap' mkBtTriangleInfoMap*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h?r=2223#97>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btBvhTriangleMeshShape_getTriangleInfoMap1 as btBvhTriangleMeshShape_getTriangleInfoMap1    `( BtBvhTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtTriangleInfoMap' mkBtTriangleInfoMap*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h?r=2223#109>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btBvhTriangleMeshShape_serializeSingleTriangleInfoMap as btBvhTriangleMeshShape_serializeSingleTriangleInfoMap    `( BtBvhTriangleMeshShapeClass bc , BtSerializerClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ serializer+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h?r=2223#50>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btBvhTriangleMeshShape_getOwnsBvh as btBvhTriangleMeshShape_getOwnsBvh    `( BtBvhTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h?r=2223#65>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btBvhTriangleMeshShape_partialRefitTree as btBvhTriangleMeshShape_partialRefitTree    `( BtBvhTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h?r=2223#65>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btBvhTriangleMeshShape_partialRefitTree as btBvhTriangleMeshShape_partialRefitTree'    `( BtBvhTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h?r=2223#73>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btBvhTriangleMeshShape_getOptimizedBvh as btBvhTriangleMeshShape_getOptimizedBvh    `( BtBvhTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtOptimizedBvh' mkBtOptimizedBvh*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h?r=2223#60>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btBvhTriangleMeshShape_processAllTriangles as btBvhTriangleMeshShape_processAllTriangles    `( BtBvhTriangleMeshShapeClass bc , BtTriangleCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ callback+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h?r=2223#60>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btBvhTriangleMeshShape_processAllTriangles as btBvhTriangleMeshShape_processAllTriangles'    `( BtBvhTriangleMeshShapeClass bc , BtTriangleCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ callback+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h?r=2223#62>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btBvhTriangleMeshShape_refitTree as btBvhTriangleMeshShape_refitTree    `( BtBvhTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h?r=2223#62>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btBvhTriangleMeshShape_refitTree as btBvhTriangleMeshShape_refitTree'    `( BtBvhTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h?r=2223#58>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btBvhTriangleMeshShape_performConvexcast as btBvhTriangleMeshShape_performConvexcast    `( BtBvhTriangleMeshShapeClass bc , BtTriangleCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ callback+, withVector3* `Vector3'  peekVector3* -- ^ boxSource+, withVector3* `Vector3'  peekVector3* -- ^ boxTarget+, withVector3* `Vector3'  peekVector3* -- ^ boxMin+, withVector3* `Vector3'  peekVector3* -- ^ boxMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h?r=2223#58>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btBvhTriangleMeshShape_performConvexcast as btBvhTriangleMeshShape_performConvexcast'    `( BtBvhTriangleMeshShapeClass bc , BtTriangleCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ callback+, allocaVector3-  `Vector3'  peekVector3* -- ^ boxSource+, allocaVector3-  `Vector3'  peekVector3* -- ^ boxTarget+, allocaVector3-  `Vector3'  peekVector3* -- ^ boxMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ boxMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h?r=2223#107>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btBvhTriangleMeshShape_serializeSingleBvh as btBvhTriangleMeshShape_serializeSingleBvh    `( BtBvhTriangleMeshShapeClass bc , BtSerializerClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ serializer+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h?r=2223#78>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btBvhTriangleMeshShape_setOptimizedBvh as btBvhTriangleMeshShape_setOptimizedBvh    `( BtBvhTriangleMeshShapeClass bc , BtOptimizedBvhClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ bvh+, withVector3* `Vector3'  peekVector3* -- ^ localScaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h?r=2223#78>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btBvhTriangleMeshShape_setOptimizedBvh as btBvhTriangleMeshShape_setOptimizedBvh'    `( BtBvhTriangleMeshShapeClass bc , BtOptimizedBvhClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ bvh+, allocaVector3-  `Vector3'  peekVector3* -- ^ localScaling+ } ->  `()'  #}+-- * btCapsuleShape+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.h?r=2223#36>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.cpp?r=2223>+-}+{#fun btCapsuleShape_new as btCapsuleShape    {   `Float' ,  `Float'  } -> `BtCapsuleShape' mkBtCapsuleShape* #}+{#fun btCapsuleShape_free    `( BtCapsuleShapeClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.h?r=2223#39>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.cpp?r=2223>+-}+{#fun btCapsuleShape_calculateLocalInertia as btCapsuleShape_calculateLocalInertia    `( BtCapsuleShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, withVector3* `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.h?r=2223#39>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.cpp?r=2223>+-}+{#fun btCapsuleShape_calculateLocalInertia as btCapsuleShape_calculateLocalInertia'    `( BtCapsuleShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, allocaVector3-  `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.h?r=2223#156>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.cpp?r=2223>+-}+{#fun btCapsuleShape_calculateSerializeBufferSize as btCapsuleShape_calculateSerializeBufferSize    `( BtCapsuleShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.h?r=2223#92>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.cpp?r=2223>+-}+{#fun btCapsuleShape_setLocalScaling as btCapsuleShape_setLocalScaling    `( BtCapsuleShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.h?r=2223#92>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.cpp?r=2223>+-}+{#fun btCapsuleShape_setLocalScaling as btCapsuleShape_setLocalScaling'    `( BtCapsuleShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.h?r=2223#76>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.cpp?r=2223>+-}+{#fun btCapsuleShape_getUpAxis as btCapsuleShape_getUpAxis    `( BtCapsuleShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.h?r=2223#71>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.cpp?r=2223>+-}+{#fun btCapsuleShape_getName as btCapsuleShape_getName    `( BtCapsuleShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `String'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.h?r=2223#87>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.cpp?r=2223>+-}+{#fun btCapsuleShape_getHalfHeight as btCapsuleShape_getHalfHeight    `( BtCapsuleShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.h?r=2223#46>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.cpp?r=2223>+-}+{#fun btCapsuleShape_setMargin as btCapsuleShape_setMargin    `( BtCapsuleShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ collisionMargin+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.h?r=2223#58>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.cpp?r=2223>+-}+{#fun btCapsuleShape_getAabb as btCapsuleShape_getAabb    `( BtCapsuleShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ t+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.h?r=2223#58>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.cpp?r=2223>+-}+{#fun btCapsuleShape_getAabb as btCapsuleShape_getAabb'    `( BtCapsuleShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ t+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.h?r=2223#42>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.cpp?r=2223>+-}+{#fun btCapsuleShape_localGetSupportingVertexWithoutMargin as btCapsuleShape_localGetSupportingVertexWithoutMargin    `( BtCapsuleShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.h?r=2223#42>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.cpp?r=2223>+-}+{#fun btCapsuleShape_localGetSupportingVertexWithoutMargin as btCapsuleShape_localGetSupportingVertexWithoutMargin'    `( BtCapsuleShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.h?r=2223#81>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.cpp?r=2223>+-}+{#fun btCapsuleShape_getRadius as btCapsuleShape_getRadius    `( BtCapsuleShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+-- * btCapsuleShapeData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.h?r=2223#148>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.cpp?r=2223>+-}+{#fun btCapsuleShapeData_new as btCapsuleShapeData    {  } -> `BtCapsuleShapeData' mkBtCapsuleShapeData* #}+{#fun btCapsuleShapeData_free    `( BtCapsuleShapeDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.h?r=2223#151>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.cpp?r=2223>+-}+{#fun btCapsuleShapeData_m_upAxis_set    `( BtCapsuleShapeDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.h?r=2223#151>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.cpp?r=2223>+-}+{#fun btCapsuleShapeData_m_upAxis_get    `( BtCapsuleShapeDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btCapsuleShapeX+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.h?r=2223#118>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.cpp?r=2223>+-}+{#fun btCapsuleShapeX_new as btCapsuleShapeX    {   `Float' ,  `Float'  } -> `BtCapsuleShapeX' mkBtCapsuleShapeX* #}+{#fun btCapsuleShapeX_free    `( BtCapsuleShapeXClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.h?r=2223#121>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.cpp?r=2223>+-}+{#fun btCapsuleShapeX_getName as btCapsuleShapeX_getName    `( BtCapsuleShapeXClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `String'  #}+-- * btCapsuleShapeZ+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.h?r=2223#135>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.cpp?r=2223>+-}+{#fun btCapsuleShapeZ_new as btCapsuleShapeZ    {   `Float' ,  `Float'  } -> `BtCapsuleShapeZ' mkBtCapsuleShapeZ* #}+{#fun btCapsuleShapeZ_free    `( BtCapsuleShapeZClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.h?r=2223#138>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCapsuleShape.cpp?r=2223>+-}+{#fun btCapsuleShapeZ_getName as btCapsuleShapeZ_getName    `( BtCapsuleShapeZClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `String'  #}+-- * btCharIndexTripletData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#120>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btCharIndexTripletData_new as btCharIndexTripletData    {  } -> `BtCharIndexTripletData' mkBtCharIndexTripletData* #}+{#fun btCharIndexTripletData_free    `( BtCharIndexTripletDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#122>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btCharIndexTripletData_m_pad_set    `( BtCharIndexTripletDataClass bc )' =>     { withBt* `bc' , castCharToCChar `Char'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#122>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btCharIndexTripletData_m_pad_get    `( BtCharIndexTripletDataClass bc )' =>     { withBt* `bc'  } ->  `Char'  castCCharToChar #}+-- * btCollisionShape+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.h?r=2223#101>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.cpp?r=2223>+-}+{#fun btCollisionShape_calculateLocalInertia as btCollisionShape_calculateLocalInertia    `( BtCollisionShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, withVector3* `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.h?r=2223#101>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.cpp?r=2223>+-}+{#fun btCollisionShape_calculateLocalInertia as btCollisionShape_calculateLocalInertia'    `( BtCollisionShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, allocaVector3-  `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.h?r=2223#100>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.cpp?r=2223>+-}+{#fun btCollisionShape_getLocalScaling as btCollisionShape_getLocalScaling    `( BtCollisionShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.h?r=2223#142>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.cpp?r=2223>+-}+{#fun btCollisionShape_calculateSerializeBufferSize as btCollisionShape_calculateSerializeBufferSize    `( BtCollisionShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.h?r=2223#105>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.cpp?r=2223>+-}+{#fun btCollisionShape_getName as btCollisionShape_getName    `( BtCollisionShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `String'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.h?r=2223#82>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.cpp?r=2223>+-}+{#fun btCollisionShape_isCompound as btCollisionShape_isCompound    `( BtCollisionShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.h?r=2223#60>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.cpp?r=2223>+-}+{#fun btCollisionShape_isPolyhedral as btCollisionShape_isPolyhedral    `( BtCollisionShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.h?r=2223#99>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.cpp?r=2223>+-}+{#fun btCollisionShape_setLocalScaling as btCollisionShape_setLocalScaling    `( BtCollisionShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.h?r=2223#99>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.cpp?r=2223>+-}+{#fun btCollisionShape_setLocalScaling as btCollisionShape_setLocalScaling'    `( BtCollisionShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.h?r=2223#44>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.cpp?r=2223>+-}+{#fun btCollisionShape_getAabb as btCollisionShape_getAabb    `( BtCollisionShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ t+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.h?r=2223#44>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.cpp?r=2223>+-}+{#fun btCollisionShape_getAabb as btCollisionShape_getAabb'    `( BtCollisionShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ t+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.h?r=2223#51>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.cpp?r=2223>+-}+{#fun btCollisionShape_getContactBreakingThreshold as btCollisionShape_getContactBreakingThreshold    `( BtCollisionShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ defaultContactThresholdFactor+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.h?r=2223#70>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.cpp?r=2223>+-}+{#fun btCollisionShape_isConvex as btCollisionShape_isConvex    `( BtCollisionShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.h?r=2223#93>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.cpp?r=2223>+-}+{#fun btCollisionShape_isInfinite as btCollisionShape_isInfinite    `( BtCollisionShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.h?r=2223#74>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.cpp?r=2223>+-}+{#fun btCollisionShape_isNonMoving as btCollisionShape_isNonMoving    `( BtCollisionShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.h?r=2223#111>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.cpp?r=2223>+-}+{#fun btCollisionShape_getMargin as btCollisionShape_getMargin    `( BtCollisionShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.h?r=2223#110>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.cpp?r=2223>+-}+{#fun btCollisionShape_setMargin as btCollisionShape_setMargin    `( BtCollisionShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ margin+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.h?r=2223#65>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.cpp?r=2223>+-}+{#fun btCollisionShape_isConvex2d as btCollisionShape_isConvex2d    `( BtCollisionShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.h?r=2223#87>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.cpp?r=2223>+-}+{#fun btCollisionShape_isSoftBody as btCollisionShape_isSoftBody    `( BtCollisionShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.h?r=2223#56>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.cpp?r=2223>+-}+{#fun btCollisionShape_calculateTemporalAabb as btCollisionShape_calculateTemporalAabb    `( BtCollisionShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ curTrans+, withVector3* `Vector3'  peekVector3* -- ^ linvel+, withVector3* `Vector3'  peekVector3* -- ^ angvel+,  `Float'  -- ^ timeStep+, withVector3* `Vector3'  peekVector3* -- ^ temporalAabbMin+, withVector3* `Vector3'  peekVector3* -- ^ temporalAabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.h?r=2223#56>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.cpp?r=2223>+-}+{#fun btCollisionShape_calculateTemporalAabb as btCollisionShape_calculateTemporalAabb'    `( BtCollisionShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ curTrans+, allocaVector3-  `Vector3'  peekVector3* -- ^ linvel+, allocaVector3-  `Vector3'  peekVector3* -- ^ angvel+,  `Float'  -- ^ timeStep+, allocaVector3-  `Vector3'  peekVector3* -- ^ temporalAabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ temporalAabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.h?r=2223#78>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.cpp?r=2223>+-}+{#fun btCollisionShape_isConcave as btCollisionShape_isConcave    `( BtCollisionShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.h?r=2223#49>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.cpp?r=2223>+-}+{#fun btCollisionShape_getAngularMotionDisc as btCollisionShape_getAngularMotionDisc    `( BtCollisionShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.h?r=2223#130>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.cpp?r=2223>+-}+{#fun btCollisionShape_serializeSingleShape as btCollisionShape_serializeSingleShape    `( BtCollisionShapeClass bc , BtSerializerClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ serializer+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.h?r=2223#109>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.cpp?r=2223>+-}+{#fun btCollisionShape_getShapeType as btCollisionShape_getShapeType    `( BtCollisionShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+-- * btCollisionShapeData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.h?r=2223#136>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.cpp?r=2223>+-}+{#fun btCollisionShapeData_new as btCollisionShapeData    {  } -> `BtCollisionShapeData' mkBtCollisionShapeData* #}+{#fun btCollisionShapeData_free    `( BtCollisionShapeDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.h?r=2223#137>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.cpp?r=2223>+-}+{#fun btCollisionShapeData_m_name_set    `( BtCollisionShapeDataClass bc )' =>     { withBt* `bc' ,  `String'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.h?r=2223#137>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.cpp?r=2223>+-}+{#fun btCollisionShapeData_m_name_get    `( BtCollisionShapeDataClass bc )' =>     { withBt* `bc'  } ->  `String'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.h?r=2223#138>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.cpp?r=2223>+-}+{#fun btCollisionShapeData_m_shapeType_set    `( BtCollisionShapeDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.h?r=2223#138>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCollisionShape.cpp?r=2223>+-}+{#fun btCollisionShapeData_m_shapeType_get    `( BtCollisionShapeDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btCompoundShape+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#73>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShape_new as btCompoundShape    {   `Bool'  } -> `BtCompoundShape' mkBtCompoundShape* #}+{#fun btCompoundShape_free    `( BtCompoundShapeClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#131>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShape_calculateLocalInertia as btCompoundShape_calculateLocalInertia    `( BtCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, withVector3* `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#131>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShape_calculateLocalInertia as btCompoundShape_calculateLocalInertia'    `( BtCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, allocaVector3-  `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#146>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShape_getDynamicAabbTree0 as btCompoundShape_getDynamicAabbTree    `( BtCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtDbvt' mkBtDbvt*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#146>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShape_getDynamicAabbTree0 as btCompoundShape_getDynamicAabbTree0    `( BtCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtDbvt' mkBtDbvt*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#151>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShape_getDynamicAabbTree1 as btCompoundShape_getDynamicAabbTree1    `( BtCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtDbvt' mkBtDbvt*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#165>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShape_getUpdateRevision as btCompoundShape_getUpdateRevision    `( BtCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#126>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShape_getLocalScaling as btCompoundShape_getLocalScaling    `( BtCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#156>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShape_createAabbTreeFromChildren as btCompoundShape_createAabbTreeFromChildren    `( BtCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#201>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShape_calculateSerializeBufferSize as btCompoundShape_calculateSerializeBufferSize    `( BtCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#141>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShape_getName as btCompoundShape_getName    `( BtCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `String'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#124>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShape_setLocalScaling as btCompoundShape_setLocalScaling    `( BtCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#124>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShape_setLocalScaling as btCompoundShape_setLocalScaling'    `( BtCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#118>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShape_getAabb as btCompoundShape_getAabb    `( BtCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ t+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#118>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShape_getAabb as btCompoundShape_getAabb'    `( BtCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ t+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#90>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShape_getChildShape0 as btCompoundShape_getChildShape    `( BtCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BtCollisionShape' mkBtCollisionShape*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#90>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShape_getChildShape0 as btCompoundShape_getChildShape0    `( BtCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BtCollisionShape' mkBtCollisionShape*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#94>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShape_getChildShape1 as btCompoundShape_getChildShape1    `( BtCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BtCollisionShape' mkBtCollisionShape*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#77>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShape_addChildShape as btCompoundShape_addChildShape    `( BtCompoundShapeClass bc , BtCollisionShapeClass p1 )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ localTransform+, withBt* `p1'  -- ^ shape+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#77>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShape_addChildShape as btCompoundShape_addChildShape'    `( BtCompoundShapeClass bc , BtCollisionShapeClass p1 )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ localTransform+, withBt* `p1'  -- ^ shape+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#99>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShape_getChildTransform0 as btCompoundShape_getChildTransform    `( BtCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#99>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShape_getChildTransform0 as btCompoundShape_getChildTransform0    `( BtCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#103>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShape_getChildTransform1 as btCompoundShape_getChildTransform1    `( BtCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#112>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShape_getChildList as btCompoundShape_getChildList    `( BtCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtCompoundShapeChild' mkBtCompoundShapeChild*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#137>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShape_getMargin as btCompoundShape_getMargin    `( BtCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#133>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShape_setMargin as btCompoundShape_setMargin    `( BtCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ margin+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#85>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShape_getNumChildShapes as btCompoundShape_getNumChildShapes    `( BtCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#82>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShape_removeChildShapeByIndex as btCompoundShape_removeChildShapeByIndex    `( BtCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ childShapeindex+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#122>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShape_recalculateLocalAabb as btCompoundShape_recalculateLocalAabb    `( BtCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#109>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShape_updateChildTransform as btCompoundShape_updateChildTransform    `( BtCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ childIndex+, withTransform* `Transform'  peekTransform* -- ^ newChildTransform+,  `Bool'  -- ^ shouldRecalculateLocalAabb+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#109>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShape_updateChildTransform as btCompoundShape_updateChildTransform'    `( BtCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ childIndex+, allocaTransform-  `Transform'  peekTransform* -- ^ newChildTransform+,  `Bool'  -- ^ shouldRecalculateLocalAabb+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#80>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShape_removeChildShape as btCompoundShape_removeChildShape    `( BtCompoundShapeClass bc , BtCollisionShapeClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ shape+ } ->  `()'  #}+-- * btCompoundShapeChild+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#31>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShapeChild_new as btCompoundShapeChild    {  } -> `BtCompoundShapeChild' mkBtCompoundShapeChild* #}+{#fun btCompoundShapeChild_free    `( BtCompoundShapeChildClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#37>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShapeChild_m_childMargin_set    `( BtCompoundShapeChildClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#37>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShapeChild_m_childMargin_get    `( BtCompoundShapeChildClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#35>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShapeChild_m_childShape_set    `( BtCompoundShapeChildClass bc , BtCollisionShapeClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#36>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShapeChild_m_childShapeType_set    `( BtCompoundShapeChildClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#36>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShapeChild_m_childShapeType_get    `( BtCompoundShapeChildClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#38>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShapeChild_m_node_set    `( BtCompoundShapeChildClass bc , BtDbvtNodeClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#34>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShapeChild_m_transform_set    `( BtCompoundShapeChildClass bc )' =>     { withBt* `bc' , withTransform* `Transform'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#34>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShapeChild_m_transform_get    `( BtCompoundShapeChildClass bc )' =>     { withBt* `bc' , allocaTransform-  `Transform'  peekTransform* } -> `()' #}+-- * btCompoundShapeChildData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#180>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShapeChildData_new as btCompoundShapeChildData    {  } -> `BtCompoundShapeChildData' mkBtCompoundShapeChildData* #}+{#fun btCompoundShapeChildData_free    `( BtCompoundShapeChildDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#182>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShapeChildData_m_childShape_set    `( BtCompoundShapeChildDataClass bc , BtCollisionShapeDataClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#183>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShapeChildData_m_childShapeType_set    `( BtCompoundShapeChildDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#183>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShapeChildData_m_childShapeType_get    `( BtCompoundShapeChildDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#184>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShapeChildData_m_childMargin_set    `( BtCompoundShapeChildDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#184>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShapeChildData_m_childMargin_get    `( BtCompoundShapeChildDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+-- * btCompoundShapeData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#189>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShapeData_new as btCompoundShapeData    {  } -> `BtCompoundShapeData' mkBtCompoundShapeData* #}+{#fun btCompoundShapeData_free    `( BtCompoundShapeDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#192>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShapeData_m_childShapePtr_set    `( BtCompoundShapeDataClass bc , BtCompoundShapeChildDataClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#194>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShapeData_m_numChildShapes_set    `( BtCompoundShapeDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#194>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShapeData_m_numChildShapes_get    `( BtCompoundShapeDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#196>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShapeData_m_collisionMargin_set    `( BtCompoundShapeDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.h?r=2223#196>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCompoundShape.cpp?r=2223>+-}+{#fun btCompoundShapeData_m_collisionMargin_get    `( BtCompoundShapeDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+-- * btConcaveShape+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConcaveShape.h?r=2223#46>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConcaveShape.cpp?r=2223>+-}+{#fun btConcaveShape_processAllTriangles as btConcaveShape_processAllTriangles    `( BtConcaveShapeClass bc , BtTriangleCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ callback+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConcaveShape.h?r=2223#46>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConcaveShape.cpp?r=2223>+-}+{#fun btConcaveShape_processAllTriangles as btConcaveShape_processAllTriangles'    `( BtConcaveShapeClass bc , BtTriangleCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ callback+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConcaveShape.h?r=2223#51>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConcaveShape.cpp?r=2223>+-}+{#fun btConcaveShape_setMargin as btConcaveShape_setMargin    `( BtConcaveShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ collisionMargin+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConcaveShape.h?r=2223#48>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConcaveShape.cpp?r=2223>+-}+{#fun btConcaveShape_getMargin as btConcaveShape_getMargin    `( BtConcaveShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+-- * btConeShape+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConeShape.h?r=2223#35>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConeShape.cpp?r=2223>+-}+{#fun btConeShape_new as btConeShape    {   `Float' ,  `Float'  } -> `BtConeShape' mkBtConeShape* #}+{#fun btConeShape_free    `( BtConeShapeClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConeShape.h?r=2223#45>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConeShape.cpp?r=2223>+-}+{#fun btConeShape_calculateLocalInertia as btConeShape_calculateLocalInertia    `( BtConeShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, withVector3* `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConeShape.h?r=2223#45>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConeShape.cpp?r=2223>+-}+{#fun btConeShape_calculateLocalInertia as btConeShape_calculateLocalInertia'    `( BtConeShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, allocaVector3-  `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConeShape.h?r=2223#37>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConeShape.cpp?r=2223>+-}+{#fun btConeShape_localGetSupportingVertex as btConeShape_localGetSupportingVertex    `( BtConeShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConeShape.h?r=2223#37>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConeShape.cpp?r=2223>+-}+{#fun btConeShape_localGetSupportingVertex as btConeShape_localGetSupportingVertex'    `( BtConeShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConeShape.h?r=2223#80>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConeShape.cpp?r=2223>+-}+{#fun btConeShape_getConeUpIndex as btConeShape_getConeUpIndex    `( BtConeShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConeShape.h?r=2223#72>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConeShape.cpp?r=2223>+-}+{#fun btConeShape_getName as btConeShape_getName    `( BtConeShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `String'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConeShape.h?r=2223#42>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConeShape.cpp?r=2223>+-}+{#fun btConeShape_getHeight as btConeShape_getHeight    `( BtConeShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConeShape.h?r=2223#78>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConeShape.cpp?r=2223>+-}+{#fun btConeShape_setConeUpIndex as btConeShape_setConeUpIndex    `( BtConeShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ upIndex+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConeShape.h?r=2223#85>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConeShape.cpp?r=2223>+-}+{#fun btConeShape_setLocalScaling as btConeShape_setLocalScaling    `( BtConeShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConeShape.h?r=2223#85>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConeShape.cpp?r=2223>+-}+{#fun btConeShape_setLocalScaling as btConeShape_setLocalScaling'    `( BtConeShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConeShape.h?r=2223#38>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConeShape.cpp?r=2223>+-}+{#fun btConeShape_localGetSupportingVertexWithoutMargin as btConeShape_localGetSupportingVertexWithoutMargin    `( BtConeShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConeShape.h?r=2223#38>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConeShape.cpp?r=2223>+-}+{#fun btConeShape_localGetSupportingVertexWithoutMargin as btConeShape_localGetSupportingVertexWithoutMargin'    `( BtConeShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConeShape.h?r=2223#41>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConeShape.cpp?r=2223>+-}+{#fun btConeShape_getRadius as btConeShape_getRadius    `( BtConeShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+-- * btConeShapeX+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConeShape.h?r=2223#93>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConeShape.cpp?r=2223>+-}+{#fun btConeShapeX_new as btConeShapeX    {   `Float' ,  `Float'  } -> `BtConeShapeX' mkBtConeShapeX* #}+{#fun btConeShapeX_free    `( BtConeShapeXClass bc )' =>     { withBt* `bc'  } -> `()' #}+-- * btConeShapeZ+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConeShape.h?r=2223#100>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConeShape.cpp?r=2223>+-}+{#fun btConeShapeZ_new as btConeShapeZ    {   `Float' ,  `Float'  } -> `BtConeShapeZ' mkBtConeShapeZ* #}+{#fun btConeShapeZ_free    `( BtConeShapeZClass bc )' =>     { withBt* `bc'  } -> `()' #}+-- * btConvexHullShape+{#fun btConvexHullShape_free    `( BtConvexHullShapeClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.h?r=2223#39>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.cpp?r=2223>+-}+{#fun btConvexHullShape_addPoint as btConvexHullShape_addPoint    `( BtConvexHullShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ point+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.h?r=2223#39>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.cpp?r=2223>+-}+{#fun btConvexHullShape_addPoint as btConvexHullShape_addPoint'    `( BtConvexHullShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ point+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.h?r=2223#71>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.cpp?r=2223>+-}+{#fun btConvexHullShape_localGetSupportingVertex as btConvexHullShape_localGetSupportingVertex    `( BtConvexHullShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.h?r=2223#71>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.cpp?r=2223>+-}+{#fun btConvexHullShape_localGetSupportingVertex as btConvexHullShape_localGetSupportingVertex'    `( BtConvexHullShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.h?r=2223#113>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.cpp?r=2223>+-}+{#fun btConvexHullShape_calculateSerializeBufferSize as btConvexHullShape_calculateSerializeBufferSize    `( BtConvexHullShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.h?r=2223#61>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.cpp?r=2223>+-}+{#fun btConvexHullShape_getScaledPoint as btConvexHullShape_getScaledPoint    `( BtConvexHullShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ i+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.h?r=2223#85>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.cpp?r=2223>+-}+{#fun btConvexHullShape_getNumPlanes as btConvexHullShape_getNumPlanes    `( BtConvexHullShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.h?r=2223#82>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.cpp?r=2223>+-}+{#fun btConvexHullShape_getNumEdges as btConvexHullShape_getNumEdges    `( BtConvexHullShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.h?r=2223#78>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.cpp?r=2223>+-}+{#fun btConvexHullShape_getName as btConvexHullShape_getName    `( BtConvexHullShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `String'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.h?r=2223#84>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.cpp?r=2223>+-}+{#fun btConvexHullShape_getVertex as btConvexHullShape_getVertex    `( BtConvexHullShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ i+, withVector3* `Vector3'  peekVector3* -- ^ vtx+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.h?r=2223#84>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.cpp?r=2223>+-}+{#fun btConvexHullShape_getVertex as btConvexHullShape_getVertex'    `( BtConvexHullShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ i+, allocaVector3-  `Vector3'  peekVector3* -- ^ vtx+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.h?r=2223#83>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.cpp?r=2223>+-}+{#fun btConvexHullShape_getEdge as btConvexHullShape_getEdge    `( BtConvexHullShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ i+, withVector3* `Vector3'  peekVector3* -- ^ pa+, withVector3* `Vector3'  peekVector3* -- ^ pb+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.h?r=2223#83>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.cpp?r=2223>+-}+{#fun btConvexHullShape_getEdge as btConvexHullShape_getEdge'    `( BtConvexHullShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ i+, allocaVector3-  `Vector3'  peekVector3* -- ^ pa+, allocaVector3-  `Vector3'  peekVector3* -- ^ pb+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.h?r=2223#72>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.cpp?r=2223>+-}+{#fun btConvexHullShape_localGetSupportingVertexWithoutMargin as btConvexHullShape_localGetSupportingVertexWithoutMargin    `( BtConvexHullShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.h?r=2223#72>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.cpp?r=2223>+-}+{#fun btConvexHullShape_localGetSupportingVertexWithoutMargin as btConvexHullShape_localGetSupportingVertexWithoutMargin'    `( BtConvexHullShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.h?r=2223#87>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.cpp?r=2223>+-}+{#fun btConvexHullShape_isInside as btConvexHullShape_isInside    `( BtConvexHullShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ pt+,  `Float'  -- ^ tolerance+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.h?r=2223#87>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.cpp?r=2223>+-}+{#fun btConvexHullShape_isInside as btConvexHullShape_isInside'    `( BtConvexHullShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ pt+,  `Float'  -- ^ tolerance+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.h?r=2223#86>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.cpp?r=2223>+-}+{#fun btConvexHullShape_getPlane as btConvexHullShape_getPlane    `( BtConvexHullShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ planeNormal+, withVector3* `Vector3'  peekVector3* -- ^ planeSupport+,  `Int'  -- ^ i+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.h?r=2223#86>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.cpp?r=2223>+-}+{#fun btConvexHullShape_getPlane as btConvexHullShape_getPlane'    `( BtConvexHullShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ planeNormal+, allocaVector3-  `Vector3'  peekVector3* -- ^ planeSupport+,  `Int'  -- ^ i+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.h?r=2223#90>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.cpp?r=2223>+-}+{#fun btConvexHullShape_setLocalScaling as btConvexHullShape_setLocalScaling    `( BtConvexHullShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.h?r=2223#90>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.cpp?r=2223>+-}+{#fun btConvexHullShape_setLocalScaling as btConvexHullShape_setLocalScaling'    `( BtConvexHullShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.h?r=2223#81>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.cpp?r=2223>+-}+{#fun btConvexHullShape_getNumVertices as btConvexHullShape_getNumVertices    `( BtConvexHullShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.h?r=2223#66>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.cpp?r=2223>+-}+{#fun btConvexHullShape_getNumPoints as btConvexHullShape_getNumPoints    `( BtConvexHullShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+-- * btConvexHullShapeData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.h?r=2223#101>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.cpp?r=2223>+-}+{#fun btConvexHullShapeData_new as btConvexHullShapeData    {  } -> `BtConvexHullShapeData' mkBtConvexHullShapeData* #}+{#fun btConvexHullShapeData_free    `( BtConvexHullShapeDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.h?r=2223#104>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.cpp?r=2223>+-}+{#fun btConvexHullShapeData_m_unscaledPointsFloatPtr_set    `( BtConvexHullShapeDataClass bc , BtVector3FloatDataClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.h?r=2223#105>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.cpp?r=2223>+-}+{#fun btConvexHullShapeData_m_unscaledPointsDoublePtr_set    `( BtConvexHullShapeDataClass bc , BtVector3DoubleDataClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.h?r=2223#107>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.cpp?r=2223>+-}+{#fun btConvexHullShapeData_m_numUnscaledPoints_set    `( BtConvexHullShapeDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.h?r=2223#107>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexHullShape.cpp?r=2223>+-}+{#fun btConvexHullShapeData_m_numUnscaledPoints_get    `( BtConvexHullShapeDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btConvexInternalAabbCachingShape+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.h?r=2223#198>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp?r=2223>+-}+{#fun btConvexInternalAabbCachingShape_recalcLocalAabb as btConvexInternalAabbCachingShape_recalcLocalAabb    `( BtConvexInternalAabbCachingShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.h?r=2223#194>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp?r=2223>+-}+{#fun btConvexInternalAabbCachingShape_setLocalScaling as btConvexInternalAabbCachingShape_setLocalScaling    `( BtConvexInternalAabbCachingShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.h?r=2223#194>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp?r=2223>+-}+{#fun btConvexInternalAabbCachingShape_setLocalScaling as btConvexInternalAabbCachingShape_setLocalScaling'    `( BtConvexInternalAabbCachingShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.h?r=2223#196>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp?r=2223>+-}+{#fun btConvexInternalAabbCachingShape_getAabb as btConvexInternalAabbCachingShape_getAabb    `( BtConvexInternalAabbCachingShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ t+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.h?r=2223#196>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp?r=2223>+-}+{#fun btConvexInternalAabbCachingShape_getAabb as btConvexInternalAabbCachingShape_getAabb'    `( BtConvexInternalAabbCachingShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ t+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+-- * btConvexInternalShape+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.h?r=2223#49>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp?r=2223>+-}+{#fun btConvexInternalShape_localGetSupportingVertex as btConvexInternalShape_localGetSupportingVertex    `( BtConvexInternalShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.h?r=2223#49>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp?r=2223>+-}+{#fun btConvexInternalShape_localGetSupportingVertex as btConvexInternalShape_localGetSupportingVertex'    `( BtConvexInternalShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.h?r=2223#138>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp?r=2223>+-}+{#fun btConvexInternalShape_calculateSerializeBufferSize as btConvexInternalShape_calculateSerializeBufferSize    `( BtConvexInternalShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.h?r=2223#51>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp?r=2223>+-}+{#fun btConvexInternalShape_getImplicitShapeDimensions as btConvexInternalShape_getImplicitShapeDimensions    `( BtConvexInternalShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.h?r=2223#82>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp?r=2223>+-}+{#fun btConvexInternalShape_getLocalScalingNV as btConvexInternalShape_getLocalScalingNV    `( BtConvexInternalShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.h?r=2223#73>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp?r=2223>+-}+{#fun btConvexInternalShape_getAabbSlow as btConvexInternalShape_getAabbSlow    `( BtConvexInternalShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ t+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.h?r=2223#73>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp?r=2223>+-}+{#fun btConvexInternalShape_getAabbSlow as btConvexInternalShape_getAabbSlow'    `( BtConvexInternalShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ t+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.h?r=2223#77>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp?r=2223>+-}+{#fun btConvexInternalShape_getLocalScaling as btConvexInternalShape_getLocalScaling    `( BtConvexInternalShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.h?r=2223#106>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp?r=2223>+-}+{#fun btConvexInternalShape_getPreferredPenetrationDirection as btConvexInternalShape_getPreferredPenetrationDirection    `( BtConvexInternalShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+, withVector3* `Vector3'  peekVector3* -- ^ penetrationVector+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.h?r=2223#106>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp?r=2223>+-}+{#fun btConvexInternalShape_getPreferredPenetrationDirection as btConvexInternalShape_getPreferredPenetrationDirection'    `( BtConvexInternalShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+, allocaVector3-  `Vector3'  peekVector3* -- ^ penetrationVector+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.h?r=2223#76>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp?r=2223>+-}+{#fun btConvexInternalShape_setLocalScaling as btConvexInternalShape_setLocalScaling    `( BtConvexInternalShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.h?r=2223#76>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp?r=2223>+-}+{#fun btConvexInternalShape_setLocalScaling as btConvexInternalShape_setLocalScaling'    `( BtConvexInternalShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.h?r=2223#101>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp?r=2223>+-}+{#fun btConvexInternalShape_getNumPreferredPenetrationDirections as btConvexInternalShape_getNumPreferredPenetrationDirections    `( BtConvexInternalShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.h?r=2223#66>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp?r=2223>+-}+{#fun btConvexInternalShape_getAabb as btConvexInternalShape_getAabb    `( BtConvexInternalShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ t+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.h?r=2223#66>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp?r=2223>+-}+{#fun btConvexInternalShape_getAabb as btConvexInternalShape_getAabb'    `( BtConvexInternalShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ t+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.h?r=2223#87>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp?r=2223>+-}+{#fun btConvexInternalShape_setMargin as btConvexInternalShape_setMargin    `( BtConvexInternalShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ margin+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.h?r=2223#96>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp?r=2223>+-}+{#fun btConvexInternalShape_getMarginNV as btConvexInternalShape_getMarginNV    `( BtConvexInternalShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.h?r=2223#91>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp?r=2223>+-}+{#fun btConvexInternalShape_getMargin as btConvexInternalShape_getMargin    `( BtConvexInternalShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.h?r=2223#60>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp?r=2223>+-}+{#fun btConvexInternalShape_setImplicitShapeDimensions as btConvexInternalShape_setImplicitShapeDimensions    `( BtConvexInternalShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ dimensions+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.h?r=2223#60>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp?r=2223>+-}+{#fun btConvexInternalShape_setImplicitShapeDimensions as btConvexInternalShape_setImplicitShapeDimensions'    `( BtConvexInternalShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ dimensions+ } ->  `()'  #}+-- * btConvexInternalShapeData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.h?r=2223#123>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp?r=2223>+-}+{#fun btConvexInternalShapeData_new as btConvexInternalShapeData    {  } -> `BtConvexInternalShapeData' mkBtConvexInternalShapeData* #}+{#fun btConvexInternalShapeData_free    `( BtConvexInternalShapeDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.h?r=2223#130>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp?r=2223>+-}+{#fun btConvexInternalShapeData_m_collisionMargin_set    `( BtConvexInternalShapeDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.h?r=2223#130>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp?r=2223>+-}+{#fun btConvexInternalShapeData_m_collisionMargin_get    `( BtConvexInternalShapeDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.h?r=2223#132>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp?r=2223>+-}+{#fun btConvexInternalShapeData_m_padding_set    `( BtConvexInternalShapeDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.h?r=2223#132>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp?r=2223>+-}+{#fun btConvexInternalShapeData_m_padding_get    `( BtConvexInternalShapeDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btConvexShape+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.h?r=2223#53>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.cpp?r=2223>+-}+{#fun btConvexShape_getAabbNonVirtual as btConvexShape_getAabbNonVirtual    `( BtConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ t+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.h?r=2223#53>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.cpp?r=2223>+-}+{#fun btConvexShape_getAabbNonVirtual as btConvexShape_getAabbNonVirtual'    `( BtConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ t+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.h?r=2223#43>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.cpp?r=2223>+-}+{#fun btConvexShape_localGetSupportingVertex as btConvexShape_localGetSupportingVertex    `( BtConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.h?r=2223#43>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.cpp?r=2223>+-}+{#fun btConvexShape_localGetSupportingVertex as btConvexShape_localGetSupportingVertex'    `( BtConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.h?r=2223#69>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.cpp?r=2223>+-}+{#fun btConvexShape_getMargin as btConvexShape_getMargin    `( BtConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.h?r=2223#50>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.cpp?r=2223>+-}+{#fun btConvexShape_localGetSupportVertexWithoutMarginNonVirtual as btConvexShape_localGetSupportVertexWithoutMarginNonVirtual    `( BtConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.h?r=2223#50>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.cpp?r=2223>+-}+{#fun btConvexShape_localGetSupportVertexWithoutMarginNonVirtual as btConvexShape_localGetSupportVertexWithoutMarginNonVirtual'    `( BtConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.h?r=2223#65>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.cpp?r=2223>+-}+{#fun btConvexShape_getLocalScaling as btConvexShape_getLocalScaling    `( BtConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.h?r=2223#73>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.cpp?r=2223>+-}+{#fun btConvexShape_getPreferredPenetrationDirection as btConvexShape_getPreferredPenetrationDirection    `( BtConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+, withVector3* `Vector3'  peekVector3* -- ^ penetrationVector+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.h?r=2223#73>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.cpp?r=2223>+-}+{#fun btConvexShape_getPreferredPenetrationDirection as btConvexShape_getPreferredPenetrationDirection'    `( BtConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+, allocaVector3-  `Vector3'  peekVector3* -- ^ penetrationVector+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.h?r=2223#64>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.cpp?r=2223>+-}+{#fun btConvexShape_setLocalScaling as btConvexShape_setLocalScaling    `( BtConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.h?r=2223#64>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.cpp?r=2223>+-}+{#fun btConvexShape_setLocalScaling as btConvexShape_setLocalScaling'    `( BtConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.h?r=2223#62>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.cpp?r=2223>+-}+{#fun btConvexShape_getAabbSlow as btConvexShape_getAabbSlow    `( BtConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ t+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.h?r=2223#62>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.cpp?r=2223>+-}+{#fun btConvexShape_getAabbSlow as btConvexShape_getAabbSlow'    `( BtConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ t+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.h?r=2223#60>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.cpp?r=2223>+-}+{#fun btConvexShape_getAabb as btConvexShape_getAabb    `( BtConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ t+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.h?r=2223#60>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.cpp?r=2223>+-}+{#fun btConvexShape_getAabb as btConvexShape_getAabb'    `( BtConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ t+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.h?r=2223#67>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.cpp?r=2223>+-}+{#fun btConvexShape_setMargin as btConvexShape_setMargin    `( BtConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ margin+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.h?r=2223#71>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.cpp?r=2223>+-}+{#fun btConvexShape_getNumPreferredPenetrationDirections as btConvexShape_getNumPreferredPenetrationDirections    `( BtConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.h?r=2223#51>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.cpp?r=2223>+-}+{#fun btConvexShape_localGetSupportVertexNonVirtual as btConvexShape_localGetSupportVertexNonVirtual    `( BtConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.h?r=2223#51>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.cpp?r=2223>+-}+{#fun btConvexShape_localGetSupportVertexNonVirtual as btConvexShape_localGetSupportVertexNonVirtual'    `( BtConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.h?r=2223#47>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.cpp?r=2223>+-}+{#fun btConvexShape_localGetSupportingVertexWithoutMargin as btConvexShape_localGetSupportingVertexWithoutMargin    `( BtConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.h?r=2223#47>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.cpp?r=2223>+-}+{#fun btConvexShape_localGetSupportingVertexWithoutMargin as btConvexShape_localGetSupportingVertexWithoutMargin'    `( BtConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.h?r=2223#52>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexShape.cpp?r=2223>+-}+{#fun btConvexShape_getMarginNonVirtual as btConvexShape_getMarginNonVirtual    `( BtConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+-- * btConvexTriangleMeshShape+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h?r=2223#31>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp?r=2223>+-}+{#fun btConvexTriangleMeshShape_new as btConvexTriangleMeshShape    `( BtStridingMeshInterfaceClass p0 )' =>     {  withBt* `p0' ,  `Bool'  } -> `BtConvexTriangleMeshShape' mkBtConvexTriangleMeshShape* #}+{#fun btConvexTriangleMeshShape_free    `( BtConvexTriangleMeshShapeClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h?r=2223#53>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp?r=2223>+-}+{#fun btConvexTriangleMeshShape_getNumPlanes as btConvexTriangleMeshShape_getNumPlanes    `( BtConvexTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h?r=2223#42>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp?r=2223>+-}+{#fun btConvexTriangleMeshShape_localGetSupportingVertex as btConvexTriangleMeshShape_localGetSupportingVertex    `( BtConvexTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h?r=2223#42>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp?r=2223>+-}+{#fun btConvexTriangleMeshShape_localGetSupportingVertex as btConvexTriangleMeshShape_localGetSupportingVertex'    `( BtConvexTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h?r=2223#50>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp?r=2223>+-}+{#fun btConvexTriangleMeshShape_getNumEdges as btConvexTriangleMeshShape_getNumEdges    `( BtConvexTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h?r=2223#47>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp?r=2223>+-}+{#fun btConvexTriangleMeshShape_getName as btConvexTriangleMeshShape_getName    `( BtConvexTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `String'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h?r=2223#52>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp?r=2223>+-}+{#fun btConvexTriangleMeshShape_getVertex as btConvexTriangleMeshShape_getVertex    `( BtConvexTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ i+, withVector3* `Vector3'  peekVector3* -- ^ vtx+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h?r=2223#52>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp?r=2223>+-}+{#fun btConvexTriangleMeshShape_getVertex as btConvexTriangleMeshShape_getVertex'    `( BtConvexTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ i+, allocaVector3-  `Vector3'  peekVector3* -- ^ vtx+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h?r=2223#51>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp?r=2223>+-}+{#fun btConvexTriangleMeshShape_getEdge as btConvexTriangleMeshShape_getEdge    `( BtConvexTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ i+, withVector3* `Vector3'  peekVector3* -- ^ pa+, withVector3* `Vector3'  peekVector3* -- ^ pb+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h?r=2223#51>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp?r=2223>+-}+{#fun btConvexTriangleMeshShape_getEdge as btConvexTriangleMeshShape_getEdge'    `( BtConvexTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ i+, allocaVector3-  `Vector3'  peekVector3* -- ^ pa+, allocaVector3-  `Vector3'  peekVector3* -- ^ pb+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h?r=2223#59>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp?r=2223>+-}+{#fun btConvexTriangleMeshShape_getLocalScaling as btConvexTriangleMeshShape_getLocalScaling    `( BtConvexTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h?r=2223#55>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp?r=2223>+-}+{#fun btConvexTriangleMeshShape_isInside as btConvexTriangleMeshShape_isInside    `( BtConvexTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ pt+,  `Float'  -- ^ tolerance+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h?r=2223#55>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp?r=2223>+-}+{#fun btConvexTriangleMeshShape_isInside as btConvexTriangleMeshShape_isInside'    `( BtConvexTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ pt+,  `Float'  -- ^ tolerance+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h?r=2223#54>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp?r=2223>+-}+{#fun btConvexTriangleMeshShape_getPlane as btConvexTriangleMeshShape_getPlane    `( BtConvexTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ planeNormal+, withVector3* `Vector3'  peekVector3* -- ^ planeSupport+,  `Int'  -- ^ i+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h?r=2223#54>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp?r=2223>+-}+{#fun btConvexTriangleMeshShape_getPlane as btConvexTriangleMeshShape_getPlane'    `( BtConvexTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ planeNormal+, allocaVector3-  `Vector3'  peekVector3* -- ^ planeSupport+,  `Int'  -- ^ i+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h?r=2223#58>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp?r=2223>+-}+{#fun btConvexTriangleMeshShape_setLocalScaling as btConvexTriangleMeshShape_setLocalScaling    `( BtConvexTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h?r=2223#58>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp?r=2223>+-}+{#fun btConvexTriangleMeshShape_setLocalScaling as btConvexTriangleMeshShape_setLocalScaling'    `( BtConvexTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h?r=2223#33>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp?r=2223>+-}+{#fun btConvexTriangleMeshShape_getMeshInterface0 as btConvexTriangleMeshShape_getMeshInterface    `( BtConvexTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtStridingMeshInterface' mkBtStridingMeshInterface*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h?r=2223#33>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp?r=2223>+-}+{#fun btConvexTriangleMeshShape_getMeshInterface0 as btConvexTriangleMeshShape_getMeshInterface0    `( BtConvexTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtStridingMeshInterface' mkBtStridingMeshInterface*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h?r=2223#37>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp?r=2223>+-}+{#fun btConvexTriangleMeshShape_getMeshInterface1 as btConvexTriangleMeshShape_getMeshInterface1    `( BtConvexTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtStridingMeshInterface' mkBtStridingMeshInterface*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h?r=2223#49>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp?r=2223>+-}+{#fun btConvexTriangleMeshShape_getNumVertices as btConvexTriangleMeshShape_getNumVertices    `( BtConvexTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h?r=2223#43>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp?r=2223>+-}+{#fun btConvexTriangleMeshShape_localGetSupportingVertexWithoutMargin as btConvexTriangleMeshShape_localGetSupportingVertexWithoutMargin    `( BtConvexTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h?r=2223#43>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp?r=2223>+-}+{#fun btConvexTriangleMeshShape_localGetSupportingVertexWithoutMargin as btConvexTriangleMeshShape_localGetSupportingVertexWithoutMargin'    `( BtConvexTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+-- * btCylinderShape+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.h?r=2223#47>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.cpp?r=2223>+-}+{#fun btCylinderShape_new as btCylinderShape    {  withVector3* `Vector3'  } -> `BtCylinderShape' mkBtCylinderShape* #}+{#fun btCylinderShape_free    `( BtCylinderShapeClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.h?r=2223#51>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.cpp?r=2223>+-}+{#fun btCylinderShape_calculateLocalInertia as btCylinderShape_calculateLocalInertia    `( BtCylinderShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, withVector3* `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.h?r=2223#51>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.cpp?r=2223>+-}+{#fun btCylinderShape_calculateLocalInertia as btCylinderShape_calculateLocalInertia'    `( BtCylinderShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, allocaVector3-  `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.h?r=2223#69>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.cpp?r=2223>+-}+{#fun btCylinderShape_localGetSupportingVertex as btCylinderShape_localGetSupportingVertex    `( BtCylinderShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.h?r=2223#69>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.cpp?r=2223>+-}+{#fun btCylinderShape_localGetSupportingVertex as btCylinderShape_localGetSupportingVertex'    `( BtCylinderShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.h?r=2223#180>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.cpp?r=2223>+-}+{#fun btCylinderShape_calculateSerializeBufferSize as btCylinderShape_calculateSerializeBufferSize    `( BtCylinderShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.h?r=2223#103>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.cpp?r=2223>+-}+{#fun btCylinderShape_setLocalScaling as btCylinderShape_setLocalScaling    `( BtCylinderShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.h?r=2223#103>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.cpp?r=2223>+-}+{#fun btCylinderShape_setLocalScaling as btCylinderShape_setLocalScaling'    `( BtCylinderShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.h?r=2223#93>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.cpp?r=2223>+-}+{#fun btCylinderShape_getUpAxis as btCylinderShape_getUpAxis    `( BtCylinderShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.h?r=2223#116>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.cpp?r=2223>+-}+{#fun btCylinderShape_getName as btCylinderShape_getName    `( BtCylinderShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `String'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.h?r=2223#42>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.cpp?r=2223>+-}+{#fun btCylinderShape_getHalfExtentsWithoutMargin as btCylinderShape_getHalfExtentsWithoutMargin    `( BtCylinderShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.h?r=2223#49>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.cpp?r=2223>+-}+{#fun btCylinderShape_getAabb as btCylinderShape_getAabb    `( BtCylinderShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ t+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.h?r=2223#49>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.cpp?r=2223>+-}+{#fun btCylinderShape_getAabb as btCylinderShape_getAabb'    `( BtCylinderShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ t+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.h?r=2223#57>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.cpp?r=2223>+-}+{#fun btCylinderShape_setMargin as btCylinderShape_setMargin    `( BtCylinderShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ collisionMargin+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.h?r=2223#34>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.cpp?r=2223>+-}+{#fun btCylinderShape_getHalfExtentsWithMargin as btCylinderShape_getHalfExtentsWithMargin    `( BtCylinderShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.h?r=2223#53>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.cpp?r=2223>+-}+{#fun btCylinderShape_localGetSupportingVertexWithoutMargin as btCylinderShape_localGetSupportingVertexWithoutMargin    `( BtCylinderShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.h?r=2223#53>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.cpp?r=2223>+-}+{#fun btCylinderShape_localGetSupportingVertexWithoutMargin as btCylinderShape_localGetSupportingVertexWithoutMargin'    `( BtCylinderShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.h?r=2223#98>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.cpp?r=2223>+-}+{#fun btCylinderShape_getRadius as btCylinderShape_getRadius    `( BtCylinderShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+-- * btCylinderShapeData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.h?r=2223#172>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.cpp?r=2223>+-}+{#fun btCylinderShapeData_new as btCylinderShapeData    {  } -> `BtCylinderShapeData' mkBtCylinderShapeData* #}+{#fun btCylinderShapeData_free    `( BtCylinderShapeDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.h?r=2223#175>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.cpp?r=2223>+-}+{#fun btCylinderShapeData_m_upAxis_set    `( BtCylinderShapeDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.h?r=2223#175>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.cpp?r=2223>+-}+{#fun btCylinderShapeData_m_upAxis_get    `( BtCylinderShapeDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btCylinderShapeX+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.h?r=2223#131>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.cpp?r=2223>+-}+{#fun btCylinderShapeX_new as btCylinderShapeX    {  withVector3* `Vector3'  } -> `BtCylinderShapeX' mkBtCylinderShapeX* #}+{#fun btCylinderShapeX_free    `( BtCylinderShapeXClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.h?r=2223#137>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.cpp?r=2223>+-}+{#fun btCylinderShapeX_getName as btCylinderShapeX_getName    `( BtCylinderShapeXClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `String'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.h?r=2223#133>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.cpp?r=2223>+-}+{#fun btCylinderShapeX_localGetSupportingVertexWithoutMargin as btCylinderShapeX_localGetSupportingVertexWithoutMargin    `( BtCylinderShapeXClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.h?r=2223#133>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.cpp?r=2223>+-}+{#fun btCylinderShapeX_localGetSupportingVertexWithoutMargin as btCylinderShapeX_localGetSupportingVertexWithoutMargin'    `( BtCylinderShapeXClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.h?r=2223#142>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.cpp?r=2223>+-}+{#fun btCylinderShapeX_getRadius as btCylinderShapeX_getRadius    `( BtCylinderShapeXClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+-- * btCylinderShapeZ+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.h?r=2223#152>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.cpp?r=2223>+-}+{#fun btCylinderShapeZ_new as btCylinderShapeZ    {  withVector3* `Vector3'  } -> `BtCylinderShapeZ' mkBtCylinderShapeZ* #}+{#fun btCylinderShapeZ_free    `( BtCylinderShapeZClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.h?r=2223#158>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.cpp?r=2223>+-}+{#fun btCylinderShapeZ_getName as btCylinderShapeZ_getName    `( BtCylinderShapeZClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `String'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.h?r=2223#154>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.cpp?r=2223>+-}+{#fun btCylinderShapeZ_localGetSupportingVertexWithoutMargin as btCylinderShapeZ_localGetSupportingVertexWithoutMargin    `( BtCylinderShapeZClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.h?r=2223#154>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.cpp?r=2223>+-}+{#fun btCylinderShapeZ_localGetSupportingVertexWithoutMargin as btCylinderShapeZ_localGetSupportingVertexWithoutMargin'    `( BtCylinderShapeZClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.h?r=2223#163>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btCylinderShape.cpp?r=2223>+-}+{#fun btCylinderShapeZ_getRadius as btCylinderShapeZ_getRadius    `( BtCylinderShapeZClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+-- * btEmptyShape+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btEmptyShape.h?r=2223#34>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btEmptyShape.cpp?r=2223>+-}+{#fun btEmptyShape_new as btEmptyShape    {  } -> `BtEmptyShape' mkBtEmptyShape* #}+{#fun btEmptyShape_free    `( BtEmptyShapeClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btEmptyShape.h?r=2223#52>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btEmptyShape.cpp?r=2223>+-}+{#fun btEmptyShape_calculateLocalInertia as btEmptyShape_calculateLocalInertia    `( BtEmptyShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, withVector3* `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btEmptyShape.h?r=2223#52>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btEmptyShape.cpp?r=2223>+-}+{#fun btEmptyShape_calculateLocalInertia as btEmptyShape_calculateLocalInertia'    `( BtEmptyShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, allocaVector3-  `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btEmptyShape.h?r=2223#54>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btEmptyShape.cpp?r=2223>+-}+{#fun btEmptyShape_getName as btEmptyShape_getName    `( BtEmptyShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `String'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btEmptyShape.h?r=2223#47>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btEmptyShape.cpp?r=2223>+-}+{#fun btEmptyShape_getLocalScaling as btEmptyShape_getLocalScaling    `( BtEmptyShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btEmptyShape.h?r=2223#43>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btEmptyShape.cpp?r=2223>+-}+{#fun btEmptyShape_setLocalScaling as btEmptyShape_setLocalScaling    `( BtEmptyShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btEmptyShape.h?r=2223#43>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btEmptyShape.cpp?r=2223>+-}+{#fun btEmptyShape_setLocalScaling as btEmptyShape_setLocalScaling'    `( BtEmptyShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btEmptyShape.h?r=2223#40>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btEmptyShape.cpp?r=2223>+-}+{#fun btEmptyShape_getAabb as btEmptyShape_getAabb    `( BtEmptyShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ t+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btEmptyShape.h?r=2223#40>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btEmptyShape.cpp?r=2223>+-}+{#fun btEmptyShape_getAabb as btEmptyShape_getAabb'    `( BtEmptyShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ t+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btEmptyShape.h?r=2223#59>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btEmptyShape.cpp?r=2223>+-}+{#fun btEmptyShape_processAllTriangles as btEmptyShape_processAllTriangles    `( BtEmptyShapeClass bc , BtTriangleCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ arg0+, withVector3* `Vector3'  peekVector3* -- ^ arg1+, withVector3* `Vector3'  peekVector3* -- ^ arg2+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btEmptyShape.h?r=2223#59>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btEmptyShape.cpp?r=2223>+-}+{#fun btEmptyShape_processAllTriangles as btEmptyShape_processAllTriangles'    `( BtEmptyShapeClass bc , BtTriangleCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ arg0+, allocaVector3-  `Vector3'  peekVector3* -- ^ arg1+, allocaVector3-  `Vector3'  peekVector3* -- ^ arg2+ } ->  `()'  #}+-- * btIndexedMesh+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h?r=2223#47>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp?r=2223>+-}+{#fun btIndexedMesh_new as btIndexedMesh    {  } -> `BtIndexedMesh' mkBtIndexedMesh* #}+{#fun btIndexedMesh_free    `( BtIndexedMeshClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h?r=2223#30>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp?r=2223>+-}+{#fun btIndexedMesh_m_numTriangles_set    `( BtIndexedMeshClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h?r=2223#30>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp?r=2223>+-}+{#fun btIndexedMesh_m_numTriangles_get    `( BtIndexedMeshClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h?r=2223#32>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp?r=2223>+-}+{#fun btIndexedMesh_m_triangleIndexStride_set    `( BtIndexedMeshClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h?r=2223#32>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp?r=2223>+-}+{#fun btIndexedMesh_m_triangleIndexStride_get    `( BtIndexedMeshClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h?r=2223#33>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp?r=2223>+-}+{#fun btIndexedMesh_m_numVertices_set    `( BtIndexedMeshClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h?r=2223#33>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp?r=2223>+-}+{#fun btIndexedMesh_m_numVertices_get    `( BtIndexedMeshClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h?r=2223#35>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp?r=2223>+-}+{#fun btIndexedMesh_m_vertexStride_set    `( BtIndexedMeshClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h?r=2223#35>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp?r=2223>+-}+{#fun btIndexedMesh_m_vertexStride_get    `( BtIndexedMeshClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btIntIndexData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#103>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btIntIndexData_new as btIntIndexData    {  } -> `BtIntIndexData' mkBtIntIndexData* #}+{#fun btIntIndexData_free    `( BtIntIndexDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#104>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btIntIndexData_m_value_set    `( BtIntIndexDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#104>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btIntIndexData_m_value_get    `( BtIntIndexDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btInternalTriangleIndexCallback+-- * btMeshPartData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#128>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btMeshPartData_new as btMeshPartData    {  } -> `BtMeshPartData' mkBtMeshPartData* #}+{#fun btMeshPartData_free    `( BtMeshPartDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#129>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btMeshPartData_m_vertices3f_set    `( BtMeshPartDataClass bc , BtVector3FloatDataClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#130>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btMeshPartData_m_vertices3d_set    `( BtMeshPartDataClass bc , BtVector3DoubleDataClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#132>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btMeshPartData_m_indices32_set    `( BtMeshPartDataClass bc , BtIntIndexDataClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#133>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btMeshPartData_m_3indices16_set    `( BtMeshPartDataClass bc , BtShortIntIndexTripletDataClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#134>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btMeshPartData_m_3indices8_set    `( BtMeshPartDataClass bc , BtCharIndexTripletDataClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#136>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btMeshPartData_m_indices16_set    `( BtMeshPartDataClass bc , BtShortIntIndexDataClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#138>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btMeshPartData_m_numTriangles_set    `( BtMeshPartDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#138>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btMeshPartData_m_numTriangles_get    `( BtMeshPartDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#139>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btMeshPartData_m_numVertices_set    `( BtMeshPartDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#139>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btMeshPartData_m_numVertices_get    `( BtMeshPartDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btMultiSphereShape+{#fun btMultiSphereShape_free    `( BtMultiSphereShapeClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btMultiSphereShape.h?r=2223#38>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btMultiSphereShape.cpp?r=2223>+-}+{#fun btMultiSphereShape_calculateLocalInertia as btMultiSphereShape_calculateLocalInertia    `( BtMultiSphereShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, withVector3* `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btMultiSphereShape.h?r=2223#38>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btMultiSphereShape.cpp?r=2223>+-}+{#fun btMultiSphereShape_calculateLocalInertia as btMultiSphereShape_calculateLocalInertia'    `( BtMultiSphereShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, allocaVector3-  `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btMultiSphereShape.h?r=2223#92>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btMultiSphereShape.cpp?r=2223>+-}+{#fun btMultiSphereShape_calculateSerializeBufferSize as btMultiSphereShape_calculateSerializeBufferSize    `( BtMultiSphereShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btMultiSphereShape.h?r=2223#45>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btMultiSphereShape.cpp?r=2223>+-}+{#fun btMultiSphereShape_getSphereCount as btMultiSphereShape_getSphereCount    `( BtMultiSphereShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btMultiSphereShape.h?r=2223#61>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btMultiSphereShape.cpp?r=2223>+-}+{#fun btMultiSphereShape_getName as btMultiSphereShape_getName    `( BtMultiSphereShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `String'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btMultiSphereShape.h?r=2223#50>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btMultiSphereShape.cpp?r=2223>+-}+{#fun btMultiSphereShape_getSpherePosition as btMultiSphereShape_getSpherePosition    `( BtMultiSphereShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btMultiSphereShape.h?r=2223#55>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btMultiSphereShape.cpp?r=2223>+-}+{#fun btMultiSphereShape_getSphereRadius as btMultiSphereShape_getSphereRadius    `( BtMultiSphereShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btMultiSphereShape.h?r=2223#41>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btMultiSphereShape.cpp?r=2223>+-}+{#fun btMultiSphereShape_localGetSupportingVertexWithoutMargin as btMultiSphereShape_localGetSupportingVertexWithoutMargin    `( BtMultiSphereShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btMultiSphereShape.h?r=2223#41>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btMultiSphereShape.cpp?r=2223>+-}+{#fun btMultiSphereShape_localGetSupportingVertexWithoutMargin as btMultiSphereShape_localGetSupportingVertexWithoutMargin'    `( BtMultiSphereShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+-- * btMultiSphereShapeData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btMultiSphereShape.h?r=2223#82>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btMultiSphereShape.cpp?r=2223>+-}+{#fun btMultiSphereShapeData_new as btMultiSphereShapeData    {  } -> `BtMultiSphereShapeData' mkBtMultiSphereShapeData* #}+{#fun btMultiSphereShapeData_free    `( BtMultiSphereShapeDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btMultiSphereShape.h?r=2223#85>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btMultiSphereShape.cpp?r=2223>+-}+{#fun btMultiSphereShapeData_m_localPositionArrayPtr_set    `( BtMultiSphereShapeDataClass bc , BtPositionAndRadiusClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btMultiSphereShape.h?r=2223#86>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btMultiSphereShape.cpp?r=2223>+-}+{#fun btMultiSphereShapeData_m_localPositionArraySize_set    `( BtMultiSphereShapeDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btMultiSphereShape.h?r=2223#86>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btMultiSphereShape.cpp?r=2223>+-}+{#fun btMultiSphereShapeData_m_localPositionArraySize_get    `( BtMultiSphereShapeDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btOptimizedBvh+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btOptimizedBvh.h?r=2223#37>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btOptimizedBvh.cpp?r=2223>+-}+{#fun btOptimizedBvh_new as btOptimizedBvh    {  } -> `BtOptimizedBvh' mkBtOptimizedBvh* #}+{#fun btOptimizedBvh_free    `( BtOptimizedBvhClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btOptimizedBvh.h?r=2223#47>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btOptimizedBvh.cpp?r=2223>+-}+{#fun btOptimizedBvh_updateBvhNodes as btOptimizedBvh_updateBvhNodes    `( BtOptimizedBvhClass bc , BtStridingMeshInterfaceClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ meshInterface+,  `Int'  -- ^ firstNode+,  `Int'  -- ^ endNode+,  `Int'  -- ^ index+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btOptimizedBvh.h?r=2223#43>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btOptimizedBvh.cpp?r=2223>+-}+{#fun btOptimizedBvh_refit as btOptimizedBvh_refit    `( BtOptimizedBvhClass bc , BtStridingMeshInterfaceClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ triangles+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btOptimizedBvh.h?r=2223#43>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btOptimizedBvh.cpp?r=2223>+-}+{#fun btOptimizedBvh_refit as btOptimizedBvh_refit'    `( BtOptimizedBvhClass bc , BtStridingMeshInterfaceClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ triangles+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btOptimizedBvh.h?r=2223#41>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btOptimizedBvh.cpp?r=2223>+-}+{#fun btOptimizedBvh_build as btOptimizedBvh_build    `( BtOptimizedBvhClass bc , BtStridingMeshInterfaceClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ triangles+,  `Bool'  -- ^ useQuantizedAabbCompression+, withVector3* `Vector3'  peekVector3* -- ^ bvhAabbMin+, withVector3* `Vector3'  peekVector3* -- ^ bvhAabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btOptimizedBvh.h?r=2223#41>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btOptimizedBvh.cpp?r=2223>+-}+{#fun btOptimizedBvh_build as btOptimizedBvh_build'    `( BtOptimizedBvhClass bc , BtStridingMeshInterfaceClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ triangles+,  `Bool'  -- ^ useQuantizedAabbCompression+, allocaVector3-  `Vector3'  peekVector3* -- ^ bvhAabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ bvhAabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btOptimizedBvh.h?r=2223#45>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btOptimizedBvh.cpp?r=2223>+-}+{#fun btOptimizedBvh_refitPartial as btOptimizedBvh_refitPartial    `( BtOptimizedBvhClass bc , BtStridingMeshInterfaceClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ triangles+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btOptimizedBvh.h?r=2223#45>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btOptimizedBvh.cpp?r=2223>+-}+{#fun btOptimizedBvh_refitPartial as btOptimizedBvh_refitPartial'    `( BtOptimizedBvhClass bc , BtStridingMeshInterfaceClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ triangles+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+-- * btPolyhedralConvexAabbCachingShape+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h?r=2223#108>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp?r=2223>+-}+{#fun btPolyhedralConvexAabbCachingShape_recalcLocalAabb as btPolyhedralConvexAabbCachingShape_recalcLocalAabb    `( BtPolyhedralConvexAabbCachingShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h?r=2223#104>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp?r=2223>+-}+{#fun btPolyhedralConvexAabbCachingShape_setLocalScaling as btPolyhedralConvexAabbCachingShape_setLocalScaling    `( BtPolyhedralConvexAabbCachingShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h?r=2223#104>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp?r=2223>+-}+{#fun btPolyhedralConvexAabbCachingShape_setLocalScaling as btPolyhedralConvexAabbCachingShape_setLocalScaling'    `( BtPolyhedralConvexAabbCachingShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h?r=2223#96>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp?r=2223>+-}+{#fun btPolyhedralConvexAabbCachingShape_getNonvirtualAabb as btPolyhedralConvexAabbCachingShape_getNonvirtualAabb    `( BtPolyhedralConvexAabbCachingShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ trans+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+,  `Float'  -- ^ margin+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h?r=2223#96>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp?r=2223>+-}+{#fun btPolyhedralConvexAabbCachingShape_getNonvirtualAabb as btPolyhedralConvexAabbCachingShape_getNonvirtualAabb'    `( BtPolyhedralConvexAabbCachingShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ trans+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+,  `Float'  -- ^ margin+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h?r=2223#106>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp?r=2223>+-}+{#fun btPolyhedralConvexAabbCachingShape_getAabb as btPolyhedralConvexAabbCachingShape_getAabb    `( BtPolyhedralConvexAabbCachingShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ t+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h?r=2223#106>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp?r=2223>+-}+{#fun btPolyhedralConvexAabbCachingShape_getAabb as btPolyhedralConvexAabbCachingShape_getAabb'    `( BtPolyhedralConvexAabbCachingShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ t+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+-- * btPolyhedralConvexShape+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h?r=2223#52>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp?r=2223>+-}+{#fun btPolyhedralConvexShape_calculateLocalInertia as btPolyhedralConvexShape_calculateLocalInertia    `( BtPolyhedralConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, withVector3* `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h?r=2223#52>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp?r=2223>+-}+{#fun btPolyhedralConvexShape_calculateLocalInertia as btPolyhedralConvexShape_calculateLocalInertia'    `( BtPolyhedralConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, allocaVector3-  `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h?r=2223#59>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp?r=2223>+-}+{#fun btPolyhedralConvexShape_getNumPlanes as btPolyhedralConvexShape_getNumPlanes    `( BtPolyhedralConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h?r=2223#56>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp?r=2223>+-}+{#fun btPolyhedralConvexShape_getNumEdges as btPolyhedralConvexShape_getNumEdges    `( BtPolyhedralConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h?r=2223#58>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp?r=2223>+-}+{#fun btPolyhedralConvexShape_getVertex as btPolyhedralConvexShape_getVertex    `( BtPolyhedralConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ i+, withVector3* `Vector3'  peekVector3* -- ^ vtx+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h?r=2223#58>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp?r=2223>+-}+{#fun btPolyhedralConvexShape_getVertex as btPolyhedralConvexShape_getVertex'    `( BtPolyhedralConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ i+, allocaVector3-  `Vector3'  peekVector3* -- ^ vtx+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h?r=2223#57>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp?r=2223>+-}+{#fun btPolyhedralConvexShape_getEdge as btPolyhedralConvexShape_getEdge    `( BtPolyhedralConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ i+, withVector3* `Vector3'  peekVector3* -- ^ pa+, withVector3* `Vector3'  peekVector3* -- ^ pb+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h?r=2223#57>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp?r=2223>+-}+{#fun btPolyhedralConvexShape_getEdge as btPolyhedralConvexShape_getEdge'    `( BtPolyhedralConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ i+, allocaVector3-  `Vector3'  peekVector3* -- ^ pa+, allocaVector3-  `Vector3'  peekVector3* -- ^ pb+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h?r=2223#63>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp?r=2223>+-}+{#fun btPolyhedralConvexShape_isInside as btPolyhedralConvexShape_isInside    `( BtPolyhedralConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ pt+,  `Float'  -- ^ tolerance+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h?r=2223#63>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp?r=2223>+-}+{#fun btPolyhedralConvexShape_isInside as btPolyhedralConvexShape_isInside'    `( BtPolyhedralConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ pt+,  `Float'  -- ^ tolerance+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h?r=2223#60>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp?r=2223>+-}+{#fun btPolyhedralConvexShape_getPlane as btPolyhedralConvexShape_getPlane    `( BtPolyhedralConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ planeNormal+, withVector3* `Vector3'  peekVector3* -- ^ planeSupport+,  `Int'  -- ^ i+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h?r=2223#60>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp?r=2223>+-}+{#fun btPolyhedralConvexShape_getPlane as btPolyhedralConvexShape_getPlane'    `( BtPolyhedralConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ planeNormal+, allocaVector3-  `Vector3'  peekVector3* -- ^ planeSupport+,  `Int'  -- ^ i+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h?r=2223#40>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp?r=2223>+-}+{#fun btPolyhedralConvexShape_initializePolyhedralFeatures as btPolyhedralConvexShape_initializePolyhedralFeatures    `( BtPolyhedralConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h?r=2223#55>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp?r=2223>+-}+{#fun btPolyhedralConvexShape_getNumVertices as btPolyhedralConvexShape_getNumVertices    `( BtPolyhedralConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h?r=2223#49>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp?r=2223>+-}+{#fun btPolyhedralConvexShape_localGetSupportingVertexWithoutMargin as btPolyhedralConvexShape_localGetSupportingVertexWithoutMargin    `( BtPolyhedralConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h?r=2223#49>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp?r=2223>+-}+{#fun btPolyhedralConvexShape_localGetSupportingVertexWithoutMargin as btPolyhedralConvexShape_localGetSupportingVertexWithoutMargin'    `( BtPolyhedralConvexShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+-- * btPositionAndRadius+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btMultiSphereShape.h?r=2223#76>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btMultiSphereShape.cpp?r=2223>+-}+{#fun btPositionAndRadius_new as btPositionAndRadius    {  } -> `BtPositionAndRadius' mkBtPositionAndRadius* #}+{#fun btPositionAndRadius_free    `( BtPositionAndRadiusClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btMultiSphereShape.h?r=2223#78>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btMultiSphereShape.cpp?r=2223>+-}+{#fun btPositionAndRadius_m_radius_set    `( BtPositionAndRadiusClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btMultiSphereShape.h?r=2223#78>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btMultiSphereShape.cpp?r=2223>+-}+{#fun btPositionAndRadius_m_radius_get    `( BtPositionAndRadiusClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+-- * btScaledBvhTriangleMeshShape+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h?r=2223#35>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btScaledBvhTriangleMeshShape_new as btScaledBvhTriangleMeshShape    `( BtBvhTriangleMeshShapeClass p0 )' =>     {  withBt* `p0' , withVector3* `Vector3'  } -> `BtScaledBvhTriangleMeshShape' mkBtScaledBvhTriangleMeshShape* #}+{#fun btScaledBvhTriangleMeshShape_free    `( BtScaledBvhTriangleMeshShapeClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h?r=2223#43>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btScaledBvhTriangleMeshShape_calculateLocalInertia as btScaledBvhTriangleMeshShape_calculateLocalInertia    `( BtScaledBvhTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, withVector3* `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h?r=2223#43>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btScaledBvhTriangleMeshShape_calculateLocalInertia as btScaledBvhTriangleMeshShape_calculateLocalInertia'    `( BtScaledBvhTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, allocaVector3-  `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h?r=2223#47>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btScaledBvhTriangleMeshShape_getChildShape0 as btScaledBvhTriangleMeshShape_getChildShape    `( BtScaledBvhTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtBvhTriangleMeshShape' mkBtBvhTriangleMeshShape*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h?r=2223#47>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btScaledBvhTriangleMeshShape_getChildShape0 as btScaledBvhTriangleMeshShape_getChildShape0    `( BtScaledBvhTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtBvhTriangleMeshShape' mkBtBvhTriangleMeshShape*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h?r=2223#52>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btScaledBvhTriangleMeshShape_getChildShape1 as btScaledBvhTriangleMeshShape_getChildShape1    `( BtScaledBvhTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtBvhTriangleMeshShape' mkBtBvhTriangleMeshShape*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h?r=2223#76>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btScaledBvhTriangleMeshShape_calculateSerializeBufferSize as btScaledBvhTriangleMeshShape_calculateSerializeBufferSize    `( BtScaledBvhTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h?r=2223#58>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btScaledBvhTriangleMeshShape_getName as btScaledBvhTriangleMeshShape_getName    `( BtScaledBvhTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `String'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h?r=2223#42>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btScaledBvhTriangleMeshShape_getLocalScaling as btScaledBvhTriangleMeshShape_getLocalScaling    `( BtScaledBvhTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h?r=2223#41>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btScaledBvhTriangleMeshShape_setLocalScaling as btScaledBvhTriangleMeshShape_setLocalScaling    `( BtScaledBvhTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h?r=2223#41>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btScaledBvhTriangleMeshShape_setLocalScaling as btScaledBvhTriangleMeshShape_setLocalScaling'    `( BtScaledBvhTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h?r=2223#40>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btScaledBvhTriangleMeshShape_getAabb as btScaledBvhTriangleMeshShape_getAabb    `( BtScaledBvhTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ t+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h?r=2223#40>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btScaledBvhTriangleMeshShape_getAabb as btScaledBvhTriangleMeshShape_getAabb'    `( BtScaledBvhTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ t+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h?r=2223#45>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btScaledBvhTriangleMeshShape_processAllTriangles as btScaledBvhTriangleMeshShape_processAllTriangles    `( BtScaledBvhTriangleMeshShapeClass bc , BtTriangleCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ callback+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h?r=2223#45>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btScaledBvhTriangleMeshShape_processAllTriangles as btScaledBvhTriangleMeshShape_processAllTriangles'    `( BtScaledBvhTriangleMeshShapeClass bc , BtTriangleCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ callback+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+-- * btScaledTriangleMeshShapeData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h?r=2223#69>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btScaledTriangleMeshShapeData_new as btScaledTriangleMeshShapeData    {  } -> `BtScaledTriangleMeshShapeData' mkBtScaledTriangleMeshShapeData* #}+{#fun btScaledTriangleMeshShapeData_free    `( BtScaledTriangleMeshShapeDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+-- * btShortIntIndexData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#108>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btShortIntIndexData_new as btShortIntIndexData    {  } -> `BtShortIntIndexData' mkBtShortIntIndexData* #}+{#fun btShortIntIndexData_free    `( BtShortIntIndexDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#109>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btShortIntIndexData_m_value_set    `( BtShortIntIndexDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#109>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btShortIntIndexData_m_value_get    `( BtShortIntIndexDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btShortIntIndexTripletData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#114>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btShortIntIndexTripletData_new as btShortIntIndexTripletData    {  } -> `BtShortIntIndexTripletData' mkBtShortIntIndexTripletData* #}+{#fun btShortIntIndexTripletData_free    `( BtShortIntIndexTripletDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+-- * btSphereShape+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btSphereShape.h?r=2223#29>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btSphereShape.cpp?r=2223>+-}+{#fun btSphereShape_new as btSphereShape    {   `Float'  } -> `BtSphereShape' mkBtSphereShape* #}+{#fun btSphereShape_free    `( BtSphereShapeClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btSphereShape.h?r=2223#42>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btSphereShape.cpp?r=2223>+-}+{#fun btSphereShape_calculateLocalInertia as btSphereShape_calculateLocalInertia    `( BtSphereShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, withVector3* `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btSphereShape.h?r=2223#42>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btSphereShape.cpp?r=2223>+-}+{#fun btSphereShape_calculateLocalInertia as btSphereShape_calculateLocalInertia'    `( BtSphereShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, allocaVector3-  `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btSphereShape.h?r=2223#36>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btSphereShape.cpp?r=2223>+-}+{#fun btSphereShape_localGetSupportingVertex as btSphereShape_localGetSupportingVertex    `( BtSphereShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btSphereShape.h?r=2223#36>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btSphereShape.cpp?r=2223>+-}+{#fun btSphereShape_localGetSupportingVertex as btSphereShape_localGetSupportingVertex'    `( BtSphereShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btSphereShape.h?r=2223#56>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btSphereShape.cpp?r=2223>+-}+{#fun btSphereShape_getName as btSphereShape_getName    `( BtSphereShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `String'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btSphereShape.h?r=2223#62>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btSphereShape.cpp?r=2223>+-}+{#fun btSphereShape_getMargin as btSphereShape_getMargin    `( BtSphereShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btSphereShape.h?r=2223#58>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btSphereShape.cpp?r=2223>+-}+{#fun btSphereShape_setMargin as btSphereShape_setMargin    `( BtSphereShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ margin+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btSphereShape.h?r=2223#44>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btSphereShape.cpp?r=2223>+-}+{#fun btSphereShape_getAabb as btSphereShape_getAabb    `( BtSphereShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ t+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btSphereShape.h?r=2223#44>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btSphereShape.cpp?r=2223>+-}+{#fun btSphereShape_getAabb as btSphereShape_getAabb'    `( BtSphereShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ t+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btSphereShape.h?r=2223#49>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btSphereShape.cpp?r=2223>+-}+{#fun btSphereShape_setUnscaledRadius as btSphereShape_setUnscaledRadius    `( BtSphereShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ radius+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btSphereShape.h?r=2223#37>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btSphereShape.cpp?r=2223>+-}+{#fun btSphereShape_localGetSupportingVertexWithoutMargin as btSphereShape_localGetSupportingVertexWithoutMargin    `( BtSphereShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btSphereShape.h?r=2223#37>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btSphereShape.cpp?r=2223>+-}+{#fun btSphereShape_localGetSupportingVertexWithoutMargin as btSphereShape_localGetSupportingVertexWithoutMargin'    `( BtSphereShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btSphereShape.h?r=2223#47>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btSphereShape.cpp?r=2223>+-}+{#fun btSphereShape_getRadius as btSphereShape_getRadius    `( BtSphereShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+-- * btStaticPlaneShape+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStaticPlaneShape.h?r=2223#34>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp?r=2223>+-}+{#fun btStaticPlaneShape_new as btStaticPlaneShape    {  withVector3* `Vector3' ,  `Float'  } -> `BtStaticPlaneShape' mkBtStaticPlaneShape* #}+{#fun btStaticPlaneShape_free    `( BtStaticPlaneShapeClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStaticPlaneShape.h?r=2223#43>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp?r=2223>+-}+{#fun btStaticPlaneShape_calculateLocalInertia as btStaticPlaneShape_calculateLocalInertia    `( BtStaticPlaneShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, withVector3* `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStaticPlaneShape.h?r=2223#43>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp?r=2223>+-}+{#fun btStaticPlaneShape_calculateLocalInertia as btStaticPlaneShape_calculateLocalInertia'    `( BtStaticPlaneShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, allocaVector3-  `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStaticPlaneShape.h?r=2223#81>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp?r=2223>+-}+{#fun btStaticPlaneShape_calculateSerializeBufferSize as btStaticPlaneShape_calculateSerializeBufferSize    `( BtStaticPlaneShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStaticPlaneShape.h?r=2223#59>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp?r=2223>+-}+{#fun btStaticPlaneShape_getName as btStaticPlaneShape_getName    `( BtStaticPlaneShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `String'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStaticPlaneShape.h?r=2223#46>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp?r=2223>+-}+{#fun btStaticPlaneShape_getLocalScaling as btStaticPlaneShape_getLocalScaling    `( BtStaticPlaneShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStaticPlaneShape.h?r=2223#48>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp?r=2223>+-}+{#fun btStaticPlaneShape_getPlaneNormal as btStaticPlaneShape_getPlaneNormal    `( BtStaticPlaneShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStaticPlaneShape.h?r=2223#53>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp?r=2223>+-}+{#fun btStaticPlaneShape_getPlaneConstant as btStaticPlaneShape_getPlaneConstant    `( BtStaticPlaneShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStaticPlaneShape.h?r=2223#45>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp?r=2223>+-}+{#fun btStaticPlaneShape_setLocalScaling as btStaticPlaneShape_setLocalScaling    `( BtStaticPlaneShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStaticPlaneShape.h?r=2223#45>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp?r=2223>+-}+{#fun btStaticPlaneShape_setLocalScaling as btStaticPlaneShape_setLocalScaling'    `( BtStaticPlaneShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStaticPlaneShape.h?r=2223#39>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp?r=2223>+-}+{#fun btStaticPlaneShape_getAabb as btStaticPlaneShape_getAabb    `( BtStaticPlaneShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ t+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStaticPlaneShape.h?r=2223#39>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp?r=2223>+-}+{#fun btStaticPlaneShape_getAabb as btStaticPlaneShape_getAabb'    `( BtStaticPlaneShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ t+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStaticPlaneShape.h?r=2223#41>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp?r=2223>+-}+{#fun btStaticPlaneShape_processAllTriangles as btStaticPlaneShape_processAllTriangles    `( BtStaticPlaneShapeClass bc , BtTriangleCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ callback+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStaticPlaneShape.h?r=2223#41>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp?r=2223>+-}+{#fun btStaticPlaneShape_processAllTriangles as btStaticPlaneShape_processAllTriangles'    `( BtStaticPlaneShapeClass bc , BtTriangleCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ callback+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+-- * btStaticPlaneShapeData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStaticPlaneShape.h?r=2223#71>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp?r=2223>+-}+{#fun btStaticPlaneShapeData_new as btStaticPlaneShapeData    {  } -> `BtStaticPlaneShapeData' mkBtStaticPlaneShapeData* #}+{#fun btStaticPlaneShapeData_free    `( BtStaticPlaneShapeDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStaticPlaneShape.h?r=2223#76>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp?r=2223>+-}+{#fun btStaticPlaneShapeData_m_planeConstant_set    `( BtStaticPlaneShapeDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStaticPlaneShape.h?r=2223#76>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp?r=2223>+-}+{#fun btStaticPlaneShapeData_m_planeConstant_get    `( BtStaticPlaneShapeDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+-- * btStridingMeshInterface+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#155>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btStridingMeshInterface_calculateSerializeBufferSize as btStridingMeshInterface_calculateSerializeBufferSize    `( BtStridingMeshInterfaceClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#49>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btStridingMeshInterface_calculateAabbBruteForce as btStridingMeshInterface_calculateAabbBruteForce    `( BtStridingMeshInterfaceClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#49>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btStridingMeshInterface_calculateAabbBruteForce as btStridingMeshInterface_calculateAabbBruteForce'    `( BtStridingMeshInterfaceClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#71>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btStridingMeshInterface_preallocateVertices as btStridingMeshInterface_preallocateVertices    `( BtStridingMeshInterfaceClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ numverts+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#62>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btStridingMeshInterface_unLockVertexBase as btStridingMeshInterface_unLockVertexBase    `( BtStridingMeshInterfaceClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ subpart+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#86>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btStridingMeshInterface_getScaling as btStridingMeshInterface_getScaling    `( BtStridingMeshInterfaceClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#72>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btStridingMeshInterface_preallocateIndices as btStridingMeshInterface_preallocateIndices    `( BtStridingMeshInterfaceClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ numindices+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#75>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btStridingMeshInterface_setPremadeAabb as btStridingMeshInterface_setPremadeAabb    `( BtStridingMeshInterfaceClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#75>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btStridingMeshInterface_setPremadeAabb as btStridingMeshInterface_setPremadeAabb'    `( BtStridingMeshInterfaceClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#46>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btStridingMeshInterface_InternalProcessAllTriangles as btStridingMeshInterface_InternalProcessAllTriangles    `( BtStridingMeshInterfaceClass bc , BtInternalTriangleIndexCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ callback+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#46>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btStridingMeshInterface_InternalProcessAllTriangles as btStridingMeshInterface_InternalProcessAllTriangles'    `( BtStridingMeshInterfaceClass bc , BtInternalTriangleIndexCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ callback+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#69>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btStridingMeshInterface_getNumSubParts as btStridingMeshInterface_getNumSubParts    `( BtStridingMeshInterfaceClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#74>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btStridingMeshInterface_hasPremadeAabb as btStridingMeshInterface_hasPremadeAabb    `( BtStridingMeshInterfaceClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#89>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btStridingMeshInterface_setScaling as btStridingMeshInterface_setScaling    `( BtStridingMeshInterfaceClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#89>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btStridingMeshInterface_setScaling as btStridingMeshInterface_setScaling'    `( BtStridingMeshInterfaceClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#64>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btStridingMeshInterface_unLockReadOnlyVertexBase as btStridingMeshInterface_unLockReadOnlyVertexBase    `( BtStridingMeshInterfaceClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ subpart+ } ->  `()'  #}+-- * btStridingMeshInterfaceData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#145>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btStridingMeshInterfaceData_new as btStridingMeshInterfaceData    {  } -> `BtStridingMeshInterfaceData' mkBtStridingMeshInterfaceData* #}+{#fun btStridingMeshInterfaceData_free    `( BtStridingMeshInterfaceDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#146>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btStridingMeshInterfaceData_m_meshPartsPtr_set    `( BtStridingMeshInterfaceDataClass bc , BtMeshPartDataClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#148>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btStridingMeshInterfaceData_m_numMeshParts_set    `( BtStridingMeshInterfaceDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h?r=2223#148>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp?r=2223>+-}+{#fun btStridingMeshInterfaceData_m_numMeshParts_get    `( BtStridingMeshInterfaceDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btTriangleCallback+-- * btTriangleIndexVertexArray+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h?r=2223#79>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp?r=2223>+-}+{#fun btTriangleIndexVertexArray_new0 as btTriangleIndexVertexArray0    {  } -> `BtTriangleIndexVertexArray' mkBtTriangleIndexVertexArray* #}+{#fun btTriangleIndexVertexArray_free    `( BtTriangleIndexVertexArrayClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h?r=2223#122>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp?r=2223>+-}+{#fun btTriangleIndexVertexArray_preallocateIndices as btTriangleIndexVertexArray_preallocateIndices    `( BtTriangleIndexVertexArrayClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ numindices+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h?r=2223#121>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp?r=2223>+-}+{#fun btTriangleIndexVertexArray_preallocateVertices as btTriangleIndexVertexArray_preallocateVertices    `( BtTriangleIndexVertexArrayClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ numverts+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h?r=2223#125>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp?r=2223>+-}+{#fun btTriangleIndexVertexArray_setPremadeAabb as btTriangleIndexVertexArray_setPremadeAabb    `( BtTriangleIndexVertexArrayClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h?r=2223#125>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp?r=2223>+-}+{#fun btTriangleIndexVertexArray_setPremadeAabb as btTriangleIndexVertexArray_setPremadeAabb'    `( BtTriangleIndexVertexArrayClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h?r=2223#107>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp?r=2223>+-}+{#fun btTriangleIndexVertexArray_getNumSubParts as btTriangleIndexVertexArray_getNumSubParts    `( BtTriangleIndexVertexArrayClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h?r=2223#124>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp?r=2223>+-}+{#fun btTriangleIndexVertexArray_hasPremadeAabb as btTriangleIndexVertexArray_hasPremadeAabb    `( BtTriangleIndexVertexArrayClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h?r=2223#101>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp?r=2223>+-}+{#fun btTriangleIndexVertexArray_unLockVertexBase as btTriangleIndexVertexArray_unLockVertexBase    `( BtTriangleIndexVertexArrayClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ subpart+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h?r=2223#103>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp?r=2223>+-}+{#fun btTriangleIndexVertexArray_unLockReadOnlyVertexBase as btTriangleIndexVertexArray_unLockReadOnlyVertexBase    `( BtTriangleIndexVertexArrayClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ subpart+ } ->  `()'  #}+-- * btTriangleInfo+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#38>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfo_new as btTriangleInfo    {  } -> `BtTriangleInfo' mkBtTriangleInfo* #}+{#fun btTriangleInfo_free    `( BtTriangleInfoClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#46>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfo_m_flags_set    `( BtTriangleInfoClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#46>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfo_m_flags_get    `( BtTriangleInfoClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#48>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfo_m_edgeV0V1Angle_set    `( BtTriangleInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#48>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfo_m_edgeV0V1Angle_get    `( BtTriangleInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#49>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfo_m_edgeV1V2Angle_set    `( BtTriangleInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#49>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfo_m_edgeV1V2Angle_get    `( BtTriangleInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#50>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfo_m_edgeV2V0Angle_set    `( BtTriangleInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#50>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfo_m_edgeV2V0Angle_get    `( BtTriangleInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+-- * btTriangleInfoData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#89>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoData_new as btTriangleInfoData    {  } -> `BtTriangleInfoData' mkBtTriangleInfoData* #}+{#fun btTriangleInfoData_free    `( BtTriangleInfoDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#90>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoData_m_flags_set    `( BtTriangleInfoDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#90>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoData_m_flags_get    `( BtTriangleInfoDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#91>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoData_m_edgeV0V1Angle_set    `( BtTriangleInfoDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#91>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoData_m_edgeV0V1Angle_get    `( BtTriangleInfoDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#92>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoData_m_edgeV1V2Angle_set    `( BtTriangleInfoDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#92>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoData_m_edgeV1V2Angle_get    `( BtTriangleInfoDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#93>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoData_m_edgeV2V0Angle_set    `( BtTriangleInfoDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#93>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoData_m_edgeV2V0Angle_get    `( BtTriangleInfoDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+-- * btTriangleInfoMap+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#68>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoMap_new as btTriangleInfoMap    {  } -> `BtTriangleInfoMap' mkBtTriangleInfoMap* #}+{#fun btTriangleInfoMap_free    `( BtTriangleInfoMapClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#116>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoMap_calculateSerializeBufferSize as btTriangleInfoMap_calculateSerializeBufferSize    `( BtTriangleInfoMapClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#203>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoMap_deSerialize as btTriangleInfoMap_deSerialize    `( BtTriangleInfoMapClass bc , BtTriangleInfoMapDataClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ tmapData+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#60>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoMap_m_convexEpsilon_set    `( BtTriangleInfoMapClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#60>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoMap_m_convexEpsilon_get    `( BtTriangleInfoMapClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#63>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoMap_m_edgeDistanceThreshold_set    `( BtTriangleInfoMapClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#63>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoMap_m_edgeDistanceThreshold_get    `( BtTriangleInfoMapClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#62>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoMap_m_equalVertexThreshold_set    `( BtTriangleInfoMapClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#62>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoMap_m_equalVertexThreshold_get    `( BtTriangleInfoMapClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#64>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoMap_m_maxEdgeAngleThreshold_set    `( BtTriangleInfoMapClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#64>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoMap_m_maxEdgeAngleThreshold_get    `( BtTriangleInfoMapClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#61>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoMap_m_planarEpsilon_set    `( BtTriangleInfoMapClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#61>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoMap_m_planarEpsilon_get    `( BtTriangleInfoMapClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#65>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoMap_m_zeroAreaThreshold_set    `( BtTriangleInfoMapClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#65>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoMap_m_zeroAreaThreshold_get    `( BtTriangleInfoMapClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+-- * btTriangleInfoMapData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#97>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoMapData_new as btTriangleInfoMapData    {  } -> `BtTriangleInfoMapData' mkBtTriangleInfoMapData* #}+{#fun btTriangleInfoMapData_free    `( BtTriangleInfoMapDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#103>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoMapData_m_convexEpsilon_set    `( BtTriangleInfoMapDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#103>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoMapData_m_convexEpsilon_get    `( BtTriangleInfoMapDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#106>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoMapData_m_edgeDistanceThreshold_set    `( BtTriangleInfoMapDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#106>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoMapData_m_edgeDistanceThreshold_get    `( BtTriangleInfoMapDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#105>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoMapData_m_equalVertexThreshold_set    `( BtTriangleInfoMapDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#105>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoMapData_m_equalVertexThreshold_get    `( BtTriangleInfoMapDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#110>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoMapData_m_hashTableSize_set    `( BtTriangleInfoMapDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#110>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoMapData_m_hashTableSize_get    `( BtTriangleInfoMapDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#109>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoMapData_m_nextSize_set    `( BtTriangleInfoMapDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#109>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoMapData_m_nextSize_get    `( BtTriangleInfoMapDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#112>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoMapData_m_numKeys_set    `( BtTriangleInfoMapDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#112>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoMapData_m_numKeys_get    `( BtTriangleInfoMapDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#111>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoMapData_m_numValues_set    `( BtTriangleInfoMapDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#111>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoMapData_m_numValues_get    `( BtTriangleInfoMapDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#104>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoMapData_m_planarEpsilon_set    `( BtTriangleInfoMapDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#104>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoMapData_m_planarEpsilon_get    `( BtTriangleInfoMapDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#100>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoMapData_m_valueArrayPtr_set    `( BtTriangleInfoMapDataClass bc , BtTriangleInfoDataClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#107>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoMapData_m_zeroAreaThreshold_set    `( BtTriangleInfoMapDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h?r=2223#107>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleInfoMap.cpp?r=2223>+-}+{#fun btTriangleInfoMapData_m_zeroAreaThreshold_get    `( BtTriangleInfoMapDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+-- * btTriangleMesh+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMesh.h?r=2223#41>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMesh.cpp?r=2223>+-}+{#fun btTriangleMesh_new as btTriangleMesh    {   `Bool' ,  `Bool'  } -> `BtTriangleMesh' mkBtTriangleMesh* #}+{#fun btTriangleMesh_free    `( BtTriangleMeshClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMesh.h?r=2223#59>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMesh.cpp?r=2223>+-}+{#fun btTriangleMesh_preallocateIndices as btTriangleMesh_preallocateIndices    `( BtTriangleMeshClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ numindices+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMesh.h?r=2223#56>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMesh.cpp?r=2223>+-}+{#fun btTriangleMesh_getNumTriangles as btTriangleMesh_getNumTriangles    `( BtTriangleMeshClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMesh.h?r=2223#43>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMesh.cpp?r=2223>+-}+{#fun btTriangleMesh_getUse32bitIndices as btTriangleMesh_getUse32bitIndices    `( BtTriangleMeshClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMesh.h?r=2223#64>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMesh.cpp?r=2223>+-}+{#fun btTriangleMesh_addIndex as btTriangleMesh_addIndex    `( BtTriangleMeshClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMesh.h?r=2223#58>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMesh.cpp?r=2223>+-}+{#fun btTriangleMesh_preallocateVertices as btTriangleMesh_preallocateVertices    `( BtTriangleMeshClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ numverts+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMesh.h?r=2223#62>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMesh.cpp?r=2223>+-}+{#fun btTriangleMesh_findOrAddVertex as btTriangleMesh_findOrAddVertex    `( BtTriangleMeshClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ vertex+,  `Bool'  -- ^ removeDuplicateVertices+ } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMesh.h?r=2223#62>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMesh.cpp?r=2223>+-}+{#fun btTriangleMesh_findOrAddVertex as btTriangleMesh_findOrAddVertex'    `( BtTriangleMeshClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ vertex+,  `Bool'  -- ^ removeDuplicateVertices+ } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMesh.h?r=2223#48>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMesh.cpp?r=2223>+-}+{#fun btTriangleMesh_getUse4componentVertices as btTriangleMesh_getUse4componentVertices    `( BtTriangleMeshClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMesh.h?r=2223#54>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMesh.cpp?r=2223>+-}+{#fun btTriangleMesh_addTriangle as btTriangleMesh_addTriangle    `( BtTriangleMeshClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ vertex0+, withVector3* `Vector3'  peekVector3* -- ^ vertex1+, withVector3* `Vector3'  peekVector3* -- ^ vertex2+,  `Bool'  -- ^ removeDuplicateVertices+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMesh.h?r=2223#54>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMesh.cpp?r=2223>+-}+{#fun btTriangleMesh_addTriangle as btTriangleMesh_addTriangle'    `( BtTriangleMeshClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ vertex0+, allocaVector3-  `Vector3'  peekVector3* -- ^ vertex1+, allocaVector3-  `Vector3'  peekVector3* -- ^ vertex2+,  `Bool'  -- ^ removeDuplicateVertices+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMesh.h?r=2223#39>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMesh.cpp?r=2223>+-}+{#fun btTriangleMesh_m_weldingThreshold_set    `( BtTriangleMeshClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMesh.h?r=2223#39>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMesh.cpp?r=2223>+-}+{#fun btTriangleMesh_m_weldingThreshold_get    `( BtTriangleMeshClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+-- * btTriangleMeshShape+{#fun btTriangleMeshShape_free    `( BtTriangleMeshShapeClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.h?r=2223#53>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp?r=2223>+-}+{#fun btTriangleMeshShape_calculateLocalInertia as btTriangleMeshShape_calculateLocalInertia    `( BtTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, withVector3* `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.h?r=2223#53>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp?r=2223>+-}+{#fun btTriangleMeshShape_calculateLocalInertia as btTriangleMeshShape_calculateLocalInertia'    `( BtTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, allocaVector3-  `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.h?r=2223#72>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp?r=2223>+-}+{#fun btTriangleMeshShape_getLocalAabbMax as btTriangleMeshShape_getLocalAabbMax    `( BtTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.h?r=2223#39>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp?r=2223>+-}+{#fun btTriangleMeshShape_localGetSupportingVertex as btTriangleMeshShape_localGetSupportingVertex    `( BtTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.h?r=2223#39>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp?r=2223>+-}+{#fun btTriangleMeshShape_localGetSupportingVertex as btTriangleMeshShape_localGetSupportingVertex'    `( BtTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.h?r=2223#80>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp?r=2223>+-}+{#fun btTriangleMeshShape_getName as btTriangleMeshShape_getName    `( BtTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `String'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.h?r=2223#56>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp?r=2223>+-}+{#fun btTriangleMeshShape_getLocalScaling as btTriangleMeshShape_getLocalScaling    `( BtTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.h?r=2223#47>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp?r=2223>+-}+{#fun btTriangleMeshShape_recalcLocalAabb as btTriangleMeshShape_recalcLocalAabb    `( BtTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.h?r=2223#55>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp?r=2223>+-}+{#fun btTriangleMeshShape_setLocalScaling as btTriangleMeshShape_setLocalScaling    `( BtTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.h?r=2223#55>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp?r=2223>+-}+{#fun btTriangleMeshShape_setLocalScaling as btTriangleMeshShape_setLocalScaling'    `( BtTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.h?r=2223#58>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp?r=2223>+-}+{#fun btTriangleMeshShape_getMeshInterface0 as btTriangleMeshShape_getMeshInterface    `( BtTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtStridingMeshInterface' mkBtStridingMeshInterface*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.h?r=2223#58>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp?r=2223>+-}+{#fun btTriangleMeshShape_getMeshInterface0 as btTriangleMeshShape_getMeshInterface0    `( BtTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtStridingMeshInterface' mkBtStridingMeshInterface*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.h?r=2223#63>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp?r=2223>+-}+{#fun btTriangleMeshShape_getMeshInterface1 as btTriangleMeshShape_getMeshInterface1    `( BtTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtStridingMeshInterface' mkBtStridingMeshInterface*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.h?r=2223#49>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp?r=2223>+-}+{#fun btTriangleMeshShape_getAabb as btTriangleMeshShape_getAabb    `( BtTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ t+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.h?r=2223#49>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp?r=2223>+-}+{#fun btTriangleMeshShape_getAabb as btTriangleMeshShape_getAabb'    `( BtTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ t+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.h?r=2223#51>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp?r=2223>+-}+{#fun btTriangleMeshShape_processAllTriangles as btTriangleMeshShape_processAllTriangles    `( BtTriangleMeshShapeClass bc , BtTriangleCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ callback+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.h?r=2223#51>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp?r=2223>+-}+{#fun btTriangleMeshShape_processAllTriangles as btTriangleMeshShape_processAllTriangles'    `( BtTriangleMeshShapeClass bc , BtTriangleCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ callback+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.h?r=2223#41>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp?r=2223>+-}+{#fun btTriangleMeshShape_localGetSupportingVertexWithoutMargin as btTriangleMeshShape_localGetSupportingVertexWithoutMargin    `( BtTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.h?r=2223#41>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp?r=2223>+-}+{#fun btTriangleMeshShape_localGetSupportingVertexWithoutMargin as btTriangleMeshShape_localGetSupportingVertexWithoutMargin'    `( BtTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.h?r=2223#68>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp?r=2223>+-}+{#fun btTriangleMeshShape_getLocalAabbMin as btTriangleMeshShape_getLocalAabbMin    `( BtTriangleMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+-- * btTriangleMeshShapeData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h?r=2223#115>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btTriangleMeshShapeData_new as btTriangleMeshShapeData    {  } -> `BtTriangleMeshShapeData' mkBtTriangleMeshShapeData* #}+{#fun btTriangleMeshShapeData_free    `( BtTriangleMeshShapeDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h?r=2223#125>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btTriangleMeshShapeData_m_collisionMargin_set    `( BtTriangleMeshShapeDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h?r=2223#125>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btTriangleMeshShapeData_m_collisionMargin_get    `( BtTriangleMeshShapeDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h?r=2223#121>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btTriangleMeshShapeData_m_quantizedDoubleBvh_set    `( BtTriangleMeshShapeDataClass bc , BtQuantizedBvhDoubleDataClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h?r=2223#120>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btTriangleMeshShapeData_m_quantizedFloatBvh_set    `( BtTriangleMeshShapeDataClass bc , BtQuantizedBvhFloatDataClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h?r=2223#123>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp?r=2223>+-}+{#fun btTriangleMeshShapeData_m_triangleInfoMap_set    `( BtTriangleMeshShapeDataClass bc , BtTriangleInfoMapDataClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+-- * btTriangleShape+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.h?r=2223#85>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.cpp?r=2223>+-}+{#fun btTriangleShape_new0 as btTriangleShape0    {  } -> `BtTriangleShape' mkBtTriangleShape* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.h?r=2223#90>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.cpp?r=2223>+-}+{#fun btTriangleShape_new1 as btTriangleShape1    {  withVector3* `Vector3' , withVector3* `Vector3' , withVector3* `Vector3'  } -> `BtTriangleShape' mkBtTriangleShape* #}+{#fun btTriangleShape_free    `( BtTriangleShapeClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.h?r=2223#35>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.cpp?r=2223>+-}+{#fun btTriangleShape_getVertexPtr0 as btTriangleShape_getVertexPtr    `( BtTriangleShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.h?r=2223#35>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.cpp?r=2223>+-}+{#fun btTriangleShape_getVertexPtr0 as btTriangleShape_getVertexPtr0    `( BtTriangleShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.h?r=2223#40>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.cpp?r=2223>+-}+{#fun btTriangleShape_getVertexPtr1 as btTriangleShape_getVertexPtr1    `( BtTriangleShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.h?r=2223#104>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.cpp?r=2223>+-}+{#fun btTriangleShape_getNumPlanes as btTriangleShape_getNumPlanes    `( BtTriangleShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.h?r=2223#171>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.cpp?r=2223>+-}+{#fun btTriangleShape_getPreferredPenetrationDirection as btTriangleShape_getPreferredPenetrationDirection    `( BtTriangleShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+, withVector3* `Vector3'  peekVector3* -- ^ penetrationVector+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.h?r=2223#171>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.cpp?r=2223>+-}+{#fun btTriangleShape_getPreferredPenetrationDirection as btTriangleShape_getPreferredPenetrationDirection'    `( BtTriangleShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+, allocaVector3-  `Vector3'  peekVector3* -- ^ penetrationVector+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.h?r=2223#49>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.cpp?r=2223>+-}+{#fun btTriangleShape_getNumEdges as btTriangleShape_getNumEdges    `( BtTriangleShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.h?r=2223#161>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.cpp?r=2223>+-}+{#fun btTriangleShape_getName as btTriangleShape_getName    `( BtTriangleShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `String'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.h?r=2223#30>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.cpp?r=2223>+-}+{#fun btTriangleShape_getNumVertices as btTriangleShape_getNumVertices    `( BtTriangleShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.h?r=2223#54>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.cpp?r=2223>+-}+{#fun btTriangleShape_getEdge as btTriangleShape_getEdge    `( BtTriangleShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ i+, withVector3* `Vector3'  peekVector3* -- ^ pa+, withVector3* `Vector3'  peekVector3* -- ^ pb+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.h?r=2223#54>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.cpp?r=2223>+-}+{#fun btTriangleShape_getEdge as btTriangleShape_getEdge'    `( BtTriangleShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ i+, allocaVector3-  `Vector3'  peekVector3* -- ^ pa+, allocaVector3-  `Vector3'  peekVector3* -- ^ pb+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.h?r=2223#129>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.cpp?r=2223>+-}+{#fun btTriangleShape_isInside as btTriangleShape_isInside    `( BtTriangleShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ pt+,  `Float'  -- ^ tolerance+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.h?r=2223#129>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.cpp?r=2223>+-}+{#fun btTriangleShape_isInside as btTriangleShape_isInside'    `( BtTriangleShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ pt+,  `Float'  -- ^ tolerance+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.h?r=2223#99>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.cpp?r=2223>+-}+{#fun btTriangleShape_getPlane as btTriangleShape_getPlane    `( BtTriangleShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ planeNormal+, withVector3* `Vector3'  peekVector3* -- ^ planeSupport+,  `Int'  -- ^ i+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.h?r=2223#99>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.cpp?r=2223>+-}+{#fun btTriangleShape_getPlane as btTriangleShape_getPlane'    `( BtTriangleShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ planeNormal+, allocaVector3-  `Vector3'  peekVector3* -- ^ planeSupport+,  `Int'  -- ^ i+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.h?r=2223#166>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.cpp?r=2223>+-}+{#fun btTriangleShape_getNumPreferredPenetrationDirections as btTriangleShape_getNumPreferredPenetrationDirections    `( BtTriangleShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.h?r=2223#61>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.cpp?r=2223>+-}+{#fun btTriangleShape_getAabb as btTriangleShape_getAabb    `( BtTriangleShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ t+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.h?r=2223#61>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.cpp?r=2223>+-}+{#fun btTriangleShape_getAabb as btTriangleShape_getAabb'    `( BtTriangleShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ t+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.h?r=2223#44>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.cpp?r=2223>+-}+{#fun btTriangleShape_getVertex as btTriangleShape_getVertex    `( BtTriangleShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+, withVector3* `Vector3'  peekVector3* -- ^ vert+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.h?r=2223#44>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.cpp?r=2223>+-}+{#fun btTriangleShape_getVertex as btTriangleShape_getVertex'    `( BtTriangleShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+, allocaVector3-  `Vector3'  peekVector3* -- ^ vert+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.h?r=2223#109>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.cpp?r=2223>+-}+{#fun btTriangleShape_calcNormal as btTriangleShape_calcNormal    `( BtTriangleShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ normal+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.h?r=2223#109>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.cpp?r=2223>+-}+{#fun btTriangleShape_calcNormal as btTriangleShape_calcNormal'    `( BtTriangleShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ normal+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.h?r=2223#122>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.cpp?r=2223>+-}+{#fun btTriangleShape_calculateLocalInertia as btTriangleShape_calculateLocalInertia    `( BtTriangleShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, withVector3* `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.h?r=2223#122>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.cpp?r=2223>+-}+{#fun btTriangleShape_calculateLocalInertia as btTriangleShape_calculateLocalInertia'    `( BtTriangleShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, allocaVector3-  `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.h?r=2223#115>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.cpp?r=2223>+-}+{#fun btTriangleShape_getPlaneEquation as btTriangleShape_getPlaneEquation    `( BtTriangleShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ i+, withVector3* `Vector3'  peekVector3* -- ^ planeNormal+, withVector3* `Vector3'  peekVector3* -- ^ planeSupport+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.h?r=2223#115>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.cpp?r=2223>+-}+{#fun btTriangleShape_getPlaneEquation as btTriangleShape_getPlaneEquation'    `( BtTriangleShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ i+, allocaVector3-  `Vector3'  peekVector3* -- ^ planeNormal+, allocaVector3-  `Vector3'  peekVector3* -- ^ planeSupport+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.h?r=2223#67>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.cpp?r=2223>+-}+{#fun btTriangleShape_localGetSupportingVertexWithoutMargin as btTriangleShape_localGetSupportingVertexWithoutMargin    `( BtTriangleShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ dir+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.h?r=2223#67>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btTriangleShape.cpp?r=2223>+-}+{#fun btTriangleShape_localGetSupportingVertexWithoutMargin as btTriangleShape_localGetSupportingVertexWithoutMargin'    `( BtTriangleShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ dir+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+-- * btUniformScalingShape+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.h?r=2223#32>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.cpp?r=2223>+-}+{#fun btUniformScalingShape_new as btUniformScalingShape    `( BtConvexShapeClass p0 )' =>     {  withBt* `p0' ,  `Float'  } -> `BtUniformScalingShape' mkBtUniformScalingShape* #}+{#fun btUniformScalingShape_free    `( BtUniformScalingShapeClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.h?r=2223#42>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.cpp?r=2223>+-}+{#fun btUniformScalingShape_calculateLocalInertia as btUniformScalingShape_calculateLocalInertia    `( BtUniformScalingShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, withVector3* `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.h?r=2223#42>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.cpp?r=2223>+-}+{#fun btUniformScalingShape_calculateLocalInertia as btUniformScalingShape_calculateLocalInertia'    `( BtUniformScalingShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, allocaVector3-  `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.h?r=2223#44>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.cpp?r=2223>+-}+{#fun btUniformScalingShape_getUniformScalingFactor as btUniformScalingShape_getUniformScalingFactor    `( BtUniformScalingShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.h?r=2223#38>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.cpp?r=2223>+-}+{#fun btUniformScalingShape_localGetSupportingVertex as btUniformScalingShape_localGetSupportingVertex    `( BtUniformScalingShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.h?r=2223#38>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.cpp?r=2223>+-}+{#fun btUniformScalingShape_localGetSupportingVertex as btUniformScalingShape_localGetSupportingVertex'    `( BtUniformScalingShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.h?r=2223#59>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.cpp?r=2223>+-}+{#fun btUniformScalingShape_getName as btUniformScalingShape_getName    `( BtUniformScalingShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `String'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.h?r=2223#72>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.cpp?r=2223>+-}+{#fun btUniformScalingShape_getAabbSlow as btUniformScalingShape_getAabbSlow    `( BtUniformScalingShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ t+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.h?r=2223#72>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.cpp?r=2223>+-}+{#fun btUniformScalingShape_getAabbSlow as btUniformScalingShape_getAabbSlow'    `( BtUniformScalingShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ t+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.h?r=2223#75>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.cpp?r=2223>+-}+{#fun btUniformScalingShape_getLocalScaling as btUniformScalingShape_getLocalScaling    `( BtUniformScalingShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.h?r=2223#49>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.cpp?r=2223>+-}+{#fun btUniformScalingShape_getChildShape0 as btUniformScalingShape_getChildShape    `( BtUniformScalingShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtConvexShape' mkBtConvexShape*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.h?r=2223#49>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.cpp?r=2223>+-}+{#fun btUniformScalingShape_getChildShape0 as btUniformScalingShape_getChildShape0    `( BtUniformScalingShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtConvexShape' mkBtConvexShape*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.h?r=2223#54>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.cpp?r=2223>+-}+{#fun btUniformScalingShape_getChildShape1 as btUniformScalingShape_getChildShape1    `( BtUniformScalingShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtConvexShape' mkBtConvexShape*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.h?r=2223#82>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.cpp?r=2223>+-}+{#fun btUniformScalingShape_getPreferredPenetrationDirection as btUniformScalingShape_getPreferredPenetrationDirection    `( BtUniformScalingShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+, withVector3* `Vector3'  peekVector3* -- ^ penetrationVector+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.h?r=2223#82>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.cpp?r=2223>+-}+{#fun btUniformScalingShape_getPreferredPenetrationDirection as btUniformScalingShape_getPreferredPenetrationDirection'    `( BtUniformScalingShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+, allocaVector3-  `Vector3'  peekVector3* -- ^ penetrationVector+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.h?r=2223#74>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.cpp?r=2223>+-}+{#fun btUniformScalingShape_setLocalScaling as btUniformScalingShape_setLocalScaling    `( BtUniformScalingShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.h?r=2223#74>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.cpp?r=2223>+-}+{#fun btUniformScalingShape_setLocalScaling as btUniformScalingShape_setLocalScaling'    `( BtUniformScalingShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.h?r=2223#80>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.cpp?r=2223>+-}+{#fun btUniformScalingShape_getNumPreferredPenetrationDirections as btUniformScalingShape_getNumPreferredPenetrationDirections    `( BtUniformScalingShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.h?r=2223#70>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.cpp?r=2223>+-}+{#fun btUniformScalingShape_getAabb as btUniformScalingShape_getAabb    `( BtUniformScalingShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ t+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.h?r=2223#70>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.cpp?r=2223>+-}+{#fun btUniformScalingShape_getAabb as btUniformScalingShape_getAabb'    `( BtUniformScalingShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ t+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.h?r=2223#77>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.cpp?r=2223>+-}+{#fun btUniformScalingShape_setMargin as btUniformScalingShape_setMargin    `( BtUniformScalingShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ margin+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.h?r=2223#78>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.cpp?r=2223>+-}+{#fun btUniformScalingShape_getMargin as btUniformScalingShape_getMargin    `( BtUniformScalingShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.h?r=2223#36>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.cpp?r=2223>+-}+{#fun btUniformScalingShape_localGetSupportingVertexWithoutMargin as btUniformScalingShape_localGetSupportingVertexWithoutMargin    `( BtUniformScalingShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.h?r=2223#36>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/CollisionShapes/btUniformScalingShape.cpp?r=2223>+-}+{#fun btUniformScalingShape_localGetSupportingVertexWithoutMargin as btUniformScalingShape_localGetSupportingVertexWithoutMargin'    `( BtUniformScalingShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ vec+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}
+ Physics/Bullet/Raw/BulletCollision/Gimpact.chs view
@@ -0,0 +1,2156 @@+{-#LANGUAGE ForeignFunctionInterface#-}+#include "Bullet.h"+module Physics.Bullet.Raw.BulletCollision.Gimpact (+module Physics.Bullet.Raw.BulletCollision.Gimpact+) where+import Control.Monad+import Foreign.Marshal.Alloc+import Foreign.ForeignPtr+import Foreign.Ptr+import Physics.Bullet.Raw.C2HS+import Physics.Bullet.Raw.Types+import Physics.Bullet.Raw.Class+-- * BT_BOX_BOX_TRANSFORM_CACHE+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#187>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun bT_BOX_BOX_TRANSFORM_CACHE_new as bT_BOX_BOX_TRANSFORM_CACHE    {  } -> `BT_BOX_BOX_TRANSFORM_CACHE' mkBT_BOX_BOX_TRANSFORM_CACHE* #}+{#fun bT_BOX_BOX_TRANSFORM_CACHE_free    `( BT_BOX_BOX_TRANSFORM_CACHEClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#208>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun bT_BOX_BOX_TRANSFORM_CACHE_calc_from_full_invert as bT_BOX_BOX_TRANSFORM_CACHE_calc_from_full_invert    `( BT_BOX_BOX_TRANSFORM_CACHEClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ trans0+, withTransform* `Transform'  peekTransform* -- ^ trans1+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#208>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun bT_BOX_BOX_TRANSFORM_CACHE_calc_from_full_invert as bT_BOX_BOX_TRANSFORM_CACHE_calc_from_full_invert'    `( BT_BOX_BOX_TRANSFORM_CACHEClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ trans0+, allocaTransform-  `Transform'  peekTransform* -- ^ trans1+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#194>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun bT_BOX_BOX_TRANSFORM_CACHE_calc_from_homogenic as bT_BOX_BOX_TRANSFORM_CACHE_calc_from_homogenic    `( BT_BOX_BOX_TRANSFORM_CACHEClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ trans0+, withTransform* `Transform'  peekTransform* -- ^ trans1+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#194>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun bT_BOX_BOX_TRANSFORM_CACHE_calc_from_homogenic as bT_BOX_BOX_TRANSFORM_CACHE_calc_from_homogenic'    `( BT_BOX_BOX_TRANSFORM_CACHEClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ trans0+, allocaTransform-  `Transform'  peekTransform* -- ^ trans1+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#219>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun bT_BOX_BOX_TRANSFORM_CACHE_transform as bT_BOX_BOX_TRANSFORM_CACHE_transform    `( BT_BOX_BOX_TRANSFORM_CACHEClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ point+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#219>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun bT_BOX_BOX_TRANSFORM_CACHE_transform as bT_BOX_BOX_TRANSFORM_CACHE_transform'    `( BT_BOX_BOX_TRANSFORM_CACHEClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ point+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#168>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun bT_BOX_BOX_TRANSFORM_CACHE_calc_absolute_matrix as bT_BOX_BOX_TRANSFORM_CACHE_calc_absolute_matrix    `( BT_BOX_BOX_TRANSFORM_CACHEClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#164>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun bT_BOX_BOX_TRANSFORM_CACHE_m_T1to0_set    `( BT_BOX_BOX_TRANSFORM_CACHEClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#164>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun bT_BOX_BOX_TRANSFORM_CACHE_m_T1to0_get    `( BT_BOX_BOX_TRANSFORM_CACHEClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#165>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun bT_BOX_BOX_TRANSFORM_CACHE_m_R1to0_set    `( BT_BOX_BOX_TRANSFORM_CACHEClass bc )' =>     { withBt* `bc' , withMatrix3x3* `Matrix3x3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#165>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun bT_BOX_BOX_TRANSFORM_CACHE_m_R1to0_get    `( BT_BOX_BOX_TRANSFORM_CACHEClass bc )' =>     { withBt* `bc' , allocaMatrix3x3-  `Matrix3x3'  peekMatrix3x3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#166>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun bT_BOX_BOX_TRANSFORM_CACHE_m_AR_set    `( BT_BOX_BOX_TRANSFORM_CACHEClass bc )' =>     { withBt* `bc' , withMatrix3x3* `Matrix3x3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#166>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun bT_BOX_BOX_TRANSFORM_CACHE_m_AR_get    `( BT_BOX_BOX_TRANSFORM_CACHEClass bc )' =>     { withBt* `bc' , allocaMatrix3x3-  `Matrix3x3'  peekMatrix3x3* } -> `()' #}+-- * BT_QUANTIZED_BVH_NODE+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#44>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun bT_QUANTIZED_BVH_NODE_new as bT_QUANTIZED_BVH_NODE    {  } -> `BT_QUANTIZED_BVH_NODE' mkBT_QUANTIZED_BVH_NODE* #}+{#fun bT_QUANTIZED_BVH_NODE_free    `( BT_QUANTIZED_BVH_NODEClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#55>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun bT_QUANTIZED_BVH_NODE_getEscapeIndex as bT_QUANTIZED_BVH_NODE_getEscapeIndex    `( BT_QUANTIZED_BVH_NODEClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#66>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun bT_QUANTIZED_BVH_NODE_getDataIndex as bT_QUANTIZED_BVH_NODE_getDataIndex    `( BT_QUANTIZED_BVH_NODEClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#61>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun bT_QUANTIZED_BVH_NODE_setEscapeIndex as bT_QUANTIZED_BVH_NODE_setEscapeIndex    `( BT_QUANTIZED_BVH_NODEClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#73>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun bT_QUANTIZED_BVH_NODE_setDataIndex as bT_QUANTIZED_BVH_NODE_setDataIndex    `( BT_QUANTIZED_BVH_NODEClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#49>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun bT_QUANTIZED_BVH_NODE_isLeafNode as bT_QUANTIZED_BVH_NODE_isLeafNode    `( BT_QUANTIZED_BVH_NODEClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#42>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun bT_QUANTIZED_BVH_NODE_m_escapeIndexOrDataIndex_set    `( BT_QUANTIZED_BVH_NODEClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#42>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun bT_QUANTIZED_BVH_NODE_m_escapeIndexOrDataIndex_get    `( BT_QUANTIZED_BVH_NODEClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * CompoundPrimitiveManager+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#317>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactCompoundShape_CompoundPrimitiveManager_new0 as btGImpactCompoundShape_CompoundPrimitiveManager0    `( BtGImpactCompoundShapeClass p0 )' =>     {  withBt* `p0'  } -> `BtGImpactCompoundShape_CompoundPrimitiveManager' mkBtGImpactCompoundShape_CompoundPrimitiveManager* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#322>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactCompoundShape_CompoundPrimitiveManager_new1 as btGImpactCompoundShape_CompoundPrimitiveManager1    {  } -> `BtGImpactCompoundShape_CompoundPrimitiveManager' mkBtGImpactCompoundShape_CompoundPrimitiveManager* #}+{#fun btGImpactCompoundShape_CompoundPrimitiveManager_free    `( BtGImpactCompoundShape_CompoundPrimitiveManagerClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#332>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactCompoundShape_CompoundPrimitiveManager_get_primitive_count as btGImpactCompoundShape_CompoundPrimitiveManager_get_primitive_count    `( BtGImpactCompoundShape_CompoundPrimitiveManagerClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#352>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactCompoundShape_CompoundPrimitiveManager_get_primitive_triangle as btGImpactCompoundShape_CompoundPrimitiveManager_get_primitive_triangle    `( BtGImpactCompoundShape_CompoundPrimitiveManagerClass bc , BtPrimitiveTriangleClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ prim_index+, withBt* `p1'  -- ^ triangle+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#337>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactCompoundShape_CompoundPrimitiveManager_get_primitive_box as btGImpactCompoundShape_CompoundPrimitiveManager_get_primitive_box    `( BtGImpactCompoundShape_CompoundPrimitiveManagerClass bc , BtAABBClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ prim_index+, withBt* `p1'  -- ^ primbox+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#327>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactCompoundShape_CompoundPrimitiveManager_is_trimesh as btGImpactCompoundShape_CompoundPrimitiveManager_is_trimesh    `( BtGImpactCompoundShape_CompoundPrimitiveManagerClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#308>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactCompoundShape_CompoundPrimitiveManager_m_compoundShape_set    `( BtGImpactCompoundShape_CompoundPrimitiveManagerClass bc , BtGImpactCompoundShapeClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+-- * CreateFunc+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h?r=2223#215>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp?r=2223>+-}+{#fun btGImpactCollisionAlgorithm_CreateFunc_new as btGImpactCollisionAlgorithm_CreateFunc    {  } -> `BtGImpactCollisionAlgorithm_CreateFunc' mkBtGImpactCollisionAlgorithm_CreateFunc* #}+{#fun btGImpactCollisionAlgorithm_CreateFunc_free    `( BtGImpactCollisionAlgorithm_CreateFuncClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h?r=2223#216>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp?r=2223>+-}+{#fun btGImpactCollisionAlgorithm_CreateFunc_CreateCollisionAlgorithm as btGImpactCollisionAlgorithm_CreateFunc_CreateCollisionAlgorithm    `( BtGImpactCollisionAlgorithm_CreateFuncClass bc , BtCollisionAlgorithmConstructionInfoClass p0 , BtCollisionObjectClass p1 , BtCollisionObjectClass p2 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ ci+, withBt* `p1'  -- ^ body0+, withBt* `p2'  -- ^ body1+ } ->  `BtCollisionAlgorithm' mkBtCollisionAlgorithm*  #}+-- * GIM_BVH_DATA+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#80>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun gIM_BVH_DATA_new as gIM_BVH_DATA    {  } -> `GIM_BVH_DATA' mkGIM_BVH_DATA* #}+{#fun gIM_BVH_DATA_free    `( GIM_BVH_DATAClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#82>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun gIM_BVH_DATA_m_data_set    `( GIM_BVH_DATAClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#82>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun gIM_BVH_DATA_m_data_get    `( GIM_BVH_DATAClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * GIM_BVH_DATA_ARRAY+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#131>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun gIM_BVH_DATA_ARRAY_new as gIM_BVH_DATA_ARRAY    {  } -> `GIM_BVH_DATA_ARRAY' mkGIM_BVH_DATA_ARRAY* #}+{#fun gIM_BVH_DATA_ARRAY_free    `( GIM_BVH_DATA_ARRAYClass bc )' =>     { withBt* `bc'  } -> `()' #}+-- * GIM_BVH_TREE_NODE+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#93>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun gIM_BVH_TREE_NODE_new as gIM_BVH_TREE_NODE    {  } -> `GIM_BVH_TREE_NODE' mkGIM_BVH_TREE_NODE* #}+{#fun gIM_BVH_TREE_NODE_free    `( GIM_BVH_TREE_NODEClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#122>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun gIM_BVH_TREE_NODE_setDataIndex as gIM_BVH_TREE_NODE_setDataIndex    `( GIM_BVH_TREE_NODEClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#104>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun gIM_BVH_TREE_NODE_getEscapeIndex as gIM_BVH_TREE_NODE_getEscapeIndex    `( GIM_BVH_TREE_NODEClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#115>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun gIM_BVH_TREE_NODE_getDataIndex as gIM_BVH_TREE_NODE_getDataIndex    `( GIM_BVH_TREE_NODEClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#110>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun gIM_BVH_TREE_NODE_setEscapeIndex as gIM_BVH_TREE_NODE_setEscapeIndex    `( GIM_BVH_TREE_NODEClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#98>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun gIM_BVH_TREE_NODE_isLeafNode as gIM_BVH_TREE_NODE_isLeafNode    `( GIM_BVH_TREE_NODEClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+-- * GIM_BVH_TREE_NODE_ARRAY+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#136>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun gIM_BVH_TREE_NODE_ARRAY_new as gIM_BVH_TREE_NODE_ARRAY    {  } -> `GIM_BVH_TREE_NODE_ARRAY' mkGIM_BVH_TREE_NODE_ARRAY* #}+{#fun gIM_BVH_TREE_NODE_ARRAY_free    `( GIM_BVH_TREE_NODE_ARRAYClass bc )' =>     { withBt* `bc'  } -> `()' #}+-- * GIM_PAIR+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#42>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun gIM_PAIR_new0 as gIM_PAIR0    {  } -> `GIM_PAIR' mkGIM_PAIR* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#51>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun gIM_PAIR_new1 as gIM_PAIR1    {   `Int' ,  `Int'  } -> `GIM_PAIR' mkGIM_PAIR* #}+{#fun gIM_PAIR_free    `( GIM_PAIRClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#40>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun gIM_PAIR_m_index1_set    `( GIM_PAIRClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#40>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun gIM_PAIR_m_index1_get    `( GIM_PAIRClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#41>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun gIM_PAIR_m_index2_set    `( GIM_PAIRClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#41>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun gIM_PAIR_m_index2_get    `( GIM_PAIRClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * GIM_QUANTIZED_BVH_NODE_ARRAY+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#98>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun gIM_QUANTIZED_BVH_NODE_ARRAY_new as gIM_QUANTIZED_BVH_NODE_ARRAY    {  } -> `GIM_QUANTIZED_BVH_NODE_ARRAY' mkGIM_QUANTIZED_BVH_NODE_ARRAY* #}+{#fun gIM_QUANTIZED_BVH_NODE_ARRAY_free    `( GIM_QUANTIZED_BVH_NODE_ARRAYClass bc )' =>     { withBt* `bc'  } -> `()' #}+-- * GIM_TRIANGLE_CONTACT+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.h?r=2223#57>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp?r=2223>+-}+{#fun gIM_TRIANGLE_CONTACT_new as gIM_TRIANGLE_CONTACT    {  } -> `GIM_TRIANGLE_CONTACT' mkGIM_TRIANGLE_CONTACT* #}+{#fun gIM_TRIANGLE_CONTACT_free    `( GIM_TRIANGLE_CONTACTClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.h?r=2223#45>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp?r=2223>+-}+{#fun gIM_TRIANGLE_CONTACT_copy_from as gIM_TRIANGLE_CONTACT_copy_from    `( GIM_TRIANGLE_CONTACTClass bc , GIM_TRIANGLE_CONTACTClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ other+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.h?r=2223#40>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp?r=2223>+-}+{#fun gIM_TRIANGLE_CONTACT_m_penetration_depth_set    `( GIM_TRIANGLE_CONTACTClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.h?r=2223#40>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp?r=2223>+-}+{#fun gIM_TRIANGLE_CONTACT_m_penetration_depth_get    `( GIM_TRIANGLE_CONTACTClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.h?r=2223#41>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp?r=2223>+-}+{#fun gIM_TRIANGLE_CONTACT_m_point_count_set    `( GIM_TRIANGLE_CONTACTClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.h?r=2223#41>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp?r=2223>+-}+{#fun gIM_TRIANGLE_CONTACT_m_point_count_get    `( GIM_TRIANGLE_CONTACTClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.h?r=2223#42>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp?r=2223>+-}+{#fun gIM_TRIANGLE_CONTACT_m_separating_normal_set    `( GIM_TRIANGLE_CONTACTClass bc )' =>     { withBt* `bc' , withVector4* `Vector4'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.h?r=2223#42>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp?r=2223>+-}+{#fun gIM_TRIANGLE_CONTACT_m_separating_normal_get    `( GIM_TRIANGLE_CONTACTClass bc )' =>     { withBt* `bc' , allocaVector4-  `Vector4'  peekVector4* } -> `()' #}+-- * TrimeshPrimitiveManager+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#545>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_TrimeshPrimitiveManager_new0 as btGImpactMeshShapePart_TrimeshPrimitiveManager0    {  } -> `BtGImpactMeshShapePart_TrimeshPrimitiveManager' mkBtGImpactMeshShapePart_TrimeshPrimitiveManager* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#578>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_TrimeshPrimitiveManager_new1 as btGImpactMeshShapePart_TrimeshPrimitiveManager1    `( BtStridingMeshInterfaceClass p0 )' =>     {  withBt* `p0' ,  `Int'  } -> `BtGImpactMeshShapePart_TrimeshPrimitiveManager' mkBtGImpactMeshShapePart_TrimeshPrimitiveManager* #}+{#fun btGImpactMeshShapePart_TrimeshPrimitiveManager_free    `( BtGImpactMeshShapePart_TrimeshPrimitiveManagerClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#633>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_TrimeshPrimitiveManager_get_vertex_count as btGImpactMeshShapePart_TrimeshPrimitiveManager_get_vertex_count    `( BtGImpactMeshShapePart_TrimeshPrimitiveManagerClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#656>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_TrimeshPrimitiveManager_get_vertex as btGImpactMeshShapePart_TrimeshPrimitiveManager_get_vertex    `( BtGImpactMeshShapePart_TrimeshPrimitiveManagerClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ vertex_index+, withVector3* `Vector3'  peekVector3* -- ^ vertex+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#656>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_TrimeshPrimitiveManager_get_vertex as btGImpactMeshShapePart_TrimeshPrimitiveManager_get_vertex'    `( BtGImpactMeshShapePart_TrimeshPrimitiveManagerClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ vertex_index+, allocaVector3-  `Vector3'  peekVector3* -- ^ vertex+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#623>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_TrimeshPrimitiveManager_is_trimesh as btGImpactMeshShapePart_TrimeshPrimitiveManager_is_trimesh    `( BtGImpactMeshShapePart_TrimeshPrimitiveManagerClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#596>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_TrimeshPrimitiveManager_lock as btGImpactMeshShapePart_TrimeshPrimitiveManager_lock    `( BtGImpactMeshShapePart_TrimeshPrimitiveManagerClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#674>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_TrimeshPrimitiveManager_get_primitive_box as btGImpactMeshShapePart_TrimeshPrimitiveManager_get_primitive_box    `( BtGImpactMeshShapePart_TrimeshPrimitiveManagerClass bc , BtAABBClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ prim_index+, withBt* `p1'  -- ^ primbox+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#683>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_TrimeshPrimitiveManager_get_primitive_triangle as btGImpactMeshShapePart_TrimeshPrimitiveManager_get_primitive_triangle    `( BtGImpactMeshShapePart_TrimeshPrimitiveManagerClass bc , BtPrimitiveTriangleClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ prim_index+, withBt* `p1'  -- ^ triangle+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#610>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_TrimeshPrimitiveManager_unlock as btGImpactMeshShapePart_TrimeshPrimitiveManager_unlock    `( BtGImpactMeshShapePart_TrimeshPrimitiveManagerClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#693>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_TrimeshPrimitiveManager_get_bullet_triangle as btGImpactMeshShapePart_TrimeshPrimitiveManager_get_bullet_triangle    `( BtGImpactMeshShapePart_TrimeshPrimitiveManagerClass bc , BtTriangleShapeExClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ prim_index+, withBt* `p1'  -- ^ triangle+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#628>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_TrimeshPrimitiveManager_get_primitive_count as btGImpactMeshShapePart_TrimeshPrimitiveManager_get_primitive_count    `( BtGImpactMeshShapePart_TrimeshPrimitiveManagerClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#531>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_TrimeshPrimitiveManager_m_margin_set    `( BtGImpactMeshShapePart_TrimeshPrimitiveManagerClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#531>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_TrimeshPrimitiveManager_m_margin_get    `( BtGImpactMeshShapePart_TrimeshPrimitiveManagerClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#532>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_TrimeshPrimitiveManager_m_meshInterface_set    `( BtGImpactMeshShapePart_TrimeshPrimitiveManagerClass bc , BtStridingMeshInterfaceClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#533>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_TrimeshPrimitiveManager_m_scale_set    `( BtGImpactMeshShapePart_TrimeshPrimitiveManagerClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#533>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_TrimeshPrimitiveManager_m_scale_get    `( BtGImpactMeshShapePart_TrimeshPrimitiveManagerClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#534>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_TrimeshPrimitiveManager_m_part_set    `( BtGImpactMeshShapePart_TrimeshPrimitiveManagerClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#534>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_TrimeshPrimitiveManager_m_part_get    `( BtGImpactMeshShapePart_TrimeshPrimitiveManagerClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#535>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_TrimeshPrimitiveManager_m_lock_count_set    `( BtGImpactMeshShapePart_TrimeshPrimitiveManagerClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#535>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_TrimeshPrimitiveManager_m_lock_count_get    `( BtGImpactMeshShapePart_TrimeshPrimitiveManagerClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#537>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_TrimeshPrimitiveManager_numverts_set    `( BtGImpactMeshShapePart_TrimeshPrimitiveManagerClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#537>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_TrimeshPrimitiveManager_numverts_get    `( BtGImpactMeshShapePart_TrimeshPrimitiveManagerClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#539>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_TrimeshPrimitiveManager_stride_set    `( BtGImpactMeshShapePart_TrimeshPrimitiveManagerClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#539>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_TrimeshPrimitiveManager_stride_get    `( BtGImpactMeshShapePart_TrimeshPrimitiveManagerClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#541>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_TrimeshPrimitiveManager_indexstride_set    `( BtGImpactMeshShapePart_TrimeshPrimitiveManagerClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#541>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_TrimeshPrimitiveManager_indexstride_get    `( BtGImpactMeshShapePart_TrimeshPrimitiveManagerClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#542>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_TrimeshPrimitiveManager_numfaces_set    `( BtGImpactMeshShapePart_TrimeshPrimitiveManagerClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#542>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_TrimeshPrimitiveManager_numfaces_get    `( BtGImpactMeshShapePart_TrimeshPrimitiveManagerClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btAABB+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#237>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun btAABB_new0 as btAABB0    {  } -> `BtAABB' mkBtAABB* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#243>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun btAABB_new1 as btAABB1    {  withVector3* `Vector3' , withVector3* `Vector3' , withVector3* `Vector3'  } -> `BtAABB' mkBtAABB* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#257>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun btAABB_new2 as btAABB2    {  withVector3* `Vector3' , withVector3* `Vector3' , withVector3* `Vector3' ,  `Float'  } -> `BtAABB' mkBtAABB* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#280>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun btAABB_new3 as btAABB3    `( BtAABBClass p0 )' =>     {  withBt* `p0' ,  `Float'  } -> `BtAABB' mkBtAABB* #}+{#fun btAABB_free    `( BtAABBClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#507>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun btAABB_overlapping_trans_conservative as btAABB_overlapping_trans_conservative    `( BtAABBClass bc , BtAABBClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ box+, withTransform* `Transform'  peekTransform* -- ^ trans1_to_0+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#507>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun btAABB_overlapping_trans_conservative as btAABB_overlapping_trans_conservative'    `( BtAABBClass bc , BtAABBClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ box+, allocaTransform-  `Transform'  peekTransform* -- ^ trans1_to_0+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#360>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun btAABB_appy_transform as btAABB_appy_transform    `( BtAABBClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ trans+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#360>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun btAABB_appy_transform as btAABB_appy_transform'    `( BtAABBClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ trans+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#425>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun btAABB_find_intersection as btAABB_find_intersection    `( BtAABBClass bc , BtAABBClass p0 , BtAABBClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ other+, withBt* `p1'  -- ^ intersection+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#456>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun btAABB_collide_ray as btAABB_collide_ray    `( BtAABBClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ vorigin+, withVector3* `Vector3'  peekVector3* -- ^ vdir+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#456>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun btAABB_collide_ray as btAABB_collide_ray'    `( BtAABBClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ vorigin+, allocaVector3-  `Vector3'  peekVector3* -- ^ vdir+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#524>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun btAABB_overlapping_trans_cache as btAABB_overlapping_trans_cache    `( BtAABBClass bc , BtAABBClass p0 , BT_BOX_BOX_TRANSFORM_CACHEClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ box+, withBt* `p1'  -- ^ transcache+,  `Bool'  -- ^ fulltest+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#418>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun btAABB_get_center_extend as btAABB_get_center_extend    `( BtAABBClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ center+, withVector3* `Vector3'  peekVector3* -- ^ extend+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#418>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun btAABB_get_center_extend as btAABB_get_center_extend'    `( BtAABBClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ center+, allocaVector3-  `Vector3'  peekVector3* -- ^ extend+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#291>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun btAABB_invalidate as btAABB_invalidate    `( BtAABBClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#437>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun btAABB_has_collision as btAABB_has_collision    `( BtAABBClass bc , BtAABBClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ other+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#377>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun btAABB_appy_transform_trans_cache as btAABB_appy_transform_trans_cache    `( BtAABBClass bc , BT_BOX_BOX_TRANSFORM_CACHEClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ trans+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#341>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun btAABB_calc_from_triangle_margin as btAABB_calc_from_triangle_margin    `( BtAABBClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ V1+, withVector3* `Vector3'  peekVector3* -- ^ V2+, withVector3* `Vector3'  peekVector3* -- ^ V3+,  `Float'  -- ^ margin+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#341>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun btAABB_calc_from_triangle_margin as btAABB_calc_from_triangle_margin'    `( BtAABBClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ V1+, allocaVector3-  `Vector3'  peekVector3* -- ^ V2+, allocaVector3-  `Vector3'  peekVector3* -- ^ V3+,  `Float'  -- ^ margin+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#301>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun btAABB_increment_margin as btAABB_increment_margin    `( BtAABBClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ margin+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#393>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun btAABB_merge as btAABB_merge    `( BtAABBClass bc , BtAABBClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ box+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#578>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun btAABB_collide_plane as btAABB_collide_plane    `( BtAABBClass bc )' =>     { withBt* `bc'  -- ^ +, withVector4* `Vector4'  peekVector4* -- ^ plane+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#578>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun btAABB_collide_plane as btAABB_collide_plane'    `( BtAABBClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector4-  `Vector4'  peekVector4* -- ^ plane+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#515>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun btAABB_overlapping_trans_conservative2 as btAABB_overlapping_trans_conservative2    `( BtAABBClass bc , BtAABBClass p0 , BT_BOX_BOX_TRANSFORM_CACHEClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ box+, withBt* `p1'  -- ^ trans1_to_0+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#311>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun btAABB_copy_with_margin as btAABB_copy_with_margin    `( BtAABBClass bc , BtAABBClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ other+,  `Float'  -- ^ margin+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#589>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun btAABB_collide_triangle_exact as btAABB_collide_triangle_exact    `( BtAABBClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ p1+, withVector3* `Vector3'  peekVector3* -- ^ p2+, withVector3* `Vector3'  peekVector3* -- ^ p3+, withVector4* `Vector4'  peekVector4* -- ^ triangle_plane+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#589>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun btAABB_collide_triangle_exact as btAABB_collide_triangle_exact'    `( BtAABBClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ p1+, allocaVector3-  `Vector3'  peekVector3* -- ^ p2+, allocaVector3-  `Vector3'  peekVector3* -- ^ p3+, allocaVector4-  `Vector4'  peekVector4* -- ^ triangle_plane+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#235>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun btAABB_m_max_set    `( BtAABBClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#235>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun btAABB_m_max_get    `( BtAABBClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#234>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun btAABB_m_min_set    `( BtAABBClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.h?r=2223#234>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btBoxCollision.cpp?r=2223>+-}+{#fun btAABB_m_min_get    `( BtAABBClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+-- * btBvhTree+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#157>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btBvhTree_new as btBvhTree    {  } -> `BtBvhTree' mkBtBvhTree* #}+{#fun btBvhTree_free    `( BtBvhTreeClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#173>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btBvhTree_getNodeCount as btBvhTree_getNodeCount    `( BtBvhTreeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#164>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btBvhTree_build_tree as btBvhTree_build_tree    `( BtBvhTreeClass bc , GIM_BVH_DATA_ARRAYClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ primitive_boxes+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#194>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btBvhTree_setNodeBound as btBvhTree_setNodeBound    `( BtBvhTreeClass bc , BtAABBClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ nodeindex+, withBt* `p1'  -- ^ bound+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#199>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btBvhTree_getLeftNode as btBvhTree_getLeftNode    `( BtBvhTreeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ nodeindex+ } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#204>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btBvhTree_getRightNode as btBvhTree_getRightNode    `( BtBvhTreeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ nodeindex+ } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#166>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btBvhTree_clearNodes as btBvhTree_clearNodes    `( BtBvhTreeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#210>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btBvhTree_getEscapeNodeIndex as btBvhTree_getEscapeNodeIndex    `( BtBvhTreeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ nodeindex+ } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#179>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btBvhTree_isLeafNode as btBvhTree_isLeafNode    `( BtBvhTreeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ nodeindex+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#215>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btBvhTree_get_node_pointer as btBvhTree_get_node_pointer    `( BtBvhTreeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `GIM_BVH_TREE_NODE' mkGIM_BVH_TREE_NODE*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#184>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btBvhTree_getNodeData as btBvhTree_getNodeData    `( BtBvhTreeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ nodeindex+ } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#189>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btBvhTree_getNodeBound as btBvhTree_getNodeBound    `( BtBvhTreeClass bc , BtAABBClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ nodeindex+, withBt* `p1'  -- ^ bound+ } ->  `()'  #}+-- * btGImpactBvh+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#262>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btGImpactBvh_new0 as btGImpactBvh0    {  } -> `BtGImpactBvh' mkBtGImpactBvh* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#268>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btGImpactBvh_new1 as btGImpactBvh1    `( BtPrimitiveManagerBaseClass p0 )' =>     {  withBt* `p0'  } -> `BtGImpactBvh' mkBtGImpactBvh* #}+{#fun btGImpactBvh_free    `( BtGImpactBvhClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#333>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btGImpactBvh_getNodeCount as btGImpactBvh_getNodeCount    `( BtGImpactBvhClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#392>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btGImpactBvh_find_collision as btGImpactBvh_find_collision    `(  BtGImpactBvhClass p0 , BtGImpactBvhClass p2 , BtPairSetClass p4 )' =>     {  withBt* `p0'  -- ^ boxset1+, withTransform* `Transform'  peekTransform* -- ^ trans1+, withBt* `p2'  -- ^ boxset2+, withTransform* `Transform'  peekTransform* -- ^ trans2+, withBt* `p4'  -- ^ collision_pairs+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#392>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btGImpactBvh_find_collision as btGImpactBvh_find_collision'    `(  BtGImpactBvhClass p0 , BtGImpactBvhClass p2 , BtPairSetClass p4 )' =>     {  withBt* `p0'  -- ^ boxset1+, allocaTransform-  `Transform'  peekTransform* -- ^ trans1+, withBt* `p2'  -- ^ boxset2+, allocaTransform-  `Transform'  peekTransform* -- ^ trans2+, withBt* `p4'  -- ^ collision_pairs+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#375>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btGImpactBvh_getNodeTriangle as btGImpactBvh_getNodeTriangle    `( BtGImpactBvhClass bc , BtPrimitiveTriangleClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ nodeindex+, withBt* `p1'  -- ^ triangle+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#321>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btGImpactBvh_hasHierarchy as btGImpactBvh_hasHierarchy    `( BtGImpactBvhClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#360>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btGImpactBvh_getLeftNode as btGImpactBvh_getLeftNode    `( BtGImpactBvhClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ nodeindex+ } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#365>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btGImpactBvh_getRightNode as btGImpactBvh_getRightNode    `( BtGImpactBvhClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ nodeindex+ } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#295>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btGImpactBvh_update as btGImpactBvh_update    `( BtGImpactBvhClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#327>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btGImpactBvh_isTrimesh as btGImpactBvh_isTrimesh    `( BtGImpactBvhClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#354>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btGImpactBvh_setNodeBound as btGImpactBvh_setNodeBound    `( BtGImpactBvhClass bc , BtAABBClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ nodeindex+, withBt* `p1'  -- ^ bound+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#280>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btGImpactBvh_setPrimitiveManager as btGImpactBvh_setPrimitiveManager    `( BtGImpactBvhClass bc , BtPrimitiveManagerBaseClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ primitive_manager+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#370>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btGImpactBvh_getEscapeNodeIndex as btGImpactBvh_getEscapeNodeIndex    `( BtGImpactBvhClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ nodeindex+ } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#339>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btGImpactBvh_isLeafNode as btGImpactBvh_isLeafNode    `( BtGImpactBvhClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ nodeindex+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#285>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btGImpactBvh_getPrimitiveManager as btGImpactBvh_getPrimitiveManager    `( BtGImpactBvhClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtPrimitiveManagerBase' mkBtPrimitiveManagerBase*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#301>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btGImpactBvh_buildSet as btGImpactBvh_buildSet    `( BtGImpactBvhClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#381>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btGImpactBvh_get_node_pointer as btGImpactBvh_get_node_pointer    `( BtGImpactBvhClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `GIM_BVH_TREE_NODE' mkGIM_BVH_TREE_NODE*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#344>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btGImpactBvh_getNodeData as btGImpactBvh_getNodeData    `( BtGImpactBvhClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ nodeindex+ } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#349>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btGImpactBvh_getNodeBound as btGImpactBvh_getNodeBound    `( BtGImpactBvhClass bc , BtAABBClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ nodeindex+, withBt* `p1'  -- ^ bound+ } ->  `()'  #}+-- * btGImpactCollisionAlgorithm+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h?r=2223#199>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp?r=2223>+-}+{#fun btGImpactCollisionAlgorithm_new as btGImpactCollisionAlgorithm    `( BtCollisionAlgorithmConstructionInfoClass p0 , BtCollisionObjectClass p1 , BtCollisionObjectClass p2 )' =>     {  withBt* `p0' , withBt* `p1' , withBt* `p2'  } -> `BtGImpactCollisionAlgorithm' mkBtGImpactCollisionAlgorithm* #}+{#fun btGImpactCollisionAlgorithm_free    `( BtGImpactCollisionAlgorithmClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h?r=2223#292>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp?r=2223>+-}+{#fun btGImpactCollisionAlgorithm_getPart1 as btGImpactCollisionAlgorithm_getPart1    `( BtGImpactCollisionAlgorithmClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h?r=2223#284>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp?r=2223>+-}+{#fun btGImpactCollisionAlgorithm_getPart0 as btGImpactCollisionAlgorithm_getPart0    `( BtGImpactCollisionAlgorithmClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h?r=2223#247>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp?r=2223>+-}+{#fun btGImpactCollisionAlgorithm_gimpact_vs_shape as btGImpactCollisionAlgorithm_gimpact_vs_shape    `( BtGImpactCollisionAlgorithmClass bc , BtCollisionObjectClass p0 , BtCollisionObjectClass p1 , BtGImpactShapeInterfaceClass p2 , BtCollisionShapeClass p3 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ body0+, withBt* `p1'  -- ^ body1+, withBt* `p2'  -- ^ shape0+, withBt* `p3'  -- ^ shape1+,  `Bool'  -- ^ swapped+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h?r=2223#276>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp?r=2223>+-}+{#fun btGImpactCollisionAlgorithm_getFace1 as btGImpactCollisionAlgorithm_getFace1    `( BtGImpactCollisionAlgorithmClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h?r=2223#258>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp?r=2223>+-}+{#fun btGImpactCollisionAlgorithm_gimpact_vs_concave as btGImpactCollisionAlgorithm_gimpact_vs_concave    `( BtGImpactCollisionAlgorithmClass bc , BtCollisionObjectClass p0 , BtCollisionObjectClass p1 , BtGImpactShapeInterfaceClass p2 , BtConcaveShapeClass p3 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ body0+, withBt* `p1'  -- ^ body1+, withBt* `p2'  -- ^ shape0+, withBt* `p3'  -- ^ shape1+,  `Bool'  -- ^ swapped+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h?r=2223#252>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp?r=2223>+-}+{#fun btGImpactCollisionAlgorithm_gimpact_vs_compoundshape as btGImpactCollisionAlgorithm_gimpact_vs_compoundshape    `( BtGImpactCollisionAlgorithmClass bc , BtCollisionObjectClass p0 , BtCollisionObjectClass p1 , BtGImpactShapeInterfaceClass p2 , BtCompoundShapeClass p3 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ body0+, withBt* `p1'  -- ^ body1+, withBt* `p2'  -- ^ shape0+, withBt* `p3'  -- ^ shape1+,  `Bool'  -- ^ swapped+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h?r=2223#205>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp?r=2223>+-}+{#fun btGImpactCollisionAlgorithm_calculateTimeOfImpact as btGImpactCollisionAlgorithm_calculateTimeOfImpact    `( BtGImpactCollisionAlgorithmClass bc , BtCollisionObjectClass p0 , BtCollisionObjectClass p1 , BtDispatcherInfoClass p2 , BtManifoldResultClass p3 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ body0+, withBt* `p1'  -- ^ body1+, withBt* `p2'  -- ^ dispatchInfo+, withBt* `p3'  -- ^ resultOut+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h?r=2223#203>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp?r=2223>+-}+{#fun btGImpactCollisionAlgorithm_processCollision as btGImpactCollisionAlgorithm_processCollision    `( BtGImpactCollisionAlgorithmClass bc , BtCollisionObjectClass p0 , BtCollisionObjectClass p1 , BtDispatcherInfoClass p2 , BtManifoldResultClass p3 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ body0+, withBt* `p1'  -- ^ body1+, withBt* `p2'  -- ^ dispatchInfo+, withBt* `p3'  -- ^ resultOut+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h?r=2223#272>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp?r=2223>+-}+{#fun btGImpactCollisionAlgorithm_setFace1 as btGImpactCollisionAlgorithm_setFace1    `( BtGImpactCollisionAlgorithmClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ value+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h?r=2223#242>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp?r=2223>+-}+{#fun btGImpactCollisionAlgorithm_gimpact_vs_gimpact as btGImpactCollisionAlgorithm_gimpact_vs_gimpact    `( BtGImpactCollisionAlgorithmClass bc , BtCollisionObjectClass p0 , BtCollisionObjectClass p1 , BtGImpactShapeInterfaceClass p2 , BtGImpactShapeInterfaceClass p3 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ body0+, withBt* `p1'  -- ^ body1+, withBt* `p2'  -- ^ shape0+, withBt* `p3'  -- ^ shape1+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h?r=2223#264>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp?r=2223>+-}+{#fun btGImpactCollisionAlgorithm_setFace0 as btGImpactCollisionAlgorithm_setFace0    `( BtGImpactCollisionAlgorithmClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ value+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h?r=2223#288>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp?r=2223>+-}+{#fun btGImpactCollisionAlgorithm_setPart1 as btGImpactCollisionAlgorithm_setPart1    `( BtGImpactCollisionAlgorithmClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ value+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h?r=2223#280>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp?r=2223>+-}+{#fun btGImpactCollisionAlgorithm_setPart0 as btGImpactCollisionAlgorithm_setPart0    `( BtGImpactCollisionAlgorithmClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ value+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h?r=2223#224>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp?r=2223>+-}+{#fun btGImpactCollisionAlgorithm_registerAlgorithm as btGImpactCollisionAlgorithm_registerAlgorithm    `(  BtCollisionDispatcherClass p0 )' =>     {  withBt* `p0'  -- ^ dispatcher+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h?r=2223#268>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp?r=2223>+-}+{#fun btGImpactCollisionAlgorithm_getFace0 as btGImpactCollisionAlgorithm_getFace0    `( BtGImpactCollisionAlgorithmClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+-- * btGImpactCompoundShape+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#370>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactCompoundShape_new as btGImpactCompoundShape    {   `Bool'  } -> `BtGImpactCompoundShape' mkBtGImpactCompoundShape* #}+{#fun btGImpactCompoundShape_free    `( BtGImpactCompoundShapeClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#498>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactCompoundShape_calculateLocalInertia as btGImpactCompoundShape_calculateLocalInertia    `( BtGImpactCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, withVector3* `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#498>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactCompoundShape_calculateLocalInertia as btGImpactCompoundShape_calculateLocalInertia'    `( BtGImpactCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, allocaVector3-  `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#410>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactCompoundShape_addChildShape0 as btGImpactCompoundShape_addChildShape    `( BtGImpactCompoundShapeClass bc , BtCollisionShapeClass p1 )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ localTransform+, withBt* `p1'  -- ^ shape+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#410>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactCompoundShape_addChildShape0 as btGImpactCompoundShape_addChildShape'    `( BtGImpactCompoundShapeClass bc , BtCollisionShapeClass p1 )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ localTransform+, withBt* `p1'  -- ^ shape+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#410>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactCompoundShape_addChildShape0 as btGImpactCompoundShape_addChildShape0    `( BtGImpactCompoundShapeClass bc , BtCollisionShapeClass p1 )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ localTransform+, withBt* `p1'  -- ^ shape+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#410>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactCompoundShape_addChildShape0 as btGImpactCompoundShape_addChildShape0'    `( BtGImpactCompoundShapeClass bc , BtCollisionShapeClass p1 )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ localTransform+, withBt* `p1'  -- ^ shape+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#418>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactCompoundShape_addChildShape1 as btGImpactCompoundShape_addChildShape1    `( BtGImpactCompoundShapeClass bc , BtCollisionShapeClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ shape+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#397>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactCompoundShape_getCompoundPrimitiveManager as btGImpactCompoundShape_getCompoundPrimitiveManager    `( BtGImpactCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtGImpactCompoundShape_CompoundPrimitiveManager' mkBtGImpactCompoundShape_CompoundPrimitiveManager*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#464>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactCompoundShape_setChildTransform as btGImpactCompoundShape_setChildTransform    `( BtGImpactCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+, withTransform* `Transform'  peekTransform* -- ^ transform+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#464>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactCompoundShape_setChildTransform as btGImpactCompoundShape_setChildTransform'    `( BtGImpactCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+, allocaTransform-  `Transform'  peekTransform* -- ^ transform+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#454>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactCompoundShape_getChildTransform as btGImpactCompoundShape_getChildTransform    `( BtGImpactCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#490>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactCompoundShape_getBulletTetrahedron as btGImpactCompoundShape_getBulletTetrahedron    `( BtGImpactCompoundShapeClass bc , BtTetrahedronShapeExClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ prim_index+, withBt* `p1'  -- ^ tetrahedron+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#500>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactCompoundShape_getName as btGImpactCompoundShape_getName    `( BtGImpactCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `String'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#478>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactCompoundShape_needsRetrieveTetrahedrons as btGImpactCompoundShape_needsRetrieveTetrahedrons    `( BtGImpactCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#425>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactCompoundShape_getChildShape0 as btGImpactCompoundShape_getChildShape    `( BtGImpactCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BtCollisionShape' mkBtCollisionShape*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#425>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactCompoundShape_getChildShape0 as btGImpactCompoundShape_getChildShape0    `( BtGImpactCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BtCollisionShape' mkBtCollisionShape*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#431>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactCompoundShape_getChildShape1 as btGImpactCompoundShape_getChildShape1    `( BtGImpactCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BtCollisionShape' mkBtCollisionShape*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#484>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactCompoundShape_getBulletTriangle as btGImpactCompoundShape_getBulletTriangle    `( BtGImpactCompoundShapeClass bc , BtTriangleShapeExClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ prim_index+, withBt* `p1'  -- ^ triangle+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#472>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactCompoundShape_needsRetrieveTriangles as btGImpactCompoundShape_needsRetrieveTriangles    `( BtGImpactCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#383>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactCompoundShape_childrenHasTransform as btGImpactCompoundShape_childrenHasTransform    `( BtGImpactCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#403>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactCompoundShape_getNumChildShapes as btGImpactCompoundShape_getNumChildShapes    `( BtGImpactCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#391>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactCompoundShape_getPrimitiveManager as btGImpactCompoundShape_getPrimitiveManager    `( BtGImpactCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtPrimitiveManagerBase' mkBtPrimitiveManagerBase*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#439>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactCompoundShape_getChildAabb as btGImpactCompoundShape_getChildAabb    `( BtGImpactCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ child_index+, withTransform* `Transform'  peekTransform* -- ^ t+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#439>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactCompoundShape_getChildAabb as btGImpactCompoundShape_getChildAabb'    `( BtGImpactCompoundShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ child_index+, allocaTransform-  `Transform'  peekTransform* -- ^ t+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+-- * btGImpactMeshShape+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#927>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_new as btGImpactMeshShape    `( BtStridingMeshInterfaceClass p0 )' =>     {  withBt* `p0'  } -> `BtGImpactMeshShape' mkBtGImpactMeshShape* #}+{#fun btGImpactMeshShape_free    `( BtGImpactMeshShapeClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#1014>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_calculateLocalInertia as btGImpactMeshShape_calculateLocalInertia    `( BtGImpactMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, withVector3* `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#1014>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_calculateLocalInertia as btGImpactMeshShape_calculateLocalInertia'    `( BtGImpactMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, allocaVector3-  `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#973>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_setLocalScaling as btGImpactMeshShape_setLocalScaling    `( BtGImpactMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#973>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_setLocalScaling as btGImpactMeshShape_setLocalScaling'    `( BtGImpactMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#1118>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_setChildTransform as btGImpactMeshShape_setChildTransform    `( BtGImpactMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+, withTransform* `Transform'  peekTransform* -- ^ transform+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#1118>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_setChildTransform as btGImpactMeshShape_setChildTransform'    `( BtGImpactMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+, allocaTransform-  `Transform'  peekTransform* -- ^ transform+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#945>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_getMeshInterface0 as btGImpactMeshShape_getMeshInterface    `( BtGImpactMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtStridingMeshInterface' mkBtStridingMeshInterface*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#945>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_getMeshInterface0 as btGImpactMeshShape_getMeshInterface0    `( BtGImpactMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtStridingMeshInterface' mkBtStridingMeshInterface*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#950>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_getMeshInterface1 as btGImpactMeshShape_getMeshInterface1    `( BtGImpactMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtStridingMeshInterface' mkBtStridingMeshInterface*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#1018>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_getPrimitiveManager as btGImpactMeshShape_getPrimitiveManager    `( BtGImpactMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtPrimitiveManagerBase' mkBtPrimitiveManagerBase*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#1142>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_processAllTriangles as btGImpactMeshShape_processAllTriangles    `( BtGImpactMeshShapeClass bc , BtTriangleCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ callback+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#1142>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_processAllTriangles as btGImpactMeshShape_processAllTriangles'    `( BtGImpactMeshShapeClass bc , BtTriangleCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ callback+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#955>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_getMeshPartCount as btGImpactMeshShape_getMeshPartCount    `( BtGImpactMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#1165>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_calculateSerializeBufferSize as btGImpactMeshShape_calculateSerializeBufferSize    `( BtGImpactMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#1136>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_rayTest as btGImpactMeshShape_rayTest    `( BtGImpactMeshShapeClass bc , BtCollisionWorld_RayResultCallbackClass p2 )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ rayFrom+, withVector3* `Vector3'  peekVector3* -- ^ rayTo+, withBt* `p2'  -- ^ resultCallback+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#1136>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_rayTest as btGImpactMeshShape_rayTest'    `( BtGImpactMeshShapeClass bc , BtCollisionWorld_RayResultCallbackClass p2 )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ rayFrom+, allocaVector3-  `Vector3'  peekVector3* -- ^ rayTo+, withBt* `p2'  -- ^ resultCallback+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#1131>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_getName as btGImpactMeshShape_getName    `( BtGImpactMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `String'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#1054>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_getBulletTriangle as btGImpactMeshShape_getBulletTriangle    `( BtGImpactMeshShapeClass bc , BtTriangleShapeExClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ prim_index+, withBt* `p1'  -- ^ triangle+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#960>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_getMeshPart0 as btGImpactMeshShape_getMeshPart    `( BtGImpactMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BtGImpactMeshShapePart' mkBtGImpactMeshShapePart*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#960>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_getMeshPart0 as btGImpactMeshShape_getMeshPart0    `( BtGImpactMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BtGImpactMeshShapePart' mkBtGImpactMeshShapePart*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#967>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_getMeshPart1 as btGImpactMeshShape_getMeshPart1    `( BtGImpactMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BtGImpactMeshShapePart' mkBtGImpactMeshShapePart*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#1041>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_needsRetrieveTriangles as btGImpactMeshShape_needsRetrieveTriangles    `( BtGImpactMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#1034>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_childrenHasTransform as btGImpactMeshShape_childrenHasTransform    `( BtGImpactMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#1090>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_getChildShape0 as btGImpactMeshShape_getChildShape    `( BtGImpactMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BtCollisionShape' mkBtCollisionShape*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#1090>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_getChildShape0 as btGImpactMeshShape_getChildShape0    `( BtGImpactMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BtCollisionShape' mkBtCollisionShape*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#1099>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_getChildShape1 as btGImpactMeshShape_getChildShape1    `( BtGImpactMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BtCollisionShape' mkBtCollisionShape*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#1107>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_getChildTransform as btGImpactMeshShape_getChildTransform    `( BtGImpactMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#1067>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_lockChildShapes as btGImpactMeshShape_lockChildShapes    `( BtGImpactMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#987>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_setMargin as btGImpactMeshShape_setMargin    `( BtGImpactMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ margin+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#1026>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_getNumChildShapes as btGImpactMeshShape_getNumChildShapes    `( BtGImpactMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#1083>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_getChildAabb as btGImpactMeshShape_getChildAabb    `( BtGImpactMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ child_index+, withTransform* `Transform'  peekTransform* -- ^ t+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#1083>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_getChildAabb as btGImpactMeshShape_getChildAabb'    `( BtGImpactMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ child_index+, allocaTransform-  `Transform'  peekTransform* -- ^ t+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#1060>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_getBulletTetrahedron as btGImpactMeshShape_getBulletTetrahedron    `( BtGImpactMeshShapeClass bc , BtTetrahedronShapeExClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ prim_index+, withBt* `p1'  -- ^ tetrahedron+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#1048>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_needsRetrieveTetrahedrons as btGImpactMeshShape_needsRetrieveTetrahedrons    `( BtGImpactMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#1072>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_unlockChildShapes as btGImpactMeshShape_unlockChildShapes    `( BtGImpactMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#1002>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShape_postUpdate as btGImpactMeshShape_postUpdate    `( BtGImpactMeshShapeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+-- * btGImpactMeshShapeData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#1153>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapeData_new as btGImpactMeshShapeData    {  } -> `BtGImpactMeshShapeData' mkBtGImpactMeshShapeData* #}+{#fun btGImpactMeshShapeData_free    `( BtGImpactMeshShapeDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#1160>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapeData_m_collisionMargin_set    `( BtGImpactMeshShapeDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#1160>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapeData_m_collisionMargin_get    `( BtGImpactMeshShapeDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#1162>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapeData_m_gimpactSubType_set    `( BtGImpactMeshShapeDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#1162>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapeData_m_gimpactSubType_get    `( BtGImpactMeshShapeDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btGImpactMeshShapePart+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#710>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_new0 as btGImpactMeshShapePart0    {  } -> `BtGImpactMeshShapePart' mkBtGImpactMeshShapePart* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#716>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_new1 as btGImpactMeshShapePart1    `( BtStridingMeshInterfaceClass p0 )' =>     {  withBt* `p0' ,  `Int'  } -> `BtGImpactMeshShapePart' mkBtGImpactMeshShapePart* #}+{#fun btGImpactMeshShapePart_free    `( BtGImpactMeshShapePartClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#809>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_calculateLocalInertia as btGImpactMeshShapePart_calculateLocalInertia    `( BtGImpactMeshShapePartClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, withVector3* `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#809>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_calculateLocalInertia as btGImpactMeshShapePart_calculateLocalInertia'    `( BtGImpactMeshShapePartClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, allocaVector3-  `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#786>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_setChildTransform as btGImpactMeshShapePart_setChildTransform    `( BtGImpactMeshShapePartClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+, withTransform* `Transform'  peekTransform* -- ^ transform+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#786>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_setChildTransform as btGImpactMeshShapePart_setChildTransform'    `( BtGImpactMeshShapePartClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+, allocaTransform-  `Transform'  peekTransform* -- ^ transform+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#877>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_getLocalScaling as btGImpactMeshShapePart_getLocalScaling    `( BtGImpactMeshShapePartClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#855>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_getVertex as btGImpactMeshShapePart_getVertex    `( BtGImpactMeshShapePartClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ vertex_index+, withVector3* `Vector3'  peekVector3* -- ^ vertex+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#855>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_getVertex as btGImpactMeshShapePart_getVertex'    `( BtGImpactMeshShapePartClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ vertex_index+, allocaVector3-  `Vector3'  peekVector3* -- ^ vertex+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#887>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_processAllTriangles as btGImpactMeshShapePart_processAllTriangles    `( BtGImpactMeshShapePartClass bc , BtTriangleCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ callback+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#887>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_processAllTriangles as btGImpactMeshShapePart_processAllTriangles'    `( BtGImpactMeshShapePartClass bc , BtTriangleCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ callback+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#814>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_getName as btGImpactMeshShapePart_getName    `( BtGImpactMeshShapePartClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `String'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#836>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_getBulletTriangle as btGImpactMeshShapePart_getBulletTriangle    `( BtGImpactMeshShapePartClass bc , BtTriangleShapeExClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ prim_index+, withBt* `p1'  -- ^ triangle+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#871>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_setLocalScaling as btGImpactMeshShapePart_setLocalScaling    `( BtGImpactMeshShapePartClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#871>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_setLocalScaling as btGImpactMeshShapePart_setLocalScaling'    `( BtGImpactMeshShapePartClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#882>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_getPart as btGImpactMeshShapePart_getPart    `( BtGImpactMeshShapePartClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#728>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_childrenHasTransform as btGImpactMeshShapePart_childrenHasTransform    `( BtGImpactMeshShapePartClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#825>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_needsRetrieveTriangles as btGImpactMeshShapePart_needsRetrieveTriangles    `( BtGImpactMeshShapePartClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#757>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_getChildShape0 as btGImpactMeshShapePart_getChildShape    `( BtGImpactMeshShapePartClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BtCollisionShape' mkBtCollisionShape*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#757>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_getChildShape0 as btGImpactMeshShapePart_getChildShape0    `( BtGImpactMeshShapePartClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BtCollisionShape' mkBtCollisionShape*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#767>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_getChildShape1 as btGImpactMeshShapePart_getChildShape1    `( BtGImpactMeshShapePartClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BtCollisionShape' mkBtCollisionShape*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#775>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_getChildTransform as btGImpactMeshShapePart_getChildTransform    `( BtGImpactMeshShapePartClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#735>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_lockChildShapes as btGImpactMeshShapePart_lockChildShapes    `( BtGImpactMeshShapePartClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#866>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_getMargin as btGImpactMeshShapePart_getMargin    `( BtGImpactMeshShapePartClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#860>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_setMargin as btGImpactMeshShapePart_setMargin    `( BtGImpactMeshShapePartClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ margin+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#795>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_getPrimitiveManager as btGImpactMeshShapePart_getPrimitiveManager    `( BtGImpactMeshShapePartClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtPrimitiveManagerBase' mkBtPrimitiveManagerBase*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#750>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_getNumChildShapes as btGImpactMeshShapePart_getNumChildShapes    `( BtGImpactMeshShapePartClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#841>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_getBulletTetrahedron as btGImpactMeshShapePart_getBulletTetrahedron    `( BtGImpactMeshShapePartClass bc , BtTetrahedronShapeExClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ prim_index+, withBt* `p1'  -- ^ tetrahedron+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#800>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_getTrimeshPrimitiveManager as btGImpactMeshShapePart_getTrimeshPrimitiveManager    `( BtGImpactMeshShapePartClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtGImpactMeshShapePart_TrimeshPrimitiveManager' mkBtGImpactMeshShapePart_TrimeshPrimitiveManager*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#831>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_needsRetrieveTetrahedrons as btGImpactMeshShapePart_needsRetrieveTetrahedrons    `( BtGImpactMeshShapePartClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#742>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_unlockChildShapes as btGImpactMeshShapePart_unlockChildShapes    `( BtGImpactMeshShapePartClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#850>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactMeshShapePart_getVertexCount as btGImpactMeshShapePart_getVertexCount    `( BtGImpactMeshShapePartClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+-- * btGImpactQuantizedBvh+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#238>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun btGImpactQuantizedBvh_new0 as btGImpactQuantizedBvh0    {  } -> `BtGImpactQuantizedBvh' mkBtGImpactQuantizedBvh* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#244>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun btGImpactQuantizedBvh_new1 as btGImpactQuantizedBvh1    `( BtPrimitiveManagerBaseClass p0 )' =>     {  withBt* `p0'  } -> `BtGImpactQuantizedBvh' mkBtGImpactQuantizedBvh* #}+{#fun btGImpactQuantizedBvh_free    `( BtGImpactQuantizedBvhClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#309>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun btGImpactQuantizedBvh_getNodeCount as btGImpactQuantizedBvh_getNodeCount    `( BtGImpactQuantizedBvhClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#368>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun btGImpactQuantizedBvh_find_collision as btGImpactQuantizedBvh_find_collision    `(  BtGImpactQuantizedBvhClass p0 , BtGImpactQuantizedBvhClass p2 , BtPairSetClass p4 )' =>     {  withBt* `p0'  -- ^ boxset1+, withTransform* `Transform'  peekTransform* -- ^ trans1+, withBt* `p2'  -- ^ boxset2+, withTransform* `Transform'  peekTransform* -- ^ trans2+, withBt* `p4'  -- ^ collision_pairs+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#368>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun btGImpactQuantizedBvh_find_collision as btGImpactQuantizedBvh_find_collision'    `(  BtGImpactQuantizedBvhClass p0 , BtGImpactQuantizedBvhClass p2 , BtPairSetClass p4 )' =>     {  withBt* `p0'  -- ^ boxset1+, allocaTransform-  `Transform'  peekTransform* -- ^ trans1+, withBt* `p2'  -- ^ boxset2+, allocaTransform-  `Transform'  peekTransform* -- ^ trans2+, withBt* `p4'  -- ^ collision_pairs+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#351>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun btGImpactQuantizedBvh_getNodeTriangle as btGImpactQuantizedBvh_getNodeTriangle    `( BtGImpactQuantizedBvhClass bc , BtPrimitiveTriangleClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ nodeindex+, withBt* `p1'  -- ^ triangle+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#297>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun btGImpactQuantizedBvh_hasHierarchy as btGImpactQuantizedBvh_hasHierarchy    `( BtGImpactQuantizedBvhClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#336>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun btGImpactQuantizedBvh_getLeftNode as btGImpactQuantizedBvh_getLeftNode    `( BtGImpactQuantizedBvhClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ nodeindex+ } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#341>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun btGImpactQuantizedBvh_getRightNode as btGImpactQuantizedBvh_getRightNode    `( BtGImpactQuantizedBvhClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ nodeindex+ } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#271>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun btGImpactQuantizedBvh_update as btGImpactQuantizedBvh_update    `( BtGImpactQuantizedBvhClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#303>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun btGImpactQuantizedBvh_isTrimesh as btGImpactQuantizedBvh_isTrimesh    `( BtGImpactQuantizedBvhClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#330>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun btGImpactQuantizedBvh_setNodeBound as btGImpactQuantizedBvh_setNodeBound    `( BtGImpactQuantizedBvhClass bc , BtAABBClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ nodeindex+, withBt* `p1'  -- ^ bound+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#256>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun btGImpactQuantizedBvh_setPrimitiveManager as btGImpactQuantizedBvh_setPrimitiveManager    `( BtGImpactQuantizedBvhClass bc , BtPrimitiveManagerBaseClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ primitive_manager+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#346>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun btGImpactQuantizedBvh_getEscapeNodeIndex as btGImpactQuantizedBvh_getEscapeNodeIndex    `( BtGImpactQuantizedBvhClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ nodeindex+ } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#315>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun btGImpactQuantizedBvh_isLeafNode as btGImpactQuantizedBvh_isLeafNode    `( BtGImpactQuantizedBvhClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ nodeindex+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#261>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun btGImpactQuantizedBvh_getPrimitiveManager as btGImpactQuantizedBvh_getPrimitiveManager    `( BtGImpactQuantizedBvhClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtPrimitiveManagerBase' mkBtPrimitiveManagerBase*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#277>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun btGImpactQuantizedBvh_buildSet as btGImpactQuantizedBvh_buildSet    `( BtGImpactQuantizedBvhClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#357>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun btGImpactQuantizedBvh_get_node_pointer as btGImpactQuantizedBvh_get_node_pointer    `( BtGImpactQuantizedBvhClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BT_QUANTIZED_BVH_NODE' mkBT_QUANTIZED_BVH_NODE*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#320>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun btGImpactQuantizedBvh_getNodeData as btGImpactQuantizedBvh_getNodeData    `( BtGImpactQuantizedBvhClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ nodeindex+ } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#325>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun btGImpactQuantizedBvh_getNodeBound as btGImpactQuantizedBvh_getNodeBound    `( BtGImpactQuantizedBvhClass bc , BtAABBClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ nodeindex+, withBt* `p1'  -- ^ bound+ } ->  `()'  #}+-- * btGImpactShapeInterface+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#239>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactShapeInterface_getPrimitiveTriangle as btGImpactShapeInterface_getPrimitiveTriangle    `( BtGImpactShapeInterfaceClass bc , BtPrimitiveTriangleClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+, withBt* `p1'  -- ^ triangle+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#271>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactShapeInterface_setChildTransform as btGImpactShapeInterface_setChildTransform    `( BtGImpactShapeInterfaceClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+, withTransform* `Transform'  peekTransform* -- ^ transform+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#271>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactShapeInterface_setChildTransform as btGImpactShapeInterface_setChildTransform'    `( BtGImpactShapeInterfaceClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+, allocaTransform-  `Transform'  peekTransform* -- ^ transform+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#168>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactShapeInterface_getLocalScaling as btGImpactShapeInterface_getLocalScaling    `( BtGImpactShapeInterfaceClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#148>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactShapeInterface_getLocalBox as btGImpactShapeInterface_getLocalBox    `( BtGImpactShapeInterfaceClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtAABB' mkBtAABB*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#208>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactShapeInterface_getPrimitiveManager as btGImpactShapeInterface_getPrimitiveManager    `( BtGImpactShapeInterfaceClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtPrimitiveManagerBase' mkBtPrimitiveManagerBase*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#286>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactShapeInterface_processAllTriangles as btGImpactShapeInterface_processAllTriangles    `( BtGImpactShapeInterfaceClass bc , BtTriangleCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ callback+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#286>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactShapeInterface_processAllTriangles as btGImpactShapeInterface_processAllTriangles'    `( BtGImpactShapeInterfaceClass bc , BtTriangleCallbackClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ callback+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#201>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactShapeInterface_hasBoxSet as btGImpactShapeInterface_hasBoxSet    `( BtGImpactShapeInterfaceClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#277>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactShapeInterface_rayTest as btGImpactShapeInterface_rayTest    `( BtGImpactShapeInterfaceClass bc , BtCollisionWorld_RayResultCallbackClass p2 )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ rayFrom+, withVector3* `Vector3'  peekVector3* -- ^ rayTo+, withBt* `p2'  -- ^ resultCallback+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#277>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactShapeInterface_rayTest as btGImpactShapeInterface_rayTest'    `( BtGImpactShapeInterfaceClass bc , BtCollisionWorld_RayResultCallbackClass p2 )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ rayFrom+, allocaVector3-  `Vector3'  peekVector3* -- ^ rayTo+, withBt* `p2'  -- ^ resultCallback+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#195>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactShapeInterface_getBoxSet as btGImpactShapeInterface_getBoxSet    `( BtGImpactShapeInterfaceClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtGImpactQuantizedBvh' mkBtGImpactQuantizedBvh*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#223>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactShapeInterface_getBulletTriangle as btGImpactShapeInterface_getBulletTriangle    `( BtGImpactShapeInterfaceClass bc , BtTriangleShapeExClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ prim_index+, withBt* `p1'  -- ^ triangle+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#162>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactShapeInterface_setLocalScaling as btGImpactShapeInterface_setLocalScaling    `( BtGImpactShapeInterfaceClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#162>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactShapeInterface_setLocalScaling as btGImpactShapeInterface_setLocalScaling'    `( BtGImpactShapeInterfaceClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ scaling+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#218>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactShapeInterface_needsRetrieveTriangles as btGImpactShapeInterface_needsRetrieveTriangles    `( BtGImpactShapeInterfaceClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#215>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactShapeInterface_childrenHasTransform as btGImpactShapeInterface_childrenHasTransform    `( BtGImpactShapeInterfaceClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#133>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactShapeInterface_getAabb as btGImpactShapeInterface_getAabb    `( BtGImpactShapeInterfaceClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ t+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#133>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactShapeInterface_getAabb as btGImpactShapeInterface_getAabb'    `( BtGImpactShapeInterfaceClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ t+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#258>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactShapeInterface_getChildShape0 as btGImpactShapeInterface_getChildShape    `( BtGImpactShapeInterfaceClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BtCollisionShape' mkBtCollisionShape*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#258>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactShapeInterface_getChildShape0 as btGImpactShapeInterface_getChildShape0    `( BtGImpactShapeInterfaceClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BtCollisionShape' mkBtCollisionShape*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#262>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactShapeInterface_getChildShape1 as btGImpactShapeInterface_getChildShape1    `( BtGImpactShapeInterfaceClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BtCollisionShape' mkBtCollisionShape*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#265>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactShapeInterface_getChildTransform as btGImpactShapeInterface_getChildTransform    `( BtGImpactShapeInterfaceClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#230>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactShapeInterface_lockChildShapes as btGImpactShapeInterface_lockChildShapes    `( BtGImpactShapeInterfaceClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#174>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactShapeInterface_setMargin as btGImpactShapeInterface_setMargin    `( BtGImpactShapeInterfaceClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ margin+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#212>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactShapeInterface_getNumChildShapes as btGImpactShapeInterface_getNumChildShapes    `( BtGImpactShapeInterfaceClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#248>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactShapeInterface_getChildAabb as btGImpactShapeInterface_getChildAabb    `( BtGImpactShapeInterfaceClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ child_index+, withTransform* `Transform'  peekTransform* -- ^ t+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#248>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactShapeInterface_getChildAabb as btGImpactShapeInterface_getChildAabb'    `( BtGImpactShapeInterfaceClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ child_index+, allocaTransform-  `Transform'  peekTransform* -- ^ t+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#154>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactShapeInterface_getShapeType as btGImpactShapeInterface_getShapeType    `( BtGImpactShapeInterfaceClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#225>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactShapeInterface_getBulletTetrahedron as btGImpactShapeInterface_getBulletTetrahedron    `( BtGImpactShapeInterfaceClass bc , BtTetrahedronShapeExClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ prim_index+, withBt* `p1'  -- ^ tetrahedron+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#221>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactShapeInterface_needsRetrieveTetrahedrons as btGImpactShapeInterface_needsRetrieveTetrahedrons    `( BtGImpactShapeInterfaceClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#234>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactShapeInterface_unlockChildShapes as btGImpactShapeInterface_unlockChildShapes    `( BtGImpactShapeInterfaceClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#142>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactShapeInterface_postUpdate as btGImpactShapeInterface_postUpdate    `( BtGImpactShapeInterfaceClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#122>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btGImpactShapeInterface_updateBound as btGImpactShapeInterface_updateBound    `( BtGImpactShapeInterfaceClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+-- * btPairSet+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#62>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btPairSet_new as btPairSet    {  } -> `BtPairSet' mkBtPairSet* #}+{#fun btPairSet_free    `( BtPairSetClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#71>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btPairSet_push_pair_inv as btPairSet_push_pair_inv    `( BtPairSetClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index1+,  `Int'  -- ^ index2+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#66>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btPairSet_push_pair as btPairSet_push_pair    `( BtPairSetClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index1+,  `Int'  -- ^ index2+ } ->  `()'  #}+-- * btPrimitiveManagerBase+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#239>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btPrimitiveManagerBase_get_primitive_box as btPrimitiveManagerBase_get_primitive_box    `( BtPrimitiveManagerBaseClass bc , BtAABBClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ prim_index+, withBt* `p1'  -- ^ primbox+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#241>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btPrimitiveManagerBase_get_primitive_triangle as btPrimitiveManagerBase_get_primitive_triangle    `( BtPrimitiveManagerBaseClass bc , BtPrimitiveTriangleClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ prim_index+, withBt* `p1'  -- ^ triangle+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#237>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btPrimitiveManagerBase_is_trimesh as btPrimitiveManagerBase_is_trimesh    `( BtPrimitiveManagerBaseClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.h?r=2223#238>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactBvh.cpp?r=2223>+-}+{#fun btPrimitiveManagerBase_get_primitive_count as btPrimitiveManagerBase_get_primitive_count    `( BtPrimitiveManagerBaseClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+-- * btPrimitiveTriangle+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.h?r=2223#81>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp?r=2223>+-}+{#fun btPrimitiveTriangle_new as btPrimitiveTriangle    {  } -> `BtPrimitiveTriangle' mkBtPrimitiveTriangle* #}+{#fun btPrimitiveTriangle_free    `( BtPrimitiveTriangleClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.h?r=2223#101>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp?r=2223>+-}+{#fun btPrimitiveTriangle_get_edge_plane as btPrimitiveTriangle_get_edge_plane    `( BtPrimitiveTriangleClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ edge_index+, withVector4* `Vector4'  peekVector4* -- ^ plane+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.h?r=2223#101>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp?r=2223>+-}+{#fun btPrimitiveTriangle_get_edge_plane as btPrimitiveTriangle_get_edge_plane'    `( BtPrimitiveTriangleClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ edge_index+, allocaVector4-  `Vector4'  peekVector4* -- ^ plane+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.h?r=2223#95>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp?r=2223>+-}+{#fun btPrimitiveTriangle_overlap_test_conservative as btPrimitiveTriangle_overlap_test_conservative    `( BtPrimitiveTriangleClass bc , BtPrimitiveTriangleClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ other+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.h?r=2223#87>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp?r=2223>+-}+{#fun btPrimitiveTriangle_buildTriPlane as btPrimitiveTriangle_buildTriPlane    `( BtPrimitiveTriangleClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.h?r=2223#108>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp?r=2223>+-}+{#fun btPrimitiveTriangle_applyTransform as btPrimitiveTriangle_applyTransform    `( BtPrimitiveTriangleClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ t+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.h?r=2223#108>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp?r=2223>+-}+{#fun btPrimitiveTriangle_applyTransform as btPrimitiveTriangle_applyTransform'    `( BtPrimitiveTriangleClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ t+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.h?r=2223#126>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp?r=2223>+-}+{#fun btPrimitiveTriangle_find_triangle_collision_clip_method as btPrimitiveTriangle_find_triangle_collision_clip_method    `( BtPrimitiveTriangleClass bc , BtPrimitiveTriangleClass p0 , GIM_TRIANGLE_CONTACTClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ other+, withBt* `p1'  -- ^ contacts+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.h?r=2223#80>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp?r=2223>+-}+{#fun btPrimitiveTriangle_m_dummy_set    `( BtPrimitiveTriangleClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.h?r=2223#80>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp?r=2223>+-}+{#fun btPrimitiveTriangle_m_dummy_get    `( BtPrimitiveTriangleClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.h?r=2223#79>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp?r=2223>+-}+{#fun btPrimitiveTriangle_m_margin_set    `( BtPrimitiveTriangleClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.h?r=2223#79>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp?r=2223>+-}+{#fun btPrimitiveTriangle_m_margin_get    `( BtPrimitiveTriangleClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.h?r=2223#78>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp?r=2223>+-}+{#fun btPrimitiveTriangle_m_plane_set    `( BtPrimitiveTriangleClass bc )' =>     { withBt* `bc' , withVector4* `Vector4'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.h?r=2223#78>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp?r=2223>+-}+{#fun btPrimitiveTriangle_m_plane_get    `( BtPrimitiveTriangleClass bc )' =>     { withBt* `bc' , allocaVector4-  `Vector4'  peekVector4* } -> `()' #}+-- * btQuantizedBvhTree+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#123>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhTree_new as btQuantizedBvhTree    {  } -> `BtQuantizedBvhTree' mkBtQuantizedBvhTree* #}+{#fun btQuantizedBvhTree_free    `( BtQuantizedBvhTreeClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#153>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhTree_getNodeCount as btQuantizedBvhTree_getNodeCount    `( BtQuantizedBvhTreeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#130>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhTree_build_tree as btQuantizedBvhTree_build_tree    `( BtQuantizedBvhTreeClass bc , GIM_BVH_DATA_ARRAYClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ primitive_boxes+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#195>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhTree_getLeftNode as btQuantizedBvhTree_getLeftNode    `( BtQuantizedBvhTreeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ nodeindex+ } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#180>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhTree_setNodeBound as btQuantizedBvhTree_setNodeBound    `( BtQuantizedBvhTreeClass bc , BtAABBClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ nodeindex+, withBt* `p1'  -- ^ bound+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#169>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhTree_getNodeBound as btQuantizedBvhTree_getNodeBound    `( BtQuantizedBvhTreeClass bc , BtAABBClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ nodeindex+, withBt* `p1'  -- ^ bound+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#200>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhTree_getRightNode as btQuantizedBvhTree_getRightNode    `( BtQuantizedBvhTreeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ nodeindex+ } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#146>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhTree_clearNodes as btQuantizedBvhTree_clearNodes    `( BtQuantizedBvhTreeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#206>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhTree_getEscapeNodeIndex as btQuantizedBvhTree_getEscapeNodeIndex    `( BtQuantizedBvhTreeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ nodeindex+ } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#159>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhTree_isLeafNode as btQuantizedBvhTree_isLeafNode    `( BtQuantizedBvhTreeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ nodeindex+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#211>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhTree_get_node_pointer as btQuantizedBvhTree_get_node_pointer    `( BtQuantizedBvhTreeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BT_QUANTIZED_BVH_NODE' mkBT_QUANTIZED_BVH_NODE*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h?r=2223#164>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp?r=2223>+-}+{#fun btQuantizedBvhTree_getNodeData as btQuantizedBvhTree_getNodeData    `( BtQuantizedBvhTreeClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ nodeindex+ } ->  `Int'  #}+-- * btTetrahedronShapeEx+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#58>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btTetrahedronShapeEx_new as btTetrahedronShapeEx    {  } -> `BtTetrahedronShapeEx' mkBtTetrahedronShapeEx* #}+{#fun btTetrahedronShapeEx_free    `( BtTetrahedronShapeExClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#66>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btTetrahedronShapeEx_setVertices as btTetrahedronShapeEx_setVertices    `( BtTetrahedronShapeExClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ v0+, withVector3* `Vector3'  peekVector3* -- ^ v1+, withVector3* `Vector3'  peekVector3* -- ^ v2+, withVector3* `Vector3'  peekVector3* -- ^ v3+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.h?r=2223#66>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btGImpactShape.cpp?r=2223>+-}+{#fun btTetrahedronShapeEx_setVertices as btTetrahedronShapeEx_setVertices'    `( BtTetrahedronShapeExClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ v0+, allocaVector3-  `Vector3'  peekVector3* -- ^ v1+, allocaVector3-  `Vector3'  peekVector3* -- ^ v2+, allocaVector3-  `Vector3'  peekVector3* -- ^ v3+ } ->  `()'  #}+-- * btTriangleShapeEx+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.h?r=2223#139>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp?r=2223>+-}+{#fun btTriangleShapeEx_new0 as btTriangleShapeEx0    {  } -> `BtTriangleShapeEx' mkBtTriangleShapeEx* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.h?r=2223#143>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp?r=2223>+-}+{#fun btTriangleShapeEx_new1 as btTriangleShapeEx1    {  withVector3* `Vector3' , withVector3* `Vector3' , withVector3* `Vector3'  } -> `BtTriangleShapeEx' mkBtTriangleShapeEx* #}+{#fun btTriangleShapeEx_free    `( BtTriangleShapeExClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.h?r=2223#176>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp?r=2223>+-}+{#fun btTriangleShapeEx_overlap_test_conservative as btTriangleShapeEx_overlap_test_conservative    `( BtTriangleShapeExClass bc , BtTriangleShapeExClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ other+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.h?r=2223#169>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp?r=2223>+-}+{#fun btTriangleShapeEx_buildTriPlane as btTriangleShapeEx_buildTriPlane    `( BtTriangleShapeExClass bc )' =>     { withBt* `bc'  -- ^ +, withVector4* `Vector4'  peekVector4* -- ^ plane+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.h?r=2223#169>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp?r=2223>+-}+{#fun btTriangleShapeEx_buildTriPlane as btTriangleShapeEx_buildTriPlane'    `( BtTriangleShapeExClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector4-  `Vector4'  peekVector4* -- ^ plane+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.h?r=2223#162>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp?r=2223>+-}+{#fun btTriangleShapeEx_applyTransform as btTriangleShapeEx_applyTransform    `( BtTriangleShapeExClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ t+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.h?r=2223#162>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp?r=2223>+-}+{#fun btTriangleShapeEx_applyTransform as btTriangleShapeEx_applyTransform'    `( BtTriangleShapeExClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ t+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.h?r=2223#151>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp?r=2223>+-}+{#fun btTriangleShapeEx_getAabb as btTriangleShapeEx_getAabb    `( BtTriangleShapeExClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ t+, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.h?r=2223#151>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp?r=2223>+-}+{#fun btTriangleShapeEx_getAabb as btTriangleShapeEx_getAabb'    `( BtTriangleShapeExClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ t+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}
+ Physics/Bullet/Raw/BulletCollision/NarrowPhaseCollision.chs view
@@ -0,0 +1,1109 @@+{-#LANGUAGE ForeignFunctionInterface#-}+#include "Bullet.h"+module Physics.Bullet.Raw.BulletCollision.NarrowPhaseCollision (+module Physics.Bullet.Raw.BulletCollision.NarrowPhaseCollision+) where+import Control.Monad+import Foreign.Marshal.Alloc+import Foreign.ForeignPtr+import Foreign.Ptr+import Physics.Bullet.Raw.C2HS+import Physics.Bullet.Raw.Types+import Physics.Bullet.Raw.Class+-- * ClosestPointInput+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h?r=2223#45>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.cpp?r=2223>+-}+{#fun btDiscreteCollisionDetectorInterface_ClosestPointInput_new as btDiscreteCollisionDetectorInterface_ClosestPointInput    {  } -> `BtDiscreteCollisionDetectorInterface_ClosestPointInput' mkBtDiscreteCollisionDetectorInterface_ClosestPointInput* #}+{#fun btDiscreteCollisionDetectorInterface_ClosestPointInput_free    `( BtDiscreteCollisionDetectorInterface_ClosestPointInputClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h?r=2223#51>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.cpp?r=2223>+-}+{#fun btDiscreteCollisionDetectorInterface_ClosestPointInput_m_transformA_set    `( BtDiscreteCollisionDetectorInterface_ClosestPointInputClass bc )' =>     { withBt* `bc' , withTransform* `Transform'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h?r=2223#51>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.cpp?r=2223>+-}+{#fun btDiscreteCollisionDetectorInterface_ClosestPointInput_m_transformA_get    `( BtDiscreteCollisionDetectorInterface_ClosestPointInputClass bc )' =>     { withBt* `bc' , allocaTransform-  `Transform'  peekTransform* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h?r=2223#52>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.cpp?r=2223>+-}+{#fun btDiscreteCollisionDetectorInterface_ClosestPointInput_m_transformB_set    `( BtDiscreteCollisionDetectorInterface_ClosestPointInputClass bc )' =>     { withBt* `bc' , withTransform* `Transform'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h?r=2223#52>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.cpp?r=2223>+-}+{#fun btDiscreteCollisionDetectorInterface_ClosestPointInput_m_transformB_get    `( BtDiscreteCollisionDetectorInterface_ClosestPointInputClass bc )' =>     { withBt* `bc' , allocaTransform-  `Transform'  peekTransform* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h?r=2223#53>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.cpp?r=2223>+-}+{#fun btDiscreteCollisionDetectorInterface_ClosestPointInput_m_maximumDistanceSquared_set    `( BtDiscreteCollisionDetectorInterface_ClosestPointInputClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h?r=2223#53>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.cpp?r=2223>+-}+{#fun btDiscreteCollisionDetectorInterface_ClosestPointInput_m_maximumDistanceSquared_get    `( BtDiscreteCollisionDetectorInterface_ClosestPointInputClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h?r=2223#54>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.cpp?r=2223>+-}+{#fun btDiscreteCollisionDetectorInterface_ClosestPointInput_m_stackAlloc_set    `( BtDiscreteCollisionDetectorInterface_ClosestPointInputClass bc , BtStackAllocClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+-- * Result+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h?r=2223#39>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.cpp?r=2223>+-}+{#fun btDiscreteCollisionDetectorInterface_Result_setShapeIdentifiersB as btDiscreteCollisionDetectorInterface_Result_setShapeIdentifiersB    `( BtDiscreteCollisionDetectorInterface_ResultClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ partId1+,  `Int'  -- ^ index1+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h?r=2223#38>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.cpp?r=2223>+-}+{#fun btDiscreteCollisionDetectorInterface_Result_setShapeIdentifiersA as btDiscreteCollisionDetectorInterface_Result_setShapeIdentifiersA    `( BtDiscreteCollisionDetectorInterface_ResultClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ partId0+,  `Int'  -- ^ index0+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h?r=2223#40>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.cpp?r=2223>+-}+{#fun btDiscreteCollisionDetectorInterface_Result_addContactPoint as btDiscreteCollisionDetectorInterface_Result_addContactPoint    `( BtDiscreteCollisionDetectorInterface_ResultClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ normalOnBInWorld+, withVector3* `Vector3'  peekVector3* -- ^ pointInWorld+,  `Float'  -- ^ depth+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h?r=2223#40>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.cpp?r=2223>+-}+{#fun btDiscreteCollisionDetectorInterface_Result_addContactPoint as btDiscreteCollisionDetectorInterface_Result_addContactPoint'    `( BtDiscreteCollisionDetectorInterface_ResultClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ normalOnBInWorld+, allocaVector3-  `Vector3'  peekVector3* -- ^ pointInWorld+,  `Float'  -- ^ depth+ } ->  `()'  #}+-- * btConstraintRow+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#27>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btConstraintRow_new as btConstraintRow    {  } -> `BtConstraintRow' mkBtConstraintRow* #}+{#fun btConstraintRow_free    `( BtConstraintRowClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#29>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btConstraintRow_m_rhs_set    `( BtConstraintRowClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#29>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btConstraintRow_m_rhs_get    `( BtConstraintRowClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#30>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btConstraintRow_m_jacDiagInv_set    `( BtConstraintRowClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#30>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btConstraintRow_m_jacDiagInv_get    `( BtConstraintRowClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#31>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btConstraintRow_m_lowerLimit_set    `( BtConstraintRowClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#31>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btConstraintRow_m_lowerLimit_get    `( BtConstraintRowClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#32>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btConstraintRow_m_upperLimit_set    `( BtConstraintRowClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#32>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btConstraintRow_m_upperLimit_get    `( BtConstraintRowClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#33>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btConstraintRow_m_accumImpulse_set    `( BtConstraintRowClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#33>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btConstraintRow_m_accumImpulse_get    `( BtConstraintRowClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+-- * btDiscreteCollisionDetectorInterface+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h?r=2223#63>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.cpp?r=2223>+-}+{#fun btDiscreteCollisionDetectorInterface_getClosestPoints as btDiscreteCollisionDetectorInterface_getClosestPoints    `( BtDiscreteCollisionDetectorInterfaceClass bc , BtDiscreteCollisionDetectorInterface_ClosestPointInputClass p0 , BtDiscreteCollisionDetectorInterface_ResultClass p1 , BtIDebugDrawClass p2 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ input+, withBt* `p1'  -- ^ output+, withBt* `p2'  -- ^ debugDraw+,  `Bool'  -- ^ swapResults+ } ->  `()'  #}+-- * btGjkEpaSolver2+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h?r=2223#32>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp?r=2223>+-}+{#fun btGjkEpaSolver2_new as btGjkEpaSolver2    {  } -> `BtGjkEpaSolver2' mkBtGjkEpaSolver2* #}+{#fun btGjkEpaSolver2_free    `( BtGjkEpaSolver2Class bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h?r=2223#47>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp?r=2223>+-}+{#fun btGjkEpaSolver2_StackSizeRequirement as btGjkEpaSolver2_StackSizeRequirement    `( )' =>     {  } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h?r=2223#52>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp?r=2223>+-}+{#fun btGjkEpaSolver2_Distance as btGjkEpaSolver2_Distance    `(  BtConvexShapeClass p0 , BtConvexShapeClass p2 , BtGjkEpaSolver2_sResultsClass p5 )' =>     {  withBt* `p0'  -- ^ shape0+, withTransform* `Transform'  peekTransform* -- ^ wtrs0+, withBt* `p2'  -- ^ shape1+, withTransform* `Transform'  peekTransform* -- ^ wtrs1+, withVector3* `Vector3'  peekVector3* -- ^ guess+, withBt* `p5'  -- ^ results+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h?r=2223#52>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp?r=2223>+-}+{#fun btGjkEpaSolver2_Distance as btGjkEpaSolver2_Distance'    `(  BtConvexShapeClass p0 , BtConvexShapeClass p2 , BtGjkEpaSolver2_sResultsClass p5 )' =>     {  withBt* `p0'  -- ^ shape0+, allocaTransform-  `Transform'  peekTransform* -- ^ wtrs0+, withBt* `p2'  -- ^ shape1+, allocaTransform-  `Transform'  peekTransform* -- ^ wtrs1+, allocaVector3-  `Vector3'  peekVector3* -- ^ guess+, withBt* `p5'  -- ^ results+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h?r=2223#58>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp?r=2223>+-}+{#fun btGjkEpaSolver2_Penetration as btGjkEpaSolver2_Penetration    `(  BtConvexShapeClass p0 , BtConvexShapeClass p2 , BtGjkEpaSolver2_sResultsClass p5 )' =>     {  withBt* `p0'  -- ^ shape0+, withTransform* `Transform'  peekTransform* -- ^ wtrs0+, withBt* `p2'  -- ^ shape1+, withTransform* `Transform'  peekTransform* -- ^ wtrs1+, withVector3* `Vector3'  peekVector3* -- ^ guess+, withBt* `p5'  -- ^ results+,  `Bool'  -- ^ usemargins+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h?r=2223#58>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp?r=2223>+-}+{#fun btGjkEpaSolver2_Penetration as btGjkEpaSolver2_Penetration'    `(  BtConvexShapeClass p0 , BtConvexShapeClass p2 , BtGjkEpaSolver2_sResultsClass p5 )' =>     {  withBt* `p0'  -- ^ shape0+, allocaTransform-  `Transform'  peekTransform* -- ^ wtrs0+, withBt* `p2'  -- ^ shape1+, allocaTransform-  `Transform'  peekTransform* -- ^ wtrs1+, allocaVector3-  `Vector3'  peekVector3* -- ^ guess+, withBt* `p5'  -- ^ results+,  `Bool'  -- ^ usemargins+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h?r=2223#64>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp?r=2223>+-}+{#fun btGjkEpaSolver2_SignedDistance0 as btGjkEpaSolver2_SignedDistance    `(  BtConvexShapeClass p2 , BtGjkEpaSolver2_sResultsClass p4 )' =>     {  withVector3* `Vector3'  peekVector3* -- ^ position+,  `Float'  -- ^ margin+, withBt* `p2'  -- ^ shape+, withTransform* `Transform'  peekTransform* -- ^ wtrs+, withBt* `p4'  -- ^ results+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h?r=2223#64>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp?r=2223>+-}+{#fun btGjkEpaSolver2_SignedDistance0 as btGjkEpaSolver2_SignedDistance'    `(  BtConvexShapeClass p2 , BtGjkEpaSolver2_sResultsClass p4 )' =>     {  allocaVector3-  `Vector3'  peekVector3* -- ^ position+,  `Float'  -- ^ margin+, withBt* `p2'  -- ^ shape+, allocaTransform-  `Transform'  peekTransform* -- ^ wtrs+, withBt* `p4'  -- ^ results+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h?r=2223#64>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp?r=2223>+-}+{#fun btGjkEpaSolver2_SignedDistance0 as btGjkEpaSolver2_SignedDistance0    `(  BtConvexShapeClass p2 , BtGjkEpaSolver2_sResultsClass p4 )' =>     {  withVector3* `Vector3'  peekVector3* -- ^ position+,  `Float'  -- ^ margin+, withBt* `p2'  -- ^ shape+, withTransform* `Transform'  peekTransform* -- ^ wtrs+, withBt* `p4'  -- ^ results+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h?r=2223#64>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp?r=2223>+-}+{#fun btGjkEpaSolver2_SignedDistance0 as btGjkEpaSolver2_SignedDistance0'    `(  BtConvexShapeClass p2 , BtGjkEpaSolver2_sResultsClass p4 )' =>     {  allocaVector3-  `Vector3'  peekVector3* -- ^ position+,  `Float'  -- ^ margin+, withBt* `p2'  -- ^ shape+, allocaTransform-  `Transform'  peekTransform* -- ^ wtrs+, withBt* `p4'  -- ^ results+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h?r=2223#69>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp?r=2223>+-}+{#fun btGjkEpaSolver2_SignedDistance1 as btGjkEpaSolver2_SignedDistance1    `(  BtConvexShapeClass p0 , BtConvexShapeClass p2 , BtGjkEpaSolver2_sResultsClass p5 )' =>     {  withBt* `p0'  -- ^ shape0+, withTransform* `Transform'  peekTransform* -- ^ wtrs0+, withBt* `p2'  -- ^ shape1+, withTransform* `Transform'  peekTransform* -- ^ wtrs1+, withVector3* `Vector3'  peekVector3* -- ^ guess+, withBt* `p5'  -- ^ results+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h?r=2223#69>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp?r=2223>+-}+{#fun btGjkEpaSolver2_SignedDistance1 as btGjkEpaSolver2_SignedDistance1'    `(  BtConvexShapeClass p0 , BtConvexShapeClass p2 , BtGjkEpaSolver2_sResultsClass p5 )' =>     {  withBt* `p0'  -- ^ shape0+, allocaTransform-  `Transform'  peekTransform* -- ^ wtrs0+, withBt* `p2'  -- ^ shape1+, allocaTransform-  `Transform'  peekTransform* -- ^ wtrs1+, allocaVector3-  `Vector3'  peekVector3* -- ^ guess+, withBt* `p5'  -- ^ results+ } ->  `Bool'  #}+-- * btGjkPairDetector+{#fun btGjkPairDetector_free    `( BtGjkPairDetectorClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h?r=2223#75>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp?r=2223>+-}+{#fun btGjkPairDetector_setCachedSeperatingAxis as btGjkPairDetector_setCachedSeperatingAxis    `( BtGjkPairDetectorClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ seperatingAxis+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h?r=2223#75>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp?r=2223>+-}+{#fun btGjkPairDetector_setCachedSeperatingAxis as btGjkPairDetector_setCachedSeperatingAxis'    `( BtGjkPairDetectorClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ seperatingAxis+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h?r=2223#80>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp?r=2223>+-}+{#fun btGjkPairDetector_getCachedSeparatingAxis as btGjkPairDetector_getCachedSeparatingAxis    `( BtGjkPairDetectorClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h?r=2223#61>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp?r=2223>+-}+{#fun btGjkPairDetector_getClosestPoints as btGjkPairDetector_getClosestPoints    `( BtGjkPairDetectorClass bc , BtDiscreteCollisionDetectorInterface_ClosestPointInputClass p0 , BtDiscreteCollisionDetectorInterface_ResultClass p1 , BtIDebugDrawClass p2 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ input+, withBt* `p1'  -- ^ output+, withBt* `p2'  -- ^ debugDraw+,  `Bool'  -- ^ swapResults+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h?r=2223#66>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp?r=2223>+-}+{#fun btGjkPairDetector_setMinkowskiA as btGjkPairDetector_setMinkowskiA    `( BtGjkPairDetectorClass bc , BtConvexShapeClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ minkA+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h?r=2223#71>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp?r=2223>+-}+{#fun btGjkPairDetector_setMinkowskiB as btGjkPairDetector_setMinkowskiB    `( BtGjkPairDetectorClass bc , BtConvexShapeClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ minkB+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h?r=2223#95>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp?r=2223>+-}+{#fun btGjkPairDetector_setIgnoreMargin as btGjkPairDetector_setIgnoreMargin    `( BtGjkPairDetectorClass bc )' =>     { withBt* `bc'  -- ^ +,  `Bool'  -- ^ ignoreMargin+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h?r=2223#63>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp?r=2223>+-}+{#fun btGjkPairDetector_getClosestPointsNonVirtual as btGjkPairDetector_getClosestPointsNonVirtual    `( BtGjkPairDetectorClass bc , BtDiscreteCollisionDetectorInterface_ClosestPointInputClass p0 , BtDiscreteCollisionDetectorInterface_ResultClass p1 , BtIDebugDrawClass p2 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ input+, withBt* `p1'  -- ^ output+, withBt* `p2'  -- ^ debugDraw+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h?r=2223#84>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp?r=2223>+-}+{#fun btGjkPairDetector_getCachedSeparatingDistance as btGjkPairDetector_getCachedSeparatingDistance    `( BtGjkPairDetectorClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h?r=2223#51>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp?r=2223>+-}+{#fun btGjkPairDetector_m_lastUsedMethod_set    `( BtGjkPairDetectorClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h?r=2223#51>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp?r=2223>+-}+{#fun btGjkPairDetector_m_lastUsedMethod_get    `( BtGjkPairDetectorClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h?r=2223#52>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp?r=2223>+-}+{#fun btGjkPairDetector_m_curIter_set    `( BtGjkPairDetectorClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h?r=2223#52>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp?r=2223>+-}+{#fun btGjkPairDetector_m_curIter_get    `( BtGjkPairDetectorClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h?r=2223#53>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp?r=2223>+-}+{#fun btGjkPairDetector_m_degenerateSimplex_set    `( BtGjkPairDetectorClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h?r=2223#53>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp?r=2223>+-}+{#fun btGjkPairDetector_m_degenerateSimplex_get    `( BtGjkPairDetectorClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h?r=2223#54>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp?r=2223>+-}+{#fun btGjkPairDetector_m_catchDegeneracies_set    `( BtGjkPairDetectorClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h?r=2223#54>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp?r=2223>+-}+{#fun btGjkPairDetector_m_catchDegeneracies_get    `( BtGjkPairDetectorClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btManifoldPoint+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#45>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_new0 as btManifoldPoint0    {  } -> `BtManifoldPoint' mkBtManifoldPoint* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#61>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_new1 as btManifoldPoint1    {  withVector3* `Vector3' , withVector3* `Vector3' , withVector3* `Vector3' ,  `Float'  } -> `BtManifoldPoint' mkBtManifoldPoint* #}+{#fun btManifoldPoint_free    `( BtManifoldPointClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#143>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_setDistance as btManifoldPoint_setDistance    `( BtManifoldPointClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ dist+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#128>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_getLifeTime as btManifoldPoint_getLifeTime    `( BtManifoldPointClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#124>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_getDistance as btManifoldPoint_getDistance    `( BtManifoldPointClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#149>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_getAppliedImpulse as btManifoldPoint_getAppliedImpulse    `( BtManifoldPointClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#138>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_getPositionWorldOnB as btManifoldPoint_getPositionWorldOnB    `( BtManifoldPointClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#133>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_getPositionWorldOnA as btManifoldPoint_getPositionWorldOnA    `( BtManifoldPointClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#86>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_localPointA_set    `( BtManifoldPointClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#86>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_localPointA_get    `( BtManifoldPointClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#87>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_localPointB_set    `( BtManifoldPointClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#87>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_localPointB_get    `( BtManifoldPointClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#88>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_positionWorldOnB_set    `( BtManifoldPointClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#88>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_positionWorldOnB_get    `( BtManifoldPointClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#90>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_positionWorldOnA_set    `( BtManifoldPointClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#90>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_positionWorldOnA_get    `( BtManifoldPointClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#91>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_normalWorldOnB_set    `( BtManifoldPointClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#91>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_normalWorldOnB_get    `( BtManifoldPointClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#93>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_distance1_set    `( BtManifoldPointClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#93>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_distance1_get    `( BtManifoldPointClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#94>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_combinedFriction_set    `( BtManifoldPointClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#94>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_combinedFriction_get    `( BtManifoldPointClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#95>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_combinedRestitution_set    `( BtManifoldPointClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#95>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_combinedRestitution_get    `( BtManifoldPointClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#98>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_partId0_set    `( BtManifoldPointClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#98>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_partId0_get    `( BtManifoldPointClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#99>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_partId1_set    `( BtManifoldPointClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#99>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_partId1_get    `( BtManifoldPointClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#100>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_index0_set    `( BtManifoldPointClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#100>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_index0_get    `( BtManifoldPointClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#101>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_index1_set    `( BtManifoldPointClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#101>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_index1_get    `( BtManifoldPointClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#104>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_appliedImpulse_set    `( BtManifoldPointClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#104>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_appliedImpulse_get    `( BtManifoldPointClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#106>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_lateralFrictionInitialized_set    `( BtManifoldPointClass bc )' =>     { withBt* `bc' ,  `Bool'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#106>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_lateralFrictionInitialized_get    `( BtManifoldPointClass bc )' =>     { withBt* `bc'  } ->  `Bool'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#107>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_appliedImpulseLateral1_set    `( BtManifoldPointClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#107>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_appliedImpulseLateral1_get    `( BtManifoldPointClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#108>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_appliedImpulseLateral2_set    `( BtManifoldPointClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#108>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_appliedImpulseLateral2_get    `( BtManifoldPointClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#109>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_contactMotion1_set    `( BtManifoldPointClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#109>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_contactMotion1_get    `( BtManifoldPointClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#110>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_contactMotion2_set    `( BtManifoldPointClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#110>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_contactMotion2_get    `( BtManifoldPointClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#111>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_contactCFM1_set    `( BtManifoldPointClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#111>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_contactCFM1_get    `( BtManifoldPointClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#112>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_contactCFM2_set    `( BtManifoldPointClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#112>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_contactCFM2_get    `( BtManifoldPointClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#114>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_lifeTime_set    `( BtManifoldPointClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#114>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_lifeTime_get    `( BtManifoldPointClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#116>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_lateralFrictionDir1_set    `( BtManifoldPointClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#116>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_lateralFrictionDir1_get    `( BtManifoldPointClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#117>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_lateralFrictionDir2_set    `( BtManifoldPointClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h?r=2223#117>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.cpp?r=2223>+-}+{#fun btManifoldPoint_m_lateralFrictionDir2_get    `( BtManifoldPointClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+-- * btPersistentManifold+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h?r=2223#84>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp?r=2223>+-}+{#fun btPersistentManifold_new0 as btPersistentManifold0    {  } -> `BtPersistentManifold' mkBtPersistentManifold* #}+{#fun btPersistentManifold_free    `( BtPersistentManifoldClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h?r=2223#163>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp?r=2223>+-}+{#fun btPersistentManifold_replaceContactPoint as btPersistentManifold_replaceContactPoint    `( BtPersistentManifoldClass bc , BtManifoldPointClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ newPoint+,  `Int'  -- ^ insertIndex+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h?r=2223#106>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp?r=2223>+-}+{#fun btPersistentManifold_clearUserCache as btPersistentManifold_clearUserCache    `( BtPersistentManifoldClass bc , BtManifoldPointClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ pt+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h?r=2223#129>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp?r=2223>+-}+{#fun btPersistentManifold_getContactProcessingThreshold as btPersistentManifold_getContactProcessingThreshold    `( BtPersistentManifoldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h?r=2223#213>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp?r=2223>+-}+{#fun btPersistentManifold_clearManifold as btPersistentManifold_clearManifold    `( BtPersistentManifoldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h?r=2223#112>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp?r=2223>+-}+{#fun btPersistentManifold_getNumContacts as btPersistentManifold_getNumContacts    `( BtPersistentManifoldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h?r=2223#136>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp?r=2223>+-}+{#fun btPersistentManifold_addManifoldPoint as btPersistentManifold_addManifoldPoint    `( BtPersistentManifoldClass bc , BtManifoldPointClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ newPoint+ } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h?r=2223#134>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp?r=2223>+-}+{#fun btPersistentManifold_getCacheEntry as btPersistentManifold_getCacheEntry    `( BtPersistentManifoldClass bc , BtManifoldPointClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ newPoint+ } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h?r=2223#200>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp?r=2223>+-}+{#fun btPersistentManifold_validContactDistance as btPersistentManifold_validContactDistance    `( BtPersistentManifoldClass bc , BtManifoldPointClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ pt+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h?r=2223#138>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp?r=2223>+-}+{#fun btPersistentManifold_removeContactPoint as btPersistentManifold_removeContactPoint    `( BtPersistentManifoldClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h?r=2223#114>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp?r=2223>+-}+{#fun btPersistentManifold_getContactPoint0 as btPersistentManifold_getContactPoint    `( BtPersistentManifoldClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BtManifoldPoint' mkBtManifoldPoint*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h?r=2223#114>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp?r=2223>+-}+{#fun btPersistentManifold_getContactPoint0 as btPersistentManifold_getContactPoint0    `( BtPersistentManifoldClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BtManifoldPoint' mkBtManifoldPoint*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h?r=2223#120>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp?r=2223>+-}+{#fun btPersistentManifold_getContactPoint1 as btPersistentManifold_getContactPoint1    `( BtPersistentManifoldClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BtManifoldPoint' mkBtManifoldPoint*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h?r=2223#210>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp?r=2223>+-}+{#fun btPersistentManifold_refreshContactPoints as btPersistentManifold_refreshContactPoints    `( BtPersistentManifoldClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ trA+, withTransform* `Transform'  peekTransform* -- ^ trB+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h?r=2223#210>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp?r=2223>+-}+{#fun btPersistentManifold_refreshContactPoints as btPersistentManifold_refreshContactPoints'    `( BtPersistentManifoldClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ trA+, allocaTransform-  `Transform'  peekTransform* -- ^ trB+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h?r=2223#127>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp?r=2223>+-}+{#fun btPersistentManifold_getContactBreakingThreshold as btPersistentManifold_getContactBreakingThreshold    `( BtPersistentManifoldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h?r=2223#79>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp?r=2223>+-}+{#fun btPersistentManifold_m_companionIdA_set    `( BtPersistentManifoldClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h?r=2223#79>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp?r=2223>+-}+{#fun btPersistentManifold_m_companionIdA_get    `( BtPersistentManifoldClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h?r=2223#80>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp?r=2223>+-}+{#fun btPersistentManifold_m_companionIdB_set    `( BtPersistentManifoldClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h?r=2223#80>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp?r=2223>+-}+{#fun btPersistentManifold_m_companionIdB_get    `( BtPersistentManifoldClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h?r=2223#82>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp?r=2223>+-}+{#fun btPersistentManifold_m_index1a_set    `( BtPersistentManifoldClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h?r=2223#82>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp?r=2223>+-}+{#fun btPersistentManifold_m_index1a_get    `( BtPersistentManifoldClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btStorageResult+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h?r=2223#79>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.cpp?r=2223>+-}+{#fun btStorageResult_addContactPoint as btStorageResult_addContactPoint    `( BtStorageResultClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ normalOnBInWorld+, withVector3* `Vector3'  peekVector3* -- ^ pointInWorld+,  `Float'  -- ^ depth+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h?r=2223#79>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.cpp?r=2223>+-}+{#fun btStorageResult_addContactPoint as btStorageResult_addContactPoint'    `( BtStorageResultClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ normalOnBInWorld+, allocaVector3-  `Vector3'  peekVector3* -- ^ pointInWorld+,  `Float'  -- ^ depth+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h?r=2223#69>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.cpp?r=2223>+-}+{#fun btStorageResult_m_normalOnSurfaceB_set    `( BtStorageResultClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h?r=2223#69>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.cpp?r=2223>+-}+{#fun btStorageResult_m_normalOnSurfaceB_get    `( BtStorageResultClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h?r=2223#70>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.cpp?r=2223>+-}+{#fun btStorageResult_m_closestPointInB_set    `( BtStorageResultClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h?r=2223#70>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.cpp?r=2223>+-}+{#fun btStorageResult_m_closestPointInB_get    `( BtStorageResultClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h?r=2223#71>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.cpp?r=2223>+-}+{#fun btStorageResult_m_distance_set    `( BtStorageResultClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h?r=2223#71>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.cpp?r=2223>+-}+{#fun btStorageResult_m_distance_get    `( BtStorageResultClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+-- * btSubSimplexClosestResult+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#57>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btSubSimplexClosestResult_new as btSubSimplexClosestResult    {  } -> `BtSubSimplexClosestResult' mkBtSubSimplexClosestResult* #}+{#fun btSubSimplexClosestResult_free    `( BtSubSimplexClosestResultClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#66>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btSubSimplexClosestResult_reset as btSubSimplexClosestResult_reset    `( BtSubSimplexClosestResultClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#72>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btSubSimplexClosestResult_isValid as btSubSimplexClosestResult_isValid    `( BtSubSimplexClosestResultClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#82>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btSubSimplexClosestResult_setBarycentricCoordinates as btSubSimplexClosestResult_setBarycentricCoordinates    `( BtSubSimplexClosestResultClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ a+,  `Float'  -- ^ b+,  `Float'  -- ^ c+,  `Float'  -- ^ d+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#58>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btSubSimplexClosestResult_m_closestPointOnSimplex_set    `( BtSubSimplexClosestResultClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#58>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btSubSimplexClosestResult_m_closestPointOnSimplex_get    `( BtSubSimplexClosestResultClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#64>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btSubSimplexClosestResult_m_degenerate_set    `( BtSubSimplexClosestResultClass bc )' =>     { withBt* `bc' ,  `Bool'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#64>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btSubSimplexClosestResult_m_degenerate_get    `( BtSubSimplexClosestResultClass bc )' =>     { withBt* `bc'  } ->  `Bool'   #}+-- * btUsageBitfield+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#33>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btUsageBitfield_new as btUsageBitfield    {  } -> `BtUsageBitfield' mkBtUsageBitfield* #}+{#fun btUsageBitfield_free    `( BtUsageBitfieldClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#38>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btUsageBitfield_reset as btUsageBitfield_reset    `( BtUsageBitfieldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#49>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btUsageBitfield_unused1_set    `( BtUsageBitfieldClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#49>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btUsageBitfield_unused1_get    `( BtUsageBitfieldClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#50>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btUsageBitfield_unused2_set    `( BtUsageBitfieldClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#50>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btUsageBitfield_unused2_get    `( BtUsageBitfieldClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#51>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btUsageBitfield_unused3_set    `( BtUsageBitfieldClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#51>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btUsageBitfield_unused3_get    `( BtUsageBitfieldClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#52>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btUsageBitfield_unused4_set    `( BtUsageBitfieldClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#52>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btUsageBitfield_unused4_get    `( BtUsageBitfieldClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#45>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btUsageBitfield_usedVertexA_set    `( BtUsageBitfieldClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#45>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btUsageBitfield_usedVertexA_get    `( BtUsageBitfieldClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#46>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btUsageBitfield_usedVertexB_set    `( BtUsageBitfieldClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#46>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btUsageBitfield_usedVertexB_get    `( BtUsageBitfieldClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#47>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btUsageBitfield_usedVertexC_set    `( BtUsageBitfieldClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#47>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btUsageBitfield_usedVertexC_get    `( BtUsageBitfieldClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#48>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btUsageBitfield_usedVertexD_set    `( BtUsageBitfieldClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#48>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btUsageBitfield_usedVertexD_get    `( BtUsageBitfieldClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btVoronoiSimplexSolver+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#133>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_new as btVoronoiSimplexSolver    {  } -> `BtVoronoiSimplexSolver' mkBtVoronoiSimplexSolver* #}+{#fun btVoronoiSimplexSolver_free    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#137>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_reset as btVoronoiSimplexSolver_reset    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#125>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_updateClosestVectorAndPoints as btVoronoiSimplexSolver_updateClosestVectorAndPoints    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#141>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_setEqualVertexThreshold as btVoronoiSimplexSolver_setEqualVertexThreshold    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ threshold+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#162>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_inSimplex as btVoronoiSimplexSolver_inSimplex    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ w+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#162>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_inSimplex as btVoronoiSimplexSolver_inSimplex'    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ w+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#151>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_closest as btVoronoiSimplexSolver_closest    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ v+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#151>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_closest as btVoronoiSimplexSolver_closest'    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ v+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#127>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_closestPtPointTetrahedron as btVoronoiSimplexSolver_closestPtPointTetrahedron    `( BtVoronoiSimplexSolverClass bc , BtSubSimplexClosestResultClass p5 )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ p+, withVector3* `Vector3'  peekVector3* -- ^ a+, withVector3* `Vector3'  peekVector3* -- ^ b+, withVector3* `Vector3'  peekVector3* -- ^ c+, withVector3* `Vector3'  peekVector3* -- ^ d+, withBt* `p5'  -- ^ finalResult+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#127>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_closestPtPointTetrahedron as btVoronoiSimplexSolver_closestPtPointTetrahedron'    `( BtVoronoiSimplexSolverClass bc , BtSubSimplexClosestResultClass p5 )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ p+, allocaVector3-  `Vector3'  peekVector3* -- ^ a+, allocaVector3-  `Vector3'  peekVector3* -- ^ b+, allocaVector3-  `Vector3'  peekVector3* -- ^ c+, allocaVector3-  `Vector3'  peekVector3* -- ^ d+, withBt* `p5'  -- ^ finalResult+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#129>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_closestPtPointTriangle as btVoronoiSimplexSolver_closestPtPointTriangle    `( BtVoronoiSimplexSolverClass bc , BtSubSimplexClosestResultClass p4 )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ p+, withVector3* `Vector3'  peekVector3* -- ^ a+, withVector3* `Vector3'  peekVector3* -- ^ b+, withVector3* `Vector3'  peekVector3* -- ^ c+, withBt* `p4'  -- ^ result+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#129>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_closestPtPointTriangle as btVoronoiSimplexSolver_closestPtPointTriangle'    `( BtVoronoiSimplexSolverClass bc , BtSubSimplexClosestResultClass p4 )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ p+, allocaVector3-  `Vector3'  peekVector3* -- ^ a+, allocaVector3-  `Vector3'  peekVector3* -- ^ b+, allocaVector3-  `Vector3'  peekVector3* -- ^ c+, withBt* `p4'  -- ^ result+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#128>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_pointOutsideOfPlane as btVoronoiSimplexSolver_pointOutsideOfPlane    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ p+, withVector3* `Vector3'  peekVector3* -- ^ a+, withVector3* `Vector3'  peekVector3* -- ^ b+, withVector3* `Vector3'  peekVector3* -- ^ c+, withVector3* `Vector3'  peekVector3* -- ^ d+ } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#128>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_pointOutsideOfPlane as btVoronoiSimplexSolver_pointOutsideOfPlane'    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ p+, allocaVector3-  `Vector3'  peekVector3* -- ^ a+, allocaVector3-  `Vector3'  peekVector3* -- ^ b+, allocaVector3-  `Vector3'  peekVector3* -- ^ c+, allocaVector3-  `Vector3'  peekVector3* -- ^ d+ } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#166>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_emptySimplex as btVoronoiSimplexSolver_emptySimplex    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#153>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_maxVertex as btVoronoiSimplexSolver_maxVertex    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#139>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_addVertex as btVoronoiSimplexSolver_addVertex    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ w+, withVector3* `Vector3'  peekVector3* -- ^ p+, withVector3* `Vector3'  peekVector3* -- ^ q+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#139>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_addVertex as btVoronoiSimplexSolver_addVertex'    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ w+, allocaVector3-  `Vector3'  peekVector3* -- ^ p+, allocaVector3-  `Vector3'  peekVector3* -- ^ q+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#124>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_reduceVertices as btVoronoiSimplexSolver_reduceVertices    `( BtVoronoiSimplexSolverClass bc , BtUsageBitfieldClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ usedVerts+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#164>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_backup_closest as btVoronoiSimplexSolver_backup_closest    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ v+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#164>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_backup_closest as btVoronoiSimplexSolver_backup_closest'    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ v+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#123>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_removeVertex as btVoronoiSimplexSolver_removeVertex    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#146>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_getEqualVertexThreshold as btVoronoiSimplexSolver_getEqualVertexThreshold    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#168>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_compute_points as btVoronoiSimplexSolver_compute_points    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ p1+, withVector3* `Vector3'  peekVector3* -- ^ p2+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#168>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_compute_points as btVoronoiSimplexSolver_compute_points'    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ p1+, allocaVector3-  `Vector3'  peekVector3* -- ^ p2+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#155>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_fullSimplex as btVoronoiSimplexSolver_fullSimplex    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#170>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_numVertices as btVoronoiSimplexSolver_numVertices    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#110>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_m_cachedP1_set    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#110>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_m_cachedP1_get    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#111>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_m_cachedP2_set    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#111>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_m_cachedP2_get    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#112>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_m_cachedV_set    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#112>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_m_cachedV_get    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#116>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_m_cachedValidClosest_set    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc' ,  `Bool'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#116>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_m_cachedValidClosest_get    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc'  } ->  `Bool'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#115>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_m_equalVertexThreshold_set    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#115>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_m_equalVertexThreshold_get    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#113>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_m_lastW_set    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#113>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_m_lastW_get    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#121>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_m_needsUpdate_set    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc' ,  `Bool'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#121>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_m_needsUpdate_get    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc'  } ->  `Bool'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#102>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_m_numVertices_set    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h?r=2223#102>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp?r=2223>+-}+{#fun btVoronoiSimplexSolver_m_numVertices_get    `( BtVoronoiSimplexSolverClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * sResults+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h?r=2223#34>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp?r=2223>+-}+{#fun btGjkEpaSolver2_sResults_new as btGjkEpaSolver2_sResults    {  } -> `BtGjkEpaSolver2_sResults' mkBtGjkEpaSolver2_sResults* #}+{#fun btGjkEpaSolver2_sResults_free    `( BtGjkEpaSolver2_sResultsClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h?r=2223#44>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp?r=2223>+-}+{#fun btGjkEpaSolver2_sResults_distance_set    `( BtGjkEpaSolver2_sResultsClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h?r=2223#44>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp?r=2223>+-}+{#fun btGjkEpaSolver2_sResults_distance_get    `( BtGjkEpaSolver2_sResultsClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h?r=2223#43>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp?r=2223>+-}+{#fun btGjkEpaSolver2_sResults_normal_set    `( BtGjkEpaSolver2_sResultsClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h?r=2223#43>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp?r=2223>+-}+{#fun btGjkEpaSolver2_sResults_normal_get    `( BtGjkEpaSolver2_sResultsClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}
+ Physics/Bullet/Raw/BulletDynamics.chs view
@@ -0,0 +1,18 @@+{-#LANGUAGE ForeignFunctionInterface#-}+#include "Bullet.h"+module Physics.Bullet.Raw.BulletDynamics (+module Physics.Bullet.Raw.BulletDynamics.ConstraintSolver,+module Physics.Bullet.Raw.BulletDynamics.Dynamics,+module Physics.Bullet.Raw.BulletDynamics.Vehicle,+module Physics.Bullet.Raw.BulletDynamics+) where+import Control.Monad+import Foreign.Marshal.Alloc+import Foreign.ForeignPtr+import Foreign.Ptr+import Physics.Bullet.Raw.C2HS+import Physics.Bullet.Raw.Types+import Physics.Bullet.Raw.Class+import Physics.Bullet.Raw.BulletDynamics.ConstraintSolver+import Physics.Bullet.Raw.BulletDynamics.Dynamics+import Physics.Bullet.Raw.BulletDynamics.Vehicle
+ Physics/Bullet/Raw/BulletDynamics/ConstraintSolver.chs view
@@ -0,0 +1,3571 @@+{-#LANGUAGE ForeignFunctionInterface#-}+#include "Bullet.h"+module Physics.Bullet.Raw.BulletDynamics.ConstraintSolver (+module Physics.Bullet.Raw.BulletDynamics.ConstraintSolver+) where+import Control.Monad+import Foreign.Marshal.Alloc+import Foreign.ForeignPtr+import Foreign.Ptr+import Physics.Bullet.Raw.C2HS+import Physics.Bullet.Raw.Types+import Physics.Bullet.Raw.Class+-- * btAngularLimit+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#359>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btAngularLimit_new as btAngularLimit    {  } -> `BtAngularLimit' mkBtAngularLimit* #}+{#fun btAngularLimit_free    `( BtAngularLimitClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#398>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btAngularLimit_getCorrection as btAngularLimit_getCorrection    `( BtAngularLimitClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#373>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btAngularLimit_set as btAngularLimit_set    `( BtAngularLimitClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ low+,  `Float'  -- ^ high+,  `Float'  -- ^ _softness+,  `Float'  -- ^ _biasFactor+,  `Float'  -- ^ _relaxationFactor+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#426>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btAngularLimit_getError as btAngularLimit_getError    `( BtAngularLimitClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#416>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btAngularLimit_isLimit as btAngularLimit_isLimit    `( BtAngularLimitClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#404>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btAngularLimit_getSign as btAngularLimit_getSign    `( BtAngularLimitClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#386>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btAngularLimit_getBiasFactor as btAngularLimit_getBiasFactor    `( BtAngularLimitClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#380>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btAngularLimit_getSoftness as btAngularLimit_getSoftness    `( BtAngularLimitClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#430>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btAngularLimit_getHigh as btAngularLimit_getHigh    `( BtAngularLimitClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#410>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btAngularLimit_getHalfRange as btAngularLimit_getHalfRange    `( BtAngularLimitClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#428>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btAngularLimit_getLow as btAngularLimit_getLow    `( BtAngularLimitClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#392>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btAngularLimit_getRelaxationFactor as btAngularLimit_getRelaxationFactor    `( BtAngularLimitClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+-- * btConeTwistConstraint+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#129>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_new0 as btConeTwistConstraint0    `( BtRigidBodyClass p0 , BtRigidBodyClass p1 )' =>     {  withBt* `p0' , withBt* `p1' , withTransform* `Transform' , withTransform* `Transform'  } -> `BtConeTwistConstraint' mkBtConeTwistConstraint* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#131>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_new1 as btConeTwistConstraint1    `( BtRigidBodyClass p0 )' =>     {  withBt* `p0' , withTransform* `Transform'  } -> `BtConeTwistConstraint' mkBtConeTwistConstraint* #}+{#fun btConeTwistConstraint_free    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#152>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_getRigidBodyB as btConeTwistConstraint_getRigidBodyB    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtRigidBody' mkBtRigidBody*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#141>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_getInfo2NonVirtual as btConeTwistConstraint_getInfo2NonVirtual    `( BtConeTwistConstraintClass bc , BtTypedConstraint_btConstraintInfo2Class p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ info+, withTransform* `Transform'  peekTransform* -- ^ transA+, withTransform* `Transform'  peekTransform* -- ^ transB+, withMatrix3x3* `Matrix3x3'  peekMatrix3x3* -- ^ invInertiaWorldA+, withMatrix3x3* `Matrix3x3'  peekMatrix3x3* -- ^ invInertiaWorldB+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#141>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_getInfo2NonVirtual as btConeTwistConstraint_getInfo2NonVirtual'    `( BtConeTwistConstraintClass bc , BtTypedConstraint_btConstraintInfo2Class p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ info+, allocaTransform-  `Transform'  peekTransform* -- ^ transA+, allocaTransform-  `Transform'  peekTransform* -- ^ transB+, allocaMatrix3x3-  `Matrix3x3'  peekMatrix3x3* -- ^ invInertiaWorldA+, allocaMatrix3x3-  `Matrix3x3'  peekMatrix3x3* -- ^ invInertiaWorldB+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#148>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_getRigidBodyA as btConeTwistConstraint_getRigidBodyA    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtRigidBody' mkBtRigidBody*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#246>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_isPastSwingLimit as btConeTwistConstraint_isPastSwingLimit    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#274>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_getFrameOffsetA as btConeTwistConstraint_getFrameOffsetA    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#279>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_getFrameOffsetB as btConeTwistConstraint_getFrameOffsetB    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#234>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_getSwingSpan2 as btConeTwistConstraint_getSwingSpan2    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#230>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_getSwingSpan1 as btConeTwistConstraint_getSwingSpan1    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#228>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_calcAngleInfo2 as btConeTwistConstraint_calcAngleInfo2    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ transA+, withTransform* `Transform'  peekTransform* -- ^ transB+, withMatrix3x3* `Matrix3x3'  peekMatrix3x3* -- ^ invInertiaWorldA+, withMatrix3x3* `Matrix3x3'  peekMatrix3x3* -- ^ invInertiaWorldB+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#228>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_calcAngleInfo2 as btConeTwistConstraint_calcAngleInfo2'    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ transA+, allocaTransform-  `Transform'  peekTransform* -- ^ transB+, allocaMatrix3x3-  `Matrix3x3'  peekMatrix3x3* -- ^ invInertiaWorldA+, allocaMatrix3x3-  `Matrix3x3'  peekMatrix3x3* -- ^ invInertiaWorldB+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#270>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_setParam as btConeTwistConstraint_setParam    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ num+,  `Float'  -- ^ value+,  `Int'  -- ^ axis+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#286>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_getParam as btConeTwistConstraint_getParam    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ num+,  `Int'  -- ^ axis+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#248>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_setDamping as btConeTwistConstraint_setDamping    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ damping+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#135>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_getInfo1 as btConeTwistConstraint_getInfo1    `( BtConeTwistConstraintClass bc , BtTypedConstraint_btConstraintInfo1Class p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ info+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#139>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_getInfo2 as btConeTwistConstraint_getInfo2    `( BtConeTwistConstraintClass bc , BtTypedConstraint_btConstraintInfo2Class p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ info+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#318>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_calculateSerializeBufferSize as btConeTwistConstraint_calculateSerializeBufferSize    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#242>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_getTwistAngle as btConeTwistConstraint_getTwistAngle    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#252>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_setMaxMotorImpulseNormalized as btConeTwistConstraint_setMaxMotorImpulseNormalized    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ maxMotorImpulse+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#212>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_getSolveTwistLimit as btConeTwistConstraint_getSolveTwistLimit    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#250>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_enableMotor as btConeTwistConstraint_enableMotor    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Bool'  -- ^ b+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#210>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_getBFrame as btConeTwistConstraint_getBFrame    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#137>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_getInfo1NonVirtual as btConeTwistConstraint_getInfo1NonVirtual    `( BtConeTwistConstraintClass bc , BtTypedConstraint_btConstraintInfo1Class p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ info+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#254>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_getFixThresh as btConeTwistConstraint_getFixThresh    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#217>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_getSolveSwingLimit as btConeTwistConstraint_getSolveSwingLimit    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#157>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_setAngularOnly as btConeTwistConstraint_setAngularOnly    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Bool'  -- ^ angularOnly+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#272>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_setFrames as btConeTwistConstraint_setFrames    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ frameA+, withTransform* `Transform'  peekTransform* -- ^ frameB+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#272>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_setFrames as btConeTwistConstraint_setFrames'    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ frameA+, allocaTransform-  `Transform'  peekTransform* -- ^ frameB+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#162>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_setLimit0 as btConeTwistConstraint_setLimit    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ limitIndex+,  `Float'  -- ^ limitValue+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#162>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_setLimit0 as btConeTwistConstraint_setLimit0    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ limitIndex+,  `Float'  -- ^ limitValue+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#198>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_setLimit1 as btConeTwistConstraint_setLimit1    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ _swingSpan1+,  `Float'  -- ^ _swingSpan2+,  `Float'  -- ^ _twistSpan+,  `Float'  -- ^ _softness+,  `Float'  -- ^ _biasFactor+,  `Float'  -- ^ _relaxationFactor+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#133>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_buildJacobian as btConeTwistConstraint_buildJacobian    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#222>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_getTwistLimitSign as btConeTwistConstraint_getTwistLimitSign    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#251>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_setMaxMotorImpulse as btConeTwistConstraint_setMaxMotorImpulse    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ maxMotorImpulse+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#145>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_updateRHS as btConeTwistConstraint_updateRHS    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ timeStep+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#261>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_setMotorTarget as btConeTwistConstraint_setMotorTarget    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, withQuaternion* `Quaternion'  peekQuaternion* -- ^ q+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#261>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_setMotorTarget as btConeTwistConstraint_setMotorTarget'    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaQuaternion-  `Quaternion'  peekQuaternion* -- ^ q+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#255>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_setFixThresh as btConeTwistConstraint_setFixThresh    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ fixThresh+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#264>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_setMotorTargetInConstraintSpace as btConeTwistConstraint_setMotorTargetInConstraintSpace    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, withQuaternion* `Quaternion'  peekQuaternion* -- ^ q+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#264>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_setMotorTargetInConstraintSpace as btConeTwistConstraint_setMotorTargetInConstraintSpace'    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaQuaternion-  `Quaternion'  peekQuaternion* -- ^ q+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#143>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_solveConstraintObsolete as btConeTwistConstraint_solveConstraintObsolete    `( BtConeTwistConstraintClass bc , BtRigidBodyClass p0 , BtRigidBodyClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ bodyA+, withBt* `p1'  -- ^ bodyB+,  `Float'  -- ^ timeStep+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#266>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_GetPointForAngle as btConeTwistConstraint_GetPointForAngle    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ fAngleInRadians+,  `Float'  -- ^ fLength+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#227>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_calcAngleInfo as btConeTwistConstraint_calcAngleInfo    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#238>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_getTwistSpan as btConeTwistConstraint_getTwistSpan    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#209>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraint_getAFrame as btConeTwistConstraint_getAFrame    `( BtConeTwistConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+-- * btConeTwistConstraintData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#297>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraintData_new as btConeTwistConstraintData    {  } -> `BtConeTwistConstraintData' mkBtConeTwistConstraintData* #}+{#fun btConeTwistConstraintData_free    `( BtConeTwistConstraintDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#303>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraintData_m_swingSpan1_set    `( BtConeTwistConstraintDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#303>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraintData_m_swingSpan1_get    `( BtConeTwistConstraintDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#304>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraintData_m_swingSpan2_set    `( BtConeTwistConstraintDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#304>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraintData_m_swingSpan2_get    `( BtConeTwistConstraintDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#305>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraintData_m_twistSpan_set    `( BtConeTwistConstraintDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#305>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraintData_m_twistSpan_get    `( BtConeTwistConstraintDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#306>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraintData_m_limitSoftness_set    `( BtConeTwistConstraintDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#306>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraintData_m_limitSoftness_get    `( BtConeTwistConstraintDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#307>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraintData_m_biasFactor_set    `( BtConeTwistConstraintDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#307>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraintData_m_biasFactor_get    `( BtConeTwistConstraintDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#308>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraintData_m_relaxationFactor_set    `( BtConeTwistConstraintDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#308>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraintData_m_relaxationFactor_get    `( BtConeTwistConstraintDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#310>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraintData_m_damping_set    `( BtConeTwistConstraintDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h?r=2223#310>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp?r=2223>+-}+{#fun btConeTwistConstraintData_m_damping_get    `( BtConeTwistConstraintDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+-- * btConstraintInfo1+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#95>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_btConstraintInfo1_new as btTypedConstraint_btConstraintInfo1    {  } -> `BtTypedConstraint_btConstraintInfo1' mkBtTypedConstraint_btConstraintInfo1* #}+{#fun btTypedConstraint_btConstraintInfo1_free    `( BtTypedConstraint_btConstraintInfo1Class bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#96>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_btConstraintInfo1_m_numConstraintRows_set    `( BtTypedConstraint_btConstraintInfo1Class bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#96>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_btConstraintInfo1_m_numConstraintRows_get    `( BtTypedConstraint_btConstraintInfo1Class bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#96>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_btConstraintInfo1_nub_set    `( BtTypedConstraint_btConstraintInfo1Class bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#96>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_btConstraintInfo1_nub_get    `( BtTypedConstraint_btConstraintInfo1Class bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btConstraintInfo2+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#99>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_btConstraintInfo2_new as btTypedConstraint_btConstraintInfo2    {  } -> `BtTypedConstraint_btConstraintInfo2' mkBtTypedConstraint_btConstraintInfo2* #}+{#fun btTypedConstraint_btConstraintInfo2_free    `( BtTypedConstraint_btConstraintInfo2Class bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#102>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_btConstraintInfo2_erp_set    `( BtTypedConstraint_btConstraintInfo2Class bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#102>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_btConstraintInfo2_erp_get    `( BtTypedConstraint_btConstraintInfo2Class bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#102>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_btConstraintInfo2_fps_set    `( BtTypedConstraint_btConstraintInfo2Class bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#102>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_btConstraintInfo2_fps_get    `( BtTypedConstraint_btConstraintInfo2Class bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#130>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_btConstraintInfo2_m_damping_set    `( BtTypedConstraint_btConstraintInfo2Class bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#130>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_btConstraintInfo2_m_damping_get    `( BtTypedConstraint_btConstraintInfo2Class bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#127>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_btConstraintInfo2_m_numIterations_set    `( BtTypedConstraint_btConstraintInfo2Class bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#127>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_btConstraintInfo2_m_numIterations_get    `( BtTypedConstraint_btConstraintInfo2Class bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#111>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_btConstraintInfo2_rowskip_set    `( BtTypedConstraint_btConstraintInfo2Class bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#111>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_btConstraintInfo2_rowskip_get    `( BtTypedConstraint_btConstraintInfo2Class bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btConstraintSetting+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h?r=2223#36>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp?r=2223>+-}+{#fun btConstraintSetting_new as btConstraintSetting    {  } -> `BtConstraintSetting' mkBtConstraintSetting* #}+{#fun btConstraintSetting_free    `( BtConstraintSettingClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h?r=2223#42>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp?r=2223>+-}+{#fun btConstraintSetting_m_tau_set    `( BtConstraintSettingClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h?r=2223#42>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp?r=2223>+-}+{#fun btConstraintSetting_m_tau_get    `( BtConstraintSettingClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h?r=2223#43>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp?r=2223>+-}+{#fun btConstraintSetting_m_damping_set    `( BtConstraintSettingClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h?r=2223#43>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp?r=2223>+-}+{#fun btConstraintSetting_m_damping_get    `( BtConstraintSettingClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h?r=2223#44>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp?r=2223>+-}+{#fun btConstraintSetting_m_impulseClamp_set    `( BtConstraintSettingClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h?r=2223#44>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp?r=2223>+-}+{#fun btConstraintSetting_m_impulseClamp_get    `( BtConstraintSettingClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+-- * btConstraintSolver+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConstraintSolver.h?r=2223#46>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConstraintSolver.cpp?r=2223>+-}+{#fun btConstraintSolver_reset as btConstraintSolver_reset    `( BtConstraintSolverClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConstraintSolver.h?r=2223#43>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConstraintSolver.cpp?r=2223>+-}+{#fun btConstraintSolver_allSolved as btConstraintSolver_allSolved    `( BtConstraintSolverClass bc , BtContactSolverInfoClass p0 , BtIDebugDrawClass p1 , BtStackAllocClass p2 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ arg0+, withBt* `p1'  -- ^ arg1+, withBt* `p2'  -- ^ arg2+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConstraintSolver.h?r=2223#38>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btConstraintSolver.cpp?r=2223>+-}+{#fun btConstraintSolver_prepareSolve as btConstraintSolver_prepareSolve    `( BtConstraintSolverClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ arg0+,  `Int'  -- ^ arg1+ } ->  `()'  #}+-- * btContactConstraint+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactConstraint.h?r=2223#50>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactConstraint.cpp?r=2223>+-}+{#fun btContactConstraint_getInfo1 as btContactConstraint_getInfo1    `( BtContactConstraintClass bc , BtTypedConstraint_btConstraintInfo1Class p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ info+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactConstraint.h?r=2223#36>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactConstraint.cpp?r=2223>+-}+{#fun btContactConstraint_setContactManifold as btContactConstraint_setContactManifold    `( BtContactConstraintClass bc , BtPersistentManifoldClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ contactManifold+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactConstraint.h?r=2223#55>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactConstraint.cpp?r=2223>+-}+{#fun btContactConstraint_buildJacobian as btContactConstraint_buildJacobian    `( BtContactConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactConstraint.h?r=2223#52>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactConstraint.cpp?r=2223>+-}+{#fun btContactConstraint_getInfo2 as btContactConstraint_getInfo2    `( BtContactConstraintClass bc , BtTypedConstraint_btConstraintInfo2Class p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ info+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactConstraint.h?r=2223#38>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactConstraint.cpp?r=2223>+-}+{#fun btContactConstraint_getContactManifold0 as btContactConstraint_getContactManifold    `( BtContactConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtPersistentManifold' mkBtPersistentManifold*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactConstraint.h?r=2223#38>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactConstraint.cpp?r=2223>+-}+{#fun btContactConstraint_getContactManifold0 as btContactConstraint_getContactManifold0    `( BtContactConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtPersistentManifold' mkBtPersistentManifold*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactConstraint.h?r=2223#43>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactConstraint.cpp?r=2223>+-}+{#fun btContactConstraint_getContactManifold1 as btContactConstraint_getContactManifold1    `( BtContactConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtPersistentManifold' mkBtPersistentManifold*  #}+-- * btContactSolverInfo+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#65>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfo_new as btContactSolverInfo    {  } -> `BtContactSolverInfo' mkBtContactSolverInfo* #}+{#fun btContactSolverInfo_free    `( BtContactSolverInfoClass bc )' =>     { withBt* `bc'  } -> `()' #}+-- * btContactSolverInfoData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#34>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_new as btContactSolverInfoData    {  } -> `BtContactSolverInfoData' mkBtContactSolverInfoData* #}+{#fun btContactSolverInfoData_free    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#37>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_m_tau_set    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#37>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_m_tau_get    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#38>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_m_damping_set    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#38>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_m_damping_get    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#39>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_m_friction_set    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#39>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_m_friction_get    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#40>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_m_timeStep_set    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#40>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_m_timeStep_get    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#41>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_m_restitution_set    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#41>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_m_restitution_get    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#42>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_m_numIterations_set    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#42>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_m_numIterations_get    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#43>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_m_maxErrorReduction_set    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#43>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_m_maxErrorReduction_get    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#44>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_m_sor_set    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#44>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_m_sor_get    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#45>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_m_erp_set    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#45>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_m_erp_get    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#46>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_m_erp2_set    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#46>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_m_erp2_get    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#47>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_m_globalCfm_set    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#47>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_m_globalCfm_get    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#48>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_m_splitImpulse_set    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#48>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_m_splitImpulse_get    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#49>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_m_splitImpulsePenetrationThreshold_set    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#49>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_m_splitImpulsePenetrationThreshold_get    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#50>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_m_linearSlop_set    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#50>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_m_linearSlop_get    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#51>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_m_warmstartingFactor_set    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#51>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_m_warmstartingFactor_get    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#53>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_m_solverMode_set    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#53>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_m_solverMode_get    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#54>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_m_restingContactRestitutionThreshold_set    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#54>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_m_restingContactRestitutionThreshold_get    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#55>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_m_minimumSolverBatchSize_set    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h?r=2223#55>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.cpp?r=2223>+-}+{#fun btContactSolverInfoData_m_minimumSolverBatchSize_get    `( BtContactSolverInfoDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btGeneric6DofConstraint+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#352>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_new0 as btGeneric6DofConstraint0    `( BtRigidBodyClass p0 , BtRigidBodyClass p1 )' =>     {  withBt* `p0' , withBt* `p1' , withTransform* `Transform' , withTransform* `Transform' ,  `Bool'  } -> `BtGeneric6DofConstraint' mkBtGeneric6DofConstraint* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#353>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_new1 as btGeneric6DofConstraint1    `( BtRigidBodyClass p0 )' =>     {  withBt* `p0' , withTransform* `Transform' ,  `Bool'  } -> `BtGeneric6DofConstraint' mkBtGeneric6DofConstraint* #}+{#fun btGeneric6DofConstraint_free    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#405>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_buildJacobian as btGeneric6DofConstraint_buildJacobian    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#547>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_setParam as btGeneric6DofConstraint_setParam    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ num+,  `Float'  -- ^ value+,  `Int'  -- ^ axis+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#382>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_getFrameOffsetA0 as btGeneric6DofConstraint_getFrameOffsetA    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#382>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_getFrameOffsetA0 as btGeneric6DofConstraint_getFrameOffsetA0    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#393>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_getFrameOffsetA1 as btGeneric6DofConstraint_getFrameOffsetA1    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#434>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_getRelativePivotPosition as btGeneric6DofConstraint_getRelativePivotPosition    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ axis_index+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#387>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_getFrameOffsetB0 as btGeneric6DofConstraint_getFrameOffsetB    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#387>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_getFrameOffsetB0 as btGeneric6DofConstraint_getFrameOffsetB0    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#398>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_getFrameOffsetB1 as btGeneric6DofConstraint_getFrameOffsetB1    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#413>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_getInfo2NonVirtual as btGeneric6DofConstraint_getInfo2NonVirtual    `( BtGeneric6DofConstraintClass bc , BtTypedConstraint_btConstraintInfo2Class p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ info+, withTransform* `Transform'  peekTransform* -- ^ transA+, withTransform* `Transform'  peekTransform* -- ^ transB+, withVector3* `Vector3'  peekVector3* -- ^ linVelA+, withVector3* `Vector3'  peekVector3* -- ^ linVelB+, withVector3* `Vector3'  peekVector3* -- ^ angVelA+, withVector3* `Vector3'  peekVector3* -- ^ angVelB+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#413>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_getInfo2NonVirtual as btGeneric6DofConstraint_getInfo2NonVirtual'    `( BtGeneric6DofConstraintClass bc , BtTypedConstraint_btConstraintInfo2Class p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ info+, allocaTransform-  `Transform'  peekTransform* -- ^ transA+, allocaTransform-  `Transform'  peekTransform* -- ^ transB+, allocaVector3-  `Vector3'  peekVector3* -- ^ linVelA+, allocaVector3-  `Vector3'  peekVector3* -- ^ linVelB+, allocaVector3-  `Vector3'  peekVector3* -- ^ angVelA+, allocaVector3-  `Vector3'  peekVector3* -- ^ angVelB+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#368>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_getCalculatedTransformA as btGeneric6DofConstraint_getCalculatedTransformA    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#549>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_getParam as btGeneric6DofConstraint_getParam    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ num+,  `Int'  -- ^ axis+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#407>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_getInfo1 as btGeneric6DofConstraint_getInfo1    `( BtGeneric6DofConstraintClass bc , BtTypedConstraint_btConstraintInfo1Class p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ info+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#411>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_getInfo2 as btGeneric6DofConstraint_getInfo2    `( BtGeneric6DofConstraintClass bc , BtTypedConstraint_btConstraintInfo2Class p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ info+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#535>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_calcAnchorPos as btGeneric6DofConstraint_calcAnchorPos    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#471>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_getAngularLowerLimit as btGeneric6DofConstraint_getAngularLowerLimit    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ angularLower+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#471>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_getAngularLowerLimit as btGeneric6DofConstraint_getAngularLowerLimit'    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ angularLower+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#579>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_calculateSerializeBufferSize as btGeneric6DofConstraint_calculateSerializeBufferSize    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#422>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_getAxis as btGeneric6DofConstraint_getAxis    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ axis_index+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#460>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_getLinearUpperLimit as btGeneric6DofConstraint_getLinearUpperLimit    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ linearUpper+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#460>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_getLinearUpperLimit as btGeneric6DofConstraint_getLinearUpperLimit'    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ linearUpper+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#543>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_setUseFrameOffset as btGeneric6DofConstraint_setUseFrameOffset    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Bool'  -- ^ frameOffsetOnOff+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#490>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_getRotationalLimitMotor as btGeneric6DofConstraint_getRotationalLimitMotor    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BtRotationalLimitMotor' mkBtRotationalLimitMotor*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#409>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_getInfo1NonVirtual as btGeneric6DofConstraint_getInfo1NonVirtual    `( BtGeneric6DofConstraintClass bc , BtTypedConstraint_btConstraintInfo1Class p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ info+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#445>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_setLinearLowerLimit as btGeneric6DofConstraint_setLinearLowerLimit    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ linearLower+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#445>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_setLinearLowerLimit as btGeneric6DofConstraint_setLinearLowerLimit'    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ linearLower+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#450>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_getLinearLowerLimit as btGeneric6DofConstraint_getLinearLowerLimit    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ linearLower+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#450>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_getLinearLowerLimit as btGeneric6DofConstraint_getLinearLowerLimit'    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ linearLower+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#525>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_isLimited as btGeneric6DofConstraint_isLimited    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ limitIndex+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#542>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_getUseFrameOffset as btGeneric6DofConstraint_getUseFrameOffset    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#377>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_getCalculatedTransformB as btGeneric6DofConstraint_getCalculatedTransformB    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#360>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_calculateTransforms0 as btGeneric6DofConstraint_calculateTransforms    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ transA+, withTransform* `Transform'  peekTransform* -- ^ transB+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#360>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_calculateTransforms0 as btGeneric6DofConstraint_calculateTransforms'    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ transA+, allocaTransform-  `Transform'  peekTransform* -- ^ transB+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#360>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_calculateTransforms0 as btGeneric6DofConstraint_calculateTransforms0    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ transA+, withTransform* `Transform'  peekTransform* -- ^ transB+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#360>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_calculateTransforms0 as btGeneric6DofConstraint_calculateTransforms0'    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ transA+, allocaTransform-  `Transform'  peekTransform* -- ^ transB+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#362>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_calculateTransforms1 as btGeneric6DofConstraint_calculateTransforms1    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#539>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_get_limit_motor_info2 as btGeneric6DofConstraint_get_limit_motor_info2    `( BtGeneric6DofConstraintClass bc , BtRotationalLimitMotorClass p0 , BtTypedConstraint_btConstraintInfo2Class p7 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ limot+, withTransform* `Transform'  peekTransform* -- ^ transA+, withTransform* `Transform'  peekTransform* -- ^ transB+, withVector3* `Vector3'  peekVector3* -- ^ linVelA+, withVector3* `Vector3'  peekVector3* -- ^ linVelB+, withVector3* `Vector3'  peekVector3* -- ^ angVelA+, withVector3* `Vector3'  peekVector3* -- ^ angVelB+, withBt* `p7'  -- ^ info+,  `Int'  -- ^ row+, withVector3* `Vector3'  peekVector3* -- ^ ax1+,  `Int'  -- ^ rotational+,  `Int'  -- ^ rotAllowed+ } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#539>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_get_limit_motor_info2 as btGeneric6DofConstraint_get_limit_motor_info2'    `( BtGeneric6DofConstraintClass bc , BtRotationalLimitMotorClass p0 , BtTypedConstraint_btConstraintInfo2Class p7 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ limot+, allocaTransform-  `Transform'  peekTransform* -- ^ transA+, allocaTransform-  `Transform'  peekTransform* -- ^ transB+, allocaVector3-  `Vector3'  peekVector3* -- ^ linVelA+, allocaVector3-  `Vector3'  peekVector3* -- ^ linVelB+, allocaVector3-  `Vector3'  peekVector3* -- ^ angVelA+, allocaVector3-  `Vector3'  peekVector3* -- ^ angVelB+, withBt* `p7'  -- ^ info+,  `Int'  -- ^ row+, allocaVector3-  `Vector3'  peekVector3* -- ^ ax1+,  `Int'  -- ^ rotational+,  `Int'  -- ^ rotAllowed+ } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#502>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_setLimit as btGeneric6DofConstraint_setLimit    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ axis+,  `Float'  -- ^ lo+,  `Float'  -- ^ hi+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#496>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_getTranslationalLimitMotor as btGeneric6DofConstraint_getTranslationalLimitMotor    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtTranslationalLimitMotor' mkBtTranslationalLimitMotor*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#428>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_getAngle as btGeneric6DofConstraint_getAngle    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ axis_index+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#416>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_updateRHS as btGeneric6DofConstraint_updateRHS    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ timeStep+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#483>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_getAngularUpperLimit as btGeneric6DofConstraint_getAngularUpperLimit    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ angularUpper+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#483>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_getAngularUpperLimit as btGeneric6DofConstraint_getAngularUpperLimit'    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ angularUpper+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#465>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_setAngularLowerLimit as btGeneric6DofConstraint_setAngularLowerLimit    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ angularLower+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#465>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_setAngularLowerLimit as btGeneric6DofConstraint_setAngularLowerLimit'    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ angularLower+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#436>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_setFrames as btGeneric6DofConstraint_setFrames    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ frameA+, withTransform* `Transform'  peekTransform* -- ^ frameB+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#436>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_setFrames as btGeneric6DofConstraint_setFrames'    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ frameA+, allocaTransform-  `Transform'  peekTransform* -- ^ frameB+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#455>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_setLinearUpperLimit as btGeneric6DofConstraint_setLinearUpperLimit    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ linearUpper+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#455>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_setLinearUpperLimit as btGeneric6DofConstraint_setLinearUpperLimit'    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ linearUpper+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#477>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_setAngularUpperLimit as btGeneric6DofConstraint_setAngularUpperLimit    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ angularUpper+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#477>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_setAngularUpperLimit as btGeneric6DofConstraint_setAngularUpperLimit'    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ angularUpper+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#551>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_setAxis as btGeneric6DofConstraint_setAxis    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ axis1+, withVector3* `Vector3'  peekVector3* -- ^ axis2+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#551>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_setAxis as btGeneric6DofConstraint_setAxis'    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ axis1+, allocaVector3-  `Vector3'  peekVector3* -- ^ axis2+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#443>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_testAngularLimitMotor as btGeneric6DofConstraint_testAngularLimitMotor    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ axis_index+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#350>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_m_useSolveConstraintObsolete_set    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc' ,  `Bool'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#350>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraint_m_useSolveConstraintObsolete_get    `( BtGeneric6DofConstraintClass bc )' =>     { withBt* `bc'  } ->  `Bool'   #}+-- * btGeneric6DofConstraintData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#564>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraintData_new as btGeneric6DofConstraintData    {  } -> `BtGeneric6DofConstraintData' mkBtGeneric6DofConstraintData* #}+{#fun btGeneric6DofConstraintData_free    `( BtGeneric6DofConstraintDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#575>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraintData_m_useLinearReferenceFrameA_set    `( BtGeneric6DofConstraintDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#575>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraintData_m_useLinearReferenceFrameA_get    `( BtGeneric6DofConstraintDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#576>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraintData_m_useOffsetForConstraintFrame_set    `( BtGeneric6DofConstraintDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#576>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofConstraintData_m_useOffsetForConstraintFrame_get    `( BtGeneric6DofConstraintDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btGeneric6DofSpringConstraint+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h?r=2223#44>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofSpringConstraint_new as btGeneric6DofSpringConstraint    `( BtRigidBodyClass p0 , BtRigidBodyClass p1 )' =>     {  withBt* `p0' , withBt* `p1' , withTransform* `Transform' , withTransform* `Transform' ,  `Bool'  } -> `BtGeneric6DofSpringConstraint' mkBtGeneric6DofSpringConstraint* #}+{#fun btGeneric6DofSpringConstraint_free    `( BtGeneric6DofSpringConstraintClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h?r=2223#74>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofSpringConstraint_calculateSerializeBufferSize as btGeneric6DofSpringConstraint_calculateSerializeBufferSize    `( BtGeneric6DofSpringConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h?r=2223#48>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofSpringConstraint_setEquilibriumPoint0 as btGeneric6DofSpringConstraint_setEquilibriumPoint    `( BtGeneric6DofSpringConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h?r=2223#48>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofSpringConstraint_setEquilibriumPoint0 as btGeneric6DofSpringConstraint_setEquilibriumPoint0    `( BtGeneric6DofSpringConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h?r=2223#49>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofSpringConstraint_setEquilibriumPoint1 as btGeneric6DofSpringConstraint_setEquilibriumPoint1    `( BtGeneric6DofSpringConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h?r=2223#50>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofSpringConstraint_setEquilibriumPoint2 as btGeneric6DofSpringConstraint_setEquilibriumPoint2    `( BtGeneric6DofSpringConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+,  `Float'  -- ^ val+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h?r=2223#45>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofSpringConstraint_enableSpring as btGeneric6DofSpringConstraint_enableSpring    `( BtGeneric6DofSpringConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+,  `Bool'  -- ^ onOff+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h?r=2223#46>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofSpringConstraint_setStiffness as btGeneric6DofSpringConstraint_setStiffness    `( BtGeneric6DofSpringConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+,  `Float'  -- ^ stiffness+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h?r=2223#47>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofSpringConstraint_setDamping as btGeneric6DofSpringConstraint_setDamping    `( BtGeneric6DofSpringConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+,  `Float'  -- ^ damping+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h?r=2223#54>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofSpringConstraint_getInfo2 as btGeneric6DofSpringConstraint_getInfo2    `( BtGeneric6DofSpringConstraintClass bc , BtTypedConstraint_btConstraintInfo2Class p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ info+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h?r=2223#52>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofSpringConstraint_setAxis as btGeneric6DofSpringConstraint_setAxis    `( BtGeneric6DofSpringConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ axis1+, withVector3* `Vector3'  peekVector3* -- ^ axis2+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h?r=2223#52>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofSpringConstraint_setAxis as btGeneric6DofSpringConstraint_setAxis'    `( BtGeneric6DofSpringConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ axis1+, allocaVector3-  `Vector3'  peekVector3* -- ^ axis2+ } ->  `()'  #}+-- * btGeneric6DofSpringConstraintData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h?r=2223#65>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp?r=2223>+-}+{#fun btGeneric6DofSpringConstraintData_new as btGeneric6DofSpringConstraintData    {  } -> `BtGeneric6DofSpringConstraintData' mkBtGeneric6DofSpringConstraintData* #}+{#fun btGeneric6DofSpringConstraintData_free    `( BtGeneric6DofSpringConstraintDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+-- * btHinge2Constraint+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.h?r=2223#42>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp?r=2223>+-}+{#fun btHinge2Constraint_new as btHinge2Constraint    `( BtRigidBodyClass p0 , BtRigidBodyClass p1 )' =>     {  withBt* `p0' , withBt* `p1' , withVector3* `Vector3' , withVector3* `Vector3' , withVector3* `Vector3'  } -> `BtHinge2Constraint' mkBtHinge2Constraint* #}+{#fun btHinge2Constraint_free    `( BtHinge2ConstraintClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.h?r=2223#52>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp?r=2223>+-}+{#fun btHinge2Constraint_setLowerLimit as btHinge2Constraint_setLowerLimit    `( BtHinge2ConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ ang1min+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.h?r=2223#45>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp?r=2223>+-}+{#fun btHinge2Constraint_getAnchor2 as btHinge2Constraint_getAnchor2    `( BtHinge2ConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.h?r=2223#46>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp?r=2223>+-}+{#fun btHinge2Constraint_getAxis1 as btHinge2Constraint_getAxis1    `( BtHinge2ConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.h?r=2223#44>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp?r=2223>+-}+{#fun btHinge2Constraint_getAnchor as btHinge2Constraint_getAnchor    `( BtHinge2ConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.h?r=2223#47>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp?r=2223>+-}+{#fun btHinge2Constraint_getAxis2 as btHinge2Constraint_getAxis2    `( BtHinge2ConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.h?r=2223#51>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp?r=2223>+-}+{#fun btHinge2Constraint_setUpperLimit as btHinge2Constraint_setUpperLimit    `( BtHinge2ConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ ang1max+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.h?r=2223#49>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp?r=2223>+-}+{#fun btHinge2Constraint_getAngle2 as btHinge2Constraint_getAngle2    `( BtHinge2ConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.h?r=2223#48>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp?r=2223>+-}+{#fun btHinge2Constraint_getAngle1 as btHinge2Constraint_getAngle1    `( BtHinge2ConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+-- * btHingeConstraint+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#103>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_new0 as btHingeConstraint0    `( BtRigidBodyClass p0 , BtRigidBodyClass p1 )' =>     {  withBt* `p0' , withBt* `p1' , withVector3* `Vector3' , withVector3* `Vector3' , withVector3* `Vector3' , withVector3* `Vector3' ,  `Bool'  } -> `BtHingeConstraint' mkBtHingeConstraint* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#105>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_new1 as btHingeConstraint1    `( BtRigidBodyClass p0 )' =>     {  withBt* `p0' , withVector3* `Vector3' , withVector3* `Vector3' ,  `Bool'  } -> `BtHingeConstraint' mkBtHingeConstraint* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#107>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_new2 as btHingeConstraint2    `( BtRigidBodyClass p0 , BtRigidBodyClass p1 )' =>     {  withBt* `p0' , withBt* `p1' , withTransform* `Transform' , withTransform* `Transform' ,  `Bool'  } -> `BtHingeConstraint' mkBtHingeConstraint* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#109>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_new3 as btHingeConstraint3    `( BtRigidBodyClass p0 )' =>     {  withBt* `p0' , withTransform* `Transform' ,  `Bool'  } -> `BtHingeConstraint' mkBtHingeConstraint* #}+{#fun btHingeConstraint_free    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#132>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getRigidBodyB0 as btHingeConstraint_getRigidBodyB    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtRigidBody' mkBtRigidBody*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#132>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getRigidBodyB0 as btHingeConstraint_getRigidBodyB0    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtRigidBody' mkBtRigidBody*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#142>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getRigidBodyB1 as btHingeConstraint_getRigidBodyB1    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtRigidBody' mkBtRigidBody*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#120>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getInfo2NonVirtual as btHingeConstraint_getInfo2NonVirtual    `( BtHingeConstraintClass bc , BtTypedConstraint_btConstraintInfo2Class p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ info+, withTransform* `Transform'  peekTransform* -- ^ transA+, withTransform* `Transform'  peekTransform* -- ^ transB+, withVector3* `Vector3'  peekVector3* -- ^ angVelA+, withVector3* `Vector3'  peekVector3* -- ^ angVelB+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#120>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getInfo2NonVirtual as btHingeConstraint_getInfo2NonVirtual'    `( BtHingeConstraintClass bc , BtTypedConstraint_btConstraintInfo2Class p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ info+, allocaTransform-  `Transform'  peekTransform* -- ^ transA+, allocaTransform-  `Transform'  peekTransform* -- ^ transB+, allocaVector3-  `Vector3'  peekVector3* -- ^ angVelA+, allocaVector3-  `Vector3'  peekVector3* -- ^ angVelB+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#128>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getRigidBodyA0 as btHingeConstraint_getRigidBodyA    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtRigidBody' mkBtRigidBody*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#128>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getRigidBodyA0 as btHingeConstraint_getRigidBodyA0    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtRigidBody' mkBtRigidBody*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#137>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getRigidBodyA1 as btHingeConstraint_getRigidBodyA1    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtRigidBody' mkBtRigidBody*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#276>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getMotorTargetVelosity as btHingeConstraint_getMotorTargetVelosity    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#147>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getFrameOffsetA as btHingeConstraint_getFrameOffsetA    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#152>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getFrameOffsetB as btHingeConstraint_getFrameOffsetB    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#112>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_buildJacobian as btHingeConstraint_buildJacobian    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#175>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_setMaxMotorImpulse as btHingeConstraint_setMaxMotorImpulse    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ maxMotorImpulse+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#237>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getHingeAngle0 as btHingeConstraint_getHingeAngle    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#237>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getHingeAngle0 as btHingeConstraint_getHingeAngle0    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#239>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getHingeAngle1 as btHingeConstraint_getHingeAngle1    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ transA+, withTransform* `Transform'  peekTransform* -- ^ transB+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#239>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getHingeAngle1 as btHingeConstraint_getHingeAngle1'    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ transA+, allocaTransform-  `Transform'  peekTransform* -- ^ transB+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#241>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_testLimit as btHingeConstraint_testLimit    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ transA+, withTransform* `Transform'  peekTransform* -- ^ transB+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#241>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_testLimit as btHingeConstraint_testLimit'    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ transA+, allocaTransform-  `Transform'  peekTransform* -- ^ transB+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#114>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getInfo1 as btHingeConstraint_getInfo1    `( BtHingeConstraintClass bc , BtTypedConstraint_btConstraintInfo1Class p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ info+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#122>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getInfo2Internal as btHingeConstraint_getInfo2Internal    `( BtHingeConstraintClass bc , BtTypedConstraint_btConstraintInfo2Class p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ info+, withTransform* `Transform'  peekTransform* -- ^ transA+, withTransform* `Transform'  peekTransform* -- ^ transB+, withVector3* `Vector3'  peekVector3* -- ^ angVelA+, withVector3* `Vector3'  peekVector3* -- ^ angVelB+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#122>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getInfo2Internal as btHingeConstraint_getInfo2Internal'    `( BtHingeConstraintClass bc , BtTypedConstraint_btConstraintInfo2Class p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ info+, allocaTransform-  `Transform'  peekTransform* -- ^ transA+, allocaTransform-  `Transform'  peekTransform* -- ^ transB+, allocaVector3-  `Vector3'  peekVector3* -- ^ angVelA+, allocaVector3-  `Vector3'  peekVector3* -- ^ angVelB+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#118>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getInfo2 as btHingeConstraint_getInfo2    `( BtHingeConstraintClass bc , BtTypedConstraint_btConstraintInfo2Class p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ info+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#227>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getUpperLimit as btHingeConstraint_getUpperLimit    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#164>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_enableAngularMotor as btHingeConstraint_enableAngularMotor    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Bool'  -- ^ enableMotor+,  `Float'  -- ^ targetVelocity+,  `Float'  -- ^ maxMotorImpulse+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#259>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getLimitSign as btHingeConstraint_getLimitSign    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#345>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_calculateSerializeBufferSize as btHingeConstraint_calculateSerializeBufferSize    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#280>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getMaxMotorImpulse as btHingeConstraint_getMaxMotorImpulse    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#218>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getLowerLimit as btHingeConstraint_getLowerLimit    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#291>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_setParam as btHingeConstraint_setParam    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ num+,  `Float'  -- ^ value+,  `Int'  -- ^ axis+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#286>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_setUseFrameOffset as btHingeConstraint_setUseFrameOffset    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Bool'  -- ^ frameOffsetOnOff+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#272>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getEnableAngularMotor as btHingeConstraint_getEnableAngularMotor    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#174>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_enableMotor as btHingeConstraint_enableMotor    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Bool'  -- ^ enableMotor+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#245>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getBFrame0 as btHingeConstraint_getBFrame    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#245>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getBFrame0 as btHingeConstraint_getBFrame0    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#248>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getBFrame1 as btHingeConstraint_getBFrame1    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#116>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getInfo1NonVirtual as btHingeConstraint_getInfo1NonVirtual    `( BtHingeConstraintClass bc , BtTypedConstraint_btConstraintInfo1Class p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ info+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#123>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getInfo2InternalUsingFrameOffset as btHingeConstraint_getInfo2InternalUsingFrameOffset    `( BtHingeConstraintClass bc , BtTypedConstraint_btConstraintInfo2Class p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ info+, withTransform* `Transform'  peekTransform* -- ^ transA+, withTransform* `Transform'  peekTransform* -- ^ transB+, withVector3* `Vector3'  peekVector3* -- ^ angVelA+, withVector3* `Vector3'  peekVector3* -- ^ angVelB+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#123>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getInfo2InternalUsingFrameOffset as btHingeConstraint_getInfo2InternalUsingFrameOffset'    `( BtHingeConstraintClass bc , BtTypedConstraint_btConstraintInfo2Class p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ info+, allocaTransform-  `Transform'  peekTransform* -- ^ transA+, allocaTransform-  `Transform'  peekTransform* -- ^ transB+, allocaVector3-  `Vector3'  peekVector3* -- ^ angVelA+, allocaVector3-  `Vector3'  peekVector3* -- ^ angVelB+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#285>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getUseFrameOffset as btHingeConstraint_getUseFrameOffset    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#159>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_setAngularOnly as btHingeConstraint_setAngularOnly    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Bool'  -- ^ angularOnly+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#293>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getParam as btHingeConstraint_getParam    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ num+,  `Int'  -- ^ axis+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#180>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_setLimit as btHingeConstraint_setLimit    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ low+,  `Float'  -- ^ high+,  `Float'  -- ^ _softness+,  `Float'  -- ^ _biasFactor+,  `Float'  -- ^ _relaxationFactor+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#250>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getSolveLimit as btHingeConstraint_getSolveLimit    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#126>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_updateRHS as btHingeConstraint_updateRHS    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ timeStep+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#176>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_setMotorTarget0 as btHingeConstraint_setMotorTarget    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, withQuaternion* `Quaternion'  peekQuaternion* -- ^ qAinB+,  `Float'  -- ^ dt+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#176>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_setMotorTarget0 as btHingeConstraint_setMotorTarget'    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaQuaternion-  `Quaternion'  peekQuaternion* -- ^ qAinB+,  `Float'  -- ^ dt+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#176>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_setMotorTarget0 as btHingeConstraint_setMotorTarget0    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, withQuaternion* `Quaternion'  peekQuaternion* -- ^ qAinB+,  `Float'  -- ^ dt+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#176>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_setMotorTarget0 as btHingeConstraint_setMotorTarget0'    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaQuaternion-  `Quaternion'  peekQuaternion* -- ^ qAinB+,  `Float'  -- ^ dt+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#177>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_setMotorTarget1 as btHingeConstraint_setMotorTarget1    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ targetAngle+,  `Float'  -- ^ dt+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#268>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getAngularOnly as btHingeConstraint_getAngularOnly    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#157>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_setFrames as btHingeConstraint_setFrames    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ frameA+, withTransform* `Transform'  peekTransform* -- ^ frameB+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#157>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_setFrames as btHingeConstraint_setFrames'    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ frameA+, allocaTransform-  `Transform'  peekTransform* -- ^ frameB+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#193>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_setAxis as btHingeConstraint_setAxis    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ axisInA+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#193>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_setAxis as btHingeConstraint_setAxis'    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ axisInA+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#244>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getAFrame0 as btHingeConstraint_getAFrame    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#244>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getAFrame0 as btHingeConstraint_getAFrame0    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#247>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraint_getAFrame1 as btHingeConstraint_getAFrame1    `( BtHingeConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+-- * btHingeConstraintDoubleData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#305>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintDoubleData_new as btHingeConstraintDoubleData    {  } -> `BtHingeConstraintDoubleData' mkBtHingeConstraintDoubleData* #}+{#fun btHingeConstraintDoubleData_free    `( BtHingeConstraintDoubleDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#309>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintDoubleData_m_useReferenceFrameA_set    `( BtHingeConstraintDoubleDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#309>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintDoubleData_m_useReferenceFrameA_get    `( BtHingeConstraintDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#310>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintDoubleData_m_angularOnly_set    `( BtHingeConstraintDoubleDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#310>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintDoubleData_m_angularOnly_get    `( BtHingeConstraintDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#311>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintDoubleData_m_enableAngularMotor_set    `( BtHingeConstraintDoubleDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#311>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintDoubleData_m_enableAngularMotor_get    `( BtHingeConstraintDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#312>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintDoubleData_m_motorTargetVelocity_set    `( BtHingeConstraintDoubleDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#312>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintDoubleData_m_motorTargetVelocity_get    `( BtHingeConstraintDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#313>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintDoubleData_m_maxMotorImpulse_set    `( BtHingeConstraintDoubleDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#313>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintDoubleData_m_maxMotorImpulse_get    `( BtHingeConstraintDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#315>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintDoubleData_m_lowerLimit_set    `( BtHingeConstraintDoubleDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#315>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintDoubleData_m_lowerLimit_get    `( BtHingeConstraintDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#316>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintDoubleData_m_upperLimit_set    `( BtHingeConstraintDoubleDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#316>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintDoubleData_m_upperLimit_get    `( BtHingeConstraintDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#317>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintDoubleData_m_limitSoftness_set    `( BtHingeConstraintDoubleDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#317>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintDoubleData_m_limitSoftness_get    `( BtHingeConstraintDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#318>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintDoubleData_m_biasFactor_set    `( BtHingeConstraintDoubleDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#318>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintDoubleData_m_biasFactor_get    `( BtHingeConstraintDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#319>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintDoubleData_m_relaxationFactor_set    `( BtHingeConstraintDoubleDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#319>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintDoubleData_m_relaxationFactor_get    `( BtHingeConstraintDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+-- * btHingeConstraintFloatData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#324>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintFloatData_new as btHingeConstraintFloatData    {  } -> `BtHingeConstraintFloatData' mkBtHingeConstraintFloatData* #}+{#fun btHingeConstraintFloatData_free    `( BtHingeConstraintFloatDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#328>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintFloatData_m_useReferenceFrameA_set    `( BtHingeConstraintFloatDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#328>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintFloatData_m_useReferenceFrameA_get    `( BtHingeConstraintFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#329>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintFloatData_m_angularOnly_set    `( BtHingeConstraintFloatDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#329>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintFloatData_m_angularOnly_get    `( BtHingeConstraintFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#331>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintFloatData_m_enableAngularMotor_set    `( BtHingeConstraintFloatDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#331>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintFloatData_m_enableAngularMotor_get    `( BtHingeConstraintFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#332>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintFloatData_m_motorTargetVelocity_set    `( BtHingeConstraintFloatDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#332>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintFloatData_m_motorTargetVelocity_get    `( BtHingeConstraintFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#333>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintFloatData_m_maxMotorImpulse_set    `( BtHingeConstraintFloatDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#333>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintFloatData_m_maxMotorImpulse_get    `( BtHingeConstraintFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#335>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintFloatData_m_lowerLimit_set    `( BtHingeConstraintFloatDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#335>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintFloatData_m_lowerLimit_get    `( BtHingeConstraintFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#336>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintFloatData_m_upperLimit_set    `( BtHingeConstraintFloatDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#336>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintFloatData_m_upperLimit_get    `( BtHingeConstraintFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#337>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintFloatData_m_limitSoftness_set    `( BtHingeConstraintFloatDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#337>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintFloatData_m_limitSoftness_get    `( BtHingeConstraintFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#338>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintFloatData_m_biasFactor_set    `( BtHingeConstraintFloatDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#338>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintFloatData_m_biasFactor_get    `( BtHingeConstraintFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#339>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintFloatData_m_relaxationFactor_set    `( BtHingeConstraintFloatDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h?r=2223#339>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp?r=2223>+-}+{#fun btHingeConstraintFloatData_m_relaxationFactor_get    `( BtHingeConstraintFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+-- * btJacobianEntry+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btJacobianEntry.h?r=2223#34>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btJacobianEntry.cpp?r=2223>+-}+{#fun btJacobianEntry_new0 as btJacobianEntry0    {  } -> `BtJacobianEntry' mkBtJacobianEntry* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btJacobianEntry.h?r=2223#61>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btJacobianEntry.cpp?r=2223>+-}+{#fun btJacobianEntry_new2 as btJacobianEntry2    {  withVector3* `Vector3' , withMatrix3x3* `Matrix3x3' , withMatrix3x3* `Matrix3x3' , withVector3* `Vector3' , withVector3* `Vector3'  } -> `BtJacobianEntry' mkBtJacobianEntry* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btJacobianEntry.h?r=2223#77>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btJacobianEntry.cpp?r=2223>+-}+{#fun btJacobianEntry_new3 as btJacobianEntry3    {  withVector3* `Vector3' , withVector3* `Vector3' , withVector3* `Vector3' , withVector3* `Vector3'  } -> `BtJacobianEntry' mkBtJacobianEntry* #}+{#fun btJacobianEntry_free    `( BtJacobianEntryClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btJacobianEntry.h?r=2223#107>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btJacobianEntry.cpp?r=2223>+-}+{#fun btJacobianEntry_getDiagonal as btJacobianEntry_getDiagonal    `( BtJacobianEntryClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btJacobianEntry.h?r=2223#133>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btJacobianEntry.cpp?r=2223>+-}+{#fun btJacobianEntry_getRelativeVelocity as btJacobianEntry_getRelativeVelocity    `( BtJacobianEntryClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ linvelA+, withVector3* `Vector3'  peekVector3* -- ^ angvelA+, withVector3* `Vector3'  peekVector3* -- ^ linvelB+, withVector3* `Vector3'  peekVector3* -- ^ angvelB+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btJacobianEntry.h?r=2223#133>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btJacobianEntry.cpp?r=2223>+-}+{#fun btJacobianEntry_getRelativeVelocity as btJacobianEntry_getRelativeVelocity'    `( BtJacobianEntryClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ linvelA+, allocaVector3-  `Vector3'  peekVector3* -- ^ angvelA+, allocaVector3-  `Vector3'  peekVector3* -- ^ linvelB+, allocaVector3-  `Vector3'  peekVector3* -- ^ angvelB+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btJacobianEntry.h?r=2223#149>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btJacobianEntry.cpp?r=2223>+-}+{#fun btJacobianEntry_m_0MinvJt_set    `( BtJacobianEntryClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btJacobianEntry.h?r=2223#149>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btJacobianEntry.cpp?r=2223>+-}+{#fun btJacobianEntry_m_0MinvJt_get    `( BtJacobianEntryClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btJacobianEntry.h?r=2223#150>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btJacobianEntry.cpp?r=2223>+-}+{#fun btJacobianEntry_m_1MinvJt_set    `( BtJacobianEntryClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btJacobianEntry.h?r=2223#150>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btJacobianEntry.cpp?r=2223>+-}+{#fun btJacobianEntry_m_1MinvJt_get    `( BtJacobianEntryClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btJacobianEntry.h?r=2223#152>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btJacobianEntry.cpp?r=2223>+-}+{#fun btJacobianEntry_m_Adiag_set    `( BtJacobianEntryClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btJacobianEntry.h?r=2223#152>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btJacobianEntry.cpp?r=2223>+-}+{#fun btJacobianEntry_m_Adiag_get    `( BtJacobianEntryClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btJacobianEntry.h?r=2223#147>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btJacobianEntry.cpp?r=2223>+-}+{#fun btJacobianEntry_m_aJ_set    `( BtJacobianEntryClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btJacobianEntry.h?r=2223#147>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btJacobianEntry.cpp?r=2223>+-}+{#fun btJacobianEntry_m_aJ_get    `( BtJacobianEntryClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btJacobianEntry.h?r=2223#148>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btJacobianEntry.cpp?r=2223>+-}+{#fun btJacobianEntry_m_bJ_set    `( BtJacobianEntryClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btJacobianEntry.h?r=2223#148>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btJacobianEntry.cpp?r=2223>+-}+{#fun btJacobianEntry_m_bJ_get    `( BtJacobianEntryClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btJacobianEntry.h?r=2223#146>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btJacobianEntry.cpp?r=2223>+-}+{#fun btJacobianEntry_m_linearJointAxis_set    `( BtJacobianEntryClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btJacobianEntry.h?r=2223#146>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btJacobianEntry.cpp?r=2223>+-}+{#fun btJacobianEntry_m_linearJointAxis_get    `( BtJacobianEntryClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+-- * btPoint2PointConstraint+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h?r=2223#75>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp?r=2223>+-}+{#fun btPoint2PointConstraint_new0 as btPoint2PointConstraint0    `( BtRigidBodyClass p0 , BtRigidBodyClass p1 )' =>     {  withBt* `p0' , withBt* `p1' , withVector3* `Vector3' , withVector3* `Vector3'  } -> `BtPoint2PointConstraint' mkBtPoint2PointConstraint* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h?r=2223#77>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp?r=2223>+-}+{#fun btPoint2PointConstraint_new1 as btPoint2PointConstraint1    `( BtRigidBodyClass p0 )' =>     {  withBt* `p0' , withVector3* `Vector3'  } -> `BtPoint2PointConstraint' mkBtPoint2PointConstraint* #}+{#fun btPoint2PointConstraint_free    `( BtPoint2PointConstraintClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h?r=2223#84>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp?r=2223>+-}+{#fun btPoint2PointConstraint_getInfo1NonVirtual as btPoint2PointConstraint_getInfo1NonVirtual    `( BtPoint2PointConstraintClass bc , BtTypedConstraint_btConstraintInfo1Class p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ info+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h?r=2223#88>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp?r=2223>+-}+{#fun btPoint2PointConstraint_getInfo2NonVirtual as btPoint2PointConstraint_getInfo2NonVirtual    `( BtPoint2PointConstraintClass bc , BtTypedConstraint_btConstraintInfo2Class p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ info+, withTransform* `Transform'  peekTransform* -- ^ body0_trans+, withTransform* `Transform'  peekTransform* -- ^ body1_trans+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h?r=2223#88>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp?r=2223>+-}+{#fun btPoint2PointConstraint_getInfo2NonVirtual as btPoint2PointConstraint_getInfo2NonVirtual'    `( BtPoint2PointConstraintClass bc , BtTypedConstraint_btConstraintInfo2Class p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ info+, allocaTransform-  `Transform'  peekTransform* -- ^ body0_trans+, allocaTransform-  `Transform'  peekTransform* -- ^ body1_trans+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h?r=2223#114>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp?r=2223>+-}+{#fun btPoint2PointConstraint_setParam as btPoint2PointConstraint_setParam    `( BtPoint2PointConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ num+,  `Float'  -- ^ value+,  `Int'  -- ^ axis+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h?r=2223#102>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp?r=2223>+-}+{#fun btPoint2PointConstraint_getPivotInA as btPoint2PointConstraint_getPivotInA    `( BtPoint2PointConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h?r=2223#107>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp?r=2223>+-}+{#fun btPoint2PointConstraint_getPivotInB as btPoint2PointConstraint_getPivotInB    `( BtPoint2PointConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h?r=2223#90>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp?r=2223>+-}+{#fun btPoint2PointConstraint_updateRHS as btPoint2PointConstraint_updateRHS    `( BtPoint2PointConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ timeStep+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h?r=2223#80>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp?r=2223>+-}+{#fun btPoint2PointConstraint_buildJacobian as btPoint2PointConstraint_buildJacobian    `( BtPoint2PointConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h?r=2223#143>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp?r=2223>+-}+{#fun btPoint2PointConstraint_calculateSerializeBufferSize as btPoint2PointConstraint_calculateSerializeBufferSize    `( BtPoint2PointConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h?r=2223#116>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp?r=2223>+-}+{#fun btPoint2PointConstraint_getParam as btPoint2PointConstraint_getParam    `( BtPoint2PointConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ num+,  `Int'  -- ^ axis+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h?r=2223#82>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp?r=2223>+-}+{#fun btPoint2PointConstraint_getInfo1 as btPoint2PointConstraint_getInfo1    `( BtPoint2PointConstraintClass bc , BtTypedConstraint_btConstraintInfo1Class p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ info+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h?r=2223#86>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp?r=2223>+-}+{#fun btPoint2PointConstraint_getInfo2 as btPoint2PointConstraint_getInfo2    `( BtPoint2PointConstraintClass bc , BtTypedConstraint_btConstraintInfo2Class p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ info+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h?r=2223#92>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp?r=2223>+-}+{#fun btPoint2PointConstraint_setPivotA as btPoint2PointConstraint_setPivotA    `( BtPoint2PointConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ pivotA+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h?r=2223#92>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp?r=2223>+-}+{#fun btPoint2PointConstraint_setPivotA as btPoint2PointConstraint_setPivotA'    `( BtPoint2PointConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ pivotA+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h?r=2223#97>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp?r=2223>+-}+{#fun btPoint2PointConstraint_setPivotB as btPoint2PointConstraint_setPivotB    `( BtPoint2PointConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ pivotB+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h?r=2223#97>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp?r=2223>+-}+{#fun btPoint2PointConstraint_setPivotB as btPoint2PointConstraint_setPivotB'    `( BtPoint2PointConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ pivotB+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h?r=2223#71>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp?r=2223>+-}+{#fun btPoint2PointConstraint_m_useSolveConstraintObsolete_set    `( BtPoint2PointConstraintClass bc )' =>     { withBt* `bc' ,  `Bool'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h?r=2223#71>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp?r=2223>+-}+{#fun btPoint2PointConstraint_m_useSolveConstraintObsolete_get    `( BtPoint2PointConstraintClass bc )' =>     { withBt* `bc'  } ->  `Bool'   #}+-- * btPoint2PointConstraintDoubleData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h?r=2223#136>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp?r=2223>+-}+{#fun btPoint2PointConstraintDoubleData_new as btPoint2PointConstraintDoubleData    {  } -> `BtPoint2PointConstraintDoubleData' mkBtPoint2PointConstraintDoubleData* #}+{#fun btPoint2PointConstraintDoubleData_free    `( BtPoint2PointConstraintDoubleDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+-- * btPoint2PointConstraintFloatData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h?r=2223#128>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp?r=2223>+-}+{#fun btPoint2PointConstraintFloatData_new as btPoint2PointConstraintFloatData    {  } -> `BtPoint2PointConstraintFloatData' mkBtPoint2PointConstraintFloatData* #}+{#fun btPoint2PointConstraintFloatData_free    `( BtPoint2PointConstraintFloatDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+-- * btRotationalLimitMotor+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#68>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_new as btRotationalLimitMotor    {  } -> `BtRotationalLimitMotor' mkBtRotationalLimitMotor* #}+{#fun btRotationalLimitMotor_free    `( BtRotationalLimitMotorClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#123>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_testLimitValue as btRotationalLimitMotor_testLimitValue    `( BtRotationalLimitMotorClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ test_value+ } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#126>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_solveAngularLimits as btRotationalLimitMotor_solveAngularLimits    `( BtRotationalLimitMotorClass bc , BtRigidBodyClass p3 , BtRigidBodyClass p4 )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ timeStep+, withVector3* `Vector3'  peekVector3* -- ^ axis+,  `Float'  -- ^ jacDiagABInv+, withBt* `p3'  -- ^ body0+, withBt* `p4'  -- ^ body1+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#126>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_solveAngularLimits as btRotationalLimitMotor_solveAngularLimits'    `( BtRotationalLimitMotorClass bc , BtRigidBodyClass p3 , BtRigidBodyClass p4 )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ timeStep+, allocaVector3-  `Vector3'  peekVector3* -- ^ axis+,  `Float'  -- ^ jacDiagABInv+, withBt* `p3'  -- ^ body0+, withBt* `p4'  -- ^ body1+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#113>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_needApplyTorques as btRotationalLimitMotor_needApplyTorques    `( BtRotationalLimitMotorClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#106>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_isLimited as btRotationalLimitMotor_isLimited    `( BtRotationalLimitMotorClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#65>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_m_accumulatedImpulse_set    `( BtRotationalLimitMotorClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#65>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_m_accumulatedImpulse_get    `( BtRotationalLimitMotorClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#55>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_m_bounce_set    `( BtRotationalLimitMotorClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#55>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_m_bounce_get    `( BtRotationalLimitMotorClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#64>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_m_currentLimit_set    `( BtRotationalLimitMotorClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#64>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_m_currentLimit_get    `( BtRotationalLimitMotorClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#62>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_m_currentLimitError_set    `( BtRotationalLimitMotorClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#62>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_m_currentLimitError_get    `( BtRotationalLimitMotorClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#63>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_m_currentPosition_set    `( BtRotationalLimitMotorClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#63>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_m_currentPosition_get    `( BtRotationalLimitMotorClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#50>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_m_damping_set    `( BtRotationalLimitMotorClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#50>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_m_damping_get    `( BtRotationalLimitMotorClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#56>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_m_enableMotor_set    `( BtRotationalLimitMotorClass bc )' =>     { withBt* `bc' ,  `Bool'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#56>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_m_enableMotor_get    `( BtRotationalLimitMotorClass bc )' =>     { withBt* `bc'  } ->  `Bool'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#46>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_m_hiLimit_set    `( BtRotationalLimitMotorClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#46>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_m_hiLimit_get    `( BtRotationalLimitMotorClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#51>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_m_limitSoftness_set    `( BtRotationalLimitMotorClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#51>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_m_limitSoftness_get    `( BtRotationalLimitMotorClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#45>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_m_loLimit_set    `( BtRotationalLimitMotorClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#45>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_m_loLimit_get    `( BtRotationalLimitMotorClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#49>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_m_maxLimitForce_set    `( BtRotationalLimitMotorClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#49>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_m_maxLimitForce_get    `( BtRotationalLimitMotorClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#48>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_m_maxMotorForce_set    `( BtRotationalLimitMotorClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#48>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_m_maxMotorForce_get    `( BtRotationalLimitMotorClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#52>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_m_normalCFM_set    `( BtRotationalLimitMotorClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#52>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_m_normalCFM_get    `( BtRotationalLimitMotorClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#54>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_m_stopCFM_set    `( BtRotationalLimitMotorClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#54>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_m_stopCFM_get    `( BtRotationalLimitMotorClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#53>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_m_stopERP_set    `( BtRotationalLimitMotorClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#53>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_m_stopERP_get    `( BtRotationalLimitMotorClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#47>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_m_targetVelocity_set    `( BtRotationalLimitMotorClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#47>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btRotationalLimitMotor_m_targetVelocity_get    `( BtRotationalLimitMotorClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+-- * btSequentialImpulseConstraintSolver+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h?r=2223#97>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp?r=2223>+-}+{#fun btSequentialImpulseConstraintSolver_new as btSequentialImpulseConstraintSolver    {  } -> `BtSequentialImpulseConstraintSolver' mkBtSequentialImpulseConstraintSolver* #}+{#fun btSequentialImpulseConstraintSolver_free    `( BtSequentialImpulseConstraintSolverClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h?r=2223#105>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp?r=2223>+-}+{#fun btSequentialImpulseConstraintSolver_reset as btSequentialImpulseConstraintSolver_reset    `( BtSequentialImpulseConstraintSolverClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h?r=2223#107>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp?r=2223>+-}+{#fun btSequentialImpulseConstraintSolver_btRand2 as btSequentialImpulseConstraintSolver_btRand2    `( BtSequentialImpulseConstraintSolverClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Word64'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h?r=2223#115>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp?r=2223>+-}+{#fun btSequentialImpulseConstraintSolver_getRandSeed as btSequentialImpulseConstraintSolver_getRandSeed    `( BtSequentialImpulseConstraintSolverClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Word64'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h?r=2223#111>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp?r=2223>+-}+{#fun btSequentialImpulseConstraintSolver_setRandSeed as btSequentialImpulseConstraintSolver_setRandSeed    `( BtSequentialImpulseConstraintSolverClass bc )' =>     { withBt* `bc'  -- ^ +,  `Word64'  -- ^ seed+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h?r=2223#109>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp?r=2223>+-}+{#fun btSequentialImpulseConstraintSolver_btRandInt2 as btSequentialImpulseConstraintSolver_btRandInt2    `( BtSequentialImpulseConstraintSolverClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ n+ } ->  `Int'  #}+-- * btSliderConstraint+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#159>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_new0 as btSliderConstraint0    `( BtRigidBodyClass p0 , BtRigidBodyClass p1 )' =>     {  withBt* `p0' , withBt* `p1' , withTransform* `Transform' , withTransform* `Transform' ,  `Bool'  } -> `BtSliderConstraint' mkBtSliderConstraint* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#160>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_new1 as btSliderConstraint1    `( BtRigidBodyClass p0 )' =>     {  withBt* `p0' , withTransform* `Transform' ,  `Bool'  } -> `BtSliderConstraint' mkBtSliderConstraint* #}+{#fun btSliderConstraint_free    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#175>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getRigidBodyB as btSliderConstraint_getRigidBodyB    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtRigidBody' mkBtRigidBody*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#233>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_setPoweredAngMotor as btSliderConstraint_setPoweredAngMotor    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Bool'  -- ^ onOff+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#170>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getInfo2NonVirtual as btSliderConstraint_getInfo2NonVirtual    `( BtSliderConstraintClass bc , BtTypedConstraint_btConstraintInfo2Class p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ info+, withTransform* `Transform'  peekTransform* -- ^ transA+, withTransform* `Transform'  peekTransform* -- ^ transB+, withVector3* `Vector3'  peekVector3* -- ^ linVelA+, withVector3* `Vector3'  peekVector3* -- ^ linVelB+,  `Float'  -- ^ rbAinvMass+,  `Float'  -- ^ rbBinvMass+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#170>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getInfo2NonVirtual as btSliderConstraint_getInfo2NonVirtual'    `( BtSliderConstraintClass bc , BtTypedConstraint_btConstraintInfo2Class p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ info+, allocaTransform-  `Transform'  peekTransform* -- ^ transA+, allocaTransform-  `Transform'  peekTransform* -- ^ transB+, allocaVector3-  `Vector3'  peekVector3* -- ^ linVelA+, allocaVector3-  `Vector3'  peekVector3* -- ^ linVelB+,  `Float'  -- ^ rbAinvMass+,  `Float'  -- ^ rbBinvMass+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#174>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getRigidBodyA as btSliderConstraint_getRigidBodyA    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtRigidBody' mkBtRigidBody*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#202>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getDampingLimAng as btSliderConstraint_getDampingLimAng    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#222>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_setRestitutionOrthoLin as btSliderConstraint_setRestitutionOrthoLin    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ restitutionOrthoLin+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#210>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_setRestitutionDirLin as btSliderConstraint_setRestitutionDirLin    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ restitutionDirLin+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#240>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getLinearPos as btSliderConstraint_getLinearPos    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#178>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getFrameOffsetA0 as btSliderConstraint_getFrameOffsetA    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#178>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getFrameOffsetA0 as btSliderConstraint_getFrameOffsetA0    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#180>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getFrameOffsetA1 as btSliderConstraint_getFrameOffsetA1    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#179>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getFrameOffsetB0 as btSliderConstraint_getFrameOffsetB    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#179>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getFrameOffsetB0 as btSliderConstraint_getFrameOffsetB0    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#181>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getFrameOffsetB1 as btSliderConstraint_getFrameOffsetB1    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#227>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_setPoweredLinMotor as btSliderConstraint_setPoweredLinMotor    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Bool'  -- ^ onOff+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#177>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getCalculatedTransformB as btSliderConstraint_getCalculatedTransformB    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#176>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getCalculatedTransformA as btSliderConstraint_getCalculatedTransformA    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#198>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getRestitutionLimLin as btSliderConstraint_getRestitutionLimLin    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#206>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getSoftnessOrthoAng as btSliderConstraint_getSoftnessOrthoAng    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#221>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_setSoftnessOrthoLin as btSliderConstraint_setSoftnessOrthoLin    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ softnessOrthoLin+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#303>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_calculateSerializeBufferSize as btSliderConstraint_calculateSerializeBufferSize    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#215>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_setSoftnessLimLin as btSliderConstraint_setSoftnessLimLin    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ softnessLimLin+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#241>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getAngularPos as btSliderConstraint_getAngularPos    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#219>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_setRestitutionLimAng as btSliderConstraint_setRestitutionLimAng    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ restitutionLimAng+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#274>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getParam as btSliderConstraint_getParam    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ num+,  `Int'  -- ^ axis+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#164>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getInfo1 as btSliderConstraint_getInfo1    `( BtSliderConstraintClass bc , BtTypedConstraint_btConstraintInfo1Class p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ info+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#168>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getInfo2 as btSliderConstraint_getInfo2    `( BtSliderConstraintClass bc , BtTypedConstraint_btConstraintInfo2Class p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ info+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#272>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_setParam as btSliderConstraint_setParam    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ num+,  `Float'  -- ^ value+,  `Int'  -- ^ axis+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#185>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_setUpperLinLimit as btSliderConstraint_setUpperLinLimit    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ upperLimit+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#211>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_setDampingDirLin as btSliderConstraint_setDampingDirLin    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ dampingDirLin+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#188>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getUpperAngLimit as btSliderConstraint_getUpperAngLimit    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#213>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_setRestitutionDirAng as btSliderConstraint_setRestitutionDirAng    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ restitutionDirAng+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#193>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getDampingDirLin as btSliderConstraint_getDampingDirLin    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#249>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getAngDepth as btSliderConstraint_getAngDepth    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#194>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getSoftnessDirAng as btSliderConstraint_getSoftnessDirAng    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#234>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getPoweredAngMotor as btSliderConstraint_getPoweredAngMotor    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#187>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_setLowerAngLimit as btSliderConstraint_setLowerAngLimit    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ lowerLimit+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#189>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_setUpperAngLimit as btSliderConstraint_setUpperAngLimit    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ upperLimit+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#229>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_setTargetLinMotorVelocity as btSliderConstraint_setTargetLinMotorVelocity    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ targetLinMotorVelocity+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#220>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_setDampingLimAng as btSliderConstraint_setDampingLimAng    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ dampingLimAng+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#201>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getRestitutionLimAng as btSliderConstraint_getRestitutionLimAng    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#258>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getUseFrameOffset as btSliderConstraint_getUseFrameOffset    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#203>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getSoftnessOrthoLin as btSliderConstraint_getSoftnessOrthoLin    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#208>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getDampingOrthoAng as btSliderConstraint_getDampingOrthoAng    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#259>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_setUseFrameOffset as btSliderConstraint_setUseFrameOffset    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Bool'  -- ^ frameOffsetOnOff+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#183>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_setLowerLinLimit as btSliderConstraint_setLowerLinLimit    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ lowerLimit+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#192>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getRestitutionDirLin as btSliderConstraint_getRestitutionDirLin    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#230>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getTargetLinMotorVelocity as btSliderConstraint_getTargetLinMotorVelocity    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#252>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_testLinLimits as btSliderConstraint_testLinLimits    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#182>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getLowerLinLimit as btSliderConstraint_getLowerLinLimit    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#261>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_setFrames as btSliderConstraint_setFrames    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ frameA+, withTransform* `Transform'  peekTransform* -- ^ frameB+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#261>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_setFrames as btSliderConstraint_setFrames'    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ frameA+, allocaTransform-  `Transform'  peekTransform* -- ^ frameB+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#197>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getSoftnessLimLin as btSliderConstraint_getSoftnessLimLin    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#166>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getInfo1NonVirtual as btSliderConstraint_getInfo1NonVirtual    `( BtSliderConstraintClass bc , BtTypedConstraint_btConstraintInfo1Class p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ info+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#226>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_setDampingOrthoAng as btSliderConstraint_setDampingOrthoAng    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ dampingOrthoAng+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#212>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_setSoftnessDirAng as btSliderConstraint_setSoftnessDirAng    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ softnessDirAng+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#255>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getAncorInA as btSliderConstraint_getAncorInA    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#228>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getPoweredLinMotor as btSliderConstraint_getPoweredLinMotor    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#256>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getAncorInB as btSliderConstraint_getAncorInB    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#225>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_setRestitutionOrthoAng as btSliderConstraint_setRestitutionOrthoAng    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ restitutionOrthoAng+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#214>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_setDampingDirAng as btSliderConstraint_setDampingDirAng    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ dampingDirAng+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#246>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getSolveLinLimit as btSliderConstraint_getSolveLinLimit    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#207>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getRestitutionOrthoAng as btSliderConstraint_getRestitutionOrthoAng    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#238>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getMaxAngMotorForce as btSliderConstraint_getMaxAngMotorForce    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#196>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getDampingDirAng as btSliderConstraint_getDampingDirAng    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#251>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_calculateTransforms as btSliderConstraint_calculateTransforms    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ transA+, withTransform* `Transform'  peekTransform* -- ^ transB+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#251>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_calculateTransforms as btSliderConstraint_calculateTransforms'    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ transA+, allocaTransform-  `Transform'  peekTransform* -- ^ transB+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#184>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getUpperLinLimit as btSliderConstraint_getUpperLinLimit    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#247>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getLinDepth as btSliderConstraint_getLinDepth    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#231>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_setMaxLinMotorForce as btSliderConstraint_setMaxLinMotorForce    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ maxLinMotorForce+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#204>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getRestitutionOrthoLin as btSliderConstraint_getRestitutionOrthoLin    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#235>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_setTargetAngMotorVelocity as btSliderConstraint_setTargetAngMotorVelocity    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ targetAngMotorVelocity+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#200>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getSoftnessLimAng as btSliderConstraint_getSoftnessLimAng    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#205>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getDampingOrthoLin as btSliderConstraint_getDampingOrthoLin    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#199>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getDampingLimLin as btSliderConstraint_getDampingLimLin    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#186>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getLowerAngLimit as btSliderConstraint_getLowerAngLimit    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#195>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getRestitutionDirAng as btSliderConstraint_getRestitutionDirAng    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#236>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getTargetAngMotorVelocity as btSliderConstraint_getTargetAngMotorVelocity    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#216>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_setRestitutionLimLin as btSliderConstraint_setRestitutionLimLin    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ restitutionLimLin+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#253>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_testAngLimits as btSliderConstraint_testAngLimits    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#232>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getMaxLinMotorForce as btSliderConstraint_getMaxLinMotorForce    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#223>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_setDampingOrthoLin as btSliderConstraint_setDampingOrthoLin    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ dampingOrthoLin+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#224>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_setSoftnessOrthoAng as btSliderConstraint_setSoftnessOrthoAng    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ softnessOrthoAng+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#248>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getSolveAngLimit as btSliderConstraint_getSolveAngLimit    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#217>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_setDampingLimLin as btSliderConstraint_setDampingLimLin    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ dampingLimLin+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#209>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_setSoftnessDirLin as btSliderConstraint_setSoftnessDirLin    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ softnessDirLin+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#237>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_setMaxAngMotorForce as btSliderConstraint_setMaxAngMotorForce    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ maxAngMotorForce+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#191>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getSoftnessDirLin as btSliderConstraint_getSoftnessDirLin    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#218>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_setSoftnessLimAng as btSliderConstraint_setSoftnessLimAng    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ softnessLimAng+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#190>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraint_getUseLinearReferenceFrameA as btSliderConstraint_getUseLinearReferenceFrameA    `( BtSliderConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+-- * btSliderConstraintData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#286>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraintData_new as btSliderConstraintData    {  } -> `BtSliderConstraintData' mkBtSliderConstraintData* #}+{#fun btSliderConstraintData_free    `( BtSliderConstraintDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#291>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraintData_m_linearUpperLimit_set    `( BtSliderConstraintDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#291>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraintData_m_linearUpperLimit_get    `( BtSliderConstraintDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#292>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraintData_m_linearLowerLimit_set    `( BtSliderConstraintDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#292>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraintData_m_linearLowerLimit_get    `( BtSliderConstraintDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#294>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraintData_m_angularUpperLimit_set    `( BtSliderConstraintDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#294>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraintData_m_angularUpperLimit_get    `( BtSliderConstraintDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#295>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraintData_m_angularLowerLimit_set    `( BtSliderConstraintDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#295>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraintData_m_angularLowerLimit_get    `( BtSliderConstraintDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#297>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraintData_m_useLinearReferenceFrameA_set    `( BtSliderConstraintDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#297>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraintData_m_useLinearReferenceFrameA_get    `( BtSliderConstraintDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#298>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraintData_m_useOffsetForConstraintFrame_set    `( BtSliderConstraintDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h?r=2223#298>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp?r=2223>+-}+{#fun btSliderConstraintData_m_useOffsetForConstraintFrame_get    `( BtSliderConstraintDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btSolverBodyObsolete+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.h?r=2223#109>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.cpp?r=2223>+-}+{#fun btSolverBodyObsolete_new as btSolverBodyObsolete    {  } -> `BtSolverBodyObsolete' mkBtSolverBodyObsolete* #}+{#fun btSolverBodyObsolete_free    `( BtSolverBodyObsoleteClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.h?r=2223#128>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.cpp?r=2223>+-}+{#fun btSolverBodyObsolete_getAngularVelocity as btSolverBodyObsolete_getAngularVelocity    `( BtSolverBodyObsoleteClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ angVel+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.h?r=2223#128>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.cpp?r=2223>+-}+{#fun btSolverBodyObsolete_getAngularVelocity as btSolverBodyObsolete_getAngularVelocity'    `( BtSolverBodyObsoleteClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ angVel+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.h?r=2223#156>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.cpp?r=2223>+-}+{#fun btSolverBodyObsolete_writebackVelocity0 as btSolverBodyObsolete_writebackVelocity    `( BtSolverBodyObsoleteClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.h?r=2223#156>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.cpp?r=2223>+-}+{#fun btSolverBodyObsolete_writebackVelocity0 as btSolverBodyObsolete_writebackVelocity0    `( BtSolverBodyObsoleteClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.h?r=2223#168>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.cpp?r=2223>+-}+{#fun btSolverBodyObsolete_writebackVelocity1 as btSolverBodyObsolete_writebackVelocity1    `( BtSolverBodyObsoleteClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ timeStep+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.h?r=2223#147>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.cpp?r=2223>+-}+{#fun btSolverBodyObsolete_internalApplyPushImpulse as btSolverBodyObsolete_internalApplyPushImpulse    `( BtSolverBodyObsoleteClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ linearComponent+, withVector3* `Vector3'  peekVector3* -- ^ angularComponent+,  `Float'  -- ^ impulseMagnitude+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.h?r=2223#147>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.cpp?r=2223>+-}+{#fun btSolverBodyObsolete_internalApplyPushImpulse as btSolverBodyObsolete_internalApplyPushImpulse'    `( BtSolverBodyObsoleteClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ linearComponent+, allocaVector3-  `Vector3'  peekVector3* -- ^ angularComponent+,  `Float'  -- ^ impulseMagnitude+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.h?r=2223#120>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.cpp?r=2223>+-}+{#fun btSolverBodyObsolete_getVelocityInLocalPointObsolete as btSolverBodyObsolete_getVelocityInLocalPointObsolete    `( BtSolverBodyObsoleteClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ rel_pos+, withVector3* `Vector3'  peekVector3* -- ^ velocity+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.h?r=2223#120>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.cpp?r=2223>+-}+{#fun btSolverBodyObsolete_getVelocityInLocalPointObsolete as btSolverBodyObsolete_getVelocityInLocalPointObsolete'    `( BtSolverBodyObsoleteClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ rel_pos+, allocaVector3-  `Vector3'  peekVector3* -- ^ velocity+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.h?r=2223#111>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.cpp?r=2223>+-}+{#fun btSolverBodyObsolete_m_deltaLinearVelocity_set    `( BtSolverBodyObsoleteClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.h?r=2223#111>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.cpp?r=2223>+-}+{#fun btSolverBodyObsolete_m_deltaLinearVelocity_get    `( BtSolverBodyObsoleteClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.h?r=2223#112>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.cpp?r=2223>+-}+{#fun btSolverBodyObsolete_m_deltaAngularVelocity_set    `( BtSolverBodyObsoleteClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.h?r=2223#112>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.cpp?r=2223>+-}+{#fun btSolverBodyObsolete_m_deltaAngularVelocity_get    `( BtSolverBodyObsoleteClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.h?r=2223#113>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.cpp?r=2223>+-}+{#fun btSolverBodyObsolete_m_angularFactor_set    `( BtSolverBodyObsoleteClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.h?r=2223#113>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.cpp?r=2223>+-}+{#fun btSolverBodyObsolete_m_angularFactor_get    `( BtSolverBodyObsoleteClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.h?r=2223#114>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.cpp?r=2223>+-}+{#fun btSolverBodyObsolete_m_invMass_set    `( BtSolverBodyObsoleteClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.h?r=2223#114>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.cpp?r=2223>+-}+{#fun btSolverBodyObsolete_m_invMass_get    `( BtSolverBodyObsoleteClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.h?r=2223#115>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.cpp?r=2223>+-}+{#fun btSolverBodyObsolete_m_originalBody_set    `( BtSolverBodyObsoleteClass bc , BtRigidBodyClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.h?r=2223#116>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.cpp?r=2223>+-}+{#fun btSolverBodyObsolete_m_pushVelocity_set    `( BtSolverBodyObsoleteClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.h?r=2223#116>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.cpp?r=2223>+-}+{#fun btSolverBodyObsolete_m_pushVelocity_get    `( BtSolverBodyObsoleteClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.h?r=2223#117>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.cpp?r=2223>+-}+{#fun btSolverBodyObsolete_m_turnVelocity_set    `( BtSolverBodyObsoleteClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.h?r=2223#117>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverBody.cpp?r=2223>+-}+{#fun btSolverBodyObsolete_m_turnVelocity_get    `( BtSolverBodyObsoleteClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+-- * btSolverConstraint+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h?r=2223#30>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.cpp?r=2223>+-}+{#fun btSolverConstraint_new as btSolverConstraint    {  } -> `BtSolverConstraint' mkBtSolverConstraint* #}+{#fun btSolverConstraint_free    `( BtSolverConstraintClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h?r=2223#33>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.cpp?r=2223>+-}+{#fun btSolverConstraint_m_relpos1CrossNormal_set    `( BtSolverConstraintClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h?r=2223#33>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.cpp?r=2223>+-}+{#fun btSolverConstraint_m_relpos1CrossNormal_get    `( BtSolverConstraintClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h?r=2223#34>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.cpp?r=2223>+-}+{#fun btSolverConstraint_m_contactNormal_set    `( BtSolverConstraintClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h?r=2223#34>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.cpp?r=2223>+-}+{#fun btSolverConstraint_m_contactNormal_get    `( BtSolverConstraintClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h?r=2223#36>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.cpp?r=2223>+-}+{#fun btSolverConstraint_m_relpos2CrossNormal_set    `( BtSolverConstraintClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h?r=2223#36>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.cpp?r=2223>+-}+{#fun btSolverConstraint_m_relpos2CrossNormal_get    `( BtSolverConstraintClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h?r=2223#39>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.cpp?r=2223>+-}+{#fun btSolverConstraint_m_angularComponentA_set    `( BtSolverConstraintClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h?r=2223#39>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.cpp?r=2223>+-}+{#fun btSolverConstraint_m_angularComponentA_get    `( BtSolverConstraintClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h?r=2223#40>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.cpp?r=2223>+-}+{#fun btSolverConstraint_m_angularComponentB_set    `( BtSolverConstraintClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h?r=2223#40>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.cpp?r=2223>+-}+{#fun btSolverConstraint_m_angularComponentB_get    `( BtSolverConstraintClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h?r=2223#42>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.cpp?r=2223>+-}+{#fun btSolverConstraint_m_appliedPushImpulse_set    `( BtSolverConstraintClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h?r=2223#42>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.cpp?r=2223>+-}+{#fun btSolverConstraint_m_appliedPushImpulse_get    `( BtSolverConstraintClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h?r=2223#43>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.cpp?r=2223>+-}+{#fun btSolverConstraint_m_appliedImpulse_set    `( BtSolverConstraintClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h?r=2223#43>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.cpp?r=2223>+-}+{#fun btSolverConstraint_m_appliedImpulse_get    `( BtSolverConstraintClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h?r=2223#46>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.cpp?r=2223>+-}+{#fun btSolverConstraint_m_friction_set    `( BtSolverConstraintClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h?r=2223#46>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.cpp?r=2223>+-}+{#fun btSolverConstraint_m_friction_get    `( BtSolverConstraintClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h?r=2223#47>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.cpp?r=2223>+-}+{#fun btSolverConstraint_m_jacDiagABInv_set    `( BtSolverConstraintClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h?r=2223#47>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.cpp?r=2223>+-}+{#fun btSolverConstraint_m_jacDiagABInv_get    `( BtSolverConstraintClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h?r=2223#76>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.cpp?r=2223>+-}+{#fun btSolverConstraint_m_rhs_set    `( BtSolverConstraintClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h?r=2223#76>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.cpp?r=2223>+-}+{#fun btSolverConstraint_m_rhs_get    `( BtSolverConstraintClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h?r=2223#77>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.cpp?r=2223>+-}+{#fun btSolverConstraint_m_cfm_set    `( BtSolverConstraintClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h?r=2223#77>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.cpp?r=2223>+-}+{#fun btSolverConstraint_m_cfm_get    `( BtSolverConstraintClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h?r=2223#78>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.cpp?r=2223>+-}+{#fun btSolverConstraint_m_lowerLimit_set    `( BtSolverConstraintClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h?r=2223#78>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.cpp?r=2223>+-}+{#fun btSolverConstraint_m_lowerLimit_get    `( BtSolverConstraintClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h?r=2223#79>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.cpp?r=2223>+-}+{#fun btSolverConstraint_m_upperLimit_set    `( BtSolverConstraintClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h?r=2223#79>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.cpp?r=2223>+-}+{#fun btSolverConstraint_m_upperLimit_get    `( BtSolverConstraintClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h?r=2223#81>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.cpp?r=2223>+-}+{#fun btSolverConstraint_m_rhsPenetration_set    `( BtSolverConstraintClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h?r=2223#81>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btSolverConstraint.cpp?r=2223>+-}+{#fun btSolverConstraint_m_rhsPenetration_get    `( BtSolverConstraintClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+-- * btTranslationalLimitMotor+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#154>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btTranslationalLimitMotor_new as btTranslationalLimitMotor    {  } -> `BtTranslationalLimitMotor' mkBtTranslationalLimitMotor* #}+{#fun btTranslationalLimitMotor_free    `( BtTranslationalLimitMotorClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#211>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btTranslationalLimitMotor_testLimitValue as btTranslationalLimitMotor_testLimitValue    `( BtTranslationalLimitMotorClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ limitIndex+,  `Float'  -- ^ test_value+ } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#206>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btTranslationalLimitMotor_needApplyForce as btTranslationalLimitMotor_needApplyForce    `( BtTranslationalLimitMotorClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ limitIndex+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#221>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btTranslationalLimitMotor_solveLinearAxis as btTranslationalLimitMotor_solveLinearAxis    `( BtTranslationalLimitMotorClass bc , BtRigidBodyClass p2 , BtRigidBodyClass p4 )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ timeStep+,  `Float'  -- ^ jacDiagABInv+, withBt* `p2'  -- ^ body1+, withVector3* `Vector3'  peekVector3* -- ^ pointInA+, withBt* `p4'  -- ^ body2+, withVector3* `Vector3'  peekVector3* -- ^ pointInB+,  `Int'  -- ^ limit_index+, withVector3* `Vector3'  peekVector3* -- ^ axis_normal_on_a+, withVector3* `Vector3'  peekVector3* -- ^ anchorPos+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#221>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btTranslationalLimitMotor_solveLinearAxis as btTranslationalLimitMotor_solveLinearAxis'    `( BtTranslationalLimitMotorClass bc , BtRigidBodyClass p2 , BtRigidBodyClass p4 )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ timeStep+,  `Float'  -- ^ jacDiagABInv+, withBt* `p2'  -- ^ body1+, allocaVector3-  `Vector3'  peekVector3* -- ^ pointInA+, withBt* `p4'  -- ^ body2+, allocaVector3-  `Vector3'  peekVector3* -- ^ pointInB+,  `Int'  -- ^ limit_index+, allocaVector3-  `Vector3'  peekVector3* -- ^ axis_normal_on_a+, allocaVector3-  `Vector3'  peekVector3* -- ^ anchorPos+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#202>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btTranslationalLimitMotor_isLimited as btTranslationalLimitMotor_isLimited    `( BtTranslationalLimitMotorClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ limitIndex+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#137>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btTranslationalLimitMotor_m_accumulatedImpulse_set    `( BtTranslationalLimitMotorClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#137>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btTranslationalLimitMotor_m_accumulatedImpulse_get    `( BtTranslationalLimitMotorClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#150>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btTranslationalLimitMotor_m_currentLimitError_set    `( BtTranslationalLimitMotorClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#150>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btTranslationalLimitMotor_m_currentLimitError_get    `( BtTranslationalLimitMotorClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#151>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btTranslationalLimitMotor_m_currentLinearDiff_set    `( BtTranslationalLimitMotorClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#151>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btTranslationalLimitMotor_m_currentLinearDiff_get    `( BtTranslationalLimitMotorClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#141>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btTranslationalLimitMotor_m_damping_set    `( BtTranslationalLimitMotorClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#141>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btTranslationalLimitMotor_m_damping_get    `( BtTranslationalLimitMotorClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#140>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btTranslationalLimitMotor_m_limitSoftness_set    `( BtTranslationalLimitMotorClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#140>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btTranslationalLimitMotor_m_limitSoftness_get    `( BtTranslationalLimitMotorClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#135>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btTranslationalLimitMotor_m_lowerLimit_set    `( BtTranslationalLimitMotorClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#135>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btTranslationalLimitMotor_m_lowerLimit_get    `( BtTranslationalLimitMotorClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#149>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btTranslationalLimitMotor_m_maxMotorForce_set    `( BtTranslationalLimitMotorClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#149>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btTranslationalLimitMotor_m_maxMotorForce_get    `( BtTranslationalLimitMotorClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#143>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btTranslationalLimitMotor_m_normalCFM_set    `( BtTranslationalLimitMotorClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#143>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btTranslationalLimitMotor_m_normalCFM_get    `( BtTranslationalLimitMotorClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#142>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btTranslationalLimitMotor_m_restitution_set    `( BtTranslationalLimitMotorClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#142>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btTranslationalLimitMotor_m_restitution_get    `( BtTranslationalLimitMotorClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#145>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btTranslationalLimitMotor_m_stopCFM_set    `( BtTranslationalLimitMotorClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#145>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btTranslationalLimitMotor_m_stopCFM_get    `( BtTranslationalLimitMotorClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#144>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btTranslationalLimitMotor_m_stopERP_set    `( BtTranslationalLimitMotorClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#144>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btTranslationalLimitMotor_m_stopERP_get    `( BtTranslationalLimitMotorClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#148>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btTranslationalLimitMotor_m_targetVelocity_set    `( BtTranslationalLimitMotorClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#148>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btTranslationalLimitMotor_m_targetVelocity_get    `( BtTranslationalLimitMotorClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#136>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btTranslationalLimitMotor_m_upperLimit_set    `( BtTranslationalLimitMotorClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h?r=2223#136>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp?r=2223>+-}+{#fun btTranslationalLimitMotor_m_upperLimit_get    `( BtTranslationalLimitMotorClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+-- * btTypedConstraint+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#192>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_getRigidBodyB0 as btTypedConstraint_getRigidBodyB    `( BtTypedConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtRigidBody' mkBtRigidBody*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#192>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_getRigidBodyB0 as btTypedConstraint_getRigidBodyB0    `( BtTypedConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtRigidBody' mkBtRigidBody*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#201>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_getRigidBodyB1 as btTypedConstraint_getRigidBodyB1    `( BtTypedConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtRigidBody' mkBtRigidBody*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#134>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_buildJacobian as btTypedConstraint_buildJacobian    `( BtTypedConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#188>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_getRigidBodyA0 as btTypedConstraint_getRigidBodyA    `( BtTypedConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtRigidBody' mkBtRigidBody*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#188>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_getRigidBodyA0 as btTypedConstraint_getRigidBodyA0    `( BtTypedConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtRigidBody' mkBtRigidBody*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#197>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_getRigidBodyA1 as btTypedConstraint_getRigidBodyA1    `( BtTypedConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtRigidBody' mkBtRigidBody*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#248>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_enableFeedback as btTypedConstraint_enableFeedback    `( BtTypedConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Bool'  -- ^ needsFeedback+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#221>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_getUserConstraintId as btTypedConstraint_getUserConstraintId    `( BtTypedConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#277>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_setParam as btTypedConstraint_setParam    `( BtTypedConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ num+,  `Float'  -- ^ value+,  `Int'  -- ^ axis+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#280>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_getParam as btTypedConstraint_getParam    `( BtTypedConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ num+,  `Int'  -- ^ axis+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#146>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_getInfo1 as btTypedConstraint_getInfo1    `( BtTypedConstraintClass bc , BtTypedConstraint_btConstraintInfo1Class p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ info+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#149>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_getInfo2 as btTypedConstraint_getInfo2    `( BtTypedConstraintClass bc , BtTypedConstraint_btConstraintInfo2Class p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ info+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#168>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_setBreakingImpulseThreshold as btTypedConstraint_setBreakingImpulseThreshold    `( BtTypedConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ threshold+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#335>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_calculateSerializeBufferSize as btTypedConstraint_calculateSerializeBufferSize    `( BtTypedConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#173>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_isEnabled as btTypedConstraint_isEnabled    `( BtTypedConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#216>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_setUserConstraintId as btTypedConstraint_setUserConstraintId    `( BtTypedConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ uid+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#270>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_getDbgDrawSize as btTypedConstraint_getDbgDrawSize    `( BtTypedConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#152>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_internalSetAppliedImpulse as btTypedConstraint_internalSetAppliedImpulse    `( BtTypedConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ appliedImpulse+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#241>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_needsFeedback as btTypedConstraint_needsFeedback    `( BtTypedConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#178>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_setEnabled as btTypedConstraint_setEnabled    `( BtTypedConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Bool'  -- ^ enabled+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#236>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_getUid as btTypedConstraint_getUid    `( BtTypedConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#266>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_setDbgDrawSize as btTypedConstraint_setDbgDrawSize    `( BtTypedConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ dbgDrawSize+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#211>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_setUserConstraintType as btTypedConstraint_setUserConstraintType    `( BtTypedConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ userConstraintType+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#157>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_internalGetAppliedImpulse as btTypedConstraint_internalGetAppliedImpulse    `( BtTypedConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#163>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_getBreakingImpulseThreshold as btTypedConstraint_getBreakingImpulseThreshold    `( BtTypedConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#206>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_getUserConstraintType as btTypedConstraint_getUserConstraintType    `( BtTypedConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#185>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_solveConstraintObsolete as btTypedConstraint_solveConstraintObsolete    `( BtTypedConstraintClass bc , BtRigidBodyClass p0 , BtRigidBodyClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ arg0+, withBt* `p1'  -- ^ arg1+,  `Float'  -- ^ arg2+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#255>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraint_getAppliedImpulse as btTypedConstraint_getAppliedImpulse    `( BtTypedConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+-- * btTypedConstraintData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#317>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraintData_new as btTypedConstraintData    {  } -> `BtTypedConstraintData' mkBtTypedConstraintData* #}+{#fun btTypedConstraintData_free    `( BtTypedConstraintDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#327>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraintData_m_appliedImpulse_set    `( BtTypedConstraintDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#327>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraintData_m_appliedImpulse_get    `( BtTypedConstraintDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#328>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraintData_m_dbgDrawSize_set    `( BtTypedConstraintDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#328>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraintData_m_dbgDrawSize_get    `( BtTypedConstraintDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#330>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraintData_m_disableCollisionsBetweenLinkedBodies_set    `( BtTypedConstraintDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#330>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraintData_m_disableCollisionsBetweenLinkedBodies_get    `( BtTypedConstraintDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#320>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraintData_m_name_set    `( BtTypedConstraintDataClass bc )' =>     { withBt* `bc' ,  `String'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#320>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraintData_m_name_get    `( BtTypedConstraintDataClass bc )' =>     { withBt* `bc'  } ->  `String'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#325>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraintData_m_needsFeedback_set    `( BtTypedConstraintDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#325>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraintData_m_needsFeedback_get    `( BtTypedConstraintDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#322>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraintData_m_objectType_set    `( BtTypedConstraintDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#322>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraintData_m_objectType_get    `( BtTypedConstraintDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#318>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraintData_m_rbA_set    `( BtTypedConstraintDataClass bc , BtRigidBodyFloatDataClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#319>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraintData_m_rbB_set    `( BtTypedConstraintDataClass bc , BtRigidBodyFloatDataClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#324>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraintData_m_userConstraintId_set    `( BtTypedConstraintDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#324>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraintData_m_userConstraintId_get    `( BtTypedConstraintDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#323>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraintData_m_userConstraintType_set    `( BtTypedConstraintDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h?r=2223#323>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp?r=2223>+-}+{#fun btTypedConstraintData_m_userConstraintType_get    `( BtTypedConstraintDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btUniversalConstraint+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.h?r=2223#44>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp?r=2223>+-}+{#fun btUniversalConstraint_new as btUniversalConstraint    `( BtRigidBodyClass p0 , BtRigidBodyClass p1 )' =>     {  withBt* `p0' , withBt* `p1' , withVector3* `Vector3' , withVector3* `Vector3' , withVector3* `Vector3'  } -> `BtUniversalConstraint' mkBtUniversalConstraint* #}+{#fun btUniversalConstraint_free    `( BtUniversalConstraintClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.h?r=2223#54>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp?r=2223>+-}+{#fun btUniversalConstraint_setLowerLimit as btUniversalConstraint_setLowerLimit    `( BtUniversalConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ ang1min+,  `Float'  -- ^ ang2min+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.h?r=2223#47>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp?r=2223>+-}+{#fun btUniversalConstraint_getAnchor2 as btUniversalConstraint_getAnchor2    `( BtUniversalConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.h?r=2223#56>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp?r=2223>+-}+{#fun btUniversalConstraint_setAxis as btUniversalConstraint_setAxis    `( BtUniversalConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ axis1+, withVector3* `Vector3'  peekVector3* -- ^ axis2+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.h?r=2223#56>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp?r=2223>+-}+{#fun btUniversalConstraint_setAxis as btUniversalConstraint_setAxis'    `( BtUniversalConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ axis1+, allocaVector3-  `Vector3'  peekVector3* -- ^ axis2+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.h?r=2223#48>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp?r=2223>+-}+{#fun btUniversalConstraint_getAxis1 as btUniversalConstraint_getAxis1    `( BtUniversalConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.h?r=2223#46>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp?r=2223>+-}+{#fun btUniversalConstraint_getAnchor as btUniversalConstraint_getAnchor    `( BtUniversalConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.h?r=2223#49>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp?r=2223>+-}+{#fun btUniversalConstraint_getAxis2 as btUniversalConstraint_getAxis2    `( BtUniversalConstraintClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.h?r=2223#53>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp?r=2223>+-}+{#fun btUniversalConstraint_setUpperLimit as btUniversalConstraint_setUpperLimit    `( BtUniversalConstraintClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ ang1max+,  `Float'  -- ^ ang2max+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.h?r=2223#51>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp?r=2223>+-}+{#fun btUniversalConstraint_getAngle2 as btUniversalConstraint_getAngle2    `( BtUniversalConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.h?r=2223#50>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp?r=2223>+-}+{#fun btUniversalConstraint_getAngle1 as btUniversalConstraint_getAngle1    `( BtUniversalConstraintClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}
+ Physics/Bullet/Raw/BulletDynamics/Dynamics.chs view
@@ -0,0 +1,1537 @@+{-#LANGUAGE ForeignFunctionInterface#-}+#include "Bullet.h"+module Physics.Bullet.Raw.BulletDynamics.Dynamics (+module Physics.Bullet.Raw.BulletDynamics.Dynamics+) where+import Control.Monad+import Foreign.Marshal.Alloc+import Foreign.ForeignPtr+import Foreign.Ptr+import Physics.Bullet.Raw.C2HS+import Physics.Bullet.Raw.Types+import Physics.Bullet.Raw.Class+-- * btActionInterface+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btActionInterface.h?r=2223#39>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btActionInterface.cpp?r=2223>+-}+{#fun btActionInterface_updateAction as btActionInterface_updateAction    `( BtActionInterfaceClass bc , BtCollisionWorldClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ collisionWorld+,  `Float'  -- ^ deltaTimeStep+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btActionInterface.h?r=2223#41>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btActionInterface.cpp?r=2223>+-}+{#fun btActionInterface_debugDraw as btActionInterface_debugDraw    `( BtActionInterfaceClass bc , BtIDebugDrawClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ debugDrawer+ } ->  `()'  #}+-- * btContinuousDynamicsWorld+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btContinuousDynamicsWorld.h?r=2223#31>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btContinuousDynamicsWorld.cpp?r=2223>+-}+{#fun btContinuousDynamicsWorld_new as btContinuousDynamicsWorld    `( BtDispatcherClass p0 , BtBroadphaseInterfaceClass p1 , BtConstraintSolverClass p2 , BtCollisionConfigurationClass p3 )' =>     {  withBt* `p0' , withBt* `p1' , withBt* `p2' , withBt* `p3'  } -> `BtContinuousDynamicsWorld' mkBtContinuousDynamicsWorld* #}+{#fun btContinuousDynamicsWorld_free    `( BtContinuousDynamicsWorldClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btContinuousDynamicsWorld.h?r=2223#35>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btContinuousDynamicsWorld.cpp?r=2223>+-}+{#fun btContinuousDynamicsWorld_internalSingleStepSimulation as btContinuousDynamicsWorld_internalSingleStepSimulation    `( BtContinuousDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ timeStep+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btContinuousDynamicsWorld.h?r=2223#37>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btContinuousDynamicsWorld.cpp?r=2223>+-}+{#fun btContinuousDynamicsWorld_calculateTimeOfImpacts as btContinuousDynamicsWorld_calculateTimeOfImpacts    `( BtContinuousDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ timeStep+ } ->  `()'  #}+-- * btDiscreteDynamicsWorld+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#88>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_new as btDiscreteDynamicsWorld    `( BtDispatcherClass p0 , BtBroadphaseInterfaceClass p1 , BtConstraintSolverClass p2 , BtCollisionConfigurationClass p3 )' =>     {  withBt* `p0' , withBt* `p1' , withBt* `p2' , withBt* `p3'  } -> `BtDiscreteDynamicsWorld' mkBtDiscreteDynamicsWorld* #}+{#fun btDiscreteDynamicsWorld_free    `( BtDiscreteDynamicsWorldClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#124>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_setGravity as btDiscreteDynamicsWorld_setGravity    `( BtDiscreteDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ gravity+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#124>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_setGravity as btDiscreteDynamicsWorld_setGravity'    `( BtDiscreteDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ gravity+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#105>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_addAction as btDiscreteDynamicsWorld_addAction    `( BtDiscreteDynamicsWorldClass bc , BtActionInterfaceClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ arg0+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#164>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_applyGravity as btDiscreteDynamicsWorld_applyGravity    `( BtDiscreteDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#196>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_serialize as btDiscreteDynamicsWorld_serialize    `( BtDiscreteDynamicsWorldClass bc , BtSerializerClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ serializer+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#119>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_getCollisionWorld as btDiscreteDynamicsWorld_getCollisionWorld    `( BtDiscreteDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtCollisionWorld' mkBtCollisionWorld*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#130>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_addRigidBody0 as btDiscreteDynamicsWorld_addRigidBody    `( BtDiscreteDynamicsWorldClass bc , BtRigidBodyClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ body+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#130>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_addRigidBody0 as btDiscreteDynamicsWorld_addRigidBody0    `( BtDiscreteDynamicsWorldClass bc , BtRigidBodyClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ body+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#132>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_addRigidBody1 as btDiscreteDynamicsWorld_addRigidBody1    `( BtDiscreteDynamicsWorldClass bc , BtRigidBodyClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ body+,  `Int'  -- ^ group+,  `Int'  -- ^ mask+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#161>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_clearForces as btDiscreteDynamicsWorld_clearForces    `( BtDiscreteDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#180>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_removeVehicle as btDiscreteDynamicsWorld_removeVehicle    `( BtDiscreteDynamicsWorldClass bc , BtActionInterfaceClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ vehicle+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#190>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_getSynchronizeAllMotionStates as btDiscreteDynamicsWorld_getSynchronizeAllMotionStates    `( BtDiscreteDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#166>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_setNumTasks as btDiscreteDynamicsWorld_setNumTasks    `( BtDiscreteDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ numTasks+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#186>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_setSynchronizeAllMotionStates as btDiscreteDynamicsWorld_setSynchronizeAllMotionStates    `( BtDiscreteDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ +,  `Bool'  -- ^ synchronizeAll+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#103>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_removeConstraint as btDiscreteDynamicsWorld_removeConstraint    `( BtDiscreteDynamicsWorldClass bc , BtTypedConstraintClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ constraint+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#148>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_getNumConstraints as btDiscreteDynamicsWorld_getNumConstraints    `( BtDiscreteDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#128>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_addCollisionObject as btDiscreteDynamicsWorld_addCollisionObject    `( BtDiscreteDynamicsWorldClass bc , BtCollisionObjectClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ collisionObject+,  `Int'  -- ^ collisionFilterGroup+,  `Int'  -- ^ collisionFilterMask+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#134>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_removeRigidBody as btDiscreteDynamicsWorld_removeRigidBody    `( BtDiscreteDynamicsWorldClass bc , BtRigidBodyClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ body+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#140>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_debugDrawConstraint as btDiscreteDynamicsWorld_debugDrawConstraint    `( BtDiscreteDynamicsWorldClass bc , BtTypedConstraintClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ constraint+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#142>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_debugDrawWorld as btDiscreteDynamicsWorld_debugDrawWorld    `( BtDiscreteDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#101>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_addConstraint as btDiscreteDynamicsWorld_addConstraint    `( BtDiscreteDynamicsWorldClass bc , BtTypedConstraintClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ constraint+,  `Bool'  -- ^ disableCollisionsBetweenLinkedBodies+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#126>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_getGravity as btDiscreteDynamicsWorld_getGravity    `( BtDiscreteDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#107>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_removeAction as btDiscreteDynamicsWorld_removeAction    `( BtDiscreteDynamicsWorldClass bc , BtActionInterfaceClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ arg0+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#184>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_removeCharacter as btDiscreteDynamicsWorld_removeCharacter    `( BtDiscreteDynamicsWorldClass bc , BtActionInterfaceClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ character+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#150>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_getConstraint0 as btDiscreteDynamicsWorld_getConstraint    `( BtDiscreteDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BtTypedConstraint' mkBtTypedConstraint*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#150>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_getConstraint0 as btDiscreteDynamicsWorld_getConstraint0    `( BtDiscreteDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BtTypedConstraint' mkBtTypedConstraint*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#152>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_getConstraint1 as btDiscreteDynamicsWorld_getConstraint1    `( BtDiscreteDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BtTypedConstraint' mkBtTypedConstraint*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#146>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_getConstraintSolver as btDiscreteDynamicsWorld_getConstraintSolver    `( BtDiscreteDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtConstraintSolver' mkBtConstraintSolver*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#93>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_stepSimulation as btDiscreteDynamicsWorld_stepSimulation    `( BtDiscreteDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ timeStep+,  `Int'  -- ^ maxSubSteps+,  `Float'  -- ^ fixedTimeStep+ } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#182>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_addCharacter as btDiscreteDynamicsWorld_addCharacter    `( BtDiscreteDynamicsWorldClass bc , BtActionInterfaceClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ character+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#172>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_updateVehicles as btDiscreteDynamicsWorld_updateVehicles    `( BtDiscreteDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ timeStep+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#99>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_synchronizeSingleMotionState as btDiscreteDynamicsWorld_synchronizeSingleMotionState    `( BtDiscreteDynamicsWorldClass bc , BtRigidBodyClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ body+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#178>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_addVehicle as btDiscreteDynamicsWorld_addVehicle    `( BtDiscreteDynamicsWorldClass bc , BtActionInterfaceClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ vehicle+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#96>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_synchronizeMotionStates as btDiscreteDynamicsWorld_synchronizeMotionStates    `( BtDiscreteDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#137>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_removeCollisionObject as btDiscreteDynamicsWorld_removeCollisionObject    `( BtDiscreteDynamicsWorldClass bc , BtCollisionObjectClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ collisionObject+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h?r=2223#144>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp?r=2223>+-}+{#fun btDiscreteDynamicsWorld_setConstraintSolver as btDiscreteDynamicsWorld_setConstraintSolver    `( BtDiscreteDynamicsWorldClass bc , BtConstraintSolverClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ solver+ } ->  `()'  #}+-- * btDynamicsWorld+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.h?r=2223#83>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.cpp?r=2223>+-}+{#fun btDynamicsWorld_setGravity as btDynamicsWorld_setGravity    `( BtDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ gravity+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.h?r=2223#83>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.cpp?r=2223>+-}+{#fun btDynamicsWorld_setGravity as btDynamicsWorld_setGravity'    `( BtDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ gravity+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.h?r=2223#77>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.cpp?r=2223>+-}+{#fun btDynamicsWorld_addAction as btDynamicsWorld_addAction    `( BtDynamicsWorldClass bc , BtActionInterfaceClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ action+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.h?r=2223#131>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.cpp?r=2223>+-}+{#fun btDynamicsWorld_getSolverInfo as btDynamicsWorld_getSolverInfo    `( BtDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtContactSolverInfo' mkBtContactSolverInfo*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.h?r=2223#88>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.cpp?r=2223>+-}+{#fun btDynamicsWorld_addRigidBody0 as btDynamicsWorld_addRigidBody    `( BtDynamicsWorldClass bc , BtRigidBodyClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ body+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.h?r=2223#88>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.cpp?r=2223>+-}+{#fun btDynamicsWorld_addRigidBody0 as btDynamicsWorld_addRigidBody0    `( BtDynamicsWorldClass bc , BtRigidBodyClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ body+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.h?r=2223#90>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.cpp?r=2223>+-}+{#fun btDynamicsWorld_addRigidBody1 as btDynamicsWorld_addRigidBody1    `( BtDynamicsWorldClass bc , BtRigidBodyClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ body+,  `Int'  -- ^ group+,  `Int'  -- ^ mask+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.h?r=2223#106>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.cpp?r=2223>+-}+{#fun btDynamicsWorld_clearForces as btDynamicsWorld_clearForces    `( BtDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.h?r=2223#140>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.cpp?r=2223>+-}+{#fun btDynamicsWorld_removeVehicle as btDynamicsWorld_removeVehicle    `( BtDynamicsWorldClass bc , BtActionInterfaceClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ vehicle+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.h?r=2223#75>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.cpp?r=2223>+-}+{#fun btDynamicsWorld_removeConstraint as btDynamicsWorld_removeConstraint    `( BtDynamicsWorldClass bc , BtTypedConstraintClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ constraint+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.h?r=2223#98>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.cpp?r=2223>+-}+{#fun btDynamicsWorld_getNumConstraints as btDynamicsWorld_getNumConstraints    `( BtDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.h?r=2223#92>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.cpp?r=2223>+-}+{#fun btDynamicsWorld_removeRigidBody as btDynamicsWorld_removeRigidBody    `( BtDynamicsWorldClass bc , BtRigidBodyClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ body+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.h?r=2223#86>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.cpp?r=2223>+-}+{#fun btDynamicsWorld_synchronizeMotionStates as btDynamicsWorld_synchronizeMotionStates    `( BtDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.h?r=2223#70>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.cpp?r=2223>+-}+{#fun btDynamicsWorld_addConstraint as btDynamicsWorld_addConstraint    `( BtDynamicsWorldClass bc , BtTypedConstraintClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ constraint+,  `Bool'  -- ^ disableCollisionsBetweenLinkedBodies+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.h?r=2223#84>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.cpp?r=2223>+-}+{#fun btDynamicsWorld_getGravity as btDynamicsWorld_getGravity    `( BtDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.h?r=2223#68>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.cpp?r=2223>+-}+{#fun btDynamicsWorld_debugDrawWorld as btDynamicsWorld_debugDrawWorld    `( BtDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.h?r=2223#79>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.cpp?r=2223>+-}+{#fun btDynamicsWorld_removeAction as btDynamicsWorld_removeAction    `( BtDynamicsWorldClass bc , BtActionInterfaceClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ action+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.h?r=2223#144>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.cpp?r=2223>+-}+{#fun btDynamicsWorld_removeCharacter as btDynamicsWorld_removeCharacter    `( BtDynamicsWorldClass bc , BtActionInterfaceClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ character+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.h?r=2223#100>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.cpp?r=2223>+-}+{#fun btDynamicsWorld_getConstraint0 as btDynamicsWorld_getConstraint    `( BtDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BtTypedConstraint' mkBtTypedConstraint*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.h?r=2223#100>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.cpp?r=2223>+-}+{#fun btDynamicsWorld_getConstraint0 as btDynamicsWorld_getConstraint0    `( BtDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BtTypedConstraint' mkBtTypedConstraint*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.h?r=2223#102>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.cpp?r=2223>+-}+{#fun btDynamicsWorld_getConstraint1 as btDynamicsWorld_getConstraint1    `( BtDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BtTypedConstraint' mkBtTypedConstraint*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.h?r=2223#96>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.cpp?r=2223>+-}+{#fun btDynamicsWorld_getConstraintSolver as btDynamicsWorld_getConstraintSolver    `( BtDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtConstraintSolver' mkBtConstraintSolver*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.h?r=2223#66>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.cpp?r=2223>+-}+{#fun btDynamicsWorld_stepSimulation as btDynamicsWorld_stepSimulation    `( BtDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ timeStep+,  `Int'  -- ^ maxSubSteps+,  `Float'  -- ^ fixedTimeStep+ } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.h?r=2223#142>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.cpp?r=2223>+-}+{#fun btDynamicsWorld_addCharacter as btDynamicsWorld_addCharacter    `( BtDynamicsWorldClass bc , BtActionInterfaceClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ character+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.h?r=2223#138>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.cpp?r=2223>+-}+{#fun btDynamicsWorld_addVehicle as btDynamicsWorld_addVehicle    `( BtDynamicsWorldClass bc , BtActionInterfaceClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ vehicle+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.h?r=2223#94>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btDynamicsWorld.cpp?r=2223>+-}+{#fun btDynamicsWorld_setConstraintSolver as btDynamicsWorld_setConstraintSolver    `( BtDynamicsWorldClass bc , BtConstraintSolverClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ solver+ } ->  `()'  #}+-- * btRigidBody+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#164>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_new0 as btRigidBody0    `( BtRigidBody_btRigidBodyConstructionInfoClass p0 )' =>     {  withBt* `p0'  } -> `BtRigidBody' mkBtRigidBody* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#168>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_new1 as btRigidBody1    `( BtMotionStateClass p1 , BtCollisionShapeClass p2 )' =>     {   `Float' , withBt* `p1' , withBt* `p2' , withVector3* `Vector3'  } -> `BtRigidBody' mkBtRigidBody* #}+{#fun btRigidBody_free    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#209>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_setGravity as btRigidBody_setGravity    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ acceleration+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#209>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_setGravity as btRigidBody_setGravity'    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ acceleration+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#405>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_updateDeactivation as btRigidBody_updateDeactivation    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ timeStep+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#477>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_setAngularFactor0 as btRigidBody_setAngularFactor    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ angFac+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#477>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_setAngularFactor0 as btRigidBody_setAngularFactor'    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ angFac+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#477>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_setAngularFactor0 as btRigidBody_setAngularFactor0    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ angFac+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#477>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_setAngularFactor0 as btRigidBody_setAngularFactor0'    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ angFac+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#482>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_setAngularFactor1 as btRigidBody_setAngularFactor1    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ angFac+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#606>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_internalWritebackVelocity0 as btRigidBody_internalWritebackVelocity    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#606>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_internalWritebackVelocity0 as btRigidBody_internalWritebackVelocity0    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#619>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_internalWritebackVelocity1 as btRigidBody_internalWritebackVelocity1    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ timeStep+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#532>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getPushVelocity as btRigidBody_getPushVelocity    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#551>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_internalGetDeltaAngularVelocity as btRigidBody_internalGetDeltaAngularVelocity    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#207>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_applyGravity as btRigidBody_applyGravity    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#343>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getOrientation as btRigidBody_getOrientation    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaQuaternion-  `Quaternion'  peekQuaternion* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#268>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_applyCentralForce as btRigidBody_applyCentralForce    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ force+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#268>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_applyCentralForce as btRigidBody_applyCentralForce'    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ force+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#466>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_setMotionState as btRigidBody_setMotionState    `( BtRigidBodyClass bc , BtMotionStateClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ motionState+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#332>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_clearForces as btRigidBody_clearForces    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#458>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getMotionState0 as btRigidBody_getMotionState    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtMotionState' mkBtMotionState*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#458>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getMotionState0 as btRigidBody_getMotionState0    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtMotionState' mkBtMotionState*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#462>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getMotionState1 as btRigidBody_getMotionState1    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtMotionState' mkBtMotionState*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#216>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_setDamping as btRigidBody_setDamping    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ lin_damping+,  `Float'  -- ^ ang_damping+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#320>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_applyImpulse as btRigidBody_applyImpulse    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ impulse+, withVector3* `Vector3'  peekVector3* -- ^ rel_pos+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#320>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_applyImpulse as btRigidBody_applyImpulse'    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ impulse+, allocaVector3-  `Vector3'  peekVector3* -- ^ rel_pos+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#299>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_applyTorque as btRigidBody_applyTorque    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ torque+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#299>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_applyTorque as btRigidBody_applyTorque'    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ torque+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#597>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_internalApplyPushImpulse as btRigidBody_internalApplyPushImpulse    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ linearComponent+, withVector3* `Vector3'  peekVector3* -- ^ angularComponent+,  `Float'  -- ^ impulseMagnitude+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#597>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_internalApplyPushImpulse as btRigidBody_internalApplyPushImpulse'    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ linearComponent+, allocaVector3-  `Vector3'  peekVector3* -- ^ angularComponent+,  `Float'  -- ^ impulseMagnitude+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#422>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_wantsSleeping as btRigidBody_wantsSleeping    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#452>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_setNewBroadphaseProxy as btRigidBody_setNewBroadphaseProxy    `( BtRigidBodyClass bc , BtBroadphaseProxyClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ broadphaseProxy+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#366>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getVelocityInLocalPoint as btRigidBody_getVelocityInLocalPoint    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ rel_pos+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#366>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getVelocityInLocalPoint as btRigidBody_getVelocityInLocalPoint'    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ rel_pos+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#625>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_calculateSerializeBufferSize as btRigidBody_calculateSerializeBufferSize    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#361>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_setAngularVelocity as btRigidBody_setAngularVelocity    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ ang_vel+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#361>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_setAngularVelocity as btRigidBody_setAngularVelocity'    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ ang_vel+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#250>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getLinearFactor as btRigidBody_getLinearFactor    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#203>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_predictIntegratedTransform as btRigidBody_predictIntegratedTransform    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ step+, withTransform* `Transform'  peekTransform* -- ^ predictedTransform+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#203>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_predictIntegratedTransform as btRigidBody_predictIntegratedTransform'    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ step+, allocaTransform-  `Transform'  peekTransform* -- ^ predictedTransform+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#556>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_internalGetAngularFactor as btRigidBody_internalGetAngularFactor    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#233>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getAngularSleepingThreshold as btRigidBody_getAngularSleepingThreshold    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#238>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_applyDamping as btRigidBody_applyDamping    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ timeStep+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#205>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_saveKinematicState as btRigidBody_saveKinematicState    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ step+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#293>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_setSleepingThresholds as btRigidBody_setSleepingThresholds    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ linear+,  `Float'  -- ^ angular+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#351>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getAngularVelocity as btRigidBody_getAngularVelocity    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#228>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getLinearSleepingThreshold as btRigidBody_getLinearSleepingThreshold    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#561>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_internalGetInvMass as btRigidBody_internalGetInvMass    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#315>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_applyTorqueImpulse as btRigidBody_applyTorqueImpulse    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ torque+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#315>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_applyTorqueImpulse as btRigidBody_applyTorqueImpulse'    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ torque+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#566>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_internalGetPushVelocity as btRigidBody_internalGetPushVelocity    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#254>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_setLinearFactor as btRigidBody_setLinearFactor    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ linearFactor+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#254>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_setLinearFactor as btRigidBody_setLinearFactor'    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ linearFactor+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#630>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_serializeSingleObject as btRigidBody_serializeSingleObject    `( BtRigidBodyClass bc , BtSerializerClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ serializer+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#259>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getInvMass as btRigidBody_getInvMass    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#273>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getTotalForce as btRigidBody_getTotalForce    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#340>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getCenterOfMassPosition as btRigidBody_getCenterOfMassPosition    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#381>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getAabb as btRigidBody_getAabb    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#381>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getAabb as btRigidBody_getAabb'    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#444>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getBroadphaseProxy0 as btRigidBody_getBroadphaseProxy    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtBroadphaseProxy' mkBtBroadphaseProxy*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#444>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getBroadphaseProxy0 as btRigidBody_getBroadphaseProxy0    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtBroadphaseProxy' mkBtBroadphaseProxy*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#448>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getBroadphaseProxy1 as btRigidBody_getBroadphaseProxy1    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtBroadphaseProxy' mkBtBroadphaseProxy*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#240>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getCollisionShape0 as btRigidBody_getCollisionShape    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtCollisionShape' mkBtCollisionShape*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#240>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getCollisionShape0 as btRigidBody_getCollisionShape0    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtCollisionShape' mkBtCollisionShape*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#244>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getCollisionShape1 as btRigidBody_getCollisionShape1    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtCollisionShape' mkBtCollisionShape*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#189>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_upcast0 as btRigidBody_upcast    `(  BtCollisionObjectClass p0 )' =>     {  withBt* `p0'  -- ^ colObj+ } ->  `BtRigidBody' mkBtRigidBody*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#189>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_upcast0 as btRigidBody_upcast0    `(  BtCollisionObjectClass p0 )' =>     {  withBt* `p0'  -- ^ colObj+ } ->  `BtRigidBody' mkBtRigidBody*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#195>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_upcast1 as btRigidBody_upcast1    `(  BtCollisionObjectClass p0 )' =>     {  withBt* `p0'  -- ^ colObj+ } ->  `BtRigidBody' mkBtRigidBody*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#497>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_checkCollideWithOverride as btRigidBody_checkCollideWithOverride    `( BtRigidBodyClass bc , BtCollisionObjectClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ co+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#375>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_translate as btRigidBody_translate    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ v+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#375>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_translate as btRigidBody_translate'    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ v+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#338>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_updateInertiaTensor as btRigidBody_updateInertiaTensor    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#304>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_applyForce as btRigidBody_applyForce    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ force+, withVector3* `Vector3'  peekVector3* -- ^ rel_pos+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#304>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_applyForce as btRigidBody_applyForce'    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ force+, allocaVector3-  `Vector3'  peekVector3* -- ^ rel_pos+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#581>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_internalGetAngularVelocity as btRigidBody_internalGetAngularVelocity    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ angVel+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#581>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_internalGetAngularVelocity as btRigidBody_internalGetAngularVelocity'    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ angVel+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#310>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_applyCentralImpulse as btRigidBody_applyCentralImpulse    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ impulse+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#310>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_applyCentralImpulse as btRigidBody_applyCentralImpulse'    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ impulse+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#537>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getTurnVelocity as btRigidBody_getTurnVelocity    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#522>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getDeltaLinearVelocity as btRigidBody_getDeltaLinearVelocity    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#264>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_integrateVelocities as btRigidBody_integrateVelocities    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ step+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#211>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getGravity as btRigidBody_getGravity    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#248>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_setMassProps as btRigidBody_setMassProps    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, withVector3* `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#248>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_setMassProps as btRigidBody_setMassProps'    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+, allocaVector3-  `Vector3'  peekVector3* -- ^ inertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#266>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_setCenterOfMassTransform as btRigidBody_setCenterOfMassTransform    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ xform+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#266>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_setCenterOfMassTransform as btRigidBody_setCenterOfMassTransform'    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ xform+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#512>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_setFlags as btRigidBody_setFlags    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ flags+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#499>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_addConstraintRef as btRigidBody_addConstraintRef    `( BtRigidBodyClass bc , BtTypedConstraintClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ c+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#356>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_setLinearVelocity as btRigidBody_setLinearVelocity    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ lin_vel+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#356>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_setLinearVelocity as btRigidBody_setLinearVelocity'    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ lin_vel+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#492>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_isInWorld as btRigidBody_isInWorld    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#278>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getTotalTorque as btRigidBody_getTotalTorque    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#507>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getNumConstraintRefs as btRigidBody_getNumConstraintRefs    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#399>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_computeAngularImpulseDenominator as btRigidBody_computeAngularImpulseDenominator    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ axis+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#399>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_computeAngularImpulseDenominator as btRigidBody_computeAngularImpulseDenominator'    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ axis+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#260>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getInvInertiaTensorWorld as btRigidBody_getInvInertiaTensorWorld    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaMatrix3x3-  `Matrix3x3'  peekMatrix3x3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#527>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getDeltaAngularVelocity as btRigidBody_getDeltaAngularVelocity    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#546>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_internalGetDeltaLinearVelocity as btRigidBody_internalGetDeltaLinearVelocity    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#387>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_computeImpulseDenominator as btRigidBody_computeImpulseDenominator    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ pos+, withVector3* `Vector3'  peekVector3* -- ^ normal+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#387>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_computeImpulseDenominator as btRigidBody_computeImpulseDenominator'    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ pos+, allocaVector3-  `Vector3'  peekVector3* -- ^ normal+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#502>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getConstraintRef as btRigidBody_getConstraintRef    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BtTypedConstraint' mkBtTypedConstraint*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#223>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getAngularDamping as btRigidBody_getAngularDamping    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#571>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_internalGetTurnVelocity as btRigidBody_internalGetTurnVelocity    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#185>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_proceedToTransform as btRigidBody_proceedToTransform    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ newTrans+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#185>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_proceedToTransform as btRigidBody_proceedToTransform'    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ newTrans+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#288>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_setInvInertiaDiagLocal as btRigidBody_setInvInertiaDiagLocal    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ diagInvInertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#288>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_setInvInertiaDiagLocal as btRigidBody_setInvInertiaDiagLocal'    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ diagInvInertia+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#283>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getInvInertiaDiagLocal as btRigidBody_getInvInertiaDiagLocal    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#345>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getCenterOfMassTransform as btRigidBody_getCenterOfMassTransform    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#500>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_removeConstraintRef as btRigidBody_removeConstraintRef    `( BtRigidBodyClass bc , BtTypedConstraintClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ c+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#486>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getAngularFactor as btRigidBody_getAngularFactor    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#348>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getLinearVelocity as btRigidBody_getLinearVelocity    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#517>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getFlags as btRigidBody_getFlags    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#576>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_internalGetVelocityInLocalPointObsolete as btRigidBody_internalGetVelocityInLocalPointObsolete    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ rel_pos+, withVector3* `Vector3'  peekVector3* -- ^ velocity+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#576>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_internalGetVelocityInLocalPointObsolete as btRigidBody_internalGetVelocityInLocalPointObsolete'    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ rel_pos+, allocaVector3-  `Vector3'  peekVector3* -- ^ velocity+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#218>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_getLinearDamping as btRigidBody_getLinearDamping    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#474>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_m_contactSolverType_set    `( BtRigidBodyClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#474>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_m_contactSolverType_get    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#475>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_m_frictionSolverType_set    `( BtRigidBodyClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#475>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_m_frictionSolverType_get    `( BtRigidBodyClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btRigidBodyConstructionInfo+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#142>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_btRigidBodyConstructionInfo_new as btRigidBody_btRigidBodyConstructionInfo    `( BtMotionStateClass p1 , BtCollisionShapeClass p2 )' =>     {   `Float' , withBt* `p1' , withBt* `p2' , withVector3* `Vector3'  } -> `BtRigidBody_btRigidBodyConstructionInfo' mkBtRigidBody_btRigidBodyConstructionInfo* #}+{#fun btRigidBody_btRigidBodyConstructionInfo_free    `( BtRigidBody_btRigidBodyConstructionInfoClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#140>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_btRigidBodyConstructionInfo_m_additionalAngularDampingFactor_set    `( BtRigidBody_btRigidBodyConstructionInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#140>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_btRigidBodyConstructionInfo_m_additionalAngularDampingFactor_get    `( BtRigidBody_btRigidBodyConstructionInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#139>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_btRigidBodyConstructionInfo_m_additionalAngularDampingThresholdSqr_set    `( BtRigidBody_btRigidBodyConstructionInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#139>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_btRigidBodyConstructionInfo_m_additionalAngularDampingThresholdSqr_get    `( BtRigidBody_btRigidBodyConstructionInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#136>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_btRigidBodyConstructionInfo_m_additionalDamping_set    `( BtRigidBody_btRigidBodyConstructionInfoClass bc )' =>     { withBt* `bc' ,  `Bool'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#136>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_btRigidBodyConstructionInfo_m_additionalDamping_get    `( BtRigidBody_btRigidBodyConstructionInfoClass bc )' =>     { withBt* `bc'  } ->  `Bool'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#137>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_btRigidBodyConstructionInfo_m_additionalDampingFactor_set    `( BtRigidBody_btRigidBodyConstructionInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#137>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_btRigidBodyConstructionInfo_m_additionalDampingFactor_get    `( BtRigidBody_btRigidBodyConstructionInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#138>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_btRigidBodyConstructionInfo_m_additionalLinearDampingThresholdSqr_set    `( BtRigidBody_btRigidBodyConstructionInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#138>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_btRigidBodyConstructionInfo_m_additionalLinearDampingThresholdSqr_get    `( BtRigidBody_btRigidBodyConstructionInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#124>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_btRigidBodyConstructionInfo_m_angularDamping_set    `( BtRigidBody_btRigidBodyConstructionInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#124>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_btRigidBodyConstructionInfo_m_angularDamping_get    `( BtRigidBody_btRigidBodyConstructionInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#132>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_btRigidBodyConstructionInfo_m_angularSleepingThreshold_set    `( BtRigidBody_btRigidBodyConstructionInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#132>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_btRigidBodyConstructionInfo_m_angularSleepingThreshold_get    `( BtRigidBody_btRigidBodyConstructionInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#121>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_btRigidBodyConstructionInfo_m_collisionShape_set    `( BtRigidBody_btRigidBodyConstructionInfoClass bc , BtCollisionShapeClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#127>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_btRigidBodyConstructionInfo_m_friction_set    `( BtRigidBody_btRigidBodyConstructionInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#127>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_btRigidBodyConstructionInfo_m_friction_get    `( BtRigidBody_btRigidBodyConstructionInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#123>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_btRigidBodyConstructionInfo_m_linearDamping_set    `( BtRigidBody_btRigidBodyConstructionInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#123>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_btRigidBodyConstructionInfo_m_linearDamping_get    `( BtRigidBody_btRigidBodyConstructionInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#131>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_btRigidBodyConstructionInfo_m_linearSleepingThreshold_set    `( BtRigidBody_btRigidBodyConstructionInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#131>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_btRigidBodyConstructionInfo_m_linearSleepingThreshold_get    `( BtRigidBody_btRigidBodyConstructionInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#122>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_btRigidBodyConstructionInfo_m_localInertia_set    `( BtRigidBody_btRigidBodyConstructionInfoClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#122>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_btRigidBodyConstructionInfo_m_localInertia_get    `( BtRigidBody_btRigidBodyConstructionInfoClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#114>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_btRigidBodyConstructionInfo_m_mass_set    `( BtRigidBody_btRigidBodyConstructionInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#114>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_btRigidBodyConstructionInfo_m_mass_get    `( BtRigidBody_btRigidBodyConstructionInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#118>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_btRigidBodyConstructionInfo_m_motionState_set    `( BtRigidBody_btRigidBodyConstructionInfoClass bc , BtMotionStateClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#129>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_btRigidBodyConstructionInfo_m_restitution_set    `( BtRigidBody_btRigidBodyConstructionInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#129>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_btRigidBodyConstructionInfo_m_restitution_get    `( BtRigidBody_btRigidBodyConstructionInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#119>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_btRigidBodyConstructionInfo_m_startWorldTransform_set    `( BtRigidBody_btRigidBodyConstructionInfoClass bc )' =>     { withBt* `bc' , withTransform* `Transform'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#119>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBody_btRigidBodyConstructionInfo_m_startWorldTransform_get    `( BtRigidBody_btRigidBodyConstructionInfoClass bc )' =>     { withBt* `bc' , allocaTransform-  `Transform'  peekTransform* } -> `()' #}+-- * btRigidBodyDoubleData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#663>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyDoubleData_new as btRigidBodyDoubleData    {  } -> `BtRigidBodyDoubleData' mkBtRigidBodyDoubleData* #}+{#fun btRigidBodyDoubleData_free    `( BtRigidBodyDoubleDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#675>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyDoubleData_m_inverseMass_set    `( BtRigidBodyDoubleDataClass bc )' =>     { withBt* `bc' ,  `Double'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#675>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyDoubleData_m_inverseMass_get    `( BtRigidBodyDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Double'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#676>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyDoubleData_m_linearDamping_set    `( BtRigidBodyDoubleDataClass bc )' =>     { withBt* `bc' ,  `Double'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#676>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyDoubleData_m_linearDamping_get    `( BtRigidBodyDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Double'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#677>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyDoubleData_m_angularDamping_set    `( BtRigidBodyDoubleDataClass bc )' =>     { withBt* `bc' ,  `Double'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#677>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyDoubleData_m_angularDamping_get    `( BtRigidBodyDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Double'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#678>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyDoubleData_m_additionalDampingFactor_set    `( BtRigidBodyDoubleDataClass bc )' =>     { withBt* `bc' ,  `Double'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#678>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyDoubleData_m_additionalDampingFactor_get    `( BtRigidBodyDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Double'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#679>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyDoubleData_m_additionalLinearDampingThresholdSqr_set    `( BtRigidBodyDoubleDataClass bc )' =>     { withBt* `bc' ,  `Double'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#679>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyDoubleData_m_additionalLinearDampingThresholdSqr_get    `( BtRigidBodyDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Double'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#680>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyDoubleData_m_additionalAngularDampingThresholdSqr_set    `( BtRigidBodyDoubleDataClass bc )' =>     { withBt* `bc' ,  `Double'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#680>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyDoubleData_m_additionalAngularDampingThresholdSqr_get    `( BtRigidBodyDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Double'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#681>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyDoubleData_m_additionalAngularDampingFactor_set    `( BtRigidBodyDoubleDataClass bc )' =>     { withBt* `bc' ,  `Double'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#681>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyDoubleData_m_additionalAngularDampingFactor_get    `( BtRigidBodyDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Double'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#682>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyDoubleData_m_linearSleepingThreshold_set    `( BtRigidBodyDoubleDataClass bc )' =>     { withBt* `bc' ,  `Double'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#682>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyDoubleData_m_linearSleepingThreshold_get    `( BtRigidBodyDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Double'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#683>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyDoubleData_m_angularSleepingThreshold_set    `( BtRigidBodyDoubleDataClass bc )' =>     { withBt* `bc' ,  `Double'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#683>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyDoubleData_m_angularSleepingThreshold_get    `( BtRigidBodyDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Double'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#684>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyDoubleData_m_additionalDamping_set    `( BtRigidBodyDoubleDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#684>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyDoubleData_m_additionalDamping_get    `( BtRigidBodyDoubleDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btRigidBodyFloatData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#637>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyFloatData_new as btRigidBodyFloatData    {  } -> `BtRigidBodyFloatData' mkBtRigidBodyFloatData* #}+{#fun btRigidBodyFloatData_free    `( BtRigidBodyFloatDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#655>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyFloatData_m_additionalAngularDampingFactor_set    `( BtRigidBodyFloatDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#655>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyFloatData_m_additionalAngularDampingFactor_get    `( BtRigidBodyFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#654>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyFloatData_m_additionalAngularDampingThresholdSqr_set    `( BtRigidBodyFloatDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#654>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyFloatData_m_additionalAngularDampingThresholdSqr_get    `( BtRigidBodyFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#658>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyFloatData_m_additionalDamping_set    `( BtRigidBodyFloatDataClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#658>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyFloatData_m_additionalDamping_get    `( BtRigidBodyFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#652>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyFloatData_m_additionalDampingFactor_set    `( BtRigidBodyFloatDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#652>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyFloatData_m_additionalDampingFactor_get    `( BtRigidBodyFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#653>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyFloatData_m_additionalLinearDampingThresholdSqr_set    `( BtRigidBodyFloatDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#653>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyFloatData_m_additionalLinearDampingThresholdSqr_get    `( BtRigidBodyFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#651>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyFloatData_m_angularDamping_set    `( BtRigidBodyFloatDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#651>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyFloatData_m_angularDamping_get    `( BtRigidBodyFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#657>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyFloatData_m_angularSleepingThreshold_set    `( BtRigidBodyFloatDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#657>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyFloatData_m_angularSleepingThreshold_get    `( BtRigidBodyFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#649>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyFloatData_m_inverseMass_set    `( BtRigidBodyFloatDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#649>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyFloatData_m_inverseMass_get    `( BtRigidBodyFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#650>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyFloatData_m_linearDamping_set    `( BtRigidBodyFloatDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#650>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyFloatData_m_linearDamping_get    `( BtRigidBodyFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#656>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyFloatData_m_linearSleepingThreshold_set    `( BtRigidBodyFloatDataClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.h?r=2223#656>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btRigidBody.cpp?r=2223>+-}+{#fun btRigidBodyFloatData_m_linearSleepingThreshold_get    `( BtRigidBodyFloatDataClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+-- * btSimpleDynamicsWorld+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h?r=2223#46>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp?r=2223>+-}+{#fun btSimpleDynamicsWorld_new as btSimpleDynamicsWorld    `( BtDispatcherClass p0 , BtBroadphaseInterfaceClass p1 , BtConstraintSolverClass p2 , BtCollisionConfigurationClass p3 )' =>     {  withBt* `p0' , withBt* `p1' , withBt* `p2' , withBt* `p3'  } -> `BtSimpleDynamicsWorld' mkBtSimpleDynamicsWorld* #}+{#fun btSimpleDynamicsWorld_free    `( BtSimpleDynamicsWorldClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h?r=2223#53>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp?r=2223>+-}+{#fun btSimpleDynamicsWorld_setGravity as btSimpleDynamicsWorld_setGravity    `( BtSimpleDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ gravity+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h?r=2223#53>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp?r=2223>+-}+{#fun btSimpleDynamicsWorld_setGravity as btSimpleDynamicsWorld_setGravity'    `( BtSimpleDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ gravity+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h?r=2223#65>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp?r=2223>+-}+{#fun btSimpleDynamicsWorld_addAction as btSimpleDynamicsWorld_addAction    `( BtSimpleDynamicsWorldClass bc , BtActionInterfaceClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ action+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h?r=2223#76>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp?r=2223>+-}+{#fun btSimpleDynamicsWorld_setConstraintSolver as btSimpleDynamicsWorld_setConstraintSolver    `( BtSimpleDynamicsWorldClass bc , BtConstraintSolverClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ solver+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h?r=2223#78>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp?r=2223>+-}+{#fun btSimpleDynamicsWorld_getConstraintSolver as btSimpleDynamicsWorld_getConstraintSolver    `( BtSimpleDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtConstraintSolver' mkBtConstraintSolver*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h?r=2223#51>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp?r=2223>+-}+{#fun btSimpleDynamicsWorld_stepSimulation as btSimpleDynamicsWorld_stepSimulation    `( BtSimpleDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ timeStep+,  `Int'  -- ^ maxSubSteps+,  `Float'  -- ^ fixedTimeStep+ } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h?r=2223#61>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp?r=2223>+-}+{#fun btSimpleDynamicsWorld_removeRigidBody as btSimpleDynamicsWorld_removeRigidBody    `( BtSimpleDynamicsWorldClass bc , BtRigidBodyClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ body+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h?r=2223#57>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp?r=2223>+-}+{#fun btSimpleDynamicsWorld_addRigidBody0 as btSimpleDynamicsWorld_addRigidBody    `( BtSimpleDynamicsWorldClass bc , BtRigidBodyClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ body+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h?r=2223#57>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp?r=2223>+-}+{#fun btSimpleDynamicsWorld_addRigidBody0 as btSimpleDynamicsWorld_addRigidBody0    `( BtSimpleDynamicsWorldClass bc , BtRigidBodyClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ body+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h?r=2223#59>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp?r=2223>+-}+{#fun btSimpleDynamicsWorld_addRigidBody1 as btSimpleDynamicsWorld_addRigidBody1    `( BtSimpleDynamicsWorldClass bc , BtRigidBodyClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ body+,  `Int'  -- ^ group+,  `Int'  -- ^ mask+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h?r=2223#55>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp?r=2223>+-}+{#fun btSimpleDynamicsWorld_getGravity as btSimpleDynamicsWorld_getGravity    `( BtSimpleDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h?r=2223#74>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp?r=2223>+-}+{#fun btSimpleDynamicsWorld_synchronizeMotionStates as btSimpleDynamicsWorld_synchronizeMotionStates    `( BtSimpleDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h?r=2223#70>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp?r=2223>+-}+{#fun btSimpleDynamicsWorld_removeCollisionObject as btSimpleDynamicsWorld_removeCollisionObject    `( BtSimpleDynamicsWorldClass bc , BtCollisionObjectClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ collisionObject+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h?r=2223#85>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp?r=2223>+-}+{#fun btSimpleDynamicsWorld_clearForces as btSimpleDynamicsWorld_clearForces    `( BtSimpleDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h?r=2223#67>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp?r=2223>+-}+{#fun btSimpleDynamicsWorld_removeAction as btSimpleDynamicsWorld_removeAction    `( BtSimpleDynamicsWorldClass bc , BtActionInterfaceClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ action+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h?r=2223#72>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp?r=2223>+-}+{#fun btSimpleDynamicsWorld_updateAabbs as btSimpleDynamicsWorld_updateAabbs    `( BtSimpleDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h?r=2223#63>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp?r=2223>+-}+{#fun btSimpleDynamicsWorld_debugDrawWorld as btSimpleDynamicsWorld_debugDrawWorld    `( BtSimpleDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}
+ Physics/Bullet/Raw/BulletDynamics/Vehicle.chs view
@@ -0,0 +1,695 @@+{-#LANGUAGE ForeignFunctionInterface#-}+#include "Bullet.h"+module Physics.Bullet.Raw.BulletDynamics.Vehicle (+module Physics.Bullet.Raw.BulletDynamics.Vehicle+) where+import Control.Monad+import Foreign.Marshal.Alloc+import Foreign.ForeignPtr+import Foreign.Ptr+import Physics.Bullet.Raw.C2HS+import Physics.Bullet.Raw.Types+import Physics.Bullet.Raw.Class+-- * RaycastInfo+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#41>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_RaycastInfo_new as btWheelInfo_RaycastInfo    {  } -> `BtWheelInfo_RaycastInfo' mkBtWheelInfo_RaycastInfo* #}+{#fun btWheelInfo_RaycastInfo_free    `( BtWheelInfo_RaycastInfoClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#43>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_RaycastInfo_m_contactNormalWS_set    `( BtWheelInfo_RaycastInfoClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#43>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_RaycastInfo_m_contactNormalWS_get    `( BtWheelInfo_RaycastInfoClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#44>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_RaycastInfo_m_contactPointWS_set    `( BtWheelInfo_RaycastInfoClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#44>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_RaycastInfo_m_contactPointWS_get    `( BtWheelInfo_RaycastInfoClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#45>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_RaycastInfo_m_suspensionLength_set    `( BtWheelInfo_RaycastInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#45>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_RaycastInfo_m_suspensionLength_get    `( BtWheelInfo_RaycastInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#46>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_RaycastInfo_m_hardPointWS_set    `( BtWheelInfo_RaycastInfoClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#46>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_RaycastInfo_m_hardPointWS_get    `( BtWheelInfo_RaycastInfoClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#47>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_RaycastInfo_m_wheelDirectionWS_set    `( BtWheelInfo_RaycastInfoClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#47>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_RaycastInfo_m_wheelDirectionWS_get    `( BtWheelInfo_RaycastInfoClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#48>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_RaycastInfo_m_wheelAxleWS_set    `( BtWheelInfo_RaycastInfoClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#48>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_RaycastInfo_m_wheelAxleWS_get    `( BtWheelInfo_RaycastInfoClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#49>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_RaycastInfo_m_isInContact_set    `( BtWheelInfo_RaycastInfoClass bc )' =>     { withBt* `bc' ,  `Bool'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#49>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_RaycastInfo_m_isInContact_get    `( BtWheelInfo_RaycastInfoClass bc )' =>     { withBt* `bc'  } ->  `Bool'   #}+-- * btDefaultVehicleRaycaster+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#225>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btDefaultVehicleRaycaster_new as btDefaultVehicleRaycaster    `( BtDynamicsWorldClass p0 )' =>     {  withBt* `p0'  } -> `BtDefaultVehicleRaycaster' mkBtDefaultVehicleRaycaster* #}+{#fun btDefaultVehicleRaycaster_free    `( BtDefaultVehicleRaycasterClass bc )' =>     { withBt* `bc'  } -> `()' #}+-- * btRaycastVehicle+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#79>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_new as btRaycastVehicle    `( BtRaycastVehicle_btVehicleTuningClass p0 , BtRigidBodyClass p1 , BtVehicleRaycasterClass p2 )' =>     {  withBt* `p0' , withBt* `p1' , withBt* `p2'  } -> `BtRaycastVehicle' mkBtRaycastVehicle* #}+{#fun btRaycastVehicle_free    `( BtRaycastVehicleClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#140>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_updateSuspension as btRaycastVehicle_updateSuspension    `( BtRaycastVehicleClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ deltaTime+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#146>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_getRigidBody0 as btRaycastVehicle_getRigidBody    `( BtRaycastVehicleClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtRigidBody' mkBtRigidBody*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#146>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_getRigidBody0 as btRaycastVehicle_getRigidBody0    `( BtRaycastVehicleClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtRigidBody' mkBtRigidBody*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#151>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_getRigidBody1 as btRaycastVehicle_getRigidBody1    `( BtRaycastVehicleClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtRigidBody' mkBtRigidBody*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#214>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_getUserConstraintId as btRaycastVehicle_getUserConstraintId    `( BtRaycastVehicleClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#111>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_getWheelTransformWS as btRaycastVehicle_getWheelTransformWS    `( BtRaycastVehicleClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ wheelIndex+, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#117>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_addWheel as btRaycastVehicle_addWheel    `( BtRaycastVehicleClass bc , BtRaycastVehicle_btVehicleTuningClass p5 )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ connectionPointCS0+, withVector3* `Vector3'  peekVector3* -- ^ wheelDirectionCS0+, withVector3* `Vector3'  peekVector3* -- ^ wheelAxleCS+,  `Float'  -- ^ suspensionRestLength+,  `Float'  -- ^ wheelRadius+, withBt* `p5'  -- ^ tuning+,  `Bool'  -- ^ isFrontWheel+ } ->  `BtWheelInfo' mkBtWheelInfo*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#117>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_addWheel as btRaycastVehicle_addWheel'    `( BtRaycastVehicleClass bc , BtRaycastVehicle_btVehicleTuningClass p5 )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ connectionPointCS0+, allocaVector3-  `Vector3'  peekVector3* -- ^ wheelDirectionCS0+, allocaVector3-  `Vector3'  peekVector3* -- ^ wheelAxleCS+,  `Float'  -- ^ suspensionRestLength+,  `Float'  -- ^ wheelRadius+, withBt* `p5'  -- ^ tuning+,  `Bool'  -- ^ isFrontWheel+ } ->  `BtWheelInfo' mkBtWheelInfo*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#113>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_updateWheelTransform as btRaycastVehicle_updateWheelTransform    `( BtRaycastVehicleClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ wheelIndex+,  `Bool'  -- ^ interpolatedTransform+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#209>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_setUserConstraintId as btRaycastVehicle_setUserConstraintId    `( BtRaycastVehicleClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ uid+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#119>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_getNumWheels as btRaycastVehicle_getNumWheels    `( BtRaycastVehicleClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#97>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_rayCast as btRaycastVehicle_rayCast    `( BtRaycastVehicleClass bc , BtWheelInfoClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ wheel+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#156>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_getRightAxis as btRaycastVehicle_getRightAxis    `( BtRaycastVehicleClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#160>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_getUpAxis as btRaycastVehicle_getUpAxis    `( BtRaycastVehicleClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#172>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_getForwardVector as btRaycastVehicle_getForwardVector    `( BtRaycastVehicleClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#126>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_getWheelInfo0 as btRaycastVehicle_getWheelInfo    `( BtRaycastVehicleClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BtWheelInfo' mkBtWheelInfo*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#126>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_getWheelInfo0 as btRaycastVehicle_getWheelInfo0    `( BtRaycastVehicleClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BtWheelInfo' mkBtWheelInfo*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#128>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_getWheelInfo1 as btRaycastVehicle_getWheelInfo1    `( BtRaycastVehicleClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `BtWheelInfo' mkBtWheelInfo*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#95>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_getChassisWorldTransform as btRaycastVehicle_getChassisWorldTransform    `( BtRaycastVehicleClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#130>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_updateWheelTransformsWS as btRaycastVehicle_updateWheelTransformsWS    `( BtRaycastVehicleClass bc , BtWheelInfoClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ wheel+,  `Bool'  -- ^ interpolatedTransform+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#109>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_applyEngineForce as btRaycastVehicle_applyEngineForce    `( BtRaycastVehicleClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ force+,  `Int'  -- ^ wheel+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#102>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_resetSuspension as btRaycastVehicle_resetSuspension    `( BtRaycastVehicleClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#190>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_setCoordinateSystem as btRaycastVehicle_setCoordinateSystem    `( BtRaycastVehicleClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ rightIndex+,  `Int'  -- ^ upIndex+,  `Int'  -- ^ forwardIndex+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#204>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_setUserConstraintType as btRaycastVehicle_setUserConstraintType    `( BtRaycastVehicleClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ userConstraintType+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#93>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_debugDraw as btRaycastVehicle_debugDraw    `( BtRaycastVehicleClass bc , BtIDebugDrawClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ debugDrawer+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#142>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_updateFriction as btRaycastVehicle_updateFriction    `( BtRaycastVehicleClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ timeStep+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#165>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_getForwardAxis as btRaycastVehicle_getForwardAxis    `( BtRaycastVehicleClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#104>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_getSteeringValue as btRaycastVehicle_getSteeringValue    `( BtRaycastVehicleClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ wheel+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#199>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_getUserConstraintType as btRaycastVehicle_getUserConstraintType    `( BtRaycastVehicleClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#135>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_setPitchControl as btRaycastVehicle_setPitchControl    `( BtRaycastVehicleClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ pitch+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#185>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_getCurrentSpeedKmHour as btRaycastVehicle_getCurrentSpeedKmHour    `( BtRaycastVehicleClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#133>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_setBrake as btRaycastVehicle_setBrake    `( BtRaycastVehicleClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ brake+,  `Int'  -- ^ wheelIndex+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#106>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_setSteeringValue as btRaycastVehicle_setSteeringValue    `( BtRaycastVehicleClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ steering+,  `Int'  -- ^ wheel+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#99>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_updateVehicle as btRaycastVehicle_updateVehicle    `( BtRaycastVehicleClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ step+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#85>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_updateAction as btRaycastVehicle_updateAction    `( BtRaycastVehicleClass bc , BtCollisionWorldClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ collisionWorld+,  `Float'  -- ^ step+ } ->  `()'  #}+-- * btVehicleRaycaster+-- * btVehicleRaycasterResult+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btVehicleRaycaster.h?r=2223#24>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btVehicleRaycaster.cpp?r=2223>+-}+{#fun btVehicleRaycaster_btVehicleRaycasterResult_new as btVehicleRaycaster_btVehicleRaycasterResult    {  } -> `BtVehicleRaycaster_btVehicleRaycasterResult' mkBtVehicleRaycaster_btVehicleRaycasterResult* #}+{#fun btVehicleRaycaster_btVehicleRaycasterResult_free    `( BtVehicleRaycaster_btVehicleRaycasterResultClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btVehicleRaycaster.h?r=2223#27>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btVehicleRaycaster.cpp?r=2223>+-}+{#fun btVehicleRaycaster_btVehicleRaycasterResult_m_distFraction_set    `( BtVehicleRaycaster_btVehicleRaycasterResultClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btVehicleRaycaster.h?r=2223#27>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btVehicleRaycaster.cpp?r=2223>+-}+{#fun btVehicleRaycaster_btVehicleRaycasterResult_m_distFraction_get    `( BtVehicleRaycaster_btVehicleRaycasterResultClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btVehicleRaycaster.h?r=2223#26>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btVehicleRaycaster.cpp?r=2223>+-}+{#fun btVehicleRaycaster_btVehicleRaycasterResult_m_hitNormalInWorld_set    `( BtVehicleRaycaster_btVehicleRaycasterResultClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btVehicleRaycaster.h?r=2223#26>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btVehicleRaycaster.cpp?r=2223>+-}+{#fun btVehicleRaycaster_btVehicleRaycasterResult_m_hitNormalInWorld_get    `( BtVehicleRaycaster_btVehicleRaycasterResultClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btVehicleRaycaster.h?r=2223#25>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btVehicleRaycaster.cpp?r=2223>+-}+{#fun btVehicleRaycaster_btVehicleRaycasterResult_m_hitPointInWorld_set    `( BtVehicleRaycaster_btVehicleRaycasterResultClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btVehicleRaycaster.h?r=2223#25>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btVehicleRaycaster.cpp?r=2223>+-}+{#fun btVehicleRaycaster_btVehicleRaycasterResult_m_hitPointInWorld_get    `( BtVehicleRaycaster_btVehicleRaycasterResultClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+-- * btVehicleTuning+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#42>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_btVehicleTuning_new as btRaycastVehicle_btVehicleTuning    {  } -> `BtRaycastVehicle_btVehicleTuning' mkBtRaycastVehicle_btVehicleTuning* #}+{#fun btRaycastVehicle_btVehicleTuning_free    `( BtRaycastVehicle_btVehicleTuningClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#55>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_btVehicleTuning_m_frictionSlip_set    `( BtRaycastVehicle_btVehicleTuningClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#55>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_btVehicleTuning_m_frictionSlip_get    `( BtRaycastVehicle_btVehicleTuningClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#56>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_btVehicleTuning_m_maxSuspensionForce_set    `( BtRaycastVehicle_btVehicleTuningClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#56>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_btVehicleTuning_m_maxSuspensionForce_get    `( BtRaycastVehicle_btVehicleTuningClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#54>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_btVehicleTuning_m_maxSuspensionTravelCm_set    `( BtRaycastVehicle_btVehicleTuningClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#54>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_btVehicleTuning_m_maxSuspensionTravelCm_get    `( BtRaycastVehicle_btVehicleTuningClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#52>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_btVehicleTuning_m_suspensionCompression_set    `( BtRaycastVehicle_btVehicleTuningClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#52>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_btVehicleTuning_m_suspensionCompression_get    `( BtRaycastVehicle_btVehicleTuningClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#53>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_btVehicleTuning_m_suspensionDamping_set    `( BtRaycastVehicle_btVehicleTuningClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#53>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_btVehicleTuning_m_suspensionDamping_get    `( BtRaycastVehicle_btVehicleTuningClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#51>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_btVehicleTuning_m_suspensionStiffness_set    `( BtRaycastVehicle_btVehicleTuningClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.h?r=2223#51>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp?r=2223>+-}+{#fun btRaycastVehicle_btVehicleTuning_m_suspensionStiffness_get    `( BtRaycastVehicle_btVehicleTuningClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+-- * btWheelInfo+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#82>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_new as btWheelInfo    `( BtWheelInfoConstructionInfoClass p0 )' =>     {  withBt* `p0'  } -> `BtWheelInfo' mkBtWheelInfo* #}+{#fun btWheelInfo_free    `( BtWheelInfoClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#62>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_getSuspensionRestLength as btWheelInfo_getSuspensionRestLength    `( BtWheelInfoClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#108>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_updateWheel as btWheelInfo_updateWheel    `( BtWheelInfoClass bc , BtRigidBodyClass p0 , BtWheelInfo_RaycastInfoClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ chassis+, withBt* `p1'  -- ^ raycastInfo+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#78>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_bIsFrontWheel_set    `( BtWheelInfoClass bc )' =>     { withBt* `bc' ,  `Bool'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#78>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_bIsFrontWheel_get    `( BtWheelInfoClass bc )' =>     { withBt* `bc'  } ->  `Bool'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#76>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_brake_set    `( BtWheelInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#76>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_brake_get    `( BtWheelInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#57>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_chassisConnectionPointCS_set    `( BtWheelInfoClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#57>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_chassisConnectionPointCS_get    `( BtWheelInfoClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#110>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_clippedInvContactDotSuspension_set    `( BtWheelInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#110>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_clippedInvContactDotSuspension_get    `( BtWheelInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#70>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_deltaRotation_set    `( BtWheelInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#70>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_deltaRotation_get    `( BtWheelInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#74>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_engineForce_set    `( BtWheelInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#74>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_engineForce_get    `( BtWheelInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#67>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_frictionSlip_set    `( BtWheelInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#67>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_frictionSlip_get    `( BtWheelInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#72>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_maxSuspensionForce_set    `( BtWheelInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#72>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_maxSuspensionForce_get    `( BtWheelInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#61>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_maxSuspensionTravelCm_set    `( BtWheelInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#61>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_maxSuspensionTravelCm_get    `( BtWheelInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#71>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_rollInfluence_set    `( BtWheelInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#71>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_rollInfluence_get    `( BtWheelInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#69>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_rotation_set    `( BtWheelInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#69>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_rotation_get    `( BtWheelInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#114>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_skidInfo_set    `( BtWheelInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#114>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_skidInfo_get    `( BtWheelInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#68>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_steering_set    `( BtWheelInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#68>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_steering_get    `( BtWheelInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#111>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_suspensionRelativeVelocity_set    `( BtWheelInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#111>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_suspensionRelativeVelocity_get    `( BtWheelInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#60>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_suspensionRestLength1_set    `( BtWheelInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#60>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_suspensionRestLength1_get    `( BtWheelInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#64>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_suspensionStiffness_set    `( BtWheelInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#64>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_suspensionStiffness_get    `( BtWheelInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#59>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_wheelAxleCS_set    `( BtWheelInfoClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#59>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_wheelAxleCS_get    `( BtWheelInfoClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#58>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_wheelDirectionCS_set    `( BtWheelInfoClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#58>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_wheelDirectionCS_get    `( BtWheelInfoClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#65>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_wheelsDampingCompression_set    `( BtWheelInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#65>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_wheelsDampingCompression_get    `( BtWheelInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#66>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_wheelsDampingRelaxation_set    `( BtWheelInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#66>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_wheelsDampingRelaxation_get    `( BtWheelInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#63>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_wheelsRadius_set    `( BtWheelInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#63>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_wheelsRadius_get    `( BtWheelInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#113>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_wheelsSuspensionForce_set    `( BtWheelInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#113>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_wheelsSuspensionForce_get    `( BtWheelInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#55>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_worldTransform_set    `( BtWheelInfoClass bc )' =>     { withBt* `bc' , withTransform* `Transform'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#55>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfo_m_worldTransform_get    `( BtWheelInfoClass bc )' =>     { withBt* `bc' , allocaTransform-  `Transform'  peekTransform* } -> `()' #}+-- * btWheelInfoConstructionInfo+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#20>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfoConstructionInfo_new as btWheelInfoConstructionInfo    {  } -> `BtWheelInfoConstructionInfo' mkBtWheelInfoConstructionInfo* #}+{#fun btWheelInfoConstructionInfo_free    `( BtWheelInfoConstructionInfoClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#33>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfoConstructionInfo_m_bIsFrontWheel_set    `( BtWheelInfoConstructionInfoClass bc )' =>     { withBt* `bc' ,  `Bool'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#33>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfoConstructionInfo_m_bIsFrontWheel_get    `( BtWheelInfoConstructionInfoClass bc )' =>     { withBt* `bc'  } ->  `Bool'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#21>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfoConstructionInfo_m_chassisConnectionCS_set    `( BtWheelInfoConstructionInfoClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#21>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfoConstructionInfo_m_chassisConnectionCS_get    `( BtWheelInfoConstructionInfoClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#31>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfoConstructionInfo_m_frictionSlip_set    `( BtWheelInfoConstructionInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#31>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfoConstructionInfo_m_frictionSlip_get    `( BtWheelInfoConstructionInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#32>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfoConstructionInfo_m_maxSuspensionForce_set    `( BtWheelInfoConstructionInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#32>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfoConstructionInfo_m_maxSuspensionForce_get    `( BtWheelInfoConstructionInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#25>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfoConstructionInfo_m_maxSuspensionTravelCm_set    `( BtWheelInfoConstructionInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#25>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfoConstructionInfo_m_maxSuspensionTravelCm_get    `( BtWheelInfoConstructionInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#24>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfoConstructionInfo_m_suspensionRestLength_set    `( BtWheelInfoConstructionInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#24>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfoConstructionInfo_m_suspensionRestLength_get    `( BtWheelInfoConstructionInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#28>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfoConstructionInfo_m_suspensionStiffness_set    `( BtWheelInfoConstructionInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#28>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfoConstructionInfo_m_suspensionStiffness_get    `( BtWheelInfoConstructionInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#23>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfoConstructionInfo_m_wheelAxleCS_set    `( BtWheelInfoConstructionInfoClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#23>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfoConstructionInfo_m_wheelAxleCS_get    `( BtWheelInfoConstructionInfoClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#22>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfoConstructionInfo_m_wheelDirectionCS_set    `( BtWheelInfoConstructionInfoClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#22>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfoConstructionInfo_m_wheelDirectionCS_get    `( BtWheelInfoConstructionInfoClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#26>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfoConstructionInfo_m_wheelRadius_set    `( BtWheelInfoConstructionInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#26>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfoConstructionInfo_m_wheelRadius_get    `( BtWheelInfoConstructionInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#29>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfoConstructionInfo_m_wheelsDampingCompression_set    `( BtWheelInfoConstructionInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#29>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfoConstructionInfo_m_wheelsDampingCompression_get    `( BtWheelInfoConstructionInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#30>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfoConstructionInfo_m_wheelsDampingRelaxation_set    `( BtWheelInfoConstructionInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.h?r=2223#30>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletDynamics/Vehicle/btWheelInfo.cpp?r=2223>+-}+{#fun btWheelInfoConstructionInfo_m_wheelsDampingRelaxation_get    `( BtWheelInfoConstructionInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}
+ Physics/Bullet/Raw/BulletSoftBody.chs view
@@ -0,0 +1,2872 @@+{-#LANGUAGE ForeignFunctionInterface#-}+#include "Bullet.h"+module Physics.Bullet.Raw.BulletSoftBody (+module Physics.Bullet.Raw.BulletSoftBody+) where+import Control.Monad+import Foreign.Marshal.Alloc+import Foreign.ForeignPtr+import Foreign.Ptr+import Physics.Bullet.Raw.C2HS+import Physics.Bullet.Raw.Types+import Physics.Bullet.Raw.Class+-- * AJoint+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#523>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_AJoint_new as btSoftBody_AJoint    {  } -> `BtSoftBody_AJoint' mkBtSoftBody_AJoint* #}+{#fun btSoftBody_AJoint_free    `( BtSoftBody_AJointClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#540>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_AJoint_Terminate as btSoftBody_AJoint_Terminate    `( BtSoftBody_AJointClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ dt+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#539>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_AJoint_Solve as btSoftBody_AJoint_Solve    `( BtSoftBody_AJointClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ dt+,  `Float'  -- ^ sor+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#538>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_AJoint_Prepare as btSoftBody_AJoint_Prepare    `( BtSoftBody_AJointClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ dt+,  `Int'  -- ^ iterations+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#537>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_AJoint_m_icontrol_set    `( BtSoftBody_AJointClass bc , BtSoftBody_AJoint_IControlClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+-- * Anchor+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#281>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Anchor_new as btSoftBody_Anchor    {  } -> `BtSoftBody_Anchor' mkBtSoftBody_Anchor* #}+{#fun btSoftBody_Anchor_free    `( BtSoftBody_AnchorClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#282>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Anchor_m_node_set    `( BtSoftBody_AnchorClass bc , BtSoftBody_NodeClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#283>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Anchor_m_local_set    `( BtSoftBody_AnchorClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#283>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Anchor_m_local_get    `( BtSoftBody_AnchorClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#284>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Anchor_m_body_set    `( BtSoftBody_AnchorClass bc , BtRigidBodyClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#285>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Anchor_m_influence_set    `( BtSoftBody_AnchorClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#285>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Anchor_m_influence_get    `( BtSoftBody_AnchorClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#286>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Anchor_m_c0_set    `( BtSoftBody_AnchorClass bc )' =>     { withBt* `bc' , withMatrix3x3* `Matrix3x3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#286>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Anchor_m_c0_get    `( BtSoftBody_AnchorClass bc )' =>     { withBt* `bc' , allocaMatrix3x3-  `Matrix3x3'  peekMatrix3x3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#287>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Anchor_m_c1_set    `( BtSoftBody_AnchorClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#287>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Anchor_m_c1_get    `( BtSoftBody_AnchorClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#288>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Anchor_m_c2_set    `( BtSoftBody_AnchorClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#288>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Anchor_m_c2_get    `( BtSoftBody_AnchorClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+-- * Body+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#376>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Body_new0 as btSoftBody_Body0    {  } -> `BtSoftBody_Body' mkBtSoftBody_Body* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#377>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Body_new1 as btSoftBody_Body1    `( BtSoftBody_ClusterClass p0 )' =>     {  withBt* `p0'  } -> `BtSoftBody_Body' mkBtSoftBody_Body* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#378>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Body_new2 as btSoftBody_Body2    `( BtCollisionObjectClass p0 )' =>     {  withBt* `p0'  } -> `BtSoftBody_Body' mkBtSoftBody_Body* #}+{#fun btSoftBody_Body_free    `( BtSoftBody_BodyClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#391>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Body_invWorldInertia as btSoftBody_Body_invWorldInertia    `( BtSoftBody_BodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaMatrix3x3-  `Matrix3x3'  peekMatrix3x3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#383>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Body_activate as btSoftBody_Body_activate    `( BtSoftBody_BodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#411>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Body_linearVelocity as btSoftBody_Body_linearVelocity    `( BtSoftBody_BodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#433>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Body_applyVImpulse as btSoftBody_Body_applyVImpulse    `( BtSoftBody_BodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ impulse+, withVector3* `Vector3'  peekVector3* -- ^ rpos+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#433>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Body_applyVImpulse as btSoftBody_Body_applyVImpulse'    `( BtSoftBody_BodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ impulse+, allocaVector3-  `Vector3'  peekVector3* -- ^ rpos+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#438>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Body_applyDImpulse as btSoftBody_Body_applyDImpulse    `( BtSoftBody_BodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ impulse+, withVector3* `Vector3'  peekVector3* -- ^ rpos+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#438>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Body_applyDImpulse as btSoftBody_Body_applyDImpulse'    `( BtSoftBody_BodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ impulse+, allocaVector3-  `Vector3'  peekVector3* -- ^ rpos+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#471>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Body_applyDCImpulse as btSoftBody_Body_applyDCImpulse    `( BtSoftBody_BodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ impulse+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#471>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Body_applyDCImpulse as btSoftBody_Body_applyDCImpulse'    `( BtSoftBody_BodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ impulse+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#466>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Body_applyAImpulse as btSoftBody_Body_applyAImpulse    `( BtSoftBody_BodyClass bc , BtSoftBody_ImpulseClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ impulse+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#417>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Body_angularVelocity0 as btSoftBody_Body_angularVelocity    `( BtSoftBody_BodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ rpos+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#417>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Body_angularVelocity0 as btSoftBody_Body_angularVelocity'    `( BtSoftBody_BodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ rpos+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#417>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Body_angularVelocity0 as btSoftBody_Body_angularVelocity0    `( BtSoftBody_BodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ rpos+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#417>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Body_angularVelocity0 as btSoftBody_Body_angularVelocity0'    `( BtSoftBody_BodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ rpos+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#423>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Body_angularVelocity1 as btSoftBody_Body_angularVelocity1    `( BtSoftBody_BodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#456>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Body_applyVAImpulse as btSoftBody_Body_applyVAImpulse    `( BtSoftBody_BodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ impulse+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#456>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Body_applyVAImpulse as btSoftBody_Body_applyVAImpulse'    `( BtSoftBody_BodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ impulse+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#443>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Body_applyImpulse as btSoftBody_Body_applyImpulse    `( BtSoftBody_BodyClass bc , BtSoftBody_ImpulseClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ impulse+, withVector3* `Vector3'  peekVector3* -- ^ rpos+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#443>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Body_applyImpulse as btSoftBody_Body_applyImpulse'    `( BtSoftBody_BodyClass bc , BtSoftBody_ImpulseClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ impulse+, allocaVector3-  `Vector3'  peekVector3* -- ^ rpos+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#461>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Body_applyDAImpulse as btSoftBody_Body_applyDAImpulse    `( BtSoftBody_BodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ impulse+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#461>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Body_applyDAImpulse as btSoftBody_Body_applyDAImpulse'    `( BtSoftBody_BodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ impulse+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#429>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Body_velocity as btSoftBody_Body_velocity    `( BtSoftBody_BodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ rpos+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#429>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Body_velocity as btSoftBody_Body_velocity'    `( BtSoftBody_BodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ rpos+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#398>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Body_invMass as btSoftBody_Body_invMass    `( BtSoftBody_BodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#404>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Body_xform as btSoftBody_Body_xform    `( BtSoftBody_BodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#372>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Body_m_soft_set    `( BtSoftBody_BodyClass bc , BtSoftBody_ClusterClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#373>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Body_m_rigid_set    `( BtSoftBody_BodyClass bc , BtRigidBodyClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#374>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Body_m_collisionObject_set    `( BtSoftBody_BodyClass bc , BtCollisionObjectClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+-- * CJoint+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#545>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_CJoint_new as btSoftBody_CJoint    {  } -> `BtSoftBody_CJoint' mkBtSoftBody_CJoint* #}+{#fun btSoftBody_CJoint_free    `( BtSoftBody_CJointClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#553>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_CJoint_Terminate as btSoftBody_CJoint_Terminate    `( BtSoftBody_CJointClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ dt+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#552>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_CJoint_Solve as btSoftBody_CJoint_Solve    `( BtSoftBody_CJointClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ dt+,  `Float'  -- ^ sor+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#551>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_CJoint_Prepare as btSoftBody_CJoint_Prepare    `( BtSoftBody_CJointClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ dt+,  `Int'  -- ^ iterations+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#546>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_CJoint_m_life_set    `( BtSoftBody_CJointClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#546>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_CJoint_m_life_get    `( BtSoftBody_CJointClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#547>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_CJoint_m_maxlife_set    `( BtSoftBody_CJointClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#547>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_CJoint_m_maxlife_get    `( BtSoftBody_CJointClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#549>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_CJoint_m_normal_set    `( BtSoftBody_CJointClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#549>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_CJoint_m_normal_get    `( BtSoftBody_CJointClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#550>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_CJoint_m_friction_set    `( BtSoftBody_CJointClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#550>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_CJoint_m_friction_get    `( BtSoftBody_CJointClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+-- * Cluster+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#340>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_new as btSoftBody_Cluster    {  } -> `BtSoftBody_Cluster' mkBtSoftBody_Cluster* #}+{#fun btSoftBody_Cluster_free    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#333>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_adamping_set    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#333>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_adamping_get    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#329>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_av_set    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#329>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_av_get    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#339>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_clusterIndex_set    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#339>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_clusterIndex_get    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#338>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_collide_set    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc' ,  `Bool'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#338>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_collide_get    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc'  } ->  `Bool'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#323>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_com_set    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#323>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_com_get    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#337>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_containsAnchor_set    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc' ,  `Bool'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#337>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_containsAnchor_get    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc'  } ->  `Bool'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#318>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_framexform_set    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc' , withTransform* `Transform'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#318>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_framexform_get    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc' , allocaTransform-  `Transform'  peekTransform* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#319>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_idmass_set    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#319>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_idmass_get    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#320>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_imass_set    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#320>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_imass_get    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#322>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_invwi_set    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc' , withMatrix3x3* `Matrix3x3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#322>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_invwi_get    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc' , allocaMatrix3x3-  `Matrix3x3'  peekMatrix3x3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#332>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_ldamping_set    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#332>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_ldamping_get    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#330>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_leaf_set    `( BtSoftBody_ClusterClass bc , BtDbvtNodeClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#321>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_locii_set    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc' , withMatrix3x3* `Matrix3x3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#321>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_locii_get    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc' , allocaMatrix3x3-  `Matrix3x3'  peekMatrix3x3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#328>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_lv_set    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#328>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_lv_get    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#334>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_matching_set    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#334>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_matching_get    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#335>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_maxSelfCollisionImpulse_set    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#335>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_maxSelfCollisionImpulse_get    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#331>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_ndamping_set    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#331>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_ndamping_get    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#327>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_ndimpulses_set    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#327>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_ndimpulses_get    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#326>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_nvimpulses_set    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#326>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_nvimpulses_get    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#336>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_selfCollisionImpulseFactor_set    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#336>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Cluster_m_selfCollisionImpulseFactor_get    `( BtSoftBody_ClusterClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+-- * Config+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#558>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_new as btSoftBody_Config    {  } -> `BtSoftBody_Config' mkBtSoftBody_Config* #}+{#fun btSoftBody_Config_free    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#560>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_kVCF_set    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#560>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_kVCF_get    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#561>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_kDP_set    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#561>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_kDP_get    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#562>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_kDG_set    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#562>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_kDG_get    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#563>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_kLF_set    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#563>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_kLF_get    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#564>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_kPR_set    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#564>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_kPR_get    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#565>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_kVC_set    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#565>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_kVC_get    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#566>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_kDF_set    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#566>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_kDF_get    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#567>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_kMT_set    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#567>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_kMT_get    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#568>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_kCHR_set    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#568>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_kCHR_get    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#569>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_kKHR_set    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#569>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_kKHR_get    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#570>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_kSHR_set    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#570>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_kSHR_get    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#571>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_kAHR_set    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#571>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_kAHR_get    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#572>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_kSRHR_CL_set    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#572>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_kSRHR_CL_get    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#573>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_kSKHR_CL_set    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#573>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_kSKHR_CL_get    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#574>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_kSSHR_CL_set    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#574>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_kSSHR_CL_get    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#575>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_kSR_SPLT_CL_set    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#575>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_kSR_SPLT_CL_get    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#576>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_kSK_SPLT_CL_set    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#576>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_kSK_SPLT_CL_get    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#577>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_kSS_SPLT_CL_set    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#577>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_kSS_SPLT_CL_get    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#578>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_maxvolume_set    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#578>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_maxvolume_get    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#579>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_timescale_set    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#579>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_timescale_get    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#580>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_viterations_set    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#580>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_viterations_get    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#581>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_piterations_set    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#581>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_piterations_get    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#582>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_diterations_set    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#582>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_diterations_get    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#583>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_citerations_set    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#583>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_citerations_get    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#584>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_collisions_set    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#584>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Config_collisions_get    `( BtSoftBody_ConfigClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * Element+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#199>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Element_new as btSoftBody_Element    {  } -> `BtSoftBody_Element' mkBtSoftBody_Element* #}+{#fun btSoftBody_Element_free    `( BtSoftBody_ElementClass bc )' =>     { withBt* `bc'  } -> `()' #}+-- * Face+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#241>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Face_new as btSoftBody_Face    {  } -> `BtSoftBody_Face' mkBtSoftBody_Face* #}+{#fun btSoftBody_Face_free    `( BtSoftBody_FaceClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#243>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Face_m_normal_set    `( BtSoftBody_FaceClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#243>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Face_m_normal_get    `( BtSoftBody_FaceClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#244>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Face_m_ra_set    `( BtSoftBody_FaceClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#244>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Face_m_ra_get    `( BtSoftBody_FaceClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#245>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Face_m_leaf_set    `( BtSoftBody_FaceClass bc , BtDbvtNodeClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+-- * Feature+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#212>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Feature_new as btSoftBody_Feature    {  } -> `BtSoftBody_Feature' mkBtSoftBody_Feature* #}+{#fun btSoftBody_Feature_free    `( BtSoftBody_FeatureClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#213>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Feature_m_material_set    `( BtSoftBody_FeatureClass bc , BtSoftBody_MaterialClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+-- * IControl+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#525>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_AJoint_IControl_new as btSoftBody_AJoint_IControl    {  } -> `BtSoftBody_AJoint_IControl' mkBtSoftBody_AJoint_IControl* #}+{#fun btSoftBody_AJoint_IControl_free    `( BtSoftBody_AJoint_IControlClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#528>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_AJoint_IControl_Default as btSoftBody_AJoint_IControl_Default    `( )' =>     {  } ->  `BtSoftBody_AJoint_IControl' mkBtSoftBody_AJoint_IControl*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#527>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_AJoint_IControl_Speed as btSoftBody_AJoint_IControl_Speed    `( BtSoftBody_AJoint_IControlClass bc , BtSoftBody_AJointClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ arg0+,  `Float'  -- ^ current+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#526>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_AJoint_IControl_Prepare as btSoftBody_AJoint_IControl_Prepare    `( BtSoftBody_AJoint_IControlClass bc , BtSoftBody_AJointClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ arg0+ } ->  `()'  #}+-- * ImplicitFn+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#169>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_ImplicitFn_Eval as btSoftBody_ImplicitFn_Eval    `( BtSoftBody_ImplicitFnClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ x+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#169>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_ImplicitFn_Eval as btSoftBody_ImplicitFn_Eval'    `( BtSoftBody_ImplicitFnClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ x+ } ->  `Float'  #}+-- * Impulse+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#353>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Impulse_new as btSoftBody_Impulse    {  } -> `BtSoftBody_Impulse' mkBtSoftBody_Impulse* #}+{#fun btSoftBody_Impulse_free    `( BtSoftBody_ImpulseClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#352>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Impulse_m_asDrift_set    `( BtSoftBody_ImpulseClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#352>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Impulse_m_asDrift_get    `( BtSoftBody_ImpulseClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#351>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Impulse_m_asVelocity_set    `( BtSoftBody_ImpulseClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#351>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Impulse_m_asVelocity_get    `( BtSoftBody_ImpulseClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#350>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Impulse_m_drift_set    `( BtSoftBody_ImpulseClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#350>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Impulse_m_drift_get    `( BtSoftBody_ImpulseClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#349>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Impulse_m_velocity_set    `( BtSoftBody_ImpulseClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#349>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Impulse_m_velocity_get    `( BtSoftBody_ImpulseClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+-- * Joint+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#505>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Joint_Terminate as btSoftBody_Joint_Terminate    `( BtSoftBody_JointClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ dt+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#504>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Joint_Solve as btSoftBody_Joint_Solve    `( BtSoftBody_JointClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ dt+,  `Float'  -- ^ sor+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#503>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Joint_Prepare as btSoftBody_Joint_Prepare    `( BtSoftBody_JointClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ dt+,  `Int'  -- ^ iterations+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#494>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Joint_m_cfm_set    `( BtSoftBody_JointClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#494>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Joint_m_cfm_get    `( BtSoftBody_JointClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#495>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Joint_m_erp_set    `( BtSoftBody_JointClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#495>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Joint_m_erp_get    `( BtSoftBody_JointClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#496>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Joint_m_split_set    `( BtSoftBody_JointClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#496>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Joint_m_split_get    `( BtSoftBody_JointClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#497>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Joint_m_drift_set    `( BtSoftBody_JointClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#497>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Joint_m_drift_get    `( BtSoftBody_JointClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#498>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Joint_m_sdrift_set    `( BtSoftBody_JointClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#498>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Joint_m_sdrift_get    `( BtSoftBody_JointClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#499>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Joint_m_massmatrix_set    `( BtSoftBody_JointClass bc )' =>     { withBt* `bc' , withMatrix3x3* `Matrix3x3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#499>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Joint_m_massmatrix_get    `( BtSoftBody_JointClass bc )' =>     { withBt* `bc' , allocaMatrix3x3-  `Matrix3x3'  peekMatrix3x3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#500>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Joint_m_delete_set    `( BtSoftBody_JointClass bc )' =>     { withBt* `bc' ,  `Bool'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#500>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Joint_m_delete_get    `( BtSoftBody_JointClass bc )' =>     { withBt* `bc'  } ->  `Bool'   #}+-- * LJoint+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#510>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_LJoint_new as btSoftBody_LJoint    {  } -> `BtSoftBody_LJoint' mkBtSoftBody_LJoint* #}+{#fun btSoftBody_LJoint_free    `( BtSoftBody_LJointClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#518>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_LJoint_Terminate as btSoftBody_LJoint_Terminate    `( BtSoftBody_LJointClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ dt+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#517>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_LJoint_Solve as btSoftBody_LJoint_Solve    `( BtSoftBody_LJointClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ dt+,  `Float'  -- ^ sor+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#516>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_LJoint_Prepare as btSoftBody_LJoint_Prepare    `( BtSoftBody_LJointClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ dt+,  `Int'  -- ^ iterations+ } ->  `()'  #}+-- * Link+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#230>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Link_new as btSoftBody_Link    {  } -> `BtSoftBody_Link' mkBtSoftBody_Link* #}+{#fun btSoftBody_Link_free    `( BtSoftBody_LinkClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#232>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Link_m_rl_set    `( BtSoftBody_LinkClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#232>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Link_m_rl_get    `( BtSoftBody_LinkClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#233>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Link_m_bbending_set    `( BtSoftBody_LinkClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#233>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Link_m_bbending_get    `( BtSoftBody_LinkClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#234>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Link_m_c0_set    `( BtSoftBody_LinkClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#234>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Link_m_c0_get    `( BtSoftBody_LinkClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#235>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Link_m_c1_set    `( BtSoftBody_LinkClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#235>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Link_m_c1_get    `( BtSoftBody_LinkClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#236>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Link_m_c2_set    `( BtSoftBody_LinkClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#236>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Link_m_c2_get    `( BtSoftBody_LinkClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#237>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Link_m_c3_set    `( BtSoftBody_LinkClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#237>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Link_m_c3_get    `( BtSoftBody_LinkClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+-- * Material+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#203>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Material_new as btSoftBody_Material    {  } -> `BtSoftBody_Material' mkBtSoftBody_Material* #}+{#fun btSoftBody_Material_free    `( BtSoftBody_MaterialClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#207>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Material_m_flags_set    `( BtSoftBody_MaterialClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#207>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Material_m_flags_get    `( BtSoftBody_MaterialClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#205>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Material_m_kAST_set    `( BtSoftBody_MaterialClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#205>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Material_m_kAST_get    `( BtSoftBody_MaterialClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#204>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Material_m_kLST_set    `( BtSoftBody_MaterialClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#204>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Material_m_kLST_get    `( BtSoftBody_MaterialClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#206>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Material_m_kVST_set    `( BtSoftBody_MaterialClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#206>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Material_m_kVST_get    `( BtSoftBody_MaterialClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+-- * Node+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#217>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Node_new as btSoftBody_Node    {  } -> `BtSoftBody_Node' mkBtSoftBody_Node* #}+{#fun btSoftBody_Node_free    `( BtSoftBody_NodeClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#224>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Node_m_area_set    `( BtSoftBody_NodeClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#224>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Node_m_area_get    `( BtSoftBody_NodeClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#226>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Node_m_battach_set    `( BtSoftBody_NodeClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#226>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Node_m_battach_get    `( BtSoftBody_NodeClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#221>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Node_m_f_set    `( BtSoftBody_NodeClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#221>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Node_m_f_get    `( BtSoftBody_NodeClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#223>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Node_m_im_set    `( BtSoftBody_NodeClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#223>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Node_m_im_get    `( BtSoftBody_NodeClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#225>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Node_m_leaf_set    `( BtSoftBody_NodeClass bc , BtDbvtNodeClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#222>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Node_m_n_set    `( BtSoftBody_NodeClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#222>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Node_m_n_get    `( BtSoftBody_NodeClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#219>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Node_m_q_set    `( BtSoftBody_NodeClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#219>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Node_m_q_get    `( BtSoftBody_NodeClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#220>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Node_m_v_set    `( BtSoftBody_NodeClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#220>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Node_m_v_get    `( BtSoftBody_NodeClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#218>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Node_m_x_set    `( BtSoftBody_NodeClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#218>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Node_m_x_get    `( BtSoftBody_NodeClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+-- * Note+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#292>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Note_new as btSoftBody_Note    {  } -> `BtSoftBody_Note' mkBtSoftBody_Note* #}+{#fun btSoftBody_Note_free    `( BtSoftBody_NoteClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#293>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Note_m_text_set    `( BtSoftBody_NoteClass bc )' =>     { withBt* `bc' ,  `String'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#293>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Note_m_text_get    `( BtSoftBody_NoteClass bc )' =>     { withBt* `bc'  } ->  `String'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#294>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Note_m_offset_set    `( BtSoftBody_NoteClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#294>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Note_m_offset_get    `( BtSoftBody_NoteClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#295>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Note_m_rank_set    `( BtSoftBody_NoteClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#295>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Note_m_rank_get    `( BtSoftBody_NoteClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * Pose+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#301>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Pose_new as btSoftBody_Pose    {  } -> `BtSoftBody_Pose' mkBtSoftBody_Pose* #}+{#fun btSoftBody_Pose_free    `( BtSoftBody_PoseClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#302>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Pose_m_bvolume_set    `( BtSoftBody_PoseClass bc )' =>     { withBt* `bc' ,  `Bool'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#302>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Pose_m_bvolume_get    `( BtSoftBody_PoseClass bc )' =>     { withBt* `bc'  } ->  `Bool'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#303>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Pose_m_bframe_set    `( BtSoftBody_PoseClass bc )' =>     { withBt* `bc' ,  `Bool'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#303>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Pose_m_bframe_get    `( BtSoftBody_PoseClass bc )' =>     { withBt* `bc'  } ->  `Bool'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#304>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Pose_m_volume_set    `( BtSoftBody_PoseClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#304>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Pose_m_volume_get    `( BtSoftBody_PoseClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#307>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Pose_m_com_set    `( BtSoftBody_PoseClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#307>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Pose_m_com_get    `( BtSoftBody_PoseClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#308>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Pose_m_rot_set    `( BtSoftBody_PoseClass bc )' =>     { withBt* `bc' , withMatrix3x3* `Matrix3x3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#308>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Pose_m_rot_get    `( BtSoftBody_PoseClass bc )' =>     { withBt* `bc' , allocaMatrix3x3-  `Matrix3x3'  peekMatrix3x3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#309>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Pose_m_scl_set    `( BtSoftBody_PoseClass bc )' =>     { withBt* `bc' , withMatrix3x3* `Matrix3x3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#309>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Pose_m_scl_get    `( BtSoftBody_PoseClass bc )' =>     { withBt* `bc' , allocaMatrix3x3-  `Matrix3x3'  peekMatrix3x3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#310>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Pose_m_aqq_set    `( BtSoftBody_PoseClass bc )' =>     { withBt* `bc' , withMatrix3x3* `Matrix3x3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#310>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Pose_m_aqq_get    `( BtSoftBody_PoseClass bc )' =>     { withBt* `bc' , allocaMatrix3x3-  `Matrix3x3'  peekMatrix3x3* } -> `()' #}+-- * RContact+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#259>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_RContact_new as btSoftBody_RContact    {  } -> `BtSoftBody_RContact' mkBtSoftBody_RContact* #}+{#fun btSoftBody_RContact_free    `( BtSoftBody_RContactClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#261>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_RContact_m_node_set    `( BtSoftBody_RContactClass bc , BtSoftBody_NodeClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#262>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_RContact_m_c0_set    `( BtSoftBody_RContactClass bc )' =>     { withBt* `bc' , withMatrix3x3* `Matrix3x3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#262>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_RContact_m_c0_get    `( BtSoftBody_RContactClass bc )' =>     { withBt* `bc' , allocaMatrix3x3-  `Matrix3x3'  peekMatrix3x3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#263>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_RContact_m_c1_set    `( BtSoftBody_RContactClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#263>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_RContact_m_c1_get    `( BtSoftBody_RContactClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#264>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_RContact_m_c2_set    `( BtSoftBody_RContactClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#264>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_RContact_m_c2_get    `( BtSoftBody_RContactClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#265>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_RContact_m_c3_set    `( BtSoftBody_RContactClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#265>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_RContact_m_c3_get    `( BtSoftBody_RContactClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#266>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_RContact_m_c4_set    `( BtSoftBody_RContactClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#266>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_RContact_m_c4_get    `( BtSoftBody_RContactClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+-- * RayFromToCaster+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#607>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_RayFromToCaster_new as btSoftBody_RayFromToCaster    {  withVector3* `Vector3' , withVector3* `Vector3' ,  `Float'  } -> `BtSoftBody_RayFromToCaster' mkBtSoftBody_RayFromToCaster* #}+{#fun btSoftBody_RayFromToCaster_free    `( BtSoftBody_RayFromToCasterClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#608>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_RayFromToCaster_Process as btSoftBody_RayFromToCaster_Process    `( BtSoftBody_RayFromToCasterClass bc , BtDbvtNodeClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ leaf+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#601>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_RayFromToCaster_m_rayFrom_set    `( BtSoftBody_RayFromToCasterClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#601>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_RayFromToCaster_m_rayFrom_get    `( BtSoftBody_RayFromToCasterClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#602>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_RayFromToCaster_m_rayTo_set    `( BtSoftBody_RayFromToCasterClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#602>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_RayFromToCaster_m_rayTo_get    `( BtSoftBody_RayFromToCasterClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#603>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_RayFromToCaster_m_rayNormalizedDirection_set    `( BtSoftBody_RayFromToCasterClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#603>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_RayFromToCaster_m_rayNormalizedDirection_get    `( BtSoftBody_RayFromToCasterClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#604>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_RayFromToCaster_m_mint_set    `( BtSoftBody_RayFromToCasterClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#604>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_RayFromToCaster_m_mint_get    `( BtSoftBody_RayFromToCasterClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#605>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_RayFromToCaster_m_face_set    `( BtSoftBody_RayFromToCasterClass bc , BtSoftBody_FaceClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#606>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_RayFromToCaster_m_tests_set    `( BtSoftBody_RayFromToCasterClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#606>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_RayFromToCaster_m_tests_get    `( BtSoftBody_RayFromToCasterClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * SContact+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#270>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_SContact_new as btSoftBody_SContact    {  } -> `BtSoftBody_SContact' mkBtSoftBody_SContact* #}+{#fun btSoftBody_SContact_free    `( BtSoftBody_SContactClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#271>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_SContact_m_node_set    `( BtSoftBody_SContactClass bc , BtSoftBody_NodeClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#272>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_SContact_m_face_set    `( BtSoftBody_SContactClass bc , BtSoftBody_FaceClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#273>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_SContact_m_weights_set    `( BtSoftBody_SContactClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#273>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_SContact_m_weights_get    `( BtSoftBody_SContactClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#274>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_SContact_m_normal_set    `( BtSoftBody_SContactClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#274>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_SContact_m_normal_get    `( BtSoftBody_SContactClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#275>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_SContact_m_margin_set    `( BtSoftBody_SContactClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#275>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_SContact_m_margin_get    `( BtSoftBody_SContactClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#276>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_SContact_m_friction_set    `( BtSoftBody_SContactClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#276>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_SContact_m_friction_get    `( BtSoftBody_SContactClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+-- * SolverState+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#591>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_SolverState_new as btSoftBody_SolverState    {  } -> `BtSoftBody_SolverState' mkBtSoftBody_SolverState* #}+{#fun btSoftBody_SolverState_free    `( BtSoftBody_SolverStateClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#592>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_SolverState_sdt_set    `( BtSoftBody_SolverStateClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#592>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_SolverState_sdt_get    `( BtSoftBody_SolverStateClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#593>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_SolverState_isdt_set    `( BtSoftBody_SolverStateClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#593>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_SolverState_isdt_get    `( BtSoftBody_SolverStateClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#594>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_SolverState_velmrg_set    `( BtSoftBody_SolverStateClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#594>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_SolverState_velmrg_get    `( BtSoftBody_SolverStateClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#595>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_SolverState_radmrg_set    `( BtSoftBody_SolverStateClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#595>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_SolverState_radmrg_get    `( BtSoftBody_SolverStateClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#596>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_SolverState_updmrg_set    `( BtSoftBody_SolverStateClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#596>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_SolverState_updmrg_get    `( BtSoftBody_SolverStateClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+-- * Specs+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#487>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Joint_Specs_new as btSoftBody_Joint_Specs    {  } -> `BtSoftBody_Joint_Specs' mkBtSoftBody_Joint_Specs* #}+{#fun btSoftBody_Joint_Specs_free    `( BtSoftBody_Joint_SpecsClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#488>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Joint_Specs_erp_set    `( BtSoftBody_Joint_SpecsClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#488>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Joint_Specs_erp_get    `( BtSoftBody_Joint_SpecsClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#489>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Joint_Specs_cfm_set    `( BtSoftBody_Joint_SpecsClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#489>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Joint_Specs_cfm_get    `( BtSoftBody_Joint_SpecsClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#490>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Joint_Specs_split_set    `( BtSoftBody_Joint_SpecsClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#490>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Joint_Specs_split_get    `( BtSoftBody_Joint_SpecsClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+-- * Specs+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#512>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_LJoint_Specs_new as btSoftBody_LJoint_Specs    {  } -> `BtSoftBody_LJoint_Specs' mkBtSoftBody_LJoint_Specs* #}+{#fun btSoftBody_LJoint_Specs_free    `( BtSoftBody_LJoint_SpecsClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#513>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_LJoint_Specs_position_set    `( BtSoftBody_LJoint_SpecsClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#513>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_LJoint_Specs_position_get    `( BtSoftBody_LJoint_SpecsClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+-- * Specs+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#532>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_AJoint_Specs_new as btSoftBody_AJoint_Specs    {  } -> `BtSoftBody_AJoint_Specs' mkBtSoftBody_AJoint_Specs* #}+{#fun btSoftBody_AJoint_Specs_free    `( BtSoftBody_AJoint_SpecsClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#533>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_AJoint_Specs_axis_set    `( BtSoftBody_AJoint_SpecsClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#533>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_AJoint_Specs_axis_get    `( BtSoftBody_AJoint_SpecsClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#534>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_AJoint_Specs_icontrol_set    `( BtSoftBody_AJoint_SpecsClass bc , BtSoftBody_AJoint_IControlClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+-- * Tetra+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#249>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Tetra_new as btSoftBody_Tetra    {  } -> `BtSoftBody_Tetra' mkBtSoftBody_Tetra* #}+{#fun btSoftBody_Tetra_free    `( BtSoftBody_TetraClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#251>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Tetra_m_rv_set    `( BtSoftBody_TetraClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#251>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Tetra_m_rv_get    `( BtSoftBody_TetraClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#252>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Tetra_m_leaf_set    `( BtSoftBody_TetraClass bc , BtDbvtNodeClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#254>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Tetra_m_c1_set    `( BtSoftBody_TetraClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#254>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Tetra_m_c1_get    `( BtSoftBody_TetraClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#255>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Tetra_m_c2_set    `( BtSoftBody_TetraClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#255>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Tetra_m_c2_get    `( BtSoftBody_TetraClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+-- * btSoftBody+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#679>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_new1 as btSoftBody1    `( BtSoftBodyWorldInfoClass p0 )' =>     {  withBt* `p0'  } -> `BtSoftBody' mkBtSoftBody* #}+{#fun btSoftBody_free    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#808>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_getVolume as btSoftBody_getVolume    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#839>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_cutLink0 as btSoftBody_cutLink    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ node0+,  `Int'  -- ^ node1+,  `Float'  -- ^ position+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#839>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_cutLink0 as btSoftBody_cutLink0    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ node0+,  `Int'  -- ^ node1+,  `Float'  -- ^ position+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#840>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_cutLink1 as btSoftBody_cutLink1    `( BtSoftBodyClass bc , BtSoftBody_NodeClass p0 , BtSoftBody_NodeClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ node0+, withBt* `p1'  -- ^ node1+,  `Float'  -- ^ position+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#959>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_PSolve_Links as btSoftBody_PSolve_Links    `(  BtSoftBodyClass p0 )' =>     {  withBt* `p0'  -- ^ psb+,  `Float'  -- ^ kst+,  `Float'  -- ^ ti+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#835>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_generateClusters as btSoftBody_generateClusters    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ k+,  `Int'  -- ^ maxiterations+ } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#695>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_setCollisionShape as btSoftBody_setCollisionShape    `( BtSoftBodyClass bc , BtCollisionShapeClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ collisionShape+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#948>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_initializeClusters as btSoftBody_initializeClusters    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#820>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_clusterVAImpulse as btSoftBody_clusterVAImpulse    `(  BtSoftBody_ClusterClass p0 )' =>     {  withBt* `p0'  -- ^ cluster+, withVector3* `Vector3'  peekVector3* -- ^ impulse+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#820>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_clusterVAImpulse as btSoftBody_clusterVAImpulse'    `(  BtSoftBody_ClusterClass p0 )' =>     {  withBt* `p0'  -- ^ cluster+, allocaVector3-  `Vector3'  peekVector3* -- ^ impulse+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#767>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_addForce0 as btSoftBody_addForce    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ force+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#767>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_addForce0 as btSoftBody_addForce'    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ force+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#767>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_addForce0 as btSoftBody_addForce0    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ force+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#767>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_addForce0 as btSoftBody_addForce0'    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ force+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#770>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_addForce1 as btSoftBody_addForce1    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ force+,  `Int'  -- ^ node+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#770>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_addForce1 as btSoftBody_addForce1'    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ force+,  `Int'  -- ^ node+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#945>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_updateBounds as btSoftBody_updateBounds    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#801>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_rotate as btSoftBody_rotate    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withQuaternion* `Quaternion'  peekQuaternion* -- ^ rot+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#801>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_rotate as btSoftBody_rotate'    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaQuaternion-  `Quaternion'  peekQuaternion* -- ^ rot+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#830>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_releaseCluster as btSoftBody_releaseCluster    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#944>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_updateNormals as btSoftBody_updateNormals    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#951>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_prepareClusters as btSoftBody_prepareClusters    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ iterations+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#831>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_releaseClusters as btSoftBody_releaseClusters    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#786>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_getTotalMass as btSoftBody_getTotalMass    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#943>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_checkContact as btSoftBody_checkContact    `( BtSoftBodyClass bc , BtCollisionObjectClass p0 , BtSoftBody_sCtiClass p3 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ colObj+, withVector3* `Vector3'  peekVector3* -- ^ x+,  `Float'  -- ^ margin+, withBt* `p3'  -- ^ cti+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#943>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_checkContact as btSoftBody_checkContact'    `( BtSoftBodyClass bc , BtCollisionObjectClass p0 , BtSoftBody_sCtiClass p3 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ colObj+, allocaVector3-  `Vector3'  peekVector3* -- ^ x+,  `Float'  -- ^ margin+, withBt* `p3'  -- ^ cti+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#818>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_clusterDImpulse as btSoftBody_clusterDImpulse    `(  BtSoftBody_ClusterClass p0 )' =>     {  withBt* `p0'  -- ^ cluster+, withVector3* `Vector3'  peekVector3* -- ^ rpos+, withVector3* `Vector3'  peekVector3* -- ^ impulse+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#818>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_clusterDImpulse as btSoftBody_clusterDImpulse'    `(  BtSoftBody_ClusterClass p0 )' =>     {  withBt* `p0'  -- ^ cluster+, allocaVector3-  `Vector3'  peekVector3* -- ^ rpos+, allocaVector3-  `Vector3'  peekVector3* -- ^ impulse+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#681>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_initDefaults as btSoftBody_initDefaults    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#701>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_checkLink0 as btSoftBody_checkLink    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ node0+,  `Int'  -- ^ node1+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#701>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_checkLink0 as btSoftBody_checkLink0    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ node0+,  `Int'  -- ^ node1+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#703>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_checkLink1 as btSoftBody_checkLink1    `( BtSoftBodyClass bc , BtSoftBody_NodeClass p0 , BtSoftBody_NodeClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ node0+, withBt* `p1'  -- ^ node1+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#793>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_setVolumeMass as btSoftBody_setVolumeMass    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#819>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_clusterImpulse as btSoftBody_clusterImpulse    `(  BtSoftBody_ClusterClass p0 , BtSoftBody_ImpulseClass p2 )' =>     {  withBt* `p0'  -- ^ cluster+, withVector3* `Vector3'  peekVector3* -- ^ rpos+, withBt* `p2'  -- ^ impulse+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#819>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_clusterImpulse as btSoftBody_clusterImpulse'    `(  BtSoftBody_ClusterClass p0 , BtSoftBody_ImpulseClass p2 )' =>     {  withBt* `p0'  -- ^ cluster+, allocaVector3-  `Vector3'  peekVector3* -- ^ rpos+, withBt* `p2'  -- ^ impulse+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#707>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_checkFace as btSoftBody_checkFace    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ node0+,  `Int'  -- ^ node1+,  `Int'  -- ^ node2+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#942>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_evaluateCom as btSoftBody_evaluateCom    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#821>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_clusterDAImpulse as btSoftBody_clusterDAImpulse    `(  BtSoftBody_ClusterClass p0 )' =>     {  withBt* `p0'  -- ^ cluster+, withVector3* `Vector3'  peekVector3* -- ^ impulse+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#821>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_clusterDAImpulse as btSoftBody_clusterDAImpulse'    `(  BtSoftBody_ClusterClass p0 )' =>     {  withBt* `p0'  -- ^ cluster+, allocaVector3-  `Vector3'  peekVector3* -- ^ impulse+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#960>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_VSolve_Links as btSoftBody_VSolve_Links    `(  BtSoftBodyClass p0 )' =>     {  withBt* `p0'  -- ^ psb+,  `Float'  -- ^ kst+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#789>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_setTotalMass as btSoftBody_setTotalMass    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ mass+,  `Bool'  -- ^ fromfaces+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#823>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_clusterDCImpulse as btSoftBody_clusterDCImpulse    `(  BtSoftBody_ClusterClass p0 )' =>     {  withBt* `p0'  -- ^ cluster+, withVector3* `Vector3'  peekVector3* -- ^ impulse+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#823>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_clusterDCImpulse as btSoftBody_clusterDCImpulse'    `(  BtSoftBody_ClusterClass p0 )' =>     {  withBt* `p0'  -- ^ cluster+, allocaVector3-  `Vector3'  peekVector3* -- ^ impulse+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#815>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_clusterVelocity as btSoftBody_clusterVelocity    `(  BtSoftBody_ClusterClass p0 )' =>     {  withBt* `p0'  -- ^ cluster+, withVector3* `Vector3'  peekVector3* -- ^ rpos+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#815>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_clusterVelocity as btSoftBody_clusterVelocity'    `(  BtSoftBody_ClusterClass p0 )' =>     {  withBt* `p0'  -- ^ cluster+, allocaVector3-  `Vector3'  peekVector3* -- ^ rpos+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#826>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_generateBendingConstraints as btSoftBody_generateBendingConstraints    `( BtSoftBodyClass bc , BtSoftBody_MaterialClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ distance+, withBt* `p1'  -- ^ mat+ } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#949>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_updateClusters as btSoftBody_updateClusters    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#756>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_appendAnchor0 as btSoftBody_appendAnchor    `( BtSoftBodyClass bc , BtRigidBodyClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ node+, withBt* `p1'  -- ^ body+,  `Bool'  -- ^ disableCollisionBetweenLinkedBodies+,  `Float'  -- ^ influence+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#756>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_appendAnchor0 as btSoftBody_appendAnchor0    `( BtSoftBodyClass bc , BtRigidBodyClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ node+, withBt* `p1'  -- ^ body+,  `Bool'  -- ^ disableCollisionBetweenLinkedBodies+,  `Float'  -- ^ influence+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#757>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_appendAnchor1 as btSoftBody_appendAnchor1    `( BtSoftBodyClass bc , BtRigidBodyClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ node+, withBt* `p1'  -- ^ body+, withVector3* `Vector3'  peekVector3* -- ^ localPivot+,  `Bool'  -- ^ disableCollisionBetweenLinkedBodies+,  `Float'  -- ^ influence+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#757>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_appendAnchor1 as btSoftBody_appendAnchor1'    `( BtSoftBodyClass bc , BtRigidBodyClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ node+, withBt* `p1'  -- ^ body+, allocaVector3-  `Vector3'  peekVector3* -- ^ localPivot+,  `Bool'  -- ^ disableCollisionBetweenLinkedBodies+,  `Float'  -- ^ influence+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#953>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_applyClusters as btSoftBody_applyClusters    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +,  `Bool'  -- ^ drift+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#775>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_setVelocity as btSoftBody_setVelocity    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ velocity+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#775>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_setVelocity as btSoftBody_setVelocity'    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ velocity+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#810>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_clusterCount as btSoftBody_clusterCount    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#911>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_upcast0 as btSoftBody_upcast    `(  BtCollisionObjectClass p0 )' =>     {  withBt* `p0'  -- ^ colObj+ } ->  `BtSoftBody' mkBtSoftBody*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#911>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_upcast0 as btSoftBody_upcast0    `(  BtCollisionObjectClass p0 )' =>     {  withBt* `p0'  -- ^ colObj+ } ->  `BtSoftBody' mkBtSoftBody*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#917>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_upcast1 as btSoftBody_upcast1    `(  BtCollisionObjectClass p0 )' =>     {  withBt* `p0'  -- ^ colObj+ } ->  `BtSoftBody' mkBtSoftBody*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#879>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_getWindVelocity as btSoftBody_getWindVelocity    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#849>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_predictMotion as btSoftBody_predictMotion    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ dt+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#936>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_pointersToIndices as btSoftBody_pointersToIndices    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#784>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_getMass as btSoftBody_getMass    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ node+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#957>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_PSolve_RContacts as btSoftBody_PSolve_RContacts    `(  BtSoftBodyClass p0 )' =>     {  withBt* `p0'  -- ^ psb+,  `Float'  -- ^ kst+,  `Float'  -- ^ ti+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#941>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_initializeFaceTree as btSoftBody_initializeFaceTree    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#772>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_addVelocity0 as btSoftBody_addVelocity    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ velocity+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#772>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_addVelocity0 as btSoftBody_addVelocity'    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ velocity+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#772>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_addVelocity0 as btSoftBody_addVelocity0    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ velocity+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#772>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_addVelocity0 as btSoftBody_addVelocity0'    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ velocity+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#779>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_addVelocity1 as btSoftBody_addVelocity1    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ velocity+,  `Int'  -- ^ node+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#779>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_addVelocity1 as btSoftBody_addVelocity1'    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ velocity+,  `Int'  -- ^ node+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#956>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_PSolve_Anchors as btSoftBody_PSolve_Anchors    `(  BtSoftBodyClass p0 )' =>     {  withBt* `p0'  -- ^ psb+,  `Float'  -- ^ kst+,  `Float'  -- ^ ti+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#950>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_cleanupClusters as btSoftBody_cleanupClusters    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#797>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_transform as btSoftBody_transform    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ trs+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#797>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_transform as btSoftBody_transform'    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ trs+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#761>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_appendLinearJoint2 as btSoftBody_appendLinearJoint2    `( BtSoftBodyClass bc , BtSoftBody_LJoint_SpecsClass p0 , BtSoftBodyClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ specs+, withBt* `p1'  -- ^ body+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#828>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_randomizeConstraints as btSoftBody_randomizeConstraints    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#946>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_updatePose as btSoftBody_updatePose    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#799>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_translate as btSoftBody_translate    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ trs+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#799>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_translate as btSoftBody_translate'    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ trs+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#928>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_getAabb as btSoftBody_getAabb    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ aabbMin+, withVector3* `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#928>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_getAabb as btSoftBody_getAabb'    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ aabbMax+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#958>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_PSolve_SContacts as btSoftBody_PSolve_SContacts    `(  BtSoftBodyClass p0 )' =>     {  withBt* `p0'  -- ^ psb+,  `Float'  -- ^ arg1+,  `Float'  -- ^ ti+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#709>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_appendMaterial as btSoftBody_appendMaterial    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtSoftBody_Material' mkBtSoftBody_Material*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#728>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_appendNode as btSoftBody_appendNode    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ x+,  `Float'  -- ^ m+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#728>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_appendNode as btSoftBody_appendNode'    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ x+,  `Float'  -- ^ m+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#782>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_setMass as btSoftBody_setMass    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ node+,  `Float'  -- ^ mass+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#859>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_integrateMotion as btSoftBody_integrateMotion    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#861>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_defaultCollisionHandler0 as btSoftBody_defaultCollisionHandler    `( BtSoftBodyClass bc , BtCollisionObjectClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ pco+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#861>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_defaultCollisionHandler0 as btSoftBody_defaultCollisionHandler0    `( BtSoftBodyClass bc , BtCollisionObjectClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ pco+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#862>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_defaultCollisionHandler1 as btSoftBody_defaultCollisionHandler1    `( BtSoftBodyClass bc , BtSoftBodyClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ psb+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#851>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_solveConstraints as btSoftBody_solveConstraints    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#791>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_setTotalDensity as btSoftBody_setTotalDensity    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ density+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#717>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_appendNote0 as btSoftBody_appendNote    `( BtSoftBodyClass bc , BtSoftBody_NodeClass p3 , BtSoftBody_NodeClass p4 , BtSoftBody_NodeClass p5 , BtSoftBody_NodeClass p6 )' =>     { withBt* `bc'  -- ^ +,  `String'  -- ^ text+, withVector3* `Vector3'  peekVector3* -- ^ o+, withVector4* `Vector4'  peekVector4* -- ^ c+, withBt* `p3'  -- ^ n0+, withBt* `p4'  -- ^ n1+, withBt* `p5'  -- ^ n2+, withBt* `p6'  -- ^ n3+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#717>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_appendNote0 as btSoftBody_appendNote'    `( BtSoftBodyClass bc , BtSoftBody_NodeClass p3 , BtSoftBody_NodeClass p4 , BtSoftBody_NodeClass p5 , BtSoftBody_NodeClass p6 )' =>     { withBt* `bc'  -- ^ +,  `String'  -- ^ text+, allocaVector3-  `Vector3'  peekVector3* -- ^ o+, allocaVector4-  `Vector4'  peekVector4* -- ^ c+, withBt* `p3'  -- ^ n0+, withBt* `p4'  -- ^ n1+, withBt* `p5'  -- ^ n2+, withBt* `p6'  -- ^ n3+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#717>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_appendNote0 as btSoftBody_appendNote0    `( BtSoftBodyClass bc , BtSoftBody_NodeClass p3 , BtSoftBody_NodeClass p4 , BtSoftBody_NodeClass p5 , BtSoftBody_NodeClass p6 )' =>     { withBt* `bc'  -- ^ +,  `String'  -- ^ text+, withVector3* `Vector3'  peekVector3* -- ^ o+, withVector4* `Vector4'  peekVector4* -- ^ c+, withBt* `p3'  -- ^ n0+, withBt* `p4'  -- ^ n1+, withBt* `p5'  -- ^ n2+, withBt* `p6'  -- ^ n3+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#717>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_appendNote0 as btSoftBody_appendNote0'    `( BtSoftBodyClass bc , BtSoftBody_NodeClass p3 , BtSoftBody_NodeClass p4 , BtSoftBody_NodeClass p5 , BtSoftBody_NodeClass p6 )' =>     { withBt* `bc'  -- ^ +,  `String'  -- ^ text+, allocaVector3-  `Vector3'  peekVector3* -- ^ o+, allocaVector4-  `Vector4'  peekVector4* -- ^ c+, withBt* `p3'  -- ^ n0+, withBt* `p4'  -- ^ n1+, withBt* `p5'  -- ^ n2+, withBt* `p6'  -- ^ n3+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#720>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_appendNote1 as btSoftBody_appendNote1    `( BtSoftBodyClass bc , BtSoftBody_NodeClass p2 )' =>     { withBt* `bc'  -- ^ +,  `String'  -- ^ text+, withVector3* `Vector3'  peekVector3* -- ^ o+, withBt* `p2'  -- ^ feature+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#720>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_appendNote1 as btSoftBody_appendNote1'    `( BtSoftBodyClass bc , BtSoftBody_NodeClass p2 )' =>     { withBt* `bc'  -- ^ +,  `String'  -- ^ text+, allocaVector3-  `Vector3'  peekVector3* -- ^ o+, withBt* `p2'  -- ^ feature+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#723>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_appendNote2 as btSoftBody_appendNote2    `( BtSoftBodyClass bc , BtSoftBody_LinkClass p2 )' =>     { withBt* `bc'  -- ^ +,  `String'  -- ^ text+, withVector3* `Vector3'  peekVector3* -- ^ o+, withBt* `p2'  -- ^ feature+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#723>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_appendNote2 as btSoftBody_appendNote2'    `( BtSoftBodyClass bc , BtSoftBody_LinkClass p2 )' =>     { withBt* `bc'  -- ^ +,  `String'  -- ^ text+, allocaVector3-  `Vector3'  peekVector3* -- ^ o+, withBt* `p2'  -- ^ feature+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#726>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_appendNote3 as btSoftBody_appendNote3    `( BtSoftBodyClass bc , BtSoftBody_FaceClass p2 )' =>     { withBt* `bc'  -- ^ +,  `String'  -- ^ text+, withVector3* `Vector3'  peekVector3* -- ^ o+, withBt* `p2'  -- ^ feature+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#726>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_appendNote3 as btSoftBody_appendNote3'    `( BtSoftBodyClass bc , BtSoftBody_FaceClass p2 )' =>     { withBt* `bc'  -- ^ +,  `String'  -- ^ text+, allocaVector3-  `Vector3'  peekVector3* -- ^ o+, withBt* `p2'  -- ^ feature+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#795>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_setVolumeDensity as btSoftBody_setVolumeDensity    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ density+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#947>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_updateConstants as btSoftBody_updateConstants    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#853>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_staticSolve as btSoftBody_staticSolve    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ iterations+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#837>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_refine as btSoftBody_refine    `( BtSoftBodyClass bc , BtSoftBody_ImplicitFnClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ ifn+,  `Float'  -- ^ accurary+,  `Bool'  -- ^ cut+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#730>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_appendLink0 as btSoftBody_appendLink    `( BtSoftBodyClass bc , BtSoftBody_MaterialClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ model+, withBt* `p1'  -- ^ mat+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#730>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_appendLink0 as btSoftBody_appendLink0    `( BtSoftBodyClass bc , BtSoftBody_MaterialClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ model+, withBt* `p1'  -- ^ mat+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#734>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_appendLink1 as btSoftBody_appendLink1    `( BtSoftBodyClass bc , BtSoftBody_MaterialClass p2 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ node0+,  `Int'  -- ^ node1+, withBt* `p2'  -- ^ mat+,  `Bool'  -- ^ bcheckexist+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#738>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_appendLink2 as btSoftBody_appendLink2    `( BtSoftBodyClass bc , BtSoftBody_NodeClass p0 , BtSoftBody_NodeClass p1 , BtSoftBody_MaterialClass p2 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ node0+, withBt* `p1'  -- ^ node1+, withBt* `p2'  -- ^ mat+,  `Bool'  -- ^ bcheckexist+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#965>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_calculateSerializeBufferSize as btSoftBody_calculateSerializeBufferSize    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#952>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_solveClusters1 as btSoftBody_solveClusters1    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ sor+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#845>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_rayTest0 as btSoftBody_rayTest    `( BtSoftBodyClass bc , BtSoftBody_sRayCastClass p2 )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ rayFrom+, withVector3* `Vector3'  peekVector3* -- ^ rayTo+, withBt* `p2'  -- ^ results+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#845>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_rayTest0 as btSoftBody_rayTest'    `( BtSoftBodyClass bc , BtSoftBody_sRayCastClass p2 )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ rayFrom+, allocaVector3-  `Vector3'  peekVector3* -- ^ rayTo+, withBt* `p2'  -- ^ results+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#845>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_rayTest0 as btSoftBody_rayTest0    `( BtSoftBodyClass bc , BtSoftBody_sRayCastClass p2 )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ rayFrom+, withVector3* `Vector3'  peekVector3* -- ^ rayTo+, withBt* `p2'  -- ^ results+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#845>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_rayTest0 as btSoftBody_rayTest0'    `( BtSoftBodyClass bc , BtSoftBody_sRayCastClass p2 )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ rayFrom+, allocaVector3-  `Vector3'  peekVector3* -- ^ rayTo+, withBt* `p2'  -- ^ results+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#806>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_setPose as btSoftBody_setPose    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +,  `Bool'  -- ^ bvolume+,  `Bool'  -- ^ bframe+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#740>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_appendFace0 as btSoftBody_appendFace    `( BtSoftBodyClass bc , BtSoftBody_MaterialClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ model+, withBt* `p1'  -- ^ mat+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#740>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_appendFace0 as btSoftBody_appendFace0    `( BtSoftBodyClass bc , BtSoftBody_MaterialClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ model+, withBt* `p1'  -- ^ mat+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#744>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_appendFace1 as btSoftBody_appendFace1    `( BtSoftBodyClass bc , BtSoftBody_MaterialClass p3 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ node0+,  `Int'  -- ^ node1+,  `Int'  -- ^ node2+, withBt* `p3'  -- ^ mat+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#954>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_dampClusters as btSoftBody_dampClusters    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#689>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_getWorldInfo as btSoftBody_getWorldInfo    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtSoftBodyWorldInfo' mkBtSoftBodyWorldInfo*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#765>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_appendAngularJoint2 as btSoftBody_appendAngularJoint2    `( BtSoftBodyClass bc , BtSoftBody_AJoint_SpecsClass p0 , BtSoftBodyClass p1 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ specs+, withBt* `p1'  -- ^ body+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#817>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_clusterVImpulse as btSoftBody_clusterVImpulse    `(  BtSoftBody_ClusterClass p0 )' =>     {  withBt* `p0'  -- ^ cluster+, withVector3* `Vector3'  peekVector3* -- ^ rpos+, withVector3* `Vector3'  peekVector3* -- ^ impulse+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#817>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_clusterVImpulse as btSoftBody_clusterVImpulse'    `(  BtSoftBody_ClusterClass p0 )' =>     {  withBt* `p0'  -- ^ cluster+, allocaVector3-  `Vector3'  peekVector3* -- ^ rpos+, allocaVector3-  `Vector3'  peekVector3* -- ^ impulse+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#803>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_scale as btSoftBody_scale    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ scl+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#803>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_scale as btSoftBody_scale'    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ scl+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#822>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_clusterAImpulse as btSoftBody_clusterAImpulse    `(  BtSoftBody_ClusterClass p0 , BtSoftBody_ImpulseClass p1 )' =>     {  withBt* `p0'  -- ^ cluster+, withBt* `p1'  -- ^ impulse+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#812>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_clusterCom0 as btSoftBody_clusterCom    `(  BtSoftBody_ClusterClass p0 )' =>     {  withBt* `p0'  -- ^ cluster+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#812>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_clusterCom0 as btSoftBody_clusterCom0    `(  BtSoftBody_ClusterClass p0 )' =>     {  withBt* `p0'  -- ^ cluster+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#813>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_clusterCom1 as btSoftBody_clusterCom1    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ cluster+, allocaVector3-  `Vector3'  peekVector3* -- ^ + } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#873>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_setWindVelocity as btSoftBody_setWindVelocity    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ velocity+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#873>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_setWindVelocity as btSoftBody_setWindVelocity'    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ velocity+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#955>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_applyForces as btSoftBody_applyForces    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#745>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_appendTetra0 as btSoftBody_appendTetra    `( BtSoftBodyClass bc , BtSoftBody_MaterialClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ model+, withBt* `p1'  -- ^ mat+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#745>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_appendTetra0 as btSoftBody_appendTetra0    `( BtSoftBodyClass bc , BtSoftBody_MaterialClass p1 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ model+, withBt* `p1'  -- ^ mat+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#751>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_appendTetra1 as btSoftBody_appendTetra1    `( BtSoftBodyClass bc , BtSoftBody_MaterialClass p4 )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ node0+,  `Int'  -- ^ node1+,  `Int'  -- ^ node2+,  `Int'  -- ^ node3+, withBt* `p4'  -- ^ mat+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#660>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_m_bUpdateRtCst_set    `( BtSoftBodyClass bc )' =>     { withBt* `bc' ,  `Bool'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#660>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_m_bUpdateRtCst_get    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  } ->  `Bool'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#668>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_m_initialWorldTransform_set    `( BtSoftBodyClass bc )' =>     { withBt* `bc' , withTransform* `Transform'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#668>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_m_initialWorldTransform_get    `( BtSoftBodyClass bc )' =>     { withBt* `bc' , allocaTransform-  `Transform'  peekTransform* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#658>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_m_timeacc_set    `( BtSoftBodyClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#658>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_m_timeacc_get    `( BtSoftBodyClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#670>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_m_windVelocity_set    `( BtSoftBodyClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#670>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_m_windVelocity_get    `( BtSoftBodyClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#647>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_m_worldInfo_set    `( BtSoftBodyClass bc , BtSoftBodyWorldInfoClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+-- * btSoftBodyHelpers+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBodyHelpers.h?r=2223#46>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBodyHelpers.cpp?r=2223>+-}+{#fun btSoftBodyHelpers_new as btSoftBodyHelpers    {  } -> `BtSoftBodyHelpers' mkBtSoftBodyHelpers* #}+{#fun btSoftBodyHelpers_free    `( BtSoftBodyHelpersClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBodyHelpers.h?r=2223#56>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBodyHelpers.cpp?r=2223>+-}+{#fun btSoftBodyHelpers_DrawInfos as btSoftBodyHelpers_DrawInfos    `(  BtSoftBodyClass p0 , BtIDebugDrawClass p1 )' =>     {  withBt* `p0'  -- ^ psb+, withBt* `p1'  -- ^ idraw+,  `Bool'  -- ^ masses+,  `Bool'  -- ^ areas+,  `Bool'  -- ^ stress+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBodyHelpers.h?r=2223#50>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBodyHelpers.cpp?r=2223>+-}+{#fun btSoftBodyHelpers_Draw as btSoftBodyHelpers_Draw    `(  BtSoftBodyClass p0 , BtIDebugDrawClass p1 )' =>     {  withBt* `p0'  -- ^ psb+, withBt* `p1'  -- ^ idraw+,  `Int'  -- ^ drawflags+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBodyHelpers.h?r=2223#107>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBodyHelpers.cpp?r=2223>+-}+{#fun btSoftBodyHelpers_CreateEllipsoid as btSoftBodyHelpers_CreateEllipsoid    `(  BtSoftBodyWorldInfoClass p0 )' =>     {  withBt* `p0'  -- ^ worldInfo+, withVector3* `Vector3'  peekVector3* -- ^ center+, withVector3* `Vector3'  peekVector3* -- ^ radius+,  `Int'  -- ^ res+ } ->  `BtSoftBody' mkBtSoftBody*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBodyHelpers.h?r=2223#107>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBodyHelpers.cpp?r=2223>+-}+{#fun btSoftBodyHelpers_CreateEllipsoid as btSoftBodyHelpers_CreateEllipsoid'    `(  BtSoftBodyWorldInfoClass p0 )' =>     {  withBt* `p0'  -- ^ worldInfo+, allocaVector3-  `Vector3'  peekVector3* -- ^ center+, allocaVector3-  `Vector3'  peekVector3* -- ^ radius+,  `Int'  -- ^ res+ } ->  `BtSoftBody' mkBtSoftBody*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBodyHelpers.h?r=2223#139>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBodyHelpers.cpp?r=2223>+-}+{#fun btSoftBodyHelpers_CreateFromTetGenData as btSoftBodyHelpers_CreateFromTetGenData    `(  BtSoftBodyWorldInfoClass p0 )' =>     {  withBt* `p0'  -- ^ worldInfo+,  `String'  -- ^ ele+,  `String'  -- ^ face+,  `String'  -- ^ node+,  `Bool'  -- ^ bfacelinks+,  `Bool'  -- ^ btetralinks+,  `Bool'  -- ^ bfacesfromtetras+ } ->  `BtSoftBody' mkBtSoftBody*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBodyHelpers.h?r=2223#74>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBodyHelpers.cpp?r=2223>+-}+{#fun btSoftBodyHelpers_DrawFrame as btSoftBodyHelpers_DrawFrame    `(  BtSoftBodyClass p0 , BtIDebugDrawClass p1 )' =>     {  withBt* `p0'  -- ^ psb+, withBt* `p1'  -- ^ idraw+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBodyHelpers.h?r=2223#80>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBodyHelpers.cpp?r=2223>+-}+{#fun btSoftBodyHelpers_CreateRope as btSoftBodyHelpers_CreateRope    `(  BtSoftBodyWorldInfoClass p0 )' =>     {  withBt* `p0'  -- ^ worldInfo+, withVector3* `Vector3'  peekVector3* -- ^ from+, withVector3* `Vector3'  peekVector3* -- ^ to+,  `Int'  -- ^ res+,  `Int'  -- ^ fixeds+ } ->  `BtSoftBody' mkBtSoftBody*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBodyHelpers.h?r=2223#80>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBodyHelpers.cpp?r=2223>+-}+{#fun btSoftBodyHelpers_CreateRope as btSoftBodyHelpers_CreateRope'    `(  BtSoftBodyWorldInfoClass p0 )' =>     {  withBt* `p0'  -- ^ worldInfo+, allocaVector3-  `Vector3'  peekVector3* -- ^ from+, allocaVector3-  `Vector3'  peekVector3* -- ^ to+,  `Int'  -- ^ res+,  `Int'  -- ^ fixeds+ } ->  `BtSoftBody' mkBtSoftBody*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBodyHelpers.h?r=2223#102>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBodyHelpers.cpp?r=2223>+-}+{#fun btSoftBodyHelpers_CalculateUV as btSoftBodyHelpers_CalculateUV    `( )' =>     {   `Int'  -- ^ resx+,  `Int'  -- ^ resy+,  `Int'  -- ^ ix+,  `Int'  -- ^ iy+,  `Int'  -- ^ id+ } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBodyHelpers.h?r=2223#66>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBodyHelpers.cpp?r=2223>+-}+{#fun btSoftBodyHelpers_DrawFaceTree as btSoftBodyHelpers_DrawFaceTree    `(  BtSoftBodyClass p0 , BtIDebugDrawClass p1 )' =>     {  withBt* `p0'  -- ^ psb+, withBt* `p1'  -- ^ idraw+,  `Int'  -- ^ mindepth+,  `Int'  -- ^ maxdepth+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBodyHelpers.h?r=2223#71>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBodyHelpers.cpp?r=2223>+-}+{#fun btSoftBodyHelpers_DrawClusterTree as btSoftBodyHelpers_DrawClusterTree    `(  BtSoftBodyClass p0 , BtIDebugDrawClass p1 )' =>     {  withBt* `p0'  -- ^ psb+, withBt* `p1'  -- ^ idraw+,  `Int'  -- ^ mindepth+,  `Int'  -- ^ maxdepth+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBodyHelpers.h?r=2223#61>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBodyHelpers.cpp?r=2223>+-}+{#fun btSoftBodyHelpers_DrawNodeTree as btSoftBodyHelpers_DrawNodeTree    `(  BtSoftBodyClass p0 , BtIDebugDrawClass p1 )' =>     {  withBt* `p0'  -- ^ psb+, withBt* `p1'  -- ^ idraw+,  `Int'  -- ^ mindepth+,  `Int'  -- ^ maxdepth+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBodyHelpers.h?r=2223#90>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBodyHelpers.cpp?r=2223>+-}+{#fun btSoftBodyHelpers_CreatePatch as btSoftBodyHelpers_CreatePatch    `(  BtSoftBodyWorldInfoClass p0 )' =>     {  withBt* `p0'  -- ^ worldInfo+, withVector3* `Vector3'  peekVector3* -- ^ corner00+, withVector3* `Vector3'  peekVector3* -- ^ corner10+, withVector3* `Vector3'  peekVector3* -- ^ corner01+, withVector3* `Vector3'  peekVector3* -- ^ corner11+,  `Int'  -- ^ resx+,  `Int'  -- ^ resy+,  `Int'  -- ^ fixeds+,  `Bool'  -- ^ gendiags+ } ->  `BtSoftBody' mkBtSoftBody*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBodyHelpers.h?r=2223#90>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBodyHelpers.cpp?r=2223>+-}+{#fun btSoftBodyHelpers_CreatePatch as btSoftBodyHelpers_CreatePatch'    `(  BtSoftBodyWorldInfoClass p0 )' =>     {  withBt* `p0'  -- ^ worldInfo+, allocaVector3-  `Vector3'  peekVector3* -- ^ corner00+, allocaVector3-  `Vector3'  peekVector3* -- ^ corner10+, allocaVector3-  `Vector3'  peekVector3* -- ^ corner01+, allocaVector3-  `Vector3'  peekVector3* -- ^ corner11+,  `Int'  -- ^ resx+,  `Int'  -- ^ resy+,  `Int'  -- ^ fixeds+,  `Bool'  -- ^ gendiags+ } ->  `BtSoftBody' mkBtSoftBody*  #}+-- * btSoftBodyRigidBodyCollisionConfiguration+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h?r=2223#38>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp?r=2223>+-}+{#fun btSoftBodyRigidBodyCollisionConfiguration_new as btSoftBodyRigidBodyCollisionConfiguration    `( BtDefaultCollisionConstructionInfoClass p0 )' =>     {  withBt* `p0'  } -> `BtSoftBodyRigidBodyCollisionConfiguration' mkBtSoftBodyRigidBodyCollisionConfiguration* #}+{#fun btSoftBodyRigidBodyCollisionConfiguration_free    `( BtSoftBodyRigidBodyCollisionConfigurationClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h?r=2223#43>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp?r=2223>+-}+{#fun btSoftBodyRigidBodyCollisionConfiguration_getCollisionAlgorithmCreateFunc as btSoftBodyRigidBodyCollisionConfiguration_getCollisionAlgorithmCreateFunc    `( BtSoftBodyRigidBodyCollisionConfigurationClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ proxyType0+,  `Int'  -- ^ proxyType1+ } ->  `BtCollisionAlgorithmCreateFunc' mkBtCollisionAlgorithmCreateFunc*  #}+-- * btSoftBodyWorldInfo+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#54>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBodyWorldInfo_new as btSoftBodyWorldInfo    {  } -> `BtSoftBodyWorldInfo' mkBtSoftBodyWorldInfo* #}+{#fun btSoftBodyWorldInfo_free    `( BtSoftBodyWorldInfoClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#45>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBodyWorldInfo_air_density_set    `( BtSoftBodyWorldInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#45>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBodyWorldInfo_air_density_get    `( BtSoftBodyWorldInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#49>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBodyWorldInfo_m_broadphase_set    `( BtSoftBodyWorldInfoClass bc , BtBroadphaseInterfaceClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#50>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBodyWorldInfo_m_dispatcher_set    `( BtSoftBodyWorldInfoClass bc , BtDispatcherClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#51>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBodyWorldInfo_m_gravity_set    `( BtSoftBodyWorldInfoClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#51>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBodyWorldInfo_m_gravity_get    `( BtSoftBodyWorldInfoClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#46>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBodyWorldInfo_water_density_set    `( BtSoftBodyWorldInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#46>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBodyWorldInfo_water_density_get    `( BtSoftBodyWorldInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#48>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBodyWorldInfo_water_normal_set    `( BtSoftBodyWorldInfoClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#48>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBodyWorldInfo_water_normal_get    `( BtSoftBodyWorldInfoClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#47>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBodyWorldInfo_water_offset_set    `( BtSoftBodyWorldInfoClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#47>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBodyWorldInfo_water_offset_get    `( BtSoftBodyWorldInfoClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+-- * btSoftRigidDynamicsWorld+{#fun btSoftRigidDynamicsWorld_free    `( BtSoftRigidDynamicsWorldClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftRigidDynamicsWorld.h?r=2223#67>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftRigidDynamicsWorld.cpp?r=2223>+-}+{#fun btSoftRigidDynamicsWorld_getWorldInfo0 as btSoftRigidDynamicsWorld_getWorldInfo    `( BtSoftRigidDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtSoftBodyWorldInfo' mkBtSoftBodyWorldInfo*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftRigidDynamicsWorld.h?r=2223#67>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftRigidDynamicsWorld.cpp?r=2223>+-}+{#fun btSoftRigidDynamicsWorld_getWorldInfo0 as btSoftRigidDynamicsWorld_getWorldInfo0    `( BtSoftRigidDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtSoftBodyWorldInfo' mkBtSoftBodyWorldInfo*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftRigidDynamicsWorld.h?r=2223#71>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftRigidDynamicsWorld.cpp?r=2223>+-}+{#fun btSoftRigidDynamicsWorld_getWorldInfo1 as btSoftRigidDynamicsWorld_getWorldInfo1    `( BtSoftRigidDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtSoftBodyWorldInfo' mkBtSoftBodyWorldInfo*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftRigidDynamicsWorld.h?r=2223#65>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftRigidDynamicsWorld.cpp?r=2223>+-}+{#fun btSoftRigidDynamicsWorld_setDrawFlags as btSoftRigidDynamicsWorld_setDrawFlags    `( BtSoftRigidDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ f+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftRigidDynamicsWorld.h?r=2223#103>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftRigidDynamicsWorld.cpp?r=2223>+-}+{#fun btSoftRigidDynamicsWorld_serialize as btSoftRigidDynamicsWorld_serialize    `( BtSoftRigidDynamicsWorldClass bc , BtSerializerClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ serializer+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftRigidDynamicsWorld.h?r=2223#92>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftRigidDynamicsWorld.cpp?r=2223>+-}+{#fun btSoftRigidDynamicsWorld_rayTest as btSoftRigidDynamicsWorld_rayTest    `( BtSoftRigidDynamicsWorldClass bc , BtCollisionWorld_RayResultCallbackClass p2 )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ rayFromWorld+, withVector3* `Vector3'  peekVector3* -- ^ rayToWorld+, withBt* `p2'  -- ^ resultCallback+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftRigidDynamicsWorld.h?r=2223#92>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftRigidDynamicsWorld.cpp?r=2223>+-}+{#fun btSoftRigidDynamicsWorld_rayTest as btSoftRigidDynamicsWorld_rayTest'    `( BtSoftRigidDynamicsWorldClass bc , BtCollisionWorld_RayResultCallbackClass p2 )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ rayFromWorld+, allocaVector3-  `Vector3'  peekVector3* -- ^ rayToWorld+, withBt* `p2'  -- ^ resultCallback+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftRigidDynamicsWorld.h?r=2223#57>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftRigidDynamicsWorld.cpp?r=2223>+-}+{#fun btSoftRigidDynamicsWorld_addSoftBody as btSoftRigidDynamicsWorld_addSoftBody    `( BtSoftRigidDynamicsWorldClass bc , BtSoftBodyClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ body+,  `Int'  -- ^ collisionFilterGroup+,  `Int'  -- ^ collisionFilterMask+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftRigidDynamicsWorld.h?r=2223#62>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftRigidDynamicsWorld.cpp?r=2223>+-}+{#fun btSoftRigidDynamicsWorld_removeCollisionObject as btSoftRigidDynamicsWorld_removeCollisionObject    `( BtSoftRigidDynamicsWorldClass bc , BtCollisionObjectClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ collisionObject+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftRigidDynamicsWorld.h?r=2223#101>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftRigidDynamicsWorld.cpp?r=2223>+-}+{#fun btSoftRigidDynamicsWorld_rayTestSingle as btSoftRigidDynamicsWorld_rayTestSingle    `(  BtCollisionObjectClass p2 , BtCollisionShapeClass p3 , BtCollisionWorld_RayResultCallbackClass p5 )' =>     {  withTransform* `Transform'  peekTransform* -- ^ rayFromTrans+, withTransform* `Transform'  peekTransform* -- ^ rayToTrans+, withBt* `p2'  -- ^ collisionObject+, withBt* `p3'  -- ^ collisionShape+, withTransform* `Transform'  peekTransform* -- ^ colObjWorldTransform+, withBt* `p5'  -- ^ resultCallback+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftRigidDynamicsWorld.h?r=2223#101>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftRigidDynamicsWorld.cpp?r=2223>+-}+{#fun btSoftRigidDynamicsWorld_rayTestSingle as btSoftRigidDynamicsWorld_rayTestSingle'    `(  BtCollisionObjectClass p2 , BtCollisionShapeClass p3 , BtCollisionWorld_RayResultCallbackClass p5 )' =>     {  allocaTransform-  `Transform'  peekTransform* -- ^ rayFromTrans+, allocaTransform-  `Transform'  peekTransform* -- ^ rayToTrans+, withBt* `p2'  -- ^ collisionObject+, withBt* `p3'  -- ^ collisionShape+, allocaTransform-  `Transform'  peekTransform* -- ^ colObjWorldTransform+, withBt* `p5'  -- ^ resultCallback+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftRigidDynamicsWorld.h?r=2223#59>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftRigidDynamicsWorld.cpp?r=2223>+-}+{#fun btSoftRigidDynamicsWorld_removeSoftBody as btSoftRigidDynamicsWorld_removeSoftBody    `( BtSoftRigidDynamicsWorldClass bc , BtSoftBodyClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ body+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftRigidDynamicsWorld.h?r=2223#55>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftRigidDynamicsWorld.cpp?r=2223>+-}+{#fun btSoftRigidDynamicsWorld_debugDrawWorld as btSoftRigidDynamicsWorld_debugDrawWorld    `( BtSoftRigidDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftRigidDynamicsWorld.h?r=2223#64>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftRigidDynamicsWorld.cpp?r=2223>+-}+{#fun btSoftRigidDynamicsWorld_getDrawFlags as btSoftRigidDynamicsWorld_getDrawFlags    `( BtSoftRigidDynamicsWorldClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+-- * eAeroModel+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#82>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_eAeroModel_new as btSoftBody_eAeroModel    {  } -> `BtSoftBody_eAeroModel' mkBtSoftBody_eAeroModel* #}+{#fun btSoftBody_eAeroModel_free    `( BtSoftBody_eAeroModelClass bc )' =>     { withBt* `bc'  } -> `()' #}+-- * eFeature+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#115>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_eFeature_new as btSoftBody_eFeature    {  } -> `BtSoftBody_eFeature' mkBtSoftBody_eFeature* #}+{#fun btSoftBody_eFeature_free    `( BtSoftBody_eFeatureClass bc )' =>     { withBt* `bc'  } -> `()' #}+-- * ePSolver+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#98>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_ePSolver_new as btSoftBody_ePSolver    {  } -> `BtSoftBody_ePSolver' mkBtSoftBody_ePSolver* #}+{#fun btSoftBody_ePSolver_free    `( BtSoftBody_ePSolverClass bc )' =>     { withBt* `bc'  } -> `()' #}+-- * eSolverPresets+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#107>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_eSolverPresets_new as btSoftBody_eSolverPresets    {  } -> `BtSoftBody_eSolverPresets' mkBtSoftBody_eSolverPresets* #}+{#fun btSoftBody_eSolverPresets_free    `( BtSoftBody_eSolverPresetsClass bc )' =>     { withBt* `bc'  } -> `()' #}+-- * eType+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#480>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_Joint_eType_new as btSoftBody_Joint_eType    {  } -> `BtSoftBody_Joint_eType' mkBtSoftBody_Joint_eType* #}+{#fun btSoftBody_Joint_eType_free    `( BtSoftBody_Joint_eTypeClass bc )' =>     { withBt* `bc'  } -> `()' #}+-- * eVSolver+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#92>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_eVSolver_new as btSoftBody_eVSolver    {  } -> `BtSoftBody_eVSolver' mkBtSoftBody_eVSolver* #}+{#fun btSoftBody_eVSolver_free    `( BtSoftBody_eVSolverClass bc )' =>     { withBt* `bc'  } -> `()' #}+-- * fCollision+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#131>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_fCollision_new as btSoftBody_fCollision    {  } -> `BtSoftBody_fCollision' mkBtSoftBody_fCollision* #}+{#fun btSoftBody_fCollision_free    `( BtSoftBody_fCollisionClass bc )' =>     { withBt* `bc'  } -> `()' #}+-- * fDrawFlags+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBodyHelpers.h?r=2223#26>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBodyHelpers.cpp?r=2223>+-}+{#fun fDrawFlags_new as fDrawFlags    {  } -> `FDrawFlags' mkFDrawFlags* #}+{#fun fDrawFlags_free    `( FDrawFlagsClass bc )' =>     { withBt* `bc'  } -> `()' #}+-- * fMaterial+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#146>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_fMaterial_new as btSoftBody_fMaterial    {  } -> `BtSoftBody_fMaterial' mkBtSoftBody_fMaterial* #}+{#fun btSoftBody_fMaterial_free    `( BtSoftBody_fMaterialClass bc )' =>     { withBt* `bc'  } -> `()' #}+-- * sCti+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#181>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_sCti_new as btSoftBody_sCti    {  } -> `BtSoftBody_sCti' mkBtSoftBody_sCti* #}+{#fun btSoftBody_sCti_free    `( BtSoftBody_sCtiClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#182>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_sCti_m_colObj_set    `( BtSoftBody_sCtiClass bc , BtCollisionObjectClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#183>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_sCti_m_normal_set    `( BtSoftBody_sCtiClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#183>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_sCti_m_normal_get    `( BtSoftBody_sCtiClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#184>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_sCti_m_offset_set    `( BtSoftBody_sCtiClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#184>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_sCti_m_offset_get    `( BtSoftBody_sCtiClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+-- * sMedium+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#189>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_sMedium_new as btSoftBody_sMedium    {  } -> `BtSoftBody_sMedium' mkBtSoftBody_sMedium* #}+{#fun btSoftBody_sMedium_free    `( BtSoftBody_sMediumClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#192>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_sMedium_m_density_set    `( BtSoftBody_sMediumClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#192>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_sMedium_m_density_get    `( BtSoftBody_sMediumClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#191>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_sMedium_m_pressure_set    `( BtSoftBody_sMediumClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#191>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_sMedium_m_pressure_get    `( BtSoftBody_sMediumClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#190>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_sMedium_m_velocity_set    `( BtSoftBody_sMediumClass bc )' =>     { withBt* `bc' , withVector3* `Vector3'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#190>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_sMedium_m_velocity_get    `( BtSoftBody_sMediumClass bc )' =>     { withBt* `bc' , allocaVector3-  `Vector3'  peekVector3* } -> `()' #}+-- * sRayCast+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#159>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_sRayCast_new as btSoftBody_sRayCast    {  } -> `BtSoftBody_sRayCast' mkBtSoftBody_sRayCast* #}+{#fun btSoftBody_sRayCast_free    `( BtSoftBody_sRayCastClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#160>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_sRayCast_body_set    `( BtSoftBody_sRayCastClass bc , BtSoftBodyClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#163>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_sRayCast_fraction_set    `( BtSoftBody_sRayCastClass bc )' =>     { withBt* `bc' ,  `Float'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#163>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_sRayCast_fraction_get    `( BtSoftBody_sRayCastClass bc )' =>     { withBt* `bc'  } ->  `Float'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#162>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_sRayCast_index_set    `( BtSoftBody_sRayCastClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.h?r=2223#162>+     <http://code.google.com/p/bullet/source/browse/trunk/src/BulletSoftBody/btSoftBody.cpp?r=2223>+-}+{#fun btSoftBody_sRayCast_index_get    `( BtSoftBody_sRayCastClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}
+ Physics/Bullet/Raw/C2HS.hs view
@@ -0,0 +1,221 @@+--  C->Haskell Compiler: Marshalling library+--+--  Copyright (c) [1999...2005] Manuel M T Chakravarty+--+--  Redistribution and use in source and binary forms, with or without+--  modification, are permitted provided that the following conditions are met:+-- +--  1. Redistributions of source code must retain the above copyright notice,+--     this list of conditions and the following disclaimer. +--  2. Redistributions in binary form must reproduce the above copyright+--     notice, this list of conditions and the following disclaimer in the+--     documentation and/or other materials provided with the distribution. +--  3. The name of the author may not be used to endorse or promote products+--     derived from this software without specific prior written permission. +--+--  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR+--  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES+--  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN+--  NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +--  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED+--  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR+--  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF+--  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING+--  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS+--  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.+--+--- Description ---------------------------------------------------------------+--+--  Language: Haskell 98+--+--  This module provides the marshaling routines for Haskell files produced by +--  C->Haskell for binding to C library interfaces.  It exports all of the+--  low-level FFI (language-independent plus the C-specific parts) together+--  with the C->HS-specific higher-level marshalling routines.+--++module Physics.Bullet.Raw.C2HS (++  -- * Re-export the language-independent component of the FFI +  module Foreign,++  -- * Re-export the C language component of the FFI+  module Foreign.C,++  -- * Composite marshalling functions+  withCStringLenIntConv, peekCStringLenIntConv, withIntConv, withFloatConv,+  peekIntConv, peekFloatConv, withBool, peekBool, withEnum, peekEnum,++  -- * Conditional results using 'Maybe'+  nothingIf, nothingIfNull,++  -- * Bit masks+  combineBitMasks, containsBitMask, extractBitMasks,++  -- * Conversion between C and Haskell types+  cIntConv, cFloatConv, cToBool, cFromBool, cToEnum, cFromEnum+) where +++import Foreign+       hiding       (Word)+		    -- Should also hide the Foreign.Marshal.Pool exports in+		    -- compilers that export them+import Foreign.C+import Foreign.ForeignPtr++import Control.Monad        (when, liftM)+++-- Composite marshalling functions+-- -------------------------------++-- Strings with explicit length+--+withCStringLenIntConv s f    = withCStringLen s $ \(p, n) -> f (p, cIntConv n)+peekCStringLenIntConv (s, n) = peekCStringLen (s, cIntConv n)++-- Marshalling of numerals+--++withIntConv   :: (Storable b, Integral a, Integral b) +	      => a -> (Ptr b -> IO c) -> IO c+withIntConv    = with . cIntConv++withFloatConv :: (Storable b, RealFloat a, RealFloat b) +	      => a -> (Ptr b -> IO c) -> IO c+withFloatConv  = with . cFloatConv++peekIntConv   :: (Storable a, Integral a, Integral b) +	      => Ptr a -> IO b+peekIntConv    = liftM cIntConv . peek++peekFloatConv :: (Storable a, RealFloat a, RealFloat b) +	      => Ptr a -> IO b+peekFloatConv  = liftM cFloatConv . peek++-- Passing Booleans by reference+--++withBool :: (Integral a, Storable a) => Bool -> (Ptr a -> IO b) -> IO b+withBool  = with . fromBool++peekBool :: (Integral a, Storable a) => Ptr a -> IO Bool+peekBool  = liftM toBool . peek+++-- Passing enums by reference+--++withEnum :: (Enum a, Integral b, Storable b) => a -> (Ptr b -> IO c) -> IO c+withEnum  = with . cFromEnum++peekEnum :: (Enum a, Integral b, Storable b) => Ptr b -> IO a+peekEnum  = liftM cToEnum . peek+++-- Storing of 'Maybe' values+-- -------------------------++instance Storable a => Storable (Maybe a) where+  sizeOf    _ = sizeOf    (undefined :: Ptr ())+  alignment _ = alignment (undefined :: Ptr ())++  peek p = do+	     ptr <- peek (castPtr p)+	     if ptr == nullPtr+	       then return Nothing+	       else liftM Just $ peek ptr++  poke p v = do+	       ptr <- case v of+		        Nothing -> return nullPtr+			Just v' -> new v'+               poke (castPtr p) ptr+++-- Conditional results using 'Maybe'+-- ---------------------------------++-- Wrap the result into a 'Maybe' type.+--+-- * the predicate determines when the result is considered to be non-existing,+--   ie, it is represented by `Nothing'+--+-- * the second argument allows to map a result wrapped into `Just' to some+--   other domain+--+nothingIf       :: (a -> Bool) -> (a -> b) -> a -> Maybe b+nothingIf p f x  = if p x then Nothing else Just $ f x++-- |Instance for special casing null pointers.+--+nothingIfNull :: (Ptr a -> b) -> Ptr a -> Maybe b+nothingIfNull  = nothingIf (== nullPtr)+++-- Support for bit masks+-- ---------------------++-- Given a list of enumeration values that represent bit masks, combine these+-- masks using bitwise disjunction.+--+combineBitMasks :: (Enum a, Bits b) => [a] -> b+combineBitMasks = foldl (.|.) 0 . map (fromIntegral . fromEnum)++-- Tests whether the given bit mask is contained in the given bit pattern+-- (i.e., all bits set in the mask are also set in the pattern).+--+containsBitMask :: (Bits a, Enum b) => a -> b -> Bool+bits `containsBitMask` bm = let bm' = fromIntegral . fromEnum $ bm+			    in+			    bm' .&. bits == bm'++-- |Given a bit pattern, yield all bit masks that it contains.+--+-- * This does *not* attempt to compute a minimal set of bit masks that when+--   combined yield the bit pattern, instead all contained bit masks are+--   produced.+--+extractBitMasks :: (Bits a, Enum b, Bounded b) => a -> [b]+extractBitMasks bits = +  [bm | bm <- [minBound..maxBound], bits `containsBitMask` bm]+++-- Conversion routines+-- -------------------++-- |Integral conversion+--+cIntConv :: (Integral a, Integral b) => a -> b+cIntConv  = fromIntegral++-- |Floating conversion+--+cFloatConv :: (RealFloat a, RealFloat b) => a -> b+cFloatConv  = realToFrac+-- As this conversion by default goes via `Rational', it can be very slow...+{-# RULES +  "cFloatConv/Float->Float"   forall (x::Float).  cFloatConv x = x;+  "cFloatConv/Double->Double" forall (x::Double). cFloatConv x = x+ #-}++-- |Obtain C value from Haskell 'Bool'.+--+cFromBool :: Num a => Bool -> a+cFromBool  = fromBool++-- |Obtain Haskell 'Bool' from C value.+--+cToBool :: Num a => a -> Bool+cToBool  = toBool++-- |Convert a C enumeration to Haskell.+--+cToEnum :: (Integral i, Enum e) => i -> e+cToEnum  = toEnum . cIntConv++-- |Convert a Haskell enumeration to C.+--+cFromEnum :: (Enum e, Integral i) => e -> i+cFromEnum  = cIntConv . fromEnum
+ Physics/Bullet/Raw/Class.chs view
@@ -0,0 +1,1985 @@+{-#LANGUAGE ForeignFunctionInterface#-}+#include "Bullet.h"+module Physics.Bullet.Raw.Class where+import Control.Monad+import Foreign.Marshal.Alloc+import Foreign.ForeignPtr+import Foreign.Ptr+import Physics.Bullet.Raw.C2HS+import Physics.Bullet.Raw.Types+-- * Class Pointer Types+{#pointer O_btSoftBody_AJoint as BtSoftBody_AJoint foreign newtype#}+mkBtSoftBody_AJoint p = liftM BtSoftBody_AJoint $ newForeignPtr_ $ castPtr p+{#pointer O_btCollisionWorld_AllHitsRayResultCallback as BtCollisionWorld_AllHitsRayResultCallback foreign newtype#}+mkBtCollisionWorld_AllHitsRayResultCallback p = liftM BtCollisionWorld_AllHitsRayResultCallback $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_Anchor as BtSoftBody_Anchor foreign newtype#}+mkBtSoftBody_Anchor p = liftM BtSoftBody_Anchor $ newForeignPtr_ $ castPtr p+{#pointer O_bT_BOX_BOX_TRANSFORM_CACHE as BT_BOX_BOX_TRANSFORM_CACHE foreign newtype#}+mkBT_BOX_BOX_TRANSFORM_CACHE p = liftM BT_BOX_BOX_TRANSFORM_CACHE $ newForeignPtr_ $ castPtr p+{#pointer O_bT_QUANTIZED_BVH_NODE as BT_QUANTIZED_BVH_NODE foreign newtype#}+mkBT_QUANTIZED_BVH_NODE p = liftM BT_QUANTIZED_BVH_NODE $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_Body as BtSoftBody_Body foreign newtype#}+mkBtSoftBody_Body p = liftM BtSoftBody_Body $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_CJoint as BtSoftBody_CJoint foreign newtype#}+mkBtSoftBody_CJoint p = liftM BtSoftBody_CJoint $ newForeignPtr_ $ castPtr p+{#pointer O_cProfileIterator as CProfileIterator foreign newtype#}+mkCProfileIterator p = liftM CProfileIterator $ newForeignPtr_ $ castPtr p+{#pointer O_cProfileManager as CProfileManager foreign newtype#}+mkCProfileManager p = liftM CProfileManager $ newForeignPtr_ $ castPtr p+{#pointer O_cProfileNode as CProfileNode foreign newtype#}+mkCProfileNode p = liftM CProfileNode $ newForeignPtr_ $ castPtr p+{#pointer O_cProfileSample as CProfileSample foreign newtype#}+mkCProfileSample p = liftM CProfileSample $ newForeignPtr_ $ castPtr p+{#pointer O_btCollisionWorld_ClosestConvexResultCallback as BtCollisionWorld_ClosestConvexResultCallback foreign newtype#}+mkBtCollisionWorld_ClosestConvexResultCallback p = liftM BtCollisionWorld_ClosestConvexResultCallback $ newForeignPtr_ $ castPtr p+{#pointer O_btDiscreteCollisionDetectorInterface_ClosestPointInput as BtDiscreteCollisionDetectorInterface_ClosestPointInput foreign newtype#}+mkBtDiscreteCollisionDetectorInterface_ClosestPointInput p = liftM BtDiscreteCollisionDetectorInterface_ClosestPointInput $ newForeignPtr_ $ castPtr p+{#pointer O_btCollisionWorld_ClosestRayResultCallback as BtCollisionWorld_ClosestRayResultCallback foreign newtype#}+mkBtCollisionWorld_ClosestRayResultCallback p = liftM BtCollisionWorld_ClosestRayResultCallback $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_Cluster as BtSoftBody_Cluster foreign newtype#}+mkBtSoftBody_Cluster p = liftM BtSoftBody_Cluster $ newForeignPtr_ $ castPtr p+{#pointer O_btGImpactCompoundShape_CompoundPrimitiveManager as BtGImpactCompoundShape_CompoundPrimitiveManager foreign newtype#}+mkBtGImpactCompoundShape_CompoundPrimitiveManager p = liftM BtGImpactCompoundShape_CompoundPrimitiveManager $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_Config as BtSoftBody_Config foreign newtype#}+mkBtSoftBody_Config p = liftM BtSoftBody_Config $ newForeignPtr_ $ castPtr p+{#pointer O_btCollisionWorld_ContactResultCallback as BtCollisionWorld_ContactResultCallback foreign newtype#}+mkBtCollisionWorld_ContactResultCallback p = liftM BtCollisionWorld_ContactResultCallback $ newForeignPtr_ $ castPtr p+{#pointer O_btCollisionWorld_ConvexResultCallback as BtCollisionWorld_ConvexResultCallback foreign newtype#}+mkBtCollisionWorld_ConvexResultCallback p = liftM BtCollisionWorld_ConvexResultCallback $ newForeignPtr_ $ castPtr p+{#pointer O_btGImpactCollisionAlgorithm_CreateFunc as BtGImpactCollisionAlgorithm_CreateFunc foreign newtype#}+mkBtGImpactCollisionAlgorithm_CreateFunc p = liftM BtGImpactCollisionAlgorithm_CreateFunc $ newForeignPtr_ $ castPtr p+{#pointer O_btSphereSphereCollisionAlgorithm_CreateFunc as BtSphereSphereCollisionAlgorithm_CreateFunc foreign newtype#}+mkBtSphereSphereCollisionAlgorithm_CreateFunc p = liftM BtSphereSphereCollisionAlgorithm_CreateFunc $ newForeignPtr_ $ castPtr p+{#pointer O_btConvexConvexAlgorithm_CreateFunc as BtConvexConvexAlgorithm_CreateFunc foreign newtype#}+mkBtConvexConvexAlgorithm_CreateFunc p = liftM BtConvexConvexAlgorithm_CreateFunc $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_Element as BtSoftBody_Element foreign newtype#}+mkBtSoftBody_Element p = liftM BtSoftBody_Element $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_Face as BtSoftBody_Face foreign newtype#}+mkBtSoftBody_Face p = liftM BtSoftBody_Face $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_Feature as BtSoftBody_Feature foreign newtype#}+mkBtSoftBody_Feature p = liftM BtSoftBody_Feature $ newForeignPtr_ $ castPtr p+{#pointer O_gIM_BVH_DATA as GIM_BVH_DATA foreign newtype#}+mkGIM_BVH_DATA p = liftM GIM_BVH_DATA $ newForeignPtr_ $ castPtr p+{#pointer O_gIM_BVH_DATA_ARRAY as GIM_BVH_DATA_ARRAY foreign newtype#}+mkGIM_BVH_DATA_ARRAY p = liftM GIM_BVH_DATA_ARRAY $ newForeignPtr_ $ castPtr p+{#pointer O_gIM_BVH_TREE_NODE as GIM_BVH_TREE_NODE foreign newtype#}+mkGIM_BVH_TREE_NODE p = liftM GIM_BVH_TREE_NODE $ newForeignPtr_ $ castPtr p+{#pointer O_gIM_BVH_TREE_NODE_ARRAY as GIM_BVH_TREE_NODE_ARRAY foreign newtype#}+mkGIM_BVH_TREE_NODE_ARRAY p = liftM GIM_BVH_TREE_NODE_ARRAY $ newForeignPtr_ $ castPtr p+{#pointer O_gIM_PAIR as GIM_PAIR foreign newtype#}+mkGIM_PAIR p = liftM GIM_PAIR $ newForeignPtr_ $ castPtr p+{#pointer O_gIM_QUANTIZED_BVH_NODE_ARRAY as GIM_QUANTIZED_BVH_NODE_ARRAY foreign newtype#}+mkGIM_QUANTIZED_BVH_NODE_ARRAY p = liftM GIM_QUANTIZED_BVH_NODE_ARRAY $ newForeignPtr_ $ castPtr p+{#pointer O_gIM_TRIANGLE_CONTACT as GIM_TRIANGLE_CONTACT foreign newtype#}+mkGIM_TRIANGLE_CONTACT p = liftM GIM_TRIANGLE_CONTACT $ newForeignPtr_ $ castPtr p+{#pointer O_btDbvt_IClone as BtDbvt_IClone foreign newtype#}+mkBtDbvt_IClone p = liftM BtDbvt_IClone $ newForeignPtr_ $ castPtr p+{#pointer O_btDbvt_ICollide as BtDbvt_ICollide foreign newtype#}+mkBtDbvt_ICollide p = liftM BtDbvt_ICollide $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_AJoint_IControl as BtSoftBody_AJoint_IControl foreign newtype#}+mkBtSoftBody_AJoint_IControl p = liftM BtSoftBody_AJoint_IControl $ newForeignPtr_ $ castPtr p+{#pointer O_btDbvt_IWriter as BtDbvt_IWriter foreign newtype#}+mkBtDbvt_IWriter p = liftM BtDbvt_IWriter $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_ImplicitFn as BtSoftBody_ImplicitFn foreign newtype#}+mkBtSoftBody_ImplicitFn p = liftM BtSoftBody_ImplicitFn $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_Impulse as BtSoftBody_Impulse foreign newtype#}+mkBtSoftBody_Impulse p = liftM BtSoftBody_Impulse $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_Joint as BtSoftBody_Joint foreign newtype#}+mkBtSoftBody_Joint p = liftM BtSoftBody_Joint $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_LJoint as BtSoftBody_LJoint foreign newtype#}+mkBtSoftBody_LJoint p = liftM BtSoftBody_LJoint $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_Link as BtSoftBody_Link foreign newtype#}+mkBtSoftBody_Link p = liftM BtSoftBody_Link $ newForeignPtr_ $ castPtr p+{#pointer O_btCollisionWorld_LocalConvexResult as BtCollisionWorld_LocalConvexResult foreign newtype#}+mkBtCollisionWorld_LocalConvexResult p = liftM BtCollisionWorld_LocalConvexResult $ newForeignPtr_ $ castPtr p+{#pointer O_btCollisionWorld_LocalRayResult as BtCollisionWorld_LocalRayResult foreign newtype#}+mkBtCollisionWorld_LocalRayResult p = liftM BtCollisionWorld_LocalRayResult $ newForeignPtr_ $ castPtr p+{#pointer O_btCollisionWorld_LocalShapeInfo as BtCollisionWorld_LocalShapeInfo foreign newtype#}+mkBtCollisionWorld_LocalShapeInfo p = liftM BtCollisionWorld_LocalShapeInfo $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_Material as BtSoftBody_Material foreign newtype#}+mkBtSoftBody_Material p = liftM BtSoftBody_Material $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_Node as BtSoftBody_Node foreign newtype#}+mkBtSoftBody_Node p = liftM BtSoftBody_Node $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_Note as BtSoftBody_Note foreign newtype#}+mkBtSoftBody_Note p = liftM BtSoftBody_Note $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_Pose as BtSoftBody_Pose foreign newtype#}+mkBtSoftBody_Pose p = liftM BtSoftBody_Pose $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_RContact as BtSoftBody_RContact foreign newtype#}+mkBtSoftBody_RContact p = liftM BtSoftBody_RContact $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_RayFromToCaster as BtSoftBody_RayFromToCaster foreign newtype#}+mkBtSoftBody_RayFromToCaster p = liftM BtSoftBody_RayFromToCaster $ newForeignPtr_ $ castPtr p+{#pointer O_btCollisionWorld_RayResultCallback as BtCollisionWorld_RayResultCallback foreign newtype#}+mkBtCollisionWorld_RayResultCallback p = liftM BtCollisionWorld_RayResultCallback $ newForeignPtr_ $ castPtr p+{#pointer O_btWheelInfo_RaycastInfo as BtWheelInfo_RaycastInfo foreign newtype#}+mkBtWheelInfo_RaycastInfo p = liftM BtWheelInfo_RaycastInfo $ newForeignPtr_ $ castPtr p+{#pointer O_btDiscreteCollisionDetectorInterface_Result as BtDiscreteCollisionDetectorInterface_Result foreign newtype#}+mkBtDiscreteCollisionDetectorInterface_Result p = liftM BtDiscreteCollisionDetectorInterface_Result $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_SContact as BtSoftBody_SContact foreign newtype#}+mkBtSoftBody_SContact p = liftM BtSoftBody_SContact $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_SolverState as BtSoftBody_SolverState foreign newtype#}+mkBtSoftBody_SolverState p = liftM BtSoftBody_SolverState $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_Joint_Specs as BtSoftBody_Joint_Specs foreign newtype#}+mkBtSoftBody_Joint_Specs p = liftM BtSoftBody_Joint_Specs $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_LJoint_Specs as BtSoftBody_LJoint_Specs foreign newtype#}+mkBtSoftBody_LJoint_Specs p = liftM BtSoftBody_LJoint_Specs $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_AJoint_Specs as BtSoftBody_AJoint_Specs foreign newtype#}+mkBtSoftBody_AJoint_Specs p = liftM BtSoftBody_AJoint_Specs $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_Tetra as BtSoftBody_Tetra foreign newtype#}+mkBtSoftBody_Tetra p = liftM BtSoftBody_Tetra $ newForeignPtr_ $ castPtr p+{#pointer O_btGImpactMeshShapePart_TrimeshPrimitiveManager as BtGImpactMeshShapePart_TrimeshPrimitiveManager foreign newtype#}+mkBtGImpactMeshShapePart_TrimeshPrimitiveManager p = liftM BtGImpactMeshShapePart_TrimeshPrimitiveManager $ newForeignPtr_ $ castPtr p+{#pointer O_bt32BitAxisSweep3 as Bt32BitAxisSweep3 foreign newtype#}+mkBt32BitAxisSweep3 p = liftM Bt32BitAxisSweep3 $ newForeignPtr_ $ castPtr p+{#pointer O_btAABB as BtAABB foreign newtype#}+mkBtAABB p = liftM BtAABB $ newForeignPtr_ $ castPtr p+{#pointer O_btActionInterface as BtActionInterface foreign newtype#}+mkBtActionInterface p = liftM BtActionInterface $ newForeignPtr_ $ castPtr p+{#pointer O_btActivatingCollisionAlgorithm as BtActivatingCollisionAlgorithm foreign newtype#}+mkBtActivatingCollisionAlgorithm p = liftM BtActivatingCollisionAlgorithm $ newForeignPtr_ $ castPtr p+{#pointer O_btAngularLimit as BtAngularLimit foreign newtype#}+mkBtAngularLimit p = liftM BtAngularLimit $ newForeignPtr_ $ castPtr p+{#pointer O_btAxisSweep3 as BtAxisSweep3 foreign newtype#}+mkBtAxisSweep3 p = liftM BtAxisSweep3 $ newForeignPtr_ $ castPtr p+{#pointer O_btBU_Simplex1to4 as BtBU_Simplex1to4 foreign newtype#}+mkBtBU_Simplex1to4 p = liftM BtBU_Simplex1to4 $ newForeignPtr_ $ castPtr p+{#pointer O_btBlock as BtBlock foreign newtype#}+mkBtBlock p = liftM BtBlock $ newForeignPtr_ $ castPtr p+{#pointer O_btBoxShape as BtBoxShape foreign newtype#}+mkBtBoxShape p = liftM BtBoxShape $ newForeignPtr_ $ castPtr p+{#pointer O_btBroadphaseAabbCallback as BtBroadphaseAabbCallback foreign newtype#}+mkBtBroadphaseAabbCallback p = liftM BtBroadphaseAabbCallback $ newForeignPtr_ $ castPtr p+{#pointer O_btBroadphaseInterface as BtBroadphaseInterface foreign newtype#}+mkBtBroadphaseInterface p = liftM BtBroadphaseInterface $ newForeignPtr_ $ castPtr p+{#pointer O_btBroadphasePair as BtBroadphasePair foreign newtype#}+mkBtBroadphasePair p = liftM BtBroadphasePair $ newForeignPtr_ $ castPtr p+{#pointer O_btBroadphasePairSortPredicate as BtBroadphasePairSortPredicate foreign newtype#}+mkBtBroadphasePairSortPredicate p = liftM BtBroadphasePairSortPredicate $ newForeignPtr_ $ castPtr p+{#pointer O_btBroadphaseProxy as BtBroadphaseProxy foreign newtype#}+mkBtBroadphaseProxy p = liftM BtBroadphaseProxy $ newForeignPtr_ $ castPtr p+{#pointer O_btBroadphaseRayCallback as BtBroadphaseRayCallback foreign newtype#}+mkBtBroadphaseRayCallback p = liftM BtBroadphaseRayCallback $ newForeignPtr_ $ castPtr p+{#pointer O_btBvhSubtreeInfo as BtBvhSubtreeInfo foreign newtype#}+mkBtBvhSubtreeInfo p = liftM BtBvhSubtreeInfo $ newForeignPtr_ $ castPtr p+{#pointer O_btBvhSubtreeInfoData as BtBvhSubtreeInfoData foreign newtype#}+mkBtBvhSubtreeInfoData p = liftM BtBvhSubtreeInfoData $ newForeignPtr_ $ castPtr p+{#pointer O_btBvhTree as BtBvhTree foreign newtype#}+mkBtBvhTree p = liftM BtBvhTree $ newForeignPtr_ $ castPtr p+{#pointer O_btBvhTriangleMeshShape as BtBvhTriangleMeshShape foreign newtype#}+mkBtBvhTriangleMeshShape p = liftM BtBvhTriangleMeshShape $ newForeignPtr_ $ castPtr p+{#pointer O_btCapsuleShape as BtCapsuleShape foreign newtype#}+mkBtCapsuleShape p = liftM BtCapsuleShape $ newForeignPtr_ $ castPtr p+{#pointer O_btCapsuleShapeData as BtCapsuleShapeData foreign newtype#}+mkBtCapsuleShapeData p = liftM BtCapsuleShapeData $ newForeignPtr_ $ castPtr p+{#pointer O_btCapsuleShapeX as BtCapsuleShapeX foreign newtype#}+mkBtCapsuleShapeX p = liftM BtCapsuleShapeX $ newForeignPtr_ $ castPtr p+{#pointer O_btCapsuleShapeZ as BtCapsuleShapeZ foreign newtype#}+mkBtCapsuleShapeZ p = liftM BtCapsuleShapeZ $ newForeignPtr_ $ castPtr p+{#pointer O_btCharIndexTripletData as BtCharIndexTripletData foreign newtype#}+mkBtCharIndexTripletData p = liftM BtCharIndexTripletData $ newForeignPtr_ $ castPtr p+{#pointer O_btChunk as BtChunk foreign newtype#}+mkBtChunk p = liftM BtChunk $ newForeignPtr_ $ castPtr p+{#pointer O_btClock as BtClock foreign newtype#}+mkBtClock p = liftM BtClock $ newForeignPtr_ $ castPtr p+{#pointer O_btCollisionAlgorithm as BtCollisionAlgorithm foreign newtype#}+mkBtCollisionAlgorithm p = liftM BtCollisionAlgorithm $ newForeignPtr_ $ castPtr p+{#pointer O_btCollisionAlgorithmConstructionInfo as BtCollisionAlgorithmConstructionInfo foreign newtype#}+mkBtCollisionAlgorithmConstructionInfo p = liftM BtCollisionAlgorithmConstructionInfo $ newForeignPtr_ $ castPtr p+{#pointer O_btCollisionAlgorithmCreateFunc as BtCollisionAlgorithmCreateFunc foreign newtype#}+mkBtCollisionAlgorithmCreateFunc p = liftM BtCollisionAlgorithmCreateFunc $ newForeignPtr_ $ castPtr p+{#pointer O_btCollisionConfiguration as BtCollisionConfiguration foreign newtype#}+mkBtCollisionConfiguration p = liftM BtCollisionConfiguration $ newForeignPtr_ $ castPtr p+{#pointer O_btCollisionDispatcher as BtCollisionDispatcher foreign newtype#}+mkBtCollisionDispatcher p = liftM BtCollisionDispatcher $ newForeignPtr_ $ castPtr p+{#pointer O_btCollisionObject as BtCollisionObject foreign newtype#}+mkBtCollisionObject p = liftM BtCollisionObject $ newForeignPtr_ $ castPtr p+{#pointer O_btCollisionObjectDoubleData as BtCollisionObjectDoubleData foreign newtype#}+mkBtCollisionObjectDoubleData p = liftM BtCollisionObjectDoubleData $ newForeignPtr_ $ castPtr p+{#pointer O_btCollisionObjectFloatData as BtCollisionObjectFloatData foreign newtype#}+mkBtCollisionObjectFloatData p = liftM BtCollisionObjectFloatData $ newForeignPtr_ $ castPtr p+{#pointer O_btCollisionShape as BtCollisionShape foreign newtype#}+mkBtCollisionShape p = liftM BtCollisionShape $ newForeignPtr_ $ castPtr p+{#pointer O_btCollisionShapeData as BtCollisionShapeData foreign newtype#}+mkBtCollisionShapeData p = liftM BtCollisionShapeData $ newForeignPtr_ $ castPtr p+{#pointer O_btCollisionWorld as BtCollisionWorld foreign newtype#}+mkBtCollisionWorld p = liftM BtCollisionWorld $ newForeignPtr_ $ castPtr p+{#pointer O_btCompoundShape as BtCompoundShape foreign newtype#}+mkBtCompoundShape p = liftM BtCompoundShape $ newForeignPtr_ $ castPtr p+{#pointer O_btCompoundShapeChild as BtCompoundShapeChild foreign newtype#}+mkBtCompoundShapeChild p = liftM BtCompoundShapeChild $ newForeignPtr_ $ castPtr p+{#pointer O_btCompoundShapeChildData as BtCompoundShapeChildData foreign newtype#}+mkBtCompoundShapeChildData p = liftM BtCompoundShapeChildData $ newForeignPtr_ $ castPtr p+{#pointer O_btCompoundShapeData as BtCompoundShapeData foreign newtype#}+mkBtCompoundShapeData p = liftM BtCompoundShapeData $ newForeignPtr_ $ castPtr p+{#pointer O_btConcaveShape as BtConcaveShape foreign newtype#}+mkBtConcaveShape p = liftM BtConcaveShape $ newForeignPtr_ $ castPtr p+{#pointer O_btConeShape as BtConeShape foreign newtype#}+mkBtConeShape p = liftM BtConeShape $ newForeignPtr_ $ castPtr p+{#pointer O_btConeShapeX as BtConeShapeX foreign newtype#}+mkBtConeShapeX p = liftM BtConeShapeX $ newForeignPtr_ $ castPtr p+{#pointer O_btConeShapeZ as BtConeShapeZ foreign newtype#}+mkBtConeShapeZ p = liftM BtConeShapeZ $ newForeignPtr_ $ castPtr p+{#pointer O_btConeTwistConstraint as BtConeTwistConstraint foreign newtype#}+mkBtConeTwistConstraint p = liftM BtConeTwistConstraint $ newForeignPtr_ $ castPtr p+{#pointer O_btConeTwistConstraintData as BtConeTwistConstraintData foreign newtype#}+mkBtConeTwistConstraintData p = liftM BtConeTwistConstraintData $ newForeignPtr_ $ castPtr p+{#pointer O_btTypedConstraint_btConstraintInfo1 as BtTypedConstraint_btConstraintInfo1 foreign newtype#}+mkBtTypedConstraint_btConstraintInfo1 p = liftM BtTypedConstraint_btConstraintInfo1 $ newForeignPtr_ $ castPtr p+{#pointer O_btTypedConstraint_btConstraintInfo2 as BtTypedConstraint_btConstraintInfo2 foreign newtype#}+mkBtTypedConstraint_btConstraintInfo2 p = liftM BtTypedConstraint_btConstraintInfo2 $ newForeignPtr_ $ castPtr p+{#pointer O_btConstraintRow as BtConstraintRow foreign newtype#}+mkBtConstraintRow p = liftM BtConstraintRow $ newForeignPtr_ $ castPtr p+{#pointer O_btConstraintSetting as BtConstraintSetting foreign newtype#}+mkBtConstraintSetting p = liftM BtConstraintSetting $ newForeignPtr_ $ castPtr p+{#pointer O_btConstraintSolver as BtConstraintSolver foreign newtype#}+mkBtConstraintSolver p = liftM BtConstraintSolver $ newForeignPtr_ $ castPtr p+{#pointer O_btContactConstraint as BtContactConstraint foreign newtype#}+mkBtContactConstraint p = liftM BtContactConstraint $ newForeignPtr_ $ castPtr p+{#pointer O_btContactSolverInfo as BtContactSolverInfo foreign newtype#}+mkBtContactSolverInfo p = liftM BtContactSolverInfo $ newForeignPtr_ $ castPtr p+{#pointer O_btContactSolverInfoData as BtContactSolverInfoData foreign newtype#}+mkBtContactSolverInfoData p = liftM BtContactSolverInfoData $ newForeignPtr_ $ castPtr p+{#pointer O_btContinuousDynamicsWorld as BtContinuousDynamicsWorld foreign newtype#}+mkBtContinuousDynamicsWorld p = liftM BtContinuousDynamicsWorld $ newForeignPtr_ $ castPtr p+{#pointer O_btConvexConvexAlgorithm as BtConvexConvexAlgorithm foreign newtype#}+mkBtConvexConvexAlgorithm p = liftM BtConvexConvexAlgorithm $ newForeignPtr_ $ castPtr p+{#pointer O_btConvexHullShape as BtConvexHullShape foreign newtype#}+mkBtConvexHullShape p = liftM BtConvexHullShape $ newForeignPtr_ $ castPtr p+{#pointer O_btConvexHullShapeData as BtConvexHullShapeData foreign newtype#}+mkBtConvexHullShapeData p = liftM BtConvexHullShapeData $ newForeignPtr_ $ castPtr p+{#pointer O_btConvexInternalAabbCachingShape as BtConvexInternalAabbCachingShape foreign newtype#}+mkBtConvexInternalAabbCachingShape p = liftM BtConvexInternalAabbCachingShape $ newForeignPtr_ $ castPtr p+{#pointer O_btConvexInternalShape as BtConvexInternalShape foreign newtype#}+mkBtConvexInternalShape p = liftM BtConvexInternalShape $ newForeignPtr_ $ castPtr p+{#pointer O_btConvexInternalShapeData as BtConvexInternalShapeData foreign newtype#}+mkBtConvexInternalShapeData p = liftM BtConvexInternalShapeData $ newForeignPtr_ $ castPtr p+{#pointer O_btConvexSeparatingDistanceUtil as BtConvexSeparatingDistanceUtil foreign newtype#}+mkBtConvexSeparatingDistanceUtil p = liftM BtConvexSeparatingDistanceUtil $ newForeignPtr_ $ castPtr p+{#pointer O_btConvexShape as BtConvexShape foreign newtype#}+mkBtConvexShape p = liftM BtConvexShape $ newForeignPtr_ $ castPtr p+{#pointer O_btConvexTriangleMeshShape as BtConvexTriangleMeshShape foreign newtype#}+mkBtConvexTriangleMeshShape p = liftM BtConvexTriangleMeshShape $ newForeignPtr_ $ castPtr p+{#pointer O_btCylinderShape as BtCylinderShape foreign newtype#}+mkBtCylinderShape p = liftM BtCylinderShape $ newForeignPtr_ $ castPtr p+{#pointer O_btCylinderShapeData as BtCylinderShapeData foreign newtype#}+mkBtCylinderShapeData p = liftM BtCylinderShapeData $ newForeignPtr_ $ castPtr p+{#pointer O_btCylinderShapeX as BtCylinderShapeX foreign newtype#}+mkBtCylinderShapeX p = liftM BtCylinderShapeX $ newForeignPtr_ $ castPtr p+{#pointer O_btCylinderShapeZ as BtCylinderShapeZ foreign newtype#}+mkBtCylinderShapeZ p = liftM BtCylinderShapeZ $ newForeignPtr_ $ castPtr p+{#pointer O_btDbvt as BtDbvt foreign newtype#}+mkBtDbvt p = liftM BtDbvt $ newForeignPtr_ $ castPtr p+{#pointer O_btDbvtAabbMm as BtDbvtAabbMm foreign newtype#}+mkBtDbvtAabbMm p = liftM BtDbvtAabbMm $ newForeignPtr_ $ castPtr p+{#pointer O_btDbvtBroadphase as BtDbvtBroadphase foreign newtype#}+mkBtDbvtBroadphase p = liftM BtDbvtBroadphase $ newForeignPtr_ $ castPtr p+{#pointer O_btDbvtNode as BtDbvtNode foreign newtype#}+mkBtDbvtNode p = liftM BtDbvtNode $ newForeignPtr_ $ castPtr p+{#pointer O_btDbvtProxy as BtDbvtProxy foreign newtype#}+mkBtDbvtProxy p = liftM BtDbvtProxy $ newForeignPtr_ $ castPtr p+{#pointer O_btDefaultCollisionConfiguration as BtDefaultCollisionConfiguration foreign newtype#}+mkBtDefaultCollisionConfiguration p = liftM BtDefaultCollisionConfiguration $ newForeignPtr_ $ castPtr p+{#pointer O_btDefaultCollisionConstructionInfo as BtDefaultCollisionConstructionInfo foreign newtype#}+mkBtDefaultCollisionConstructionInfo p = liftM BtDefaultCollisionConstructionInfo $ newForeignPtr_ $ castPtr p+{#pointer O_btDefaultMotionState as BtDefaultMotionState foreign newtype#}+mkBtDefaultMotionState p = liftM BtDefaultMotionState $ newForeignPtr_ $ castPtr p+{#pointer O_btDefaultSerializer as BtDefaultSerializer foreign newtype#}+mkBtDefaultSerializer p = liftM BtDefaultSerializer $ newForeignPtr_ $ castPtr p+{#pointer O_btDefaultVehicleRaycaster as BtDefaultVehicleRaycaster foreign newtype#}+mkBtDefaultVehicleRaycaster p = liftM BtDefaultVehicleRaycaster $ newForeignPtr_ $ castPtr p+{#pointer O_btDiscreteCollisionDetectorInterface as BtDiscreteCollisionDetectorInterface foreign newtype#}+mkBtDiscreteCollisionDetectorInterface p = liftM BtDiscreteCollisionDetectorInterface $ newForeignPtr_ $ castPtr p+{#pointer O_btDiscreteDynamicsWorld as BtDiscreteDynamicsWorld foreign newtype#}+mkBtDiscreteDynamicsWorld p = liftM BtDiscreteDynamicsWorld $ newForeignPtr_ $ castPtr p+{#pointer O_btDispatcher as BtDispatcher foreign newtype#}+mkBtDispatcher p = liftM BtDispatcher $ newForeignPtr_ $ castPtr p+{#pointer O_btDispatcherInfo as BtDispatcherInfo foreign newtype#}+mkBtDispatcherInfo p = liftM BtDispatcherInfo $ newForeignPtr_ $ castPtr p+{#pointer O_btDynamicsWorld as BtDynamicsWorld foreign newtype#}+mkBtDynamicsWorld p = liftM BtDynamicsWorld $ newForeignPtr_ $ castPtr p+{#pointer O_btEmptyShape as BtEmptyShape foreign newtype#}+mkBtEmptyShape p = liftM BtEmptyShape $ newForeignPtr_ $ castPtr p+{#pointer O_btGImpactBvh as BtGImpactBvh foreign newtype#}+mkBtGImpactBvh p = liftM BtGImpactBvh $ newForeignPtr_ $ castPtr p+{#pointer O_btGImpactCollisionAlgorithm as BtGImpactCollisionAlgorithm foreign newtype#}+mkBtGImpactCollisionAlgorithm p = liftM BtGImpactCollisionAlgorithm $ newForeignPtr_ $ castPtr p+{#pointer O_btGImpactCompoundShape as BtGImpactCompoundShape foreign newtype#}+mkBtGImpactCompoundShape p = liftM BtGImpactCompoundShape $ newForeignPtr_ $ castPtr p+{#pointer O_btGImpactMeshShape as BtGImpactMeshShape foreign newtype#}+mkBtGImpactMeshShape p = liftM BtGImpactMeshShape $ newForeignPtr_ $ castPtr p+{#pointer O_btGImpactMeshShapeData as BtGImpactMeshShapeData foreign newtype#}+mkBtGImpactMeshShapeData p = liftM BtGImpactMeshShapeData $ newForeignPtr_ $ castPtr p+{#pointer O_btGImpactMeshShapePart as BtGImpactMeshShapePart foreign newtype#}+mkBtGImpactMeshShapePart p = liftM BtGImpactMeshShapePart $ newForeignPtr_ $ castPtr p+{#pointer O_btGImpactQuantizedBvh as BtGImpactQuantizedBvh foreign newtype#}+mkBtGImpactQuantizedBvh p = liftM BtGImpactQuantizedBvh $ newForeignPtr_ $ castPtr p+{#pointer O_btGImpactShapeInterface as BtGImpactShapeInterface foreign newtype#}+mkBtGImpactShapeInterface p = liftM BtGImpactShapeInterface $ newForeignPtr_ $ castPtr p+{#pointer O_btGLDebugDrawer as BtGLDebugDrawer foreign newtype#}+mkBtGLDebugDrawer p = liftM BtGLDebugDrawer $ newForeignPtr_ $ castPtr p+{#pointer O_btGeneric6DofConstraint as BtGeneric6DofConstraint foreign newtype#}+mkBtGeneric6DofConstraint p = liftM BtGeneric6DofConstraint $ newForeignPtr_ $ castPtr p+{#pointer O_btGeneric6DofConstraintData as BtGeneric6DofConstraintData foreign newtype#}+mkBtGeneric6DofConstraintData p = liftM BtGeneric6DofConstraintData $ newForeignPtr_ $ castPtr p+{#pointer O_btGeneric6DofSpringConstraint as BtGeneric6DofSpringConstraint foreign newtype#}+mkBtGeneric6DofSpringConstraint p = liftM BtGeneric6DofSpringConstraint $ newForeignPtr_ $ castPtr p+{#pointer O_btGeneric6DofSpringConstraintData as BtGeneric6DofSpringConstraintData foreign newtype#}+mkBtGeneric6DofSpringConstraintData p = liftM BtGeneric6DofSpringConstraintData $ newForeignPtr_ $ castPtr p+{#pointer O_btGeometryUtil as BtGeometryUtil foreign newtype#}+mkBtGeometryUtil p = liftM BtGeometryUtil $ newForeignPtr_ $ castPtr p+{#pointer O_btGjkEpaSolver2 as BtGjkEpaSolver2 foreign newtype#}+mkBtGjkEpaSolver2 p = liftM BtGjkEpaSolver2 $ newForeignPtr_ $ castPtr p+{#pointer O_btGjkPairDetector as BtGjkPairDetector foreign newtype#}+mkBtGjkPairDetector p = liftM BtGjkPairDetector $ newForeignPtr_ $ castPtr p+{#pointer O_btHashInt as BtHashInt foreign newtype#}+mkBtHashInt p = liftM BtHashInt $ newForeignPtr_ $ castPtr p+{#pointer O_btHashPtr as BtHashPtr foreign newtype#}+mkBtHashPtr p = liftM BtHashPtr $ newForeignPtr_ $ castPtr p+{#pointer O_btHashString as BtHashString foreign newtype#}+mkBtHashString p = liftM BtHashString $ newForeignPtr_ $ castPtr p+{#pointer O_btHashedOverlappingPairCache as BtHashedOverlappingPairCache foreign newtype#}+mkBtHashedOverlappingPairCache p = liftM BtHashedOverlappingPairCache $ newForeignPtr_ $ castPtr p+{#pointer O_btHinge2Constraint as BtHinge2Constraint foreign newtype#}+mkBtHinge2Constraint p = liftM BtHinge2Constraint $ newForeignPtr_ $ castPtr p+{#pointer O_btHingeConstraint as BtHingeConstraint foreign newtype#}+mkBtHingeConstraint p = liftM BtHingeConstraint $ newForeignPtr_ $ castPtr p+{#pointer O_btHingeConstraintDoubleData as BtHingeConstraintDoubleData foreign newtype#}+mkBtHingeConstraintDoubleData p = liftM BtHingeConstraintDoubleData $ newForeignPtr_ $ castPtr p+{#pointer O_btHingeConstraintFloatData as BtHingeConstraintFloatData foreign newtype#}+mkBtHingeConstraintFloatData p = liftM BtHingeConstraintFloatData $ newForeignPtr_ $ castPtr p+{#pointer O_btIDebugDraw as BtIDebugDraw foreign newtype#}+mkBtIDebugDraw p = liftM BtIDebugDraw $ newForeignPtr_ $ castPtr p+{#pointer O_btIndexedMesh as BtIndexedMesh foreign newtype#}+mkBtIndexedMesh p = liftM BtIndexedMesh $ newForeignPtr_ $ castPtr p+{#pointer O_btIntIndexData as BtIntIndexData foreign newtype#}+mkBtIntIndexData p = liftM BtIntIndexData $ newForeignPtr_ $ castPtr p+{#pointer O_btInternalTriangleIndexCallback as BtInternalTriangleIndexCallback foreign newtype#}+mkBtInternalTriangleIndexCallback p = liftM BtInternalTriangleIndexCallback $ newForeignPtr_ $ castPtr p+{#pointer O_btJacobianEntry as BtJacobianEntry foreign newtype#}+mkBtJacobianEntry p = liftM BtJacobianEntry $ newForeignPtr_ $ castPtr p+{#pointer O_btManifoldPoint as BtManifoldPoint foreign newtype#}+mkBtManifoldPoint p = liftM BtManifoldPoint $ newForeignPtr_ $ castPtr p+{#pointer O_btManifoldResult as BtManifoldResult foreign newtype#}+mkBtManifoldResult p = liftM BtManifoldResult $ newForeignPtr_ $ castPtr p+{#pointer O_btMatrix3x3DoubleData as BtMatrix3x3DoubleData foreign newtype#}+mkBtMatrix3x3DoubleData p = liftM BtMatrix3x3DoubleData $ newForeignPtr_ $ castPtr p+{#pointer O_btMatrix3x3FloatData as BtMatrix3x3FloatData foreign newtype#}+mkBtMatrix3x3FloatData p = liftM BtMatrix3x3FloatData $ newForeignPtr_ $ castPtr p+{#pointer O_btMeshPartData as BtMeshPartData foreign newtype#}+mkBtMeshPartData p = liftM BtMeshPartData $ newForeignPtr_ $ castPtr p+{#pointer O_btMotionState as BtMotionState foreign newtype#}+mkBtMotionState p = liftM BtMotionState $ newForeignPtr_ $ castPtr p+{#pointer O_btMultiSapBroadphase as BtMultiSapBroadphase foreign newtype#}+mkBtMultiSapBroadphase p = liftM BtMultiSapBroadphase $ newForeignPtr_ $ castPtr p+{#pointer O_btMultiSapBroadphase_btMultiSapProxy as BtMultiSapBroadphase_btMultiSapProxy foreign newtype#}+mkBtMultiSapBroadphase_btMultiSapProxy p = liftM BtMultiSapBroadphase_btMultiSapProxy $ newForeignPtr_ $ castPtr p+{#pointer O_btMultiSphereShape as BtMultiSphereShape foreign newtype#}+mkBtMultiSphereShape p = liftM BtMultiSphereShape $ newForeignPtr_ $ castPtr p+{#pointer O_btMultiSphereShapeData as BtMultiSphereShapeData foreign newtype#}+mkBtMultiSphereShapeData p = liftM BtMultiSphereShapeData $ newForeignPtr_ $ castPtr p+{#pointer O_btNodeOverlapCallback as BtNodeOverlapCallback foreign newtype#}+mkBtNodeOverlapCallback p = liftM BtNodeOverlapCallback $ newForeignPtr_ $ castPtr p+{#pointer O_btNullPairCache as BtNullPairCache foreign newtype#}+mkBtNullPairCache p = liftM BtNullPairCache $ newForeignPtr_ $ castPtr p+{#pointer O_btOptimizedBvh as BtOptimizedBvh foreign newtype#}+mkBtOptimizedBvh p = liftM BtOptimizedBvh $ newForeignPtr_ $ castPtr p+{#pointer O_btOptimizedBvhNode as BtOptimizedBvhNode foreign newtype#}+mkBtOptimizedBvhNode p = liftM BtOptimizedBvhNode $ newForeignPtr_ $ castPtr p+{#pointer O_btOptimizedBvhNodeDoubleData as BtOptimizedBvhNodeDoubleData foreign newtype#}+mkBtOptimizedBvhNodeDoubleData p = liftM BtOptimizedBvhNodeDoubleData $ newForeignPtr_ $ castPtr p+{#pointer O_btOptimizedBvhNodeFloatData as BtOptimizedBvhNodeFloatData foreign newtype#}+mkBtOptimizedBvhNodeFloatData p = liftM BtOptimizedBvhNodeFloatData $ newForeignPtr_ $ castPtr p+{#pointer O_btOverlapCallback as BtOverlapCallback foreign newtype#}+mkBtOverlapCallback p = liftM BtOverlapCallback $ newForeignPtr_ $ castPtr p+{#pointer O_btOverlapFilterCallback as BtOverlapFilterCallback foreign newtype#}+mkBtOverlapFilterCallback p = liftM BtOverlapFilterCallback $ newForeignPtr_ $ castPtr p+{#pointer O_btOverlappingPairCache as BtOverlappingPairCache foreign newtype#}+mkBtOverlappingPairCache p = liftM BtOverlappingPairCache $ newForeignPtr_ $ castPtr p+{#pointer O_btOverlappingPairCallback as BtOverlappingPairCallback foreign newtype#}+mkBtOverlappingPairCallback p = liftM BtOverlappingPairCallback $ newForeignPtr_ $ castPtr p+{#pointer O_btPairSet as BtPairSet foreign newtype#}+mkBtPairSet p = liftM BtPairSet $ newForeignPtr_ $ castPtr p+{#pointer O_btPersistentManifold as BtPersistentManifold foreign newtype#}+mkBtPersistentManifold p = liftM BtPersistentManifold $ newForeignPtr_ $ castPtr p+{#pointer O_btPoint2PointConstraint as BtPoint2PointConstraint foreign newtype#}+mkBtPoint2PointConstraint p = liftM BtPoint2PointConstraint $ newForeignPtr_ $ castPtr p+{#pointer O_btPoint2PointConstraintDoubleData as BtPoint2PointConstraintDoubleData foreign newtype#}+mkBtPoint2PointConstraintDoubleData p = liftM BtPoint2PointConstraintDoubleData $ newForeignPtr_ $ castPtr p+{#pointer O_btPoint2PointConstraintFloatData as BtPoint2PointConstraintFloatData foreign newtype#}+mkBtPoint2PointConstraintFloatData p = liftM BtPoint2PointConstraintFloatData $ newForeignPtr_ $ castPtr p+{#pointer O_btPointerUid as BtPointerUid foreign newtype#}+mkBtPointerUid p = liftM BtPointerUid $ newForeignPtr_ $ castPtr p+{#pointer O_btPolyhedralConvexAabbCachingShape as BtPolyhedralConvexAabbCachingShape foreign newtype#}+mkBtPolyhedralConvexAabbCachingShape p = liftM BtPolyhedralConvexAabbCachingShape $ newForeignPtr_ $ castPtr p+{#pointer O_btPolyhedralConvexShape as BtPolyhedralConvexShape foreign newtype#}+mkBtPolyhedralConvexShape p = liftM BtPolyhedralConvexShape $ newForeignPtr_ $ castPtr p+{#pointer O_btPositionAndRadius as BtPositionAndRadius foreign newtype#}+mkBtPositionAndRadius p = liftM BtPositionAndRadius $ newForeignPtr_ $ castPtr p+{#pointer O_btPrimitiveManagerBase as BtPrimitiveManagerBase foreign newtype#}+mkBtPrimitiveManagerBase p = liftM BtPrimitiveManagerBase $ newForeignPtr_ $ castPtr p+{#pointer O_btPrimitiveTriangle as BtPrimitiveTriangle foreign newtype#}+mkBtPrimitiveTriangle p = liftM BtPrimitiveTriangle $ newForeignPtr_ $ castPtr p+{#pointer O_btQuadWord as BtQuadWord foreign newtype#}+mkBtQuadWord p = liftM BtQuadWord $ newForeignPtr_ $ castPtr p+{#pointer O_btQuantizedBvh as BtQuantizedBvh foreign newtype#}+mkBtQuantizedBvh p = liftM BtQuantizedBvh $ newForeignPtr_ $ castPtr p+{#pointer O_btQuantizedBvhDoubleData as BtQuantizedBvhDoubleData foreign newtype#}+mkBtQuantizedBvhDoubleData p = liftM BtQuantizedBvhDoubleData $ newForeignPtr_ $ castPtr p+{#pointer O_btQuantizedBvhFloatData as BtQuantizedBvhFloatData foreign newtype#}+mkBtQuantizedBvhFloatData p = liftM BtQuantizedBvhFloatData $ newForeignPtr_ $ castPtr p+{#pointer O_btQuantizedBvhNode as BtQuantizedBvhNode foreign newtype#}+mkBtQuantizedBvhNode p = liftM BtQuantizedBvhNode $ newForeignPtr_ $ castPtr p+{#pointer O_btQuantizedBvhNodeData as BtQuantizedBvhNodeData foreign newtype#}+mkBtQuantizedBvhNodeData p = liftM BtQuantizedBvhNodeData $ newForeignPtr_ $ castPtr p+{#pointer O_btQuantizedBvhTree as BtQuantizedBvhTree foreign newtype#}+mkBtQuantizedBvhTree p = liftM BtQuantizedBvhTree $ newForeignPtr_ $ castPtr p+{#pointer O_btRaycastVehicle as BtRaycastVehicle foreign newtype#}+mkBtRaycastVehicle p = liftM BtRaycastVehicle $ newForeignPtr_ $ castPtr p+{#pointer O_btRigidBody as BtRigidBody foreign newtype#}+mkBtRigidBody p = liftM BtRigidBody $ newForeignPtr_ $ castPtr p+{#pointer O_btRigidBody_btRigidBodyConstructionInfo as BtRigidBody_btRigidBodyConstructionInfo foreign newtype#}+mkBtRigidBody_btRigidBodyConstructionInfo p = liftM BtRigidBody_btRigidBodyConstructionInfo $ newForeignPtr_ $ castPtr p+{#pointer O_btRigidBodyDoubleData as BtRigidBodyDoubleData foreign newtype#}+mkBtRigidBodyDoubleData p = liftM BtRigidBodyDoubleData $ newForeignPtr_ $ castPtr p+{#pointer O_btRigidBodyFloatData as BtRigidBodyFloatData foreign newtype#}+mkBtRigidBodyFloatData p = liftM BtRigidBodyFloatData $ newForeignPtr_ $ castPtr p+{#pointer O_btRotationalLimitMotor as BtRotationalLimitMotor foreign newtype#}+mkBtRotationalLimitMotor p = liftM BtRotationalLimitMotor $ newForeignPtr_ $ castPtr p+{#pointer O_btScaledBvhTriangleMeshShape as BtScaledBvhTriangleMeshShape foreign newtype#}+mkBtScaledBvhTriangleMeshShape p = liftM BtScaledBvhTriangleMeshShape $ newForeignPtr_ $ castPtr p+{#pointer O_btScaledTriangleMeshShapeData as BtScaledTriangleMeshShapeData foreign newtype#}+mkBtScaledTriangleMeshShapeData p = liftM BtScaledTriangleMeshShapeData $ newForeignPtr_ $ castPtr p+{#pointer O_btSequentialImpulseConstraintSolver as BtSequentialImpulseConstraintSolver foreign newtype#}+mkBtSequentialImpulseConstraintSolver p = liftM BtSequentialImpulseConstraintSolver $ newForeignPtr_ $ castPtr p+{#pointer O_btSerializer as BtSerializer foreign newtype#}+mkBtSerializer p = liftM BtSerializer $ newForeignPtr_ $ castPtr p+{#pointer O_btShortIntIndexData as BtShortIntIndexData foreign newtype#}+mkBtShortIntIndexData p = liftM BtShortIntIndexData $ newForeignPtr_ $ castPtr p+{#pointer O_btShortIntIndexTripletData as BtShortIntIndexTripletData foreign newtype#}+mkBtShortIntIndexTripletData p = liftM BtShortIntIndexTripletData $ newForeignPtr_ $ castPtr p+{#pointer O_btSimpleBroadphase as BtSimpleBroadphase foreign newtype#}+mkBtSimpleBroadphase p = liftM BtSimpleBroadphase $ newForeignPtr_ $ castPtr p+{#pointer O_btSimpleBroadphaseProxy as BtSimpleBroadphaseProxy foreign newtype#}+mkBtSimpleBroadphaseProxy p = liftM BtSimpleBroadphaseProxy $ newForeignPtr_ $ castPtr p+{#pointer O_btSimpleDynamicsWorld as BtSimpleDynamicsWorld foreign newtype#}+mkBtSimpleDynamicsWorld p = liftM BtSimpleDynamicsWorld $ newForeignPtr_ $ castPtr p+{#pointer O_btSliderConstraint as BtSliderConstraint foreign newtype#}+mkBtSliderConstraint p = liftM BtSliderConstraint $ newForeignPtr_ $ castPtr p+{#pointer O_btSliderConstraintData as BtSliderConstraintData foreign newtype#}+mkBtSliderConstraintData p = liftM BtSliderConstraintData $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody as BtSoftBody foreign newtype#}+mkBtSoftBody p = liftM BtSoftBody $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBodyHelpers as BtSoftBodyHelpers foreign newtype#}+mkBtSoftBodyHelpers p = liftM BtSoftBodyHelpers $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBodyRigidBodyCollisionConfiguration as BtSoftBodyRigidBodyCollisionConfiguration foreign newtype#}+mkBtSoftBodyRigidBodyCollisionConfiguration p = liftM BtSoftBodyRigidBodyCollisionConfiguration $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBodyWorldInfo as BtSoftBodyWorldInfo foreign newtype#}+mkBtSoftBodyWorldInfo p = liftM BtSoftBodyWorldInfo $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftRigidDynamicsWorld as BtSoftRigidDynamicsWorld foreign newtype#}+mkBtSoftRigidDynamicsWorld p = liftM BtSoftRigidDynamicsWorld $ newForeignPtr_ $ castPtr p+{#pointer O_btSolverBodyObsolete as BtSolverBodyObsolete foreign newtype#}+mkBtSolverBodyObsolete p = liftM BtSolverBodyObsolete $ newForeignPtr_ $ castPtr p+{#pointer O_btSolverConstraint as BtSolverConstraint foreign newtype#}+mkBtSolverConstraint p = liftM BtSolverConstraint $ newForeignPtr_ $ castPtr p+{#pointer O_btSortedOverlappingPairCache as BtSortedOverlappingPairCache foreign newtype#}+mkBtSortedOverlappingPairCache p = liftM BtSortedOverlappingPairCache $ newForeignPtr_ $ castPtr p+{#pointer O_btSphereShape as BtSphereShape foreign newtype#}+mkBtSphereShape p = liftM BtSphereShape $ newForeignPtr_ $ castPtr p+{#pointer O_btSphereSphereCollisionAlgorithm as BtSphereSphereCollisionAlgorithm foreign newtype#}+mkBtSphereSphereCollisionAlgorithm p = liftM BtSphereSphereCollisionAlgorithm $ newForeignPtr_ $ castPtr p+{#pointer O_btStackAlloc as BtStackAlloc foreign newtype#}+mkBtStackAlloc p = liftM BtStackAlloc $ newForeignPtr_ $ castPtr p+{#pointer O_btStaticPlaneShape as BtStaticPlaneShape foreign newtype#}+mkBtStaticPlaneShape p = liftM BtStaticPlaneShape $ newForeignPtr_ $ castPtr p+{#pointer O_btStaticPlaneShapeData as BtStaticPlaneShapeData foreign newtype#}+mkBtStaticPlaneShapeData p = liftM BtStaticPlaneShapeData $ newForeignPtr_ $ castPtr p+{#pointer O_btStorageResult as BtStorageResult foreign newtype#}+mkBtStorageResult p = liftM BtStorageResult $ newForeignPtr_ $ castPtr p+{#pointer O_btStridingMeshInterface as BtStridingMeshInterface foreign newtype#}+mkBtStridingMeshInterface p = liftM BtStridingMeshInterface $ newForeignPtr_ $ castPtr p+{#pointer O_btStridingMeshInterfaceData as BtStridingMeshInterfaceData foreign newtype#}+mkBtStridingMeshInterfaceData p = liftM BtStridingMeshInterfaceData $ newForeignPtr_ $ castPtr p+{#pointer O_btSubSimplexClosestResult as BtSubSimplexClosestResult foreign newtype#}+mkBtSubSimplexClosestResult p = liftM BtSubSimplexClosestResult $ newForeignPtr_ $ castPtr p+{#pointer O_btTetrahedronShapeEx as BtTetrahedronShapeEx foreign newtype#}+mkBtTetrahedronShapeEx p = liftM BtTetrahedronShapeEx $ newForeignPtr_ $ castPtr p+{#pointer O_btTransformDoubleData as BtTransformDoubleData foreign newtype#}+mkBtTransformDoubleData p = liftM BtTransformDoubleData $ newForeignPtr_ $ castPtr p+{#pointer O_btTransformFloatData as BtTransformFloatData foreign newtype#}+mkBtTransformFloatData p = liftM BtTransformFloatData $ newForeignPtr_ $ castPtr p+{#pointer O_btTransformUtil as BtTransformUtil foreign newtype#}+mkBtTransformUtil p = liftM BtTransformUtil $ newForeignPtr_ $ castPtr p+{#pointer O_btTranslationalLimitMotor as BtTranslationalLimitMotor foreign newtype#}+mkBtTranslationalLimitMotor p = liftM BtTranslationalLimitMotor $ newForeignPtr_ $ castPtr p+{#pointer O_btTriangleCallback as BtTriangleCallback foreign newtype#}+mkBtTriangleCallback p = liftM BtTriangleCallback $ newForeignPtr_ $ castPtr p+{#pointer O_btTriangleIndexVertexArray as BtTriangleIndexVertexArray foreign newtype#}+mkBtTriangleIndexVertexArray p = liftM BtTriangleIndexVertexArray $ newForeignPtr_ $ castPtr p+{#pointer O_btTriangleInfo as BtTriangleInfo foreign newtype#}+mkBtTriangleInfo p = liftM BtTriangleInfo $ newForeignPtr_ $ castPtr p+{#pointer O_btTriangleInfoData as BtTriangleInfoData foreign newtype#}+mkBtTriangleInfoData p = liftM BtTriangleInfoData $ newForeignPtr_ $ castPtr p+{#pointer O_btTriangleInfoMap as BtTriangleInfoMap foreign newtype#}+mkBtTriangleInfoMap p = liftM BtTriangleInfoMap $ newForeignPtr_ $ castPtr p+{#pointer O_btTriangleInfoMapData as BtTriangleInfoMapData foreign newtype#}+mkBtTriangleInfoMapData p = liftM BtTriangleInfoMapData $ newForeignPtr_ $ castPtr p+{#pointer O_btTriangleMesh as BtTriangleMesh foreign newtype#}+mkBtTriangleMesh p = liftM BtTriangleMesh $ newForeignPtr_ $ castPtr p+{#pointer O_btTriangleMeshShape as BtTriangleMeshShape foreign newtype#}+mkBtTriangleMeshShape p = liftM BtTriangleMeshShape $ newForeignPtr_ $ castPtr p+{#pointer O_btTriangleMeshShapeData as BtTriangleMeshShapeData foreign newtype#}+mkBtTriangleMeshShapeData p = liftM BtTriangleMeshShapeData $ newForeignPtr_ $ castPtr p+{#pointer O_btTriangleShape as BtTriangleShape foreign newtype#}+mkBtTriangleShape p = liftM BtTriangleShape $ newForeignPtr_ $ castPtr p+{#pointer O_btTriangleShapeEx as BtTriangleShapeEx foreign newtype#}+mkBtTriangleShapeEx p = liftM BtTriangleShapeEx $ newForeignPtr_ $ castPtr p+{#pointer O_btTypedConstraint as BtTypedConstraint foreign newtype#}+mkBtTypedConstraint p = liftM BtTypedConstraint $ newForeignPtr_ $ castPtr p+{#pointer O_btTypedConstraintData as BtTypedConstraintData foreign newtype#}+mkBtTypedConstraintData p = liftM BtTypedConstraintData $ newForeignPtr_ $ castPtr p+{#pointer O_btTypedObject as BtTypedObject foreign newtype#}+mkBtTypedObject p = liftM BtTypedObject $ newForeignPtr_ $ castPtr p+{#pointer O_btUniformScalingShape as BtUniformScalingShape foreign newtype#}+mkBtUniformScalingShape p = liftM BtUniformScalingShape $ newForeignPtr_ $ castPtr p+{#pointer O_btUniversalConstraint as BtUniversalConstraint foreign newtype#}+mkBtUniversalConstraint p = liftM BtUniversalConstraint $ newForeignPtr_ $ castPtr p+{#pointer O_btUsageBitfield as BtUsageBitfield foreign newtype#}+mkBtUsageBitfield p = liftM BtUsageBitfield $ newForeignPtr_ $ castPtr p+{#pointer O_btVector3DoubleData as BtVector3DoubleData foreign newtype#}+mkBtVector3DoubleData p = liftM BtVector3DoubleData $ newForeignPtr_ $ castPtr p+{#pointer O_btVector3FloatData as BtVector3FloatData foreign newtype#}+mkBtVector3FloatData p = liftM BtVector3FloatData $ newForeignPtr_ $ castPtr p+{#pointer O_btVehicleRaycaster as BtVehicleRaycaster foreign newtype#}+mkBtVehicleRaycaster p = liftM BtVehicleRaycaster $ newForeignPtr_ $ castPtr p+{#pointer O_btVehicleRaycaster_btVehicleRaycasterResult as BtVehicleRaycaster_btVehicleRaycasterResult foreign newtype#}+mkBtVehicleRaycaster_btVehicleRaycasterResult p = liftM BtVehicleRaycaster_btVehicleRaycasterResult $ newForeignPtr_ $ castPtr p+{#pointer O_btRaycastVehicle_btVehicleTuning as BtRaycastVehicle_btVehicleTuning foreign newtype#}+mkBtRaycastVehicle_btVehicleTuning p = liftM BtRaycastVehicle_btVehicleTuning $ newForeignPtr_ $ castPtr p+{#pointer O_btVoronoiSimplexSolver as BtVoronoiSimplexSolver foreign newtype#}+mkBtVoronoiSimplexSolver p = liftM BtVoronoiSimplexSolver $ newForeignPtr_ $ castPtr p+{#pointer O_btWheelInfo as BtWheelInfo foreign newtype#}+mkBtWheelInfo p = liftM BtWheelInfo $ newForeignPtr_ $ castPtr p+{#pointer O_btWheelInfoConstructionInfo as BtWheelInfoConstructionInfo foreign newtype#}+mkBtWheelInfoConstructionInfo p = liftM BtWheelInfoConstructionInfo $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_eAeroModel as BtSoftBody_eAeroModel foreign newtype#}+mkBtSoftBody_eAeroModel p = liftM BtSoftBody_eAeroModel $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_eFeature as BtSoftBody_eFeature foreign newtype#}+mkBtSoftBody_eFeature p = liftM BtSoftBody_eFeature $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_ePSolver as BtSoftBody_ePSolver foreign newtype#}+mkBtSoftBody_ePSolver p = liftM BtSoftBody_ePSolver $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_eSolverPresets as BtSoftBody_eSolverPresets foreign newtype#}+mkBtSoftBody_eSolverPresets p = liftM BtSoftBody_eSolverPresets $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_Joint_eType as BtSoftBody_Joint_eType foreign newtype#}+mkBtSoftBody_Joint_eType p = liftM BtSoftBody_Joint_eType $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_eVSolver as BtSoftBody_eVSolver foreign newtype#}+mkBtSoftBody_eVSolver p = liftM BtSoftBody_eVSolver $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_fCollision as BtSoftBody_fCollision foreign newtype#}+mkBtSoftBody_fCollision p = liftM BtSoftBody_fCollision $ newForeignPtr_ $ castPtr p+{#pointer O_fDrawFlags as FDrawFlags foreign newtype#}+mkFDrawFlags p = liftM FDrawFlags $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_fMaterial as BtSoftBody_fMaterial foreign newtype#}+mkBtSoftBody_fMaterial p = liftM BtSoftBody_fMaterial $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_sCti as BtSoftBody_sCti foreign newtype#}+mkBtSoftBody_sCti p = liftM BtSoftBody_sCti $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_sMedium as BtSoftBody_sMedium foreign newtype#}+mkBtSoftBody_sMedium p = liftM BtSoftBody_sMedium $ newForeignPtr_ $ castPtr p+{#pointer O_btSoftBody_sRayCast as BtSoftBody_sRayCast foreign newtype#}+mkBtSoftBody_sRayCast p = liftM BtSoftBody_sRayCast $ newForeignPtr_ $ castPtr p+{#pointer O_btGjkEpaSolver2_sResults as BtGjkEpaSolver2_sResults foreign newtype#}+mkBtGjkEpaSolver2_sResults p = liftM BtGjkEpaSolver2_sResults $ newForeignPtr_ $ castPtr p+{#pointer O_btDbvt_sStkCLN as BtDbvt_sStkCLN foreign newtype#}+mkBtDbvt_sStkCLN p = liftM BtDbvt_sStkCLN $ newForeignPtr_ $ castPtr p+{#pointer O_btDbvt_sStkNN as BtDbvt_sStkNN foreign newtype#}+mkBtDbvt_sStkNN p = liftM BtDbvt_sStkNN $ newForeignPtr_ $ castPtr p+{#pointer O_btDbvt_sStkNP as BtDbvt_sStkNP foreign newtype#}+mkBtDbvt_sStkNP p = liftM BtDbvt_sStkNP $ newForeignPtr_ $ castPtr p+{#pointer O_btDbvt_sStkNPS as BtDbvt_sStkNPS foreign newtype#}+mkBtDbvt_sStkNPS p = liftM BtDbvt_sStkNPS $ newForeignPtr_ $ castPtr p+-- * Class Hierarchy+class BtClass p where+  withBt :: p -> (Ptr a -> IO b) -> IO b+class BtClass p => BtSoftBody_AnchorClass p+instance BtSoftBody_AnchorClass BtSoftBody_Anchor+instance BtClass BtSoftBody_Anchor where+  withBt (BtSoftBody_Anchor p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BT_BOX_BOX_TRANSFORM_CACHEClass p+instance BT_BOX_BOX_TRANSFORM_CACHEClass BT_BOX_BOX_TRANSFORM_CACHE+instance BtClass BT_BOX_BOX_TRANSFORM_CACHE where+  withBt (BT_BOX_BOX_TRANSFORM_CACHE p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BT_QUANTIZED_BVH_NODEClass p+instance BT_QUANTIZED_BVH_NODEClass BT_QUANTIZED_BVH_NODE+instance BtClass BT_QUANTIZED_BVH_NODE where+  withBt (BT_QUANTIZED_BVH_NODE p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtSoftBody_BodyClass p+instance BtSoftBody_BodyClass BtSoftBody_Body+instance BtClass BtSoftBody_Body where+  withBt (BtSoftBody_Body p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => CProfileIteratorClass p+instance CProfileIteratorClass CProfileIterator+instance BtClass CProfileIterator where+  withBt (CProfileIterator p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => CProfileManagerClass p+instance CProfileManagerClass CProfileManager+instance BtClass CProfileManager where+  withBt (CProfileManager p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => CProfileNodeClass p+instance CProfileNodeClass CProfileNode+instance BtClass CProfileNode where+  withBt (CProfileNode p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => CProfileSampleClass p+instance CProfileSampleClass CProfileSample+instance BtClass CProfileSample where+  withBt (CProfileSample p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtDiscreteCollisionDetectorInterface_ClosestPointInputClass p+instance BtDiscreteCollisionDetectorInterface_ClosestPointInputClass BtDiscreteCollisionDetectorInterface_ClosestPointInput+instance BtClass BtDiscreteCollisionDetectorInterface_ClosestPointInput where+  withBt (BtDiscreteCollisionDetectorInterface_ClosestPointInput p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtSoftBody_ClusterClass p+instance BtSoftBody_ClusterClass BtSoftBody_Cluster+instance BtClass BtSoftBody_Cluster where+  withBt (BtSoftBody_Cluster p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtSoftBody_ConfigClass p+instance BtSoftBody_ConfigClass BtSoftBody_Config+instance BtClass BtSoftBody_Config where+  withBt (BtSoftBody_Config p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtCollisionWorld_ContactResultCallbackClass p+instance BtCollisionWorld_ContactResultCallbackClass BtCollisionWorld_ContactResultCallback+instance BtClass BtCollisionWorld_ContactResultCallback where+  withBt (BtCollisionWorld_ContactResultCallback p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtCollisionWorld_ConvexResultCallbackClass p+instance BtCollisionWorld_ConvexResultCallbackClass BtCollisionWorld_ConvexResultCallback+instance BtClass BtCollisionWorld_ConvexResultCallback where+  withBt (BtCollisionWorld_ConvexResultCallback p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtSoftBody_ElementClass p+instance BtSoftBody_ElementClass BtSoftBody_Element+instance BtClass BtSoftBody_Element where+  withBt (BtSoftBody_Element p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtSoftBody_ElementClass p => BtSoftBody_FeatureClass p+instance BtSoftBody_ElementClass BtSoftBody_Feature+instance BtSoftBody_FeatureClass BtSoftBody_Feature+instance BtClass BtSoftBody_Feature where+  withBt (BtSoftBody_Feature p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => GIM_BVH_DATAClass p+instance GIM_BVH_DATAClass GIM_BVH_DATA+instance BtClass GIM_BVH_DATA where+  withBt (GIM_BVH_DATA p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => GIM_BVH_DATA_ARRAYClass p+instance GIM_BVH_DATA_ARRAYClass GIM_BVH_DATA_ARRAY+instance BtClass GIM_BVH_DATA_ARRAY where+  withBt (GIM_BVH_DATA_ARRAY p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => GIM_BVH_TREE_NODEClass p+instance GIM_BVH_TREE_NODEClass GIM_BVH_TREE_NODE+instance BtClass GIM_BVH_TREE_NODE where+  withBt (GIM_BVH_TREE_NODE p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => GIM_BVH_TREE_NODE_ARRAYClass p+instance GIM_BVH_TREE_NODE_ARRAYClass GIM_BVH_TREE_NODE_ARRAY+instance BtClass GIM_BVH_TREE_NODE_ARRAY where+  withBt (GIM_BVH_TREE_NODE_ARRAY p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => GIM_PAIRClass p+instance GIM_PAIRClass GIM_PAIR+instance BtClass GIM_PAIR where+  withBt (GIM_PAIR p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => GIM_QUANTIZED_BVH_NODE_ARRAYClass p+instance GIM_QUANTIZED_BVH_NODE_ARRAYClass GIM_QUANTIZED_BVH_NODE_ARRAY+instance BtClass GIM_QUANTIZED_BVH_NODE_ARRAY where+  withBt (GIM_QUANTIZED_BVH_NODE_ARRAY p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => GIM_TRIANGLE_CONTACTClass p+instance GIM_TRIANGLE_CONTACTClass GIM_TRIANGLE_CONTACT+instance BtClass GIM_TRIANGLE_CONTACT where+  withBt (GIM_TRIANGLE_CONTACT p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtDbvt_ICloneClass p+instance BtDbvt_ICloneClass BtDbvt_IClone+instance BtClass BtDbvt_IClone where+  withBt (BtDbvt_IClone p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtDbvt_ICollideClass p+instance BtDbvt_ICollideClass BtDbvt_ICollide+instance BtClass BtDbvt_ICollide where+  withBt (BtDbvt_ICollide p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtSoftBody_AJoint_IControlClass p+instance BtSoftBody_AJoint_IControlClass BtSoftBody_AJoint_IControl+instance BtClass BtSoftBody_AJoint_IControl where+  withBt (BtSoftBody_AJoint_IControl p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtDbvt_IWriterClass p+instance BtDbvt_IWriterClass BtDbvt_IWriter+instance BtClass BtDbvt_IWriter where+  withBt (BtDbvt_IWriter p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtSoftBody_ImplicitFnClass p+instance BtSoftBody_ImplicitFnClass BtSoftBody_ImplicitFn+instance BtClass BtSoftBody_ImplicitFn where+  withBt (BtSoftBody_ImplicitFn p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtSoftBody_ImpulseClass p+instance BtSoftBody_ImpulseClass BtSoftBody_Impulse+instance BtClass BtSoftBody_Impulse where+  withBt (BtSoftBody_Impulse p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtSoftBody_JointClass p+instance BtSoftBody_JointClass BtSoftBody_Joint+instance BtClass BtSoftBody_Joint where+  withBt (BtSoftBody_Joint p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtSoftBody_JointClass p => BtSoftBody_LJointClass p+instance BtSoftBody_JointClass BtSoftBody_LJoint+instance BtSoftBody_LJointClass BtSoftBody_LJoint+instance BtClass BtSoftBody_LJoint where+  withBt (BtSoftBody_LJoint p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtSoftBody_FeatureClass p => BtSoftBody_LinkClass p+instance BtSoftBody_FeatureClass BtSoftBody_Link+instance BtSoftBody_ElementClass BtSoftBody_Link+instance BtSoftBody_LinkClass BtSoftBody_Link+instance BtClass BtSoftBody_Link where+  withBt (BtSoftBody_Link p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtCollisionWorld_LocalConvexResultClass p+instance BtCollisionWorld_LocalConvexResultClass BtCollisionWorld_LocalConvexResult+instance BtClass BtCollisionWorld_LocalConvexResult where+  withBt (BtCollisionWorld_LocalConvexResult p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtCollisionWorld_LocalRayResultClass p+instance BtCollisionWorld_LocalRayResultClass BtCollisionWorld_LocalRayResult+instance BtClass BtCollisionWorld_LocalRayResult where+  withBt (BtCollisionWorld_LocalRayResult p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtCollisionWorld_LocalShapeInfoClass p+instance BtCollisionWorld_LocalShapeInfoClass BtCollisionWorld_LocalShapeInfo+instance BtClass BtCollisionWorld_LocalShapeInfo where+  withBt (BtCollisionWorld_LocalShapeInfo p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtSoftBody_ElementClass p => BtSoftBody_MaterialClass p+instance BtSoftBody_ElementClass BtSoftBody_Material+instance BtSoftBody_MaterialClass BtSoftBody_Material+instance BtClass BtSoftBody_Material where+  withBt (BtSoftBody_Material p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtSoftBody_FeatureClass p => BtSoftBody_NodeClass p+instance BtSoftBody_FeatureClass BtSoftBody_Node+instance BtSoftBody_ElementClass BtSoftBody_Node+instance BtSoftBody_NodeClass BtSoftBody_Node+instance BtClass BtSoftBody_Node where+  withBt (BtSoftBody_Node p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtSoftBody_ElementClass p => BtSoftBody_NoteClass p+instance BtSoftBody_ElementClass BtSoftBody_Note+instance BtSoftBody_NoteClass BtSoftBody_Note+instance BtClass BtSoftBody_Note where+  withBt (BtSoftBody_Note p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtSoftBody_PoseClass p+instance BtSoftBody_PoseClass BtSoftBody_Pose+instance BtClass BtSoftBody_Pose where+  withBt (BtSoftBody_Pose p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtSoftBody_RContactClass p+instance BtSoftBody_RContactClass BtSoftBody_RContact+instance BtClass BtSoftBody_RContact where+  withBt (BtSoftBody_RContact p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtDbvt_ICollideClass p => BtSoftBody_RayFromToCasterClass p+instance BtDbvt_ICollideClass BtSoftBody_RayFromToCaster+instance BtSoftBody_RayFromToCasterClass BtSoftBody_RayFromToCaster+instance BtClass BtSoftBody_RayFromToCaster where+  withBt (BtSoftBody_RayFromToCaster p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtCollisionWorld_RayResultCallbackClass p+instance BtCollisionWorld_RayResultCallbackClass BtCollisionWorld_RayResultCallback+instance BtClass BtCollisionWorld_RayResultCallback where+  withBt (BtCollisionWorld_RayResultCallback p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtWheelInfo_RaycastInfoClass p+instance BtWheelInfo_RaycastInfoClass BtWheelInfo_RaycastInfo+instance BtClass BtWheelInfo_RaycastInfo where+  withBt (BtWheelInfo_RaycastInfo p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtDiscreteCollisionDetectorInterface_ResultClass p+instance BtDiscreteCollisionDetectorInterface_ResultClass BtDiscreteCollisionDetectorInterface_Result+instance BtClass BtDiscreteCollisionDetectorInterface_Result where+  withBt (BtDiscreteCollisionDetectorInterface_Result p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtSoftBody_SContactClass p+instance BtSoftBody_SContactClass BtSoftBody_SContact+instance BtClass BtSoftBody_SContact where+  withBt (BtSoftBody_SContact p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtSoftBody_SolverStateClass p+instance BtSoftBody_SolverStateClass BtSoftBody_SolverState+instance BtClass BtSoftBody_SolverState where+  withBt (BtSoftBody_SolverState p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtSoftBody_Joint_SpecsClass p+instance BtSoftBody_Joint_SpecsClass BtSoftBody_Joint_Specs+instance BtClass BtSoftBody_Joint_Specs where+  withBt (BtSoftBody_Joint_Specs p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtSoftBody_Joint_SpecsClass p => BtSoftBody_LJoint_SpecsClass p+instance BtSoftBody_Joint_SpecsClass BtSoftBody_LJoint_Specs+instance BtSoftBody_LJoint_SpecsClass BtSoftBody_LJoint_Specs+instance BtClass BtSoftBody_LJoint_Specs where+  withBt (BtSoftBody_LJoint_Specs p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtSoftBody_Joint_SpecsClass p => BtSoftBody_AJoint_SpecsClass p+instance BtSoftBody_Joint_SpecsClass BtSoftBody_AJoint_Specs+instance BtSoftBody_AJoint_SpecsClass BtSoftBody_AJoint_Specs+instance BtClass BtSoftBody_AJoint_Specs where+  withBt (BtSoftBody_AJoint_Specs p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtSoftBody_FeatureClass p => BtSoftBody_TetraClass p+instance BtSoftBody_FeatureClass BtSoftBody_Tetra+instance BtSoftBody_ElementClass BtSoftBody_Tetra+instance BtSoftBody_TetraClass BtSoftBody_Tetra+instance BtClass BtSoftBody_Tetra where+  withBt (BtSoftBody_Tetra p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtAABBClass p+instance BtAABBClass BtAABB+instance BtClass BtAABB where+  withBt (BtAABB p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtActionInterfaceClass p+instance BtActionInterfaceClass BtActionInterface+instance BtClass BtActionInterface where+  withBt (BtActionInterface p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtAngularLimitClass p+instance BtAngularLimitClass BtAngularLimit+instance BtClass BtAngularLimit where+  withBt (BtAngularLimit p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtBlockClass p+instance BtBlockClass BtBlock+instance BtClass BtBlock where+  withBt (BtBlock p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtBroadphaseAabbCallbackClass p+instance BtBroadphaseAabbCallbackClass BtBroadphaseAabbCallback+instance BtClass BtBroadphaseAabbCallback where+  withBt (BtBroadphaseAabbCallback p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtBroadphaseInterfaceClass p+instance BtBroadphaseInterfaceClass BtBroadphaseInterface+instance BtClass BtBroadphaseInterface where+  withBt (BtBroadphaseInterface p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtBroadphasePairClass p+instance BtBroadphasePairClass BtBroadphasePair+instance BtClass BtBroadphasePair where+  withBt (BtBroadphasePair p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtBroadphasePairSortPredicateClass p+instance BtBroadphasePairSortPredicateClass BtBroadphasePairSortPredicate+instance BtClass BtBroadphasePairSortPredicate where+  withBt (BtBroadphasePairSortPredicate p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtBroadphaseProxyClass p+instance BtBroadphaseProxyClass BtBroadphaseProxy+instance BtClass BtBroadphaseProxy where+  withBt (BtBroadphaseProxy p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtBroadphaseAabbCallbackClass p => BtBroadphaseRayCallbackClass p+instance BtBroadphaseAabbCallbackClass BtBroadphaseRayCallback+instance BtBroadphaseRayCallbackClass BtBroadphaseRayCallback+instance BtClass BtBroadphaseRayCallback where+  withBt (BtBroadphaseRayCallback p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtBvhSubtreeInfoClass p+instance BtBvhSubtreeInfoClass BtBvhSubtreeInfo+instance BtClass BtBvhSubtreeInfo where+  withBt (BtBvhSubtreeInfo p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtBvhSubtreeInfoDataClass p+instance BtBvhSubtreeInfoDataClass BtBvhSubtreeInfoData+instance BtClass BtBvhSubtreeInfoData where+  withBt (BtBvhSubtreeInfoData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtBvhTreeClass p+instance BtBvhTreeClass BtBvhTree+instance BtClass BtBvhTree where+  withBt (BtBvhTree p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtCapsuleShapeDataClass p+instance BtCapsuleShapeDataClass BtCapsuleShapeData+instance BtClass BtCapsuleShapeData where+  withBt (BtCapsuleShapeData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtCharIndexTripletDataClass p+instance BtCharIndexTripletDataClass BtCharIndexTripletData+instance BtClass BtCharIndexTripletData where+  withBt (BtCharIndexTripletData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtChunkClass p+instance BtChunkClass BtChunk+instance BtClass BtChunk where+  withBt (BtChunk p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtClockClass p+instance BtClockClass BtClock+instance BtClass BtClock where+  withBt (BtClock p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtCollisionAlgorithmClass p+instance BtCollisionAlgorithmClass BtCollisionAlgorithm+instance BtClass BtCollisionAlgorithm where+  withBt (BtCollisionAlgorithm p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtCollisionAlgorithmConstructionInfoClass p+instance BtCollisionAlgorithmConstructionInfoClass BtCollisionAlgorithmConstructionInfo+instance BtClass BtCollisionAlgorithmConstructionInfo where+  withBt (BtCollisionAlgorithmConstructionInfo p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtCollisionAlgorithmCreateFuncClass p+instance BtCollisionAlgorithmCreateFuncClass BtCollisionAlgorithmCreateFunc+instance BtClass BtCollisionAlgorithmCreateFunc where+  withBt (BtCollisionAlgorithmCreateFunc p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtCollisionConfigurationClass p+instance BtCollisionConfigurationClass BtCollisionConfiguration+instance BtClass BtCollisionConfiguration where+  withBt (BtCollisionConfiguration p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtCollisionObjectClass p+instance BtCollisionObjectClass BtCollisionObject+instance BtClass BtCollisionObject where+  withBt (BtCollisionObject p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtCollisionObjectDoubleDataClass p+instance BtCollisionObjectDoubleDataClass BtCollisionObjectDoubleData+instance BtClass BtCollisionObjectDoubleData where+  withBt (BtCollisionObjectDoubleData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtCollisionObjectFloatDataClass p+instance BtCollisionObjectFloatDataClass BtCollisionObjectFloatData+instance BtClass BtCollisionObjectFloatData where+  withBt (BtCollisionObjectFloatData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtCollisionShapeClass p+instance BtCollisionShapeClass BtCollisionShape+instance BtClass BtCollisionShape where+  withBt (BtCollisionShape p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtCollisionShapeDataClass p+instance BtCollisionShapeDataClass BtCollisionShapeData+instance BtClass BtCollisionShapeData where+  withBt (BtCollisionShapeData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtCollisionWorldClass p+instance BtCollisionWorldClass BtCollisionWorld+instance BtClass BtCollisionWorld where+  withBt (BtCollisionWorld p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtCollisionShapeClass p => BtCompoundShapeClass p+instance BtCollisionShapeClass BtCompoundShape+instance BtCompoundShapeClass BtCompoundShape+instance BtClass BtCompoundShape where+  withBt (BtCompoundShape p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtCompoundShapeChildClass p+instance BtCompoundShapeChildClass BtCompoundShapeChild+instance BtClass BtCompoundShapeChild where+  withBt (BtCompoundShapeChild p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtCompoundShapeChildDataClass p+instance BtCompoundShapeChildDataClass BtCompoundShapeChildData+instance BtClass BtCompoundShapeChildData where+  withBt (BtCompoundShapeChildData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtCompoundShapeDataClass p+instance BtCompoundShapeDataClass BtCompoundShapeData+instance BtClass BtCompoundShapeData where+  withBt (BtCompoundShapeData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtCollisionShapeClass p => BtConcaveShapeClass p+instance BtCollisionShapeClass BtConcaveShape+instance BtConcaveShapeClass BtConcaveShape+instance BtClass BtConcaveShape where+  withBt (BtConcaveShape p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtConeTwistConstraintDataClass p+instance BtConeTwistConstraintDataClass BtConeTwistConstraintData+instance BtClass BtConeTwistConstraintData where+  withBt (BtConeTwistConstraintData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtTypedConstraint_btConstraintInfo1Class p+instance BtTypedConstraint_btConstraintInfo1Class BtTypedConstraint_btConstraintInfo1+instance BtClass BtTypedConstraint_btConstraintInfo1 where+  withBt (BtTypedConstraint_btConstraintInfo1 p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtTypedConstraint_btConstraintInfo2Class p+instance BtTypedConstraint_btConstraintInfo2Class BtTypedConstraint_btConstraintInfo2+instance BtClass BtTypedConstraint_btConstraintInfo2 where+  withBt (BtTypedConstraint_btConstraintInfo2 p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtConstraintRowClass p+instance BtConstraintRowClass BtConstraintRow+instance BtClass BtConstraintRow where+  withBt (BtConstraintRow p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtConstraintSettingClass p+instance BtConstraintSettingClass BtConstraintSetting+instance BtClass BtConstraintSetting where+  withBt (BtConstraintSetting p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtConstraintSolverClass p+instance BtConstraintSolverClass BtConstraintSolver+instance BtClass BtConstraintSolver where+  withBt (BtConstraintSolver p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtContactSolverInfoDataClass p+instance BtContactSolverInfoDataClass BtContactSolverInfoData+instance BtClass BtContactSolverInfoData where+  withBt (BtContactSolverInfoData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtConvexHullShapeDataClass p+instance BtConvexHullShapeDataClass BtConvexHullShapeData+instance BtClass BtConvexHullShapeData where+  withBt (BtConvexHullShapeData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtConvexInternalShapeDataClass p+instance BtConvexInternalShapeDataClass BtConvexInternalShapeData+instance BtClass BtConvexInternalShapeData where+  withBt (BtConvexInternalShapeData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtConvexSeparatingDistanceUtilClass p+instance BtConvexSeparatingDistanceUtilClass BtConvexSeparatingDistanceUtil+instance BtClass BtConvexSeparatingDistanceUtil where+  withBt (BtConvexSeparatingDistanceUtil p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtCollisionShapeClass p => BtConvexShapeClass p+instance BtCollisionShapeClass BtConvexShape+instance BtConvexShapeClass BtConvexShape+instance BtClass BtConvexShape where+  withBt (BtConvexShape p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtCylinderShapeDataClass p+instance BtCylinderShapeDataClass BtCylinderShapeData+instance BtClass BtCylinderShapeData where+  withBt (BtCylinderShapeData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtDbvtClass p+instance BtDbvtClass BtDbvt+instance BtClass BtDbvt where+  withBt (BtDbvt p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtDbvtAabbMmClass p+instance BtDbvtAabbMmClass BtDbvtAabbMm+instance BtClass BtDbvtAabbMm where+  withBt (BtDbvtAabbMm p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtBroadphaseInterfaceClass p => BtDbvtBroadphaseClass p+instance BtBroadphaseInterfaceClass BtDbvtBroadphase+instance BtDbvtBroadphaseClass BtDbvtBroadphase+instance BtClass BtDbvtBroadphase where+  withBt (BtDbvtBroadphase p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtDbvtNodeClass p+instance BtDbvtNodeClass BtDbvtNode+instance BtClass BtDbvtNode where+  withBt (BtDbvtNode p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtBroadphaseProxyClass p => BtDbvtProxyClass p+instance BtBroadphaseProxyClass BtDbvtProxy+instance BtDbvtProxyClass BtDbvtProxy+instance BtClass BtDbvtProxy where+  withBt (BtDbvtProxy p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtCollisionConfigurationClass p => BtDefaultCollisionConfigurationClass p+instance BtCollisionConfigurationClass BtDefaultCollisionConfiguration+instance BtDefaultCollisionConfigurationClass BtDefaultCollisionConfiguration+instance BtClass BtDefaultCollisionConfiguration where+  withBt (BtDefaultCollisionConfiguration p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtDefaultCollisionConstructionInfoClass p+instance BtDefaultCollisionConstructionInfoClass BtDefaultCollisionConstructionInfo+instance BtClass BtDefaultCollisionConstructionInfo where+  withBt (BtDefaultCollisionConstructionInfo p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtDiscreteCollisionDetectorInterfaceClass p+instance BtDiscreteCollisionDetectorInterfaceClass BtDiscreteCollisionDetectorInterface+instance BtClass BtDiscreteCollisionDetectorInterface where+  withBt (BtDiscreteCollisionDetectorInterface p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtDispatcherClass p+instance BtDispatcherClass BtDispatcher+instance BtClass BtDispatcher where+  withBt (BtDispatcher p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtDispatcherInfoClass p+instance BtDispatcherInfoClass BtDispatcherInfo+instance BtClass BtDispatcherInfo where+  withBt (BtDispatcherInfo p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtCollisionWorldClass p => BtDynamicsWorldClass p+instance BtCollisionWorldClass BtDynamicsWorld+instance BtDynamicsWorldClass BtDynamicsWorld+instance BtClass BtDynamicsWorld where+  withBt (BtDynamicsWorld p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtConcaveShapeClass p => BtEmptyShapeClass p+instance BtConcaveShapeClass BtEmptyShape+instance BtCollisionShapeClass BtEmptyShape+instance BtEmptyShapeClass BtEmptyShape+instance BtClass BtEmptyShape where+  withBt (BtEmptyShape p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtGImpactBvhClass p+instance BtGImpactBvhClass BtGImpactBvh+instance BtClass BtGImpactBvh where+  withBt (BtGImpactBvh p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtGImpactMeshShapeDataClass p+instance BtGImpactMeshShapeDataClass BtGImpactMeshShapeData+instance BtClass BtGImpactMeshShapeData where+  withBt (BtGImpactMeshShapeData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtGImpactQuantizedBvhClass p+instance BtGImpactQuantizedBvhClass BtGImpactQuantizedBvh+instance BtClass BtGImpactQuantizedBvh where+  withBt (BtGImpactQuantizedBvh p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtConcaveShapeClass p => BtGImpactShapeInterfaceClass p+instance BtConcaveShapeClass BtGImpactShapeInterface+instance BtCollisionShapeClass BtGImpactShapeInterface+instance BtGImpactShapeInterfaceClass BtGImpactShapeInterface+instance BtClass BtGImpactShapeInterface where+  withBt (BtGImpactShapeInterface p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtGeneric6DofConstraintDataClass p+instance BtGeneric6DofConstraintDataClass BtGeneric6DofConstraintData+instance BtClass BtGeneric6DofConstraintData where+  withBt (BtGeneric6DofConstraintData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtGeneric6DofSpringConstraintDataClass p+instance BtGeneric6DofSpringConstraintDataClass BtGeneric6DofSpringConstraintData+instance BtClass BtGeneric6DofSpringConstraintData where+  withBt (BtGeneric6DofSpringConstraintData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtGeometryUtilClass p+instance BtGeometryUtilClass BtGeometryUtil+instance BtClass BtGeometryUtil where+  withBt (BtGeometryUtil p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtGjkEpaSolver2Class p+instance BtGjkEpaSolver2Class BtGjkEpaSolver2+instance BtClass BtGjkEpaSolver2 where+  withBt (BtGjkEpaSolver2 p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtDiscreteCollisionDetectorInterfaceClass p => BtGjkPairDetectorClass p+instance BtDiscreteCollisionDetectorInterfaceClass BtGjkPairDetector+instance BtGjkPairDetectorClass BtGjkPairDetector+instance BtClass BtGjkPairDetector where+  withBt (BtGjkPairDetector p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtHashIntClass p+instance BtHashIntClass BtHashInt+instance BtClass BtHashInt where+  withBt (BtHashInt p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtHashPtrClass p+instance BtHashPtrClass BtHashPtr+instance BtClass BtHashPtr where+  withBt (BtHashPtr p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtHashStringClass p+instance BtHashStringClass BtHashString+instance BtClass BtHashString where+  withBt (BtHashString p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtHingeConstraintDoubleDataClass p+instance BtHingeConstraintDoubleDataClass BtHingeConstraintDoubleData+instance BtClass BtHingeConstraintDoubleData where+  withBt (BtHingeConstraintDoubleData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtHingeConstraintFloatDataClass p+instance BtHingeConstraintFloatDataClass BtHingeConstraintFloatData+instance BtClass BtHingeConstraintFloatData where+  withBt (BtHingeConstraintFloatData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtIDebugDrawClass p+instance BtIDebugDrawClass BtIDebugDraw+instance BtClass BtIDebugDraw where+  withBt (BtIDebugDraw p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtIndexedMeshClass p+instance BtIndexedMeshClass BtIndexedMesh+instance BtClass BtIndexedMesh where+  withBt (BtIndexedMesh p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtIntIndexDataClass p+instance BtIntIndexDataClass BtIntIndexData+instance BtClass BtIntIndexData where+  withBt (BtIntIndexData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtInternalTriangleIndexCallbackClass p+instance BtInternalTriangleIndexCallbackClass BtInternalTriangleIndexCallback+instance BtClass BtInternalTriangleIndexCallback where+  withBt (BtInternalTriangleIndexCallback p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtJacobianEntryClass p+instance BtJacobianEntryClass BtJacobianEntry+instance BtClass BtJacobianEntry where+  withBt (BtJacobianEntry p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtManifoldPointClass p+instance BtManifoldPointClass BtManifoldPoint+instance BtClass BtManifoldPoint where+  withBt (BtManifoldPoint p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtDiscreteCollisionDetectorInterface_ResultClass p => BtManifoldResultClass p+instance BtDiscreteCollisionDetectorInterface_ResultClass BtManifoldResult+instance BtManifoldResultClass BtManifoldResult+instance BtClass BtManifoldResult where+  withBt (BtManifoldResult p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtMatrix3x3DoubleDataClass p+instance BtMatrix3x3DoubleDataClass BtMatrix3x3DoubleData+instance BtClass BtMatrix3x3DoubleData where+  withBt (BtMatrix3x3DoubleData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtMatrix3x3FloatDataClass p+instance BtMatrix3x3FloatDataClass BtMatrix3x3FloatData+instance BtClass BtMatrix3x3FloatData where+  withBt (BtMatrix3x3FloatData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtMeshPartDataClass p+instance BtMeshPartDataClass BtMeshPartData+instance BtClass BtMeshPartData where+  withBt (BtMeshPartData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtMotionStateClass p+instance BtMotionStateClass BtMotionState+instance BtClass BtMotionState where+  withBt (BtMotionState p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtBroadphaseInterfaceClass p => BtMultiSapBroadphaseClass p+instance BtBroadphaseInterfaceClass BtMultiSapBroadphase+instance BtMultiSapBroadphaseClass BtMultiSapBroadphase+instance BtClass BtMultiSapBroadphase where+  withBt (BtMultiSapBroadphase p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtBroadphaseProxyClass p => BtMultiSapBroadphase_btMultiSapProxyClass p+instance BtBroadphaseProxyClass BtMultiSapBroadphase_btMultiSapProxy+instance BtMultiSapBroadphase_btMultiSapProxyClass BtMultiSapBroadphase_btMultiSapProxy+instance BtClass BtMultiSapBroadphase_btMultiSapProxy where+  withBt (BtMultiSapBroadphase_btMultiSapProxy p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtMultiSphereShapeDataClass p+instance BtMultiSphereShapeDataClass BtMultiSphereShapeData+instance BtClass BtMultiSphereShapeData where+  withBt (BtMultiSphereShapeData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtNodeOverlapCallbackClass p+instance BtNodeOverlapCallbackClass BtNodeOverlapCallback+instance BtClass BtNodeOverlapCallback where+  withBt (BtNodeOverlapCallback p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtOptimizedBvhNodeClass p+instance BtOptimizedBvhNodeClass BtOptimizedBvhNode+instance BtClass BtOptimizedBvhNode where+  withBt (BtOptimizedBvhNode p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtOptimizedBvhNodeDoubleDataClass p+instance BtOptimizedBvhNodeDoubleDataClass BtOptimizedBvhNodeDoubleData+instance BtClass BtOptimizedBvhNodeDoubleData where+  withBt (BtOptimizedBvhNodeDoubleData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtOptimizedBvhNodeFloatDataClass p+instance BtOptimizedBvhNodeFloatDataClass BtOptimizedBvhNodeFloatData+instance BtClass BtOptimizedBvhNodeFloatData where+  withBt (BtOptimizedBvhNodeFloatData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtOverlapCallbackClass p+instance BtOverlapCallbackClass BtOverlapCallback+instance BtClass BtOverlapCallback where+  withBt (BtOverlapCallback p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtOverlapFilterCallbackClass p+instance BtOverlapFilterCallbackClass BtOverlapFilterCallback+instance BtClass BtOverlapFilterCallback where+  withBt (BtOverlapFilterCallback p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtOverlappingPairCallbackClass p+instance BtOverlappingPairCallbackClass BtOverlappingPairCallback+instance BtClass BtOverlappingPairCallback where+  withBt (BtOverlappingPairCallback p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtPairSetClass p+instance BtPairSetClass BtPairSet+instance BtClass BtPairSet where+  withBt (BtPairSet p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtPoint2PointConstraintDoubleDataClass p+instance BtPoint2PointConstraintDoubleDataClass BtPoint2PointConstraintDoubleData+instance BtClass BtPoint2PointConstraintDoubleData where+  withBt (BtPoint2PointConstraintDoubleData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtPoint2PointConstraintFloatDataClass p+instance BtPoint2PointConstraintFloatDataClass BtPoint2PointConstraintFloatData+instance BtClass BtPoint2PointConstraintFloatData where+  withBt (BtPoint2PointConstraintFloatData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtPointerUidClass p+instance BtPointerUidClass BtPointerUid+instance BtClass BtPointerUid where+  withBt (BtPointerUid p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtPositionAndRadiusClass p+instance BtPositionAndRadiusClass BtPositionAndRadius+instance BtClass BtPositionAndRadius where+  withBt (BtPositionAndRadius p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtPrimitiveManagerBaseClass p+instance BtPrimitiveManagerBaseClass BtPrimitiveManagerBase+instance BtClass BtPrimitiveManagerBase where+  withBt (BtPrimitiveManagerBase p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtPrimitiveTriangleClass p+instance BtPrimitiveTriangleClass BtPrimitiveTriangle+instance BtClass BtPrimitiveTriangle where+  withBt (BtPrimitiveTriangle p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtQuadWordClass p+instance BtQuadWordClass BtQuadWord+instance BtClass BtQuadWord where+  withBt (BtQuadWord p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtQuantizedBvhClass p+instance BtQuantizedBvhClass BtQuantizedBvh+instance BtClass BtQuantizedBvh where+  withBt (BtQuantizedBvh p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtQuantizedBvhDoubleDataClass p+instance BtQuantizedBvhDoubleDataClass BtQuantizedBvhDoubleData+instance BtClass BtQuantizedBvhDoubleData where+  withBt (BtQuantizedBvhDoubleData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtQuantizedBvhFloatDataClass p+instance BtQuantizedBvhFloatDataClass BtQuantizedBvhFloatData+instance BtClass BtQuantizedBvhFloatData where+  withBt (BtQuantizedBvhFloatData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtQuantizedBvhNodeClass p+instance BtQuantizedBvhNodeClass BtQuantizedBvhNode+instance BtClass BtQuantizedBvhNode where+  withBt (BtQuantizedBvhNode p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtQuantizedBvhNodeDataClass p+instance BtQuantizedBvhNodeDataClass BtQuantizedBvhNodeData+instance BtClass BtQuantizedBvhNodeData where+  withBt (BtQuantizedBvhNodeData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtQuantizedBvhTreeClass p+instance BtQuantizedBvhTreeClass BtQuantizedBvhTree+instance BtClass BtQuantizedBvhTree where+  withBt (BtQuantizedBvhTree p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtActionInterfaceClass p => BtRaycastVehicleClass p+instance BtActionInterfaceClass BtRaycastVehicle+instance BtRaycastVehicleClass BtRaycastVehicle+instance BtClass BtRaycastVehicle where+  withBt (BtRaycastVehicle p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtCollisionObjectClass p => BtRigidBodyClass p+instance BtCollisionObjectClass BtRigidBody+instance BtRigidBodyClass BtRigidBody+instance BtClass BtRigidBody where+  withBt (BtRigidBody p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtRigidBody_btRigidBodyConstructionInfoClass p+instance BtRigidBody_btRigidBodyConstructionInfoClass BtRigidBody_btRigidBodyConstructionInfo+instance BtClass BtRigidBody_btRigidBodyConstructionInfo where+  withBt (BtRigidBody_btRigidBodyConstructionInfo p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtRigidBodyDoubleDataClass p+instance BtRigidBodyDoubleDataClass BtRigidBodyDoubleData+instance BtClass BtRigidBodyDoubleData where+  withBt (BtRigidBodyDoubleData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtRigidBodyFloatDataClass p+instance BtRigidBodyFloatDataClass BtRigidBodyFloatData+instance BtClass BtRigidBodyFloatData where+  withBt (BtRigidBodyFloatData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtRotationalLimitMotorClass p+instance BtRotationalLimitMotorClass BtRotationalLimitMotor+instance BtClass BtRotationalLimitMotor where+  withBt (BtRotationalLimitMotor p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtConcaveShapeClass p => BtScaledBvhTriangleMeshShapeClass p+instance BtConcaveShapeClass BtScaledBvhTriangleMeshShape+instance BtCollisionShapeClass BtScaledBvhTriangleMeshShape+instance BtScaledBvhTriangleMeshShapeClass BtScaledBvhTriangleMeshShape+instance BtClass BtScaledBvhTriangleMeshShape where+  withBt (BtScaledBvhTriangleMeshShape p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtScaledTriangleMeshShapeDataClass p+instance BtScaledTriangleMeshShapeDataClass BtScaledTriangleMeshShapeData+instance BtClass BtScaledTriangleMeshShapeData where+  withBt (BtScaledTriangleMeshShapeData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtConstraintSolverClass p => BtSequentialImpulseConstraintSolverClass p+instance BtConstraintSolverClass BtSequentialImpulseConstraintSolver+instance BtSequentialImpulseConstraintSolverClass BtSequentialImpulseConstraintSolver+instance BtClass BtSequentialImpulseConstraintSolver where+  withBt (BtSequentialImpulseConstraintSolver p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtSerializerClass p+instance BtSerializerClass BtSerializer+instance BtClass BtSerializer where+  withBt (BtSerializer p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtShortIntIndexDataClass p+instance BtShortIntIndexDataClass BtShortIntIndexData+instance BtClass BtShortIntIndexData where+  withBt (BtShortIntIndexData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtShortIntIndexTripletDataClass p+instance BtShortIntIndexTripletDataClass BtShortIntIndexTripletData+instance BtClass BtShortIntIndexTripletData where+  withBt (BtShortIntIndexTripletData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtBroadphaseInterfaceClass p => BtSimpleBroadphaseClass p+instance BtBroadphaseInterfaceClass BtSimpleBroadphase+instance BtSimpleBroadphaseClass BtSimpleBroadphase+instance BtClass BtSimpleBroadphase where+  withBt (BtSimpleBroadphase p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtBroadphaseProxyClass p => BtSimpleBroadphaseProxyClass p+instance BtBroadphaseProxyClass BtSimpleBroadphaseProxy+instance BtSimpleBroadphaseProxyClass BtSimpleBroadphaseProxy+instance BtClass BtSimpleBroadphaseProxy where+  withBt (BtSimpleBroadphaseProxy p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtDynamicsWorldClass p => BtSimpleDynamicsWorldClass p+instance BtDynamicsWorldClass BtSimpleDynamicsWorld+instance BtCollisionWorldClass BtSimpleDynamicsWorld+instance BtSimpleDynamicsWorldClass BtSimpleDynamicsWorld+instance BtClass BtSimpleDynamicsWorld where+  withBt (BtSimpleDynamicsWorld p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtSliderConstraintDataClass p+instance BtSliderConstraintDataClass BtSliderConstraintData+instance BtClass BtSliderConstraintData where+  withBt (BtSliderConstraintData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtCollisionObjectClass p => BtSoftBodyClass p+instance BtCollisionObjectClass BtSoftBody+instance BtSoftBodyClass BtSoftBody+instance BtClass BtSoftBody where+  withBt (BtSoftBody p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtSoftBodyHelpersClass p+instance BtSoftBodyHelpersClass BtSoftBodyHelpers+instance BtClass BtSoftBodyHelpers where+  withBt (BtSoftBodyHelpers p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtDefaultCollisionConfigurationClass p => BtSoftBodyRigidBodyCollisionConfigurationClass p+instance BtDefaultCollisionConfigurationClass BtSoftBodyRigidBodyCollisionConfiguration+instance BtCollisionConfigurationClass BtSoftBodyRigidBodyCollisionConfiguration+instance BtSoftBodyRigidBodyCollisionConfigurationClass BtSoftBodyRigidBodyCollisionConfiguration+instance BtClass BtSoftBodyRigidBodyCollisionConfiguration where+  withBt (BtSoftBodyRigidBodyCollisionConfiguration p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtSoftBodyWorldInfoClass p+instance BtSoftBodyWorldInfoClass BtSoftBodyWorldInfo+instance BtClass BtSoftBodyWorldInfo where+  withBt (BtSoftBodyWorldInfo p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtSolverBodyObsoleteClass p+instance BtSolverBodyObsoleteClass BtSolverBodyObsolete+instance BtClass BtSolverBodyObsolete where+  withBt (BtSolverBodyObsolete p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtSolverConstraintClass p+instance BtSolverConstraintClass BtSolverConstraint+instance BtClass BtSolverConstraint where+  withBt (BtSolverConstraint p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtStackAllocClass p+instance BtStackAllocClass BtStackAlloc+instance BtClass BtStackAlloc where+  withBt (BtStackAlloc p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtConcaveShapeClass p => BtStaticPlaneShapeClass p+instance BtConcaveShapeClass BtStaticPlaneShape+instance BtCollisionShapeClass BtStaticPlaneShape+instance BtStaticPlaneShapeClass BtStaticPlaneShape+instance BtClass BtStaticPlaneShape where+  withBt (BtStaticPlaneShape p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtStaticPlaneShapeDataClass p+instance BtStaticPlaneShapeDataClass BtStaticPlaneShapeData+instance BtClass BtStaticPlaneShapeData where+  withBt (BtStaticPlaneShapeData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtDiscreteCollisionDetectorInterface_ResultClass p => BtStorageResultClass p+instance BtDiscreteCollisionDetectorInterface_ResultClass BtStorageResult+instance BtStorageResultClass BtStorageResult+instance BtClass BtStorageResult where+  withBt (BtStorageResult p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtStridingMeshInterfaceClass p+instance BtStridingMeshInterfaceClass BtStridingMeshInterface+instance BtClass BtStridingMeshInterface where+  withBt (BtStridingMeshInterface p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtStridingMeshInterfaceDataClass p+instance BtStridingMeshInterfaceDataClass BtStridingMeshInterfaceData+instance BtClass BtStridingMeshInterfaceData where+  withBt (BtStridingMeshInterfaceData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtSubSimplexClosestResultClass p+instance BtSubSimplexClosestResultClass BtSubSimplexClosestResult+instance BtClass BtSubSimplexClosestResult where+  withBt (BtSubSimplexClosestResult p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtTransformDoubleDataClass p+instance BtTransformDoubleDataClass BtTransformDoubleData+instance BtClass BtTransformDoubleData where+  withBt (BtTransformDoubleData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtTransformFloatDataClass p+instance BtTransformFloatDataClass BtTransformFloatData+instance BtClass BtTransformFloatData where+  withBt (BtTransformFloatData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtTransformUtilClass p+instance BtTransformUtilClass BtTransformUtil+instance BtClass BtTransformUtil where+  withBt (BtTransformUtil p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtTranslationalLimitMotorClass p+instance BtTranslationalLimitMotorClass BtTranslationalLimitMotor+instance BtClass BtTranslationalLimitMotor where+  withBt (BtTranslationalLimitMotor p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtTriangleCallbackClass p+instance BtTriangleCallbackClass BtTriangleCallback+instance BtClass BtTriangleCallback where+  withBt (BtTriangleCallback p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtStridingMeshInterfaceClass p => BtTriangleIndexVertexArrayClass p+instance BtStridingMeshInterfaceClass BtTriangleIndexVertexArray+instance BtTriangleIndexVertexArrayClass BtTriangleIndexVertexArray+instance BtClass BtTriangleIndexVertexArray where+  withBt (BtTriangleIndexVertexArray p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtTriangleInfoClass p+instance BtTriangleInfoClass BtTriangleInfo+instance BtClass BtTriangleInfo where+  withBt (BtTriangleInfo p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtTriangleInfoDataClass p+instance BtTriangleInfoDataClass BtTriangleInfoData+instance BtClass BtTriangleInfoData where+  withBt (BtTriangleInfoData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtTriangleInfoMapClass p+instance BtTriangleInfoMapClass BtTriangleInfoMap+instance BtClass BtTriangleInfoMap where+  withBt (BtTriangleInfoMap p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtTriangleInfoMapDataClass p+instance BtTriangleInfoMapDataClass BtTriangleInfoMapData+instance BtClass BtTriangleInfoMapData where+  withBt (BtTriangleInfoMapData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtTriangleIndexVertexArrayClass p => BtTriangleMeshClass p+instance BtTriangleIndexVertexArrayClass BtTriangleMesh+instance BtStridingMeshInterfaceClass BtTriangleMesh+instance BtTriangleMeshClass BtTriangleMesh+instance BtClass BtTriangleMesh where+  withBt (BtTriangleMesh p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtConcaveShapeClass p => BtTriangleMeshShapeClass p+instance BtConcaveShapeClass BtTriangleMeshShape+instance BtCollisionShapeClass BtTriangleMeshShape+instance BtTriangleMeshShapeClass BtTriangleMeshShape+instance BtClass BtTriangleMeshShape where+  withBt (BtTriangleMeshShape p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtTriangleMeshShapeDataClass p+instance BtTriangleMeshShapeDataClass BtTriangleMeshShapeData+instance BtClass BtTriangleMeshShapeData where+  withBt (BtTriangleMeshShapeData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtTypedConstraintDataClass p+instance BtTypedConstraintDataClass BtTypedConstraintData+instance BtClass BtTypedConstraintData where+  withBt (BtTypedConstraintData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtTypedObjectClass p+instance BtTypedObjectClass BtTypedObject+instance BtClass BtTypedObject where+  withBt (BtTypedObject p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtConvexShapeClass p => BtUniformScalingShapeClass p+instance BtConvexShapeClass BtUniformScalingShape+instance BtCollisionShapeClass BtUniformScalingShape+instance BtUniformScalingShapeClass BtUniformScalingShape+instance BtClass BtUniformScalingShape where+  withBt (BtUniformScalingShape p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtUsageBitfieldClass p+instance BtUsageBitfieldClass BtUsageBitfield+instance BtClass BtUsageBitfield where+  withBt (BtUsageBitfield p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtVector3DoubleDataClass p+instance BtVector3DoubleDataClass BtVector3DoubleData+instance BtClass BtVector3DoubleData where+  withBt (BtVector3DoubleData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtVector3FloatDataClass p+instance BtVector3FloatDataClass BtVector3FloatData+instance BtClass BtVector3FloatData where+  withBt (BtVector3FloatData p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtVehicleRaycasterClass p+instance BtVehicleRaycasterClass BtVehicleRaycaster+instance BtClass BtVehicleRaycaster where+  withBt (BtVehicleRaycaster p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtVehicleRaycaster_btVehicleRaycasterResultClass p+instance BtVehicleRaycaster_btVehicleRaycasterResultClass BtVehicleRaycaster_btVehicleRaycasterResult+instance BtClass BtVehicleRaycaster_btVehicleRaycasterResult where+  withBt (BtVehicleRaycaster_btVehicleRaycasterResult p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtRaycastVehicle_btVehicleTuningClass p+instance BtRaycastVehicle_btVehicleTuningClass BtRaycastVehicle_btVehicleTuning+instance BtClass BtRaycastVehicle_btVehicleTuning where+  withBt (BtRaycastVehicle_btVehicleTuning p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtVoronoiSimplexSolverClass p+instance BtVoronoiSimplexSolverClass BtVoronoiSimplexSolver+instance BtClass BtVoronoiSimplexSolver where+  withBt (BtVoronoiSimplexSolver p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtWheelInfoClass p+instance BtWheelInfoClass BtWheelInfo+instance BtClass BtWheelInfo where+  withBt (BtWheelInfo p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtWheelInfoConstructionInfoClass p+instance BtWheelInfoConstructionInfoClass BtWheelInfoConstructionInfo+instance BtClass BtWheelInfoConstructionInfo where+  withBt (BtWheelInfoConstructionInfo p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtSoftBody_eAeroModelClass p+instance BtSoftBody_eAeroModelClass BtSoftBody_eAeroModel+instance BtClass BtSoftBody_eAeroModel where+  withBt (BtSoftBody_eAeroModel p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtSoftBody_eFeatureClass p+instance BtSoftBody_eFeatureClass BtSoftBody_eFeature+instance BtClass BtSoftBody_eFeature where+  withBt (BtSoftBody_eFeature p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtSoftBody_ePSolverClass p+instance BtSoftBody_ePSolverClass BtSoftBody_ePSolver+instance BtClass BtSoftBody_ePSolver where+  withBt (BtSoftBody_ePSolver p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtSoftBody_eSolverPresetsClass p+instance BtSoftBody_eSolverPresetsClass BtSoftBody_eSolverPresets+instance BtClass BtSoftBody_eSolverPresets where+  withBt (BtSoftBody_eSolverPresets p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtSoftBody_Joint_eTypeClass p+instance BtSoftBody_Joint_eTypeClass BtSoftBody_Joint_eType+instance BtClass BtSoftBody_Joint_eType where+  withBt (BtSoftBody_Joint_eType p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtSoftBody_eVSolverClass p+instance BtSoftBody_eVSolverClass BtSoftBody_eVSolver+instance BtClass BtSoftBody_eVSolver where+  withBt (BtSoftBody_eVSolver p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtSoftBody_fCollisionClass p+instance BtSoftBody_fCollisionClass BtSoftBody_fCollision+instance BtClass BtSoftBody_fCollision where+  withBt (BtSoftBody_fCollision p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => FDrawFlagsClass p+instance FDrawFlagsClass FDrawFlags+instance BtClass FDrawFlags where+  withBt (FDrawFlags p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtSoftBody_fMaterialClass p+instance BtSoftBody_fMaterialClass BtSoftBody_fMaterial+instance BtClass BtSoftBody_fMaterial where+  withBt (BtSoftBody_fMaterial p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtSoftBody_sCtiClass p+instance BtSoftBody_sCtiClass BtSoftBody_sCti+instance BtClass BtSoftBody_sCti where+  withBt (BtSoftBody_sCti p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtSoftBody_sMediumClass p+instance BtSoftBody_sMediumClass BtSoftBody_sMedium+instance BtClass BtSoftBody_sMedium where+  withBt (BtSoftBody_sMedium p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtSoftBody_sRayCastClass p+instance BtSoftBody_sRayCastClass BtSoftBody_sRayCast+instance BtClass BtSoftBody_sRayCast where+  withBt (BtSoftBody_sRayCast p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtGjkEpaSolver2_sResultsClass p+instance BtGjkEpaSolver2_sResultsClass BtGjkEpaSolver2_sResults+instance BtClass BtGjkEpaSolver2_sResults where+  withBt (BtGjkEpaSolver2_sResults p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtDbvt_sStkCLNClass p+instance BtDbvt_sStkCLNClass BtDbvt_sStkCLN+instance BtClass BtDbvt_sStkCLN where+  withBt (BtDbvt_sStkCLN p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtDbvt_sStkNNClass p+instance BtDbvt_sStkNNClass BtDbvt_sStkNN+instance BtClass BtDbvt_sStkNN where+  withBt (BtDbvt_sStkNN p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtDbvt_sStkNPClass p+instance BtDbvt_sStkNPClass BtDbvt_sStkNP+instance BtClass BtDbvt_sStkNP where+  withBt (BtDbvt_sStkNP p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtDbvt_sStkNPSClass p+instance BtDbvt_sStkNPSClass BtDbvt_sStkNPS+instance BtClass BtDbvt_sStkNPS where+  withBt (BtDbvt_sStkNPS p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtSoftBody_JointClass p => BtSoftBody_AJointClass p+instance BtSoftBody_JointClass BtSoftBody_AJoint+instance BtSoftBody_AJointClass BtSoftBody_AJoint+instance BtClass BtSoftBody_AJoint where+  withBt (BtSoftBody_AJoint p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtCollisionWorld_RayResultCallbackClass p => BtCollisionWorld_AllHitsRayResultCallbackClass p+instance BtCollisionWorld_RayResultCallbackClass BtCollisionWorld_AllHitsRayResultCallback+instance BtCollisionWorld_AllHitsRayResultCallbackClass BtCollisionWorld_AllHitsRayResultCallback+instance BtClass BtCollisionWorld_AllHitsRayResultCallback where+  withBt (BtCollisionWorld_AllHitsRayResultCallback p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtSoftBody_JointClass p => BtSoftBody_CJointClass p+instance BtSoftBody_JointClass BtSoftBody_CJoint+instance BtSoftBody_CJointClass BtSoftBody_CJoint+instance BtClass BtSoftBody_CJoint where+  withBt (BtSoftBody_CJoint p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtCollisionWorld_ConvexResultCallbackClass p => BtCollisionWorld_ClosestConvexResultCallbackClass p+instance BtCollisionWorld_ConvexResultCallbackClass BtCollisionWorld_ClosestConvexResultCallback+instance BtCollisionWorld_ClosestConvexResultCallbackClass BtCollisionWorld_ClosestConvexResultCallback+instance BtClass BtCollisionWorld_ClosestConvexResultCallback where+  withBt (BtCollisionWorld_ClosestConvexResultCallback p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtCollisionWorld_RayResultCallbackClass p => BtCollisionWorld_ClosestRayResultCallbackClass p+instance BtCollisionWorld_RayResultCallbackClass BtCollisionWorld_ClosestRayResultCallback+instance BtCollisionWorld_ClosestRayResultCallbackClass BtCollisionWorld_ClosestRayResultCallback+instance BtClass BtCollisionWorld_ClosestRayResultCallback where+  withBt (BtCollisionWorld_ClosestRayResultCallback p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtPrimitiveManagerBaseClass p => BtGImpactCompoundShape_CompoundPrimitiveManagerClass p+instance BtPrimitiveManagerBaseClass BtGImpactCompoundShape_CompoundPrimitiveManager+instance BtGImpactCompoundShape_CompoundPrimitiveManagerClass BtGImpactCompoundShape_CompoundPrimitiveManager+instance BtClass BtGImpactCompoundShape_CompoundPrimitiveManager where+  withBt (BtGImpactCompoundShape_CompoundPrimitiveManager p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtCollisionAlgorithmCreateFuncClass p => BtGImpactCollisionAlgorithm_CreateFuncClass p+instance BtCollisionAlgorithmCreateFuncClass BtGImpactCollisionAlgorithm_CreateFunc+instance BtGImpactCollisionAlgorithm_CreateFuncClass BtGImpactCollisionAlgorithm_CreateFunc+instance BtClass BtGImpactCollisionAlgorithm_CreateFunc where+  withBt (BtGImpactCollisionAlgorithm_CreateFunc p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtCollisionAlgorithmCreateFuncClass p => BtSphereSphereCollisionAlgorithm_CreateFuncClass p+instance BtCollisionAlgorithmCreateFuncClass BtSphereSphereCollisionAlgorithm_CreateFunc+instance BtSphereSphereCollisionAlgorithm_CreateFuncClass BtSphereSphereCollisionAlgorithm_CreateFunc+instance BtClass BtSphereSphereCollisionAlgorithm_CreateFunc where+  withBt (BtSphereSphereCollisionAlgorithm_CreateFunc p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtCollisionAlgorithmCreateFuncClass p => BtConvexConvexAlgorithm_CreateFuncClass p+instance BtCollisionAlgorithmCreateFuncClass BtConvexConvexAlgorithm_CreateFunc+instance BtConvexConvexAlgorithm_CreateFuncClass BtConvexConvexAlgorithm_CreateFunc+instance BtClass BtConvexConvexAlgorithm_CreateFunc where+  withBt (BtConvexConvexAlgorithm_CreateFunc p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtSoftBody_FeatureClass p => BtSoftBody_FaceClass p+instance BtSoftBody_FeatureClass BtSoftBody_Face+instance BtSoftBody_ElementClass BtSoftBody_Face+instance BtSoftBody_FaceClass BtSoftBody_Face+instance BtClass BtSoftBody_Face where+  withBt (BtSoftBody_Face p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtPrimitiveManagerBaseClass p => BtGImpactMeshShapePart_TrimeshPrimitiveManagerClass p+instance BtPrimitiveManagerBaseClass BtGImpactMeshShapePart_TrimeshPrimitiveManager+instance BtGImpactMeshShapePart_TrimeshPrimitiveManagerClass BtGImpactMeshShapePart_TrimeshPrimitiveManager+instance BtClass BtGImpactMeshShapePart_TrimeshPrimitiveManager where+  withBt (BtGImpactMeshShapePart_TrimeshPrimitiveManager p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => Bt32BitAxisSweep3Class p+instance Bt32BitAxisSweep3Class Bt32BitAxisSweep3+instance BtClass Bt32BitAxisSweep3 where+  withBt (Bt32BitAxisSweep3 p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtCollisionAlgorithmClass p => BtActivatingCollisionAlgorithmClass p+instance BtCollisionAlgorithmClass BtActivatingCollisionAlgorithm+instance BtActivatingCollisionAlgorithmClass BtActivatingCollisionAlgorithm+instance BtClass BtActivatingCollisionAlgorithm where+  withBt (BtActivatingCollisionAlgorithm p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtClass p => BtAxisSweep3Class p+instance BtAxisSweep3Class BtAxisSweep3+instance BtClass BtAxisSweep3 where+  withBt (BtAxisSweep3 p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtTriangleMeshShapeClass p => BtBvhTriangleMeshShapeClass p+instance BtTriangleMeshShapeClass BtBvhTriangleMeshShape+instance BtConcaveShapeClass BtBvhTriangleMeshShape+instance BtCollisionShapeClass BtBvhTriangleMeshShape+instance BtBvhTriangleMeshShapeClass BtBvhTriangleMeshShape+instance BtClass BtBvhTriangleMeshShape where+  withBt (BtBvhTriangleMeshShape p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtDispatcherClass p => BtCollisionDispatcherClass p+instance BtDispatcherClass BtCollisionDispatcher+instance BtCollisionDispatcherClass BtCollisionDispatcher+instance BtClass BtCollisionDispatcher where+  withBt (BtCollisionDispatcher p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtContactSolverInfoDataClass p => BtContactSolverInfoClass p+instance BtContactSolverInfoDataClass BtContactSolverInfo+instance BtContactSolverInfoClass BtContactSolverInfo+instance BtClass BtContactSolverInfo where+  withBt (BtContactSolverInfo p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtActivatingCollisionAlgorithmClass p => BtConvexConvexAlgorithmClass p+instance BtActivatingCollisionAlgorithmClass BtConvexConvexAlgorithm+instance BtCollisionAlgorithmClass BtConvexConvexAlgorithm+instance BtConvexConvexAlgorithmClass BtConvexConvexAlgorithm+instance BtClass BtConvexConvexAlgorithm where+  withBt (BtConvexConvexAlgorithm p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtConvexShapeClass p => BtConvexInternalShapeClass p+instance BtConvexShapeClass BtConvexInternalShape+instance BtCollisionShapeClass BtConvexInternalShape+instance BtConvexInternalShapeClass BtConvexInternalShape+instance BtClass BtConvexInternalShape where+  withBt (BtConvexInternalShape p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtConvexInternalShapeClass p => BtCylinderShapeClass p+instance BtConvexInternalShapeClass BtCylinderShape+instance BtConvexShapeClass BtCylinderShape+instance BtCollisionShapeClass BtCylinderShape+instance BtCylinderShapeClass BtCylinderShape+instance BtClass BtCylinderShape where+  withBt (BtCylinderShape p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtCylinderShapeClass p => BtCylinderShapeXClass p+instance BtCylinderShapeClass BtCylinderShapeX+instance BtConvexInternalShapeClass BtCylinderShapeX+instance BtConvexShapeClass BtCylinderShapeX+instance BtCollisionShapeClass BtCylinderShapeX+instance BtCylinderShapeXClass BtCylinderShapeX+instance BtClass BtCylinderShapeX where+  withBt (BtCylinderShapeX p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtCylinderShapeClass p => BtCylinderShapeZClass p+instance BtCylinderShapeClass BtCylinderShapeZ+instance BtConvexInternalShapeClass BtCylinderShapeZ+instance BtConvexShapeClass BtCylinderShapeZ+instance BtCollisionShapeClass BtCylinderShapeZ+instance BtCylinderShapeZClass BtCylinderShapeZ+instance BtClass BtCylinderShapeZ where+  withBt (BtCylinderShapeZ p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtMotionStateClass p => BtDefaultMotionStateClass p+instance BtMotionStateClass BtDefaultMotionState+instance BtDefaultMotionStateClass BtDefaultMotionState+instance BtClass BtDefaultMotionState where+  withBt (BtDefaultMotionState p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtSerializerClass p => BtDefaultSerializerClass p+instance BtSerializerClass BtDefaultSerializer+instance BtDefaultSerializerClass BtDefaultSerializer+instance BtClass BtDefaultSerializer where+  withBt (BtDefaultSerializer p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtVehicleRaycasterClass p => BtDefaultVehicleRaycasterClass p+instance BtVehicleRaycasterClass BtDefaultVehicleRaycaster+instance BtDefaultVehicleRaycasterClass BtDefaultVehicleRaycaster+instance BtClass BtDefaultVehicleRaycaster where+  withBt (BtDefaultVehicleRaycaster p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtDynamicsWorldClass p => BtDiscreteDynamicsWorldClass p+instance BtDynamicsWorldClass BtDiscreteDynamicsWorld+instance BtCollisionWorldClass BtDiscreteDynamicsWorld+instance BtDiscreteDynamicsWorldClass BtDiscreteDynamicsWorld+instance BtClass BtDiscreteDynamicsWorld where+  withBt (BtDiscreteDynamicsWorld p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtActivatingCollisionAlgorithmClass p => BtGImpactCollisionAlgorithmClass p+instance BtActivatingCollisionAlgorithmClass BtGImpactCollisionAlgorithm+instance BtCollisionAlgorithmClass BtGImpactCollisionAlgorithm+instance BtGImpactCollisionAlgorithmClass BtGImpactCollisionAlgorithm+instance BtClass BtGImpactCollisionAlgorithm where+  withBt (BtGImpactCollisionAlgorithm p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtGImpactShapeInterfaceClass p => BtGImpactCompoundShapeClass p+instance BtGImpactShapeInterfaceClass BtGImpactCompoundShape+instance BtConcaveShapeClass BtGImpactCompoundShape+instance BtCollisionShapeClass BtGImpactCompoundShape+instance BtGImpactCompoundShapeClass BtGImpactCompoundShape+instance BtClass BtGImpactCompoundShape where+  withBt (BtGImpactCompoundShape p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtGImpactShapeInterfaceClass p => BtGImpactMeshShapeClass p+instance BtGImpactShapeInterfaceClass BtGImpactMeshShape+instance BtConcaveShapeClass BtGImpactMeshShape+instance BtCollisionShapeClass BtGImpactMeshShape+instance BtGImpactMeshShapeClass BtGImpactMeshShape+instance BtClass BtGImpactMeshShape where+  withBt (BtGImpactMeshShape p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtGImpactShapeInterfaceClass p => BtGImpactMeshShapePartClass p+instance BtGImpactShapeInterfaceClass BtGImpactMeshShapePart+instance BtConcaveShapeClass BtGImpactMeshShapePart+instance BtCollisionShapeClass BtGImpactMeshShapePart+instance BtGImpactMeshShapePartClass BtGImpactMeshShapePart+instance BtClass BtGImpactMeshShapePart where+  withBt (BtGImpactMeshShapePart p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtIDebugDrawClass p => BtGLDebugDrawerClass p+instance BtIDebugDrawClass BtGLDebugDrawer+instance BtGLDebugDrawerClass BtGLDebugDrawer+instance BtClass BtGLDebugDrawer where+  withBt (BtGLDebugDrawer p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtQuantizedBvhClass p => BtOptimizedBvhClass p+instance BtQuantizedBvhClass BtOptimizedBvh+instance BtOptimizedBvhClass BtOptimizedBvh+instance BtClass BtOptimizedBvh where+  withBt (BtOptimizedBvh p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtOverlappingPairCallbackClass p => BtOverlappingPairCacheClass p+instance BtOverlappingPairCallbackClass BtOverlappingPairCache+instance BtOverlappingPairCacheClass BtOverlappingPairCache+instance BtClass BtOverlappingPairCache where+  withBt (BtOverlappingPairCache p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtTypedObjectClass p => BtPersistentManifoldClass p+instance BtTypedObjectClass BtPersistentManifold+instance BtPersistentManifoldClass BtPersistentManifold+instance BtClass BtPersistentManifold where+  withBt (BtPersistentManifold p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtConvexInternalShapeClass p => BtPolyhedralConvexShapeClass p+instance BtConvexInternalShapeClass BtPolyhedralConvexShape+instance BtConvexShapeClass BtPolyhedralConvexShape+instance BtCollisionShapeClass BtPolyhedralConvexShape+instance BtPolyhedralConvexShapeClass BtPolyhedralConvexShape+instance BtClass BtPolyhedralConvexShape where+  withBt (BtPolyhedralConvexShape p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtDiscreteDynamicsWorldClass p => BtSoftRigidDynamicsWorldClass p+instance BtDiscreteDynamicsWorldClass BtSoftRigidDynamicsWorld+instance BtDynamicsWorldClass BtSoftRigidDynamicsWorld+instance BtCollisionWorldClass BtSoftRigidDynamicsWorld+instance BtSoftRigidDynamicsWorldClass BtSoftRigidDynamicsWorld+instance BtClass BtSoftRigidDynamicsWorld where+  withBt (BtSoftRigidDynamicsWorld p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtOverlappingPairCacheClass p => BtSortedOverlappingPairCacheClass p+instance BtOverlappingPairCacheClass BtSortedOverlappingPairCache+instance BtOverlappingPairCallbackClass BtSortedOverlappingPairCache+instance BtSortedOverlappingPairCacheClass BtSortedOverlappingPairCache+instance BtClass BtSortedOverlappingPairCache where+  withBt (BtSortedOverlappingPairCache p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtConvexInternalShapeClass p => BtSphereShapeClass p+instance BtConvexInternalShapeClass BtSphereShape+instance BtConvexShapeClass BtSphereShape+instance BtCollisionShapeClass BtSphereShape+instance BtSphereShapeClass BtSphereShape+instance BtClass BtSphereShape where+  withBt (BtSphereShape p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtActivatingCollisionAlgorithmClass p => BtSphereSphereCollisionAlgorithmClass p+instance BtActivatingCollisionAlgorithmClass BtSphereSphereCollisionAlgorithm+instance BtCollisionAlgorithmClass BtSphereSphereCollisionAlgorithm+instance BtSphereSphereCollisionAlgorithmClass BtSphereSphereCollisionAlgorithm+instance BtClass BtSphereSphereCollisionAlgorithm where+  withBt (BtSphereSphereCollisionAlgorithm p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtPolyhedralConvexShapeClass p => BtTriangleShapeClass p+instance BtPolyhedralConvexShapeClass BtTriangleShape+instance BtConvexInternalShapeClass BtTriangleShape+instance BtConvexShapeClass BtTriangleShape+instance BtCollisionShapeClass BtTriangleShape+instance BtTriangleShapeClass BtTriangleShape+instance BtClass BtTriangleShape where+  withBt (BtTriangleShape p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtTriangleShapeClass p => BtTriangleShapeExClass p+instance BtTriangleShapeClass BtTriangleShapeEx+instance BtPolyhedralConvexShapeClass BtTriangleShapeEx+instance BtConvexInternalShapeClass BtTriangleShapeEx+instance BtConvexShapeClass BtTriangleShapeEx+instance BtCollisionShapeClass BtTriangleShapeEx+instance BtTriangleShapeExClass BtTriangleShapeEx+instance BtClass BtTriangleShapeEx where+  withBt (BtTriangleShapeEx p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtTypedObjectClass p => BtTypedConstraintClass p+instance BtTypedObjectClass BtTypedConstraint+instance BtTypedConstraintClass BtTypedConstraint+instance BtClass BtTypedConstraint where+  withBt (BtTypedConstraint p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtPolyhedralConvexShapeClass p => BtBoxShapeClass p+instance BtPolyhedralConvexShapeClass BtBoxShape+instance BtConvexInternalShapeClass BtBoxShape+instance BtConvexShapeClass BtBoxShape+instance BtCollisionShapeClass BtBoxShape+instance BtBoxShapeClass BtBoxShape+instance BtClass BtBoxShape where+  withBt (BtBoxShape p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtConvexInternalShapeClass p => BtCapsuleShapeClass p+instance BtConvexInternalShapeClass BtCapsuleShape+instance BtConvexShapeClass BtCapsuleShape+instance BtCollisionShapeClass BtCapsuleShape+instance BtCapsuleShapeClass BtCapsuleShape+instance BtClass BtCapsuleShape where+  withBt (BtCapsuleShape p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtCapsuleShapeClass p => BtCapsuleShapeXClass p+instance BtCapsuleShapeClass BtCapsuleShapeX+instance BtConvexInternalShapeClass BtCapsuleShapeX+instance BtConvexShapeClass BtCapsuleShapeX+instance BtCollisionShapeClass BtCapsuleShapeX+instance BtCapsuleShapeXClass BtCapsuleShapeX+instance BtClass BtCapsuleShapeX where+  withBt (BtCapsuleShapeX p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtCapsuleShapeClass p => BtCapsuleShapeZClass p+instance BtCapsuleShapeClass BtCapsuleShapeZ+instance BtConvexInternalShapeClass BtCapsuleShapeZ+instance BtConvexShapeClass BtCapsuleShapeZ+instance BtCollisionShapeClass BtCapsuleShapeZ+instance BtCapsuleShapeZClass BtCapsuleShapeZ+instance BtClass BtCapsuleShapeZ where+  withBt (BtCapsuleShapeZ p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtConvexInternalShapeClass p => BtConeShapeClass p+instance BtConvexInternalShapeClass BtConeShape+instance BtConvexShapeClass BtConeShape+instance BtCollisionShapeClass BtConeShape+instance BtConeShapeClass BtConeShape+instance BtClass BtConeShape where+  withBt (BtConeShape p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtConeShapeClass p => BtConeShapeXClass p+instance BtConeShapeClass BtConeShapeX+instance BtConvexInternalShapeClass BtConeShapeX+instance BtConvexShapeClass BtConeShapeX+instance BtCollisionShapeClass BtConeShapeX+instance BtConeShapeXClass BtConeShapeX+instance BtClass BtConeShapeX where+  withBt (BtConeShapeX p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtConeShapeClass p => BtConeShapeZClass p+instance BtConeShapeClass BtConeShapeZ+instance BtConvexInternalShapeClass BtConeShapeZ+instance BtConvexShapeClass BtConeShapeZ+instance BtCollisionShapeClass BtConeShapeZ+instance BtConeShapeZClass BtConeShapeZ+instance BtClass BtConeShapeZ where+  withBt (BtConeShapeZ p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtTypedConstraintClass p => BtConeTwistConstraintClass p+instance BtTypedConstraintClass BtConeTwistConstraint+instance BtTypedObjectClass BtConeTwistConstraint+instance BtConeTwistConstraintClass BtConeTwistConstraint+instance BtClass BtConeTwistConstraint where+  withBt (BtConeTwistConstraint p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtTypedConstraintClass p => BtContactConstraintClass p+instance BtTypedConstraintClass BtContactConstraint+instance BtTypedObjectClass BtContactConstraint+instance BtContactConstraintClass BtContactConstraint+instance BtClass BtContactConstraint where+  withBt (BtContactConstraint p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtDiscreteDynamicsWorldClass p => BtContinuousDynamicsWorldClass p+instance BtDiscreteDynamicsWorldClass BtContinuousDynamicsWorld+instance BtDynamicsWorldClass BtContinuousDynamicsWorld+instance BtCollisionWorldClass BtContinuousDynamicsWorld+instance BtContinuousDynamicsWorldClass BtContinuousDynamicsWorld+instance BtClass BtContinuousDynamicsWorld where+  withBt (BtContinuousDynamicsWorld p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtConvexInternalShapeClass p => BtConvexInternalAabbCachingShapeClass p+instance BtConvexInternalShapeClass BtConvexInternalAabbCachingShape+instance BtConvexShapeClass BtConvexInternalAabbCachingShape+instance BtCollisionShapeClass BtConvexInternalAabbCachingShape+instance BtConvexInternalAabbCachingShapeClass BtConvexInternalAabbCachingShape+instance BtClass BtConvexInternalAabbCachingShape where+  withBt (BtConvexInternalAabbCachingShape p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtTypedConstraintClass p => BtGeneric6DofConstraintClass p+instance BtTypedConstraintClass BtGeneric6DofConstraint+instance BtTypedObjectClass BtGeneric6DofConstraint+instance BtGeneric6DofConstraintClass BtGeneric6DofConstraint+instance BtClass BtGeneric6DofConstraint where+  withBt (BtGeneric6DofConstraint p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtGeneric6DofConstraintClass p => BtGeneric6DofSpringConstraintClass p+instance BtGeneric6DofConstraintClass BtGeneric6DofSpringConstraint+instance BtTypedConstraintClass BtGeneric6DofSpringConstraint+instance BtTypedObjectClass BtGeneric6DofSpringConstraint+instance BtGeneric6DofSpringConstraintClass BtGeneric6DofSpringConstraint+instance BtClass BtGeneric6DofSpringConstraint where+  withBt (BtGeneric6DofSpringConstraint p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtOverlappingPairCacheClass p => BtHashedOverlappingPairCacheClass p+instance BtOverlappingPairCacheClass BtHashedOverlappingPairCache+instance BtOverlappingPairCallbackClass BtHashedOverlappingPairCache+instance BtHashedOverlappingPairCacheClass BtHashedOverlappingPairCache+instance BtClass BtHashedOverlappingPairCache where+  withBt (BtHashedOverlappingPairCache p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtGeneric6DofSpringConstraintClass p => BtHinge2ConstraintClass p+instance BtGeneric6DofSpringConstraintClass BtHinge2Constraint+instance BtGeneric6DofConstraintClass BtHinge2Constraint+instance BtTypedConstraintClass BtHinge2Constraint+instance BtTypedObjectClass BtHinge2Constraint+instance BtHinge2ConstraintClass BtHinge2Constraint+instance BtClass BtHinge2Constraint where+  withBt (BtHinge2Constraint p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtTypedConstraintClass p => BtHingeConstraintClass p+instance BtTypedConstraintClass BtHingeConstraint+instance BtTypedObjectClass BtHingeConstraint+instance BtHingeConstraintClass BtHingeConstraint+instance BtClass BtHingeConstraint where+  withBt (BtHingeConstraint p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtConvexInternalAabbCachingShapeClass p => BtMultiSphereShapeClass p+instance BtConvexInternalAabbCachingShapeClass BtMultiSphereShape+instance BtConvexInternalShapeClass BtMultiSphereShape+instance BtConvexShapeClass BtMultiSphereShape+instance BtCollisionShapeClass BtMultiSphereShape+instance BtMultiSphereShapeClass BtMultiSphereShape+instance BtClass BtMultiSphereShape where+  withBt (BtMultiSphereShape p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtOverlappingPairCacheClass p => BtNullPairCacheClass p+instance BtOverlappingPairCacheClass BtNullPairCache+instance BtOverlappingPairCallbackClass BtNullPairCache+instance BtNullPairCacheClass BtNullPairCache+instance BtClass BtNullPairCache where+  withBt (BtNullPairCache p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtTypedConstraintClass p => BtPoint2PointConstraintClass p+instance BtTypedConstraintClass BtPoint2PointConstraint+instance BtTypedObjectClass BtPoint2PointConstraint+instance BtPoint2PointConstraintClass BtPoint2PointConstraint+instance BtClass BtPoint2PointConstraint where+  withBt (BtPoint2PointConstraint p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtPolyhedralConvexShapeClass p => BtPolyhedralConvexAabbCachingShapeClass p+instance BtPolyhedralConvexShapeClass BtPolyhedralConvexAabbCachingShape+instance BtConvexInternalShapeClass BtPolyhedralConvexAabbCachingShape+instance BtConvexShapeClass BtPolyhedralConvexAabbCachingShape+instance BtCollisionShapeClass BtPolyhedralConvexAabbCachingShape+instance BtPolyhedralConvexAabbCachingShapeClass BtPolyhedralConvexAabbCachingShape+instance BtClass BtPolyhedralConvexAabbCachingShape where+  withBt (BtPolyhedralConvexAabbCachingShape p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtTypedConstraintClass p => BtSliderConstraintClass p+instance BtTypedConstraintClass BtSliderConstraint+instance BtTypedObjectClass BtSliderConstraint+instance BtSliderConstraintClass BtSliderConstraint+instance BtClass BtSliderConstraint where+  withBt (BtSliderConstraint p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtGeneric6DofConstraintClass p => BtUniversalConstraintClass p+instance BtGeneric6DofConstraintClass BtUniversalConstraint+instance BtTypedConstraintClass BtUniversalConstraint+instance BtTypedObjectClass BtUniversalConstraint+instance BtUniversalConstraintClass BtUniversalConstraint+instance BtClass BtUniversalConstraint where+  withBt (BtUniversalConstraint p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtPolyhedralConvexAabbCachingShapeClass p => BtBU_Simplex1to4Class p+instance BtPolyhedralConvexAabbCachingShapeClass BtBU_Simplex1to4+instance BtPolyhedralConvexShapeClass BtBU_Simplex1to4+instance BtConvexInternalShapeClass BtBU_Simplex1to4+instance BtConvexShapeClass BtBU_Simplex1to4+instance BtCollisionShapeClass BtBU_Simplex1to4+instance BtBU_Simplex1to4Class BtBU_Simplex1to4+instance BtClass BtBU_Simplex1to4 where+  withBt (BtBU_Simplex1to4 p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtPolyhedralConvexAabbCachingShapeClass p => BtConvexHullShapeClass p+instance BtPolyhedralConvexAabbCachingShapeClass BtConvexHullShape+instance BtPolyhedralConvexShapeClass BtConvexHullShape+instance BtConvexInternalShapeClass BtConvexHullShape+instance BtConvexShapeClass BtConvexHullShape+instance BtCollisionShapeClass BtConvexHullShape+instance BtConvexHullShapeClass BtConvexHullShape+instance BtClass BtConvexHullShape where+  withBt (BtConvexHullShape p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtPolyhedralConvexAabbCachingShapeClass p => BtConvexTriangleMeshShapeClass p+instance BtPolyhedralConvexAabbCachingShapeClass BtConvexTriangleMeshShape+instance BtPolyhedralConvexShapeClass BtConvexTriangleMeshShape+instance BtConvexInternalShapeClass BtConvexTriangleMeshShape+instance BtConvexShapeClass BtConvexTriangleMeshShape+instance BtCollisionShapeClass BtConvexTriangleMeshShape+instance BtConvexTriangleMeshShapeClass BtConvexTriangleMeshShape+instance BtClass BtConvexTriangleMeshShape where+  withBt (BtConvexTriangleMeshShape p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b+class BtBU_Simplex1to4Class p => BtTetrahedronShapeExClass p+instance BtBU_Simplex1to4Class BtTetrahedronShapeEx+instance BtPolyhedralConvexAabbCachingShapeClass BtTetrahedronShapeEx+instance BtPolyhedralConvexShapeClass BtTetrahedronShapeEx+instance BtConvexInternalShapeClass BtTetrahedronShapeEx+instance BtConvexShapeClass BtTetrahedronShapeEx+instance BtCollisionShapeClass BtTetrahedronShapeEx+instance BtTetrahedronShapeExClass BtTetrahedronShapeEx+instance BtClass BtTetrahedronShapeEx where+  withBt (BtTetrahedronShapeEx p) b = (withForeignPtr p (\a -> return $ castPtr a)) >>= b
+ Physics/Bullet/Raw/LinearMath.chs view
@@ -0,0 +1,1254 @@+{-#LANGUAGE ForeignFunctionInterface#-}+#include "Bullet.h"+module Physics.Bullet.Raw.LinearMath (+module Physics.Bullet.Raw.LinearMath+) where+import Control.Monad+import Foreign.Marshal.Alloc+import Foreign.ForeignPtr+import Foreign.Ptr+import Physics.Bullet.Raw.C2HS+import Physics.Bullet.Raw.Types+import Physics.Bullet.Raw.Class+-- * CProfileIterator+{#fun cProfileIterator_free    `( CProfileIteratorClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#114>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileIterator_Get_Current_Name as cProfileIterator_Get_Current_Name    `( CProfileIteratorClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `String'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#115>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileIterator_Get_Current_Total_Calls as cProfileIterator_Get_Current_Total_Calls    `( CProfileIteratorClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#116>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileIterator_Get_Current_Total_Time as cProfileIterator_Get_Current_Total_Time    `( CProfileIteratorClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#109>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileIterator_Enter_Child as cProfileIterator_Enter_Child    `( CProfileIteratorClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ index+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#106>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileIterator_Is_Done as cProfileIterator_Is_Done    `( CProfileIteratorClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#105>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileIterator_Next as cProfileIterator_Next    `( CProfileIteratorClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#107>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileIterator_Is_Root as cProfileIterator_Is_Root    `( CProfileIteratorClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#119>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileIterator_Get_Current_Parent_Name as cProfileIterator_Get_Current_Parent_Name    `( CProfileIteratorClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `String'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#120>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileIterator_Get_Current_Parent_Total_Calls as cProfileIterator_Get_Current_Parent_Total_Calls    `( CProfileIteratorClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#121>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileIterator_Get_Current_Parent_Total_Time as cProfileIterator_Get_Current_Parent_Total_Time    `( CProfileIteratorClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#111>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileIterator_Enter_Parent as cProfileIterator_Enter_Parent    `( CProfileIteratorClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#104>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileIterator_First as cProfileIterator_First    `( CProfileIteratorClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+-- * CProfileManager+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#134>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileManager_new as cProfileManager    {  } -> `CProfileManager' mkCProfileManager* #}+{#fun cProfileManager_free    `( CProfileManagerClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#144>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileManager_Reset as cProfileManager_Reset    `( )' =>     {  } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#158>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileManager_dumpAll as cProfileManager_dumpAll    `( )' =>     {  } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#146>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileManager_Get_Frame_Count_Since_Reset as cProfileManager_Get_Frame_Count_Since_Reset    `( )' =>     {  } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#154>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileManager_Release_Iterator as cProfileManager_Release_Iterator    `(  CProfileIteratorClass p0 )' =>     {  withBt* `p0'  -- ^ iterator+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#137>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileManager_Stop_Profile as cProfileManager_Stop_Profile    `( )' =>     {  } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#139>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileManager_CleanupMemory as cProfileManager_CleanupMemory    `( )' =>     {  } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#147>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileManager_Get_Time_Since_Reset as cProfileManager_Get_Time_Since_Reset    `( )' =>     {  } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#136>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileManager_Start_Profile as cProfileManager_Start_Profile    `( )' =>     {   `String'  -- ^ name+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#145>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileManager_Increment_Frame_Counter as cProfileManager_Increment_Frame_Counter    `( )' =>     {  } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#156>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileManager_dumpRecursive as cProfileManager_dumpRecursive    `(  CProfileIteratorClass p0 )' =>     {  withBt* `p0'  -- ^ profileIterator+,  `Int'  -- ^ spacing+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#149>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileManager_Get_Iterator as cProfileManager_Get_Iterator    `( )' =>     {  } ->  `CProfileIterator' mkCProfileIterator*  #}+-- * CProfileNode+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#68>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileNode_new as cProfileNode    `( CProfileNodeClass p1 )' =>     {   `String' , withBt* `p1'  } -> `CProfileNode' mkCProfileNode* #}+{#fun cProfileNode_free    `( CProfileNodeClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#78>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileNode_Reset as cProfileNode_Reset    `( CProfileNodeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#80>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileNode_Return as cProfileNode_Return    `( CProfileNodeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#71>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileNode_Get_Sub_Node as cProfileNode_Get_Sub_Node    `( CProfileNodeClass bc )' =>     { withBt* `bc'  -- ^ +,  `String'  -- ^ name+ } ->  `CProfileNode' mkCProfileNode*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#77>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileNode_CleanupMemory as cProfileNode_CleanupMemory    `( CProfileNodeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#73>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileNode_Get_Parent as cProfileNode_Get_Parent    `( CProfileNodeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `CProfileNode' mkCProfileNode*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#83>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileNode_Get_Total_Calls as cProfileNode_Get_Total_Calls    `( CProfileNodeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#82>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileNode_Get_Name as cProfileNode_Get_Name    `( CProfileNodeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `String'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#84>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileNode_Get_Total_Time as cProfileNode_Get_Total_Time    `( CProfileNodeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#79>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileNode_Call as cProfileNode_Call    `( CProfileNodeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#74>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileNode_Get_Sibling as cProfileNode_Get_Sibling    `( CProfileNodeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `CProfileNode' mkCProfileNode*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#75>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileNode_Get_Child as cProfileNode_Get_Child    `( CProfileNodeClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `CProfileNode' mkCProfileNode*  #}+-- * CProfileSample+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#172>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun cProfileSample_new as cProfileSample    {   `String'  } -> `CProfileSample' mkCProfileSample* #}+{#fun cProfileSample_free    `( CProfileSampleClass bc )' =>     { withBt* `bc'  } -> `()' #}+-- * btBlock+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btStackAlloc.h?r=2223#28>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btStackAlloc.cpp?r=2223>+-}+{#fun btBlock_new as btBlock    {  } -> `BtBlock' mkBtBlock* #}+{#fun btBlock_free    `( BtBlockClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btStackAlloc.h?r=2223#29>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btStackAlloc.cpp?r=2223>+-}+{#fun btBlock_previous_set    `( BtBlockClass bc , BtBlockClass a )' =>     { withBt* `bc' , withBt* `a'  } -> `()' #}+-- * btChunk+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.h?r=2223#53>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.cpp?r=2223>+-}+{#fun btChunk_new as btChunk    {  } -> `BtChunk' mkBtChunk* #}+{#fun btChunk_free    `( BtChunkClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.h?r=2223#55>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.cpp?r=2223>+-}+{#fun btChunk_m_chunkCode_set    `( BtChunkClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.h?r=2223#55>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.cpp?r=2223>+-}+{#fun btChunk_m_chunkCode_get    `( BtChunkClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.h?r=2223#56>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.cpp?r=2223>+-}+{#fun btChunk_m_length_set    `( BtChunkClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.h?r=2223#56>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.cpp?r=2223>+-}+{#fun btChunk_m_length_get    `( BtChunkClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.h?r=2223#58>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.cpp?r=2223>+-}+{#fun btChunk_m_dna_nr_set    `( BtChunkClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.h?r=2223#58>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.cpp?r=2223>+-}+{#fun btChunk_m_dna_nr_get    `( BtChunkClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.h?r=2223#59>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.cpp?r=2223>+-}+{#fun btChunk_m_number_set    `( BtChunkClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.h?r=2223#59>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.cpp?r=2223>+-}+{#fun btChunk_m_number_get    `( BtChunkClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btClock+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#38>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun btClock_new as btClock    {  } -> `BtClock' mkBtClock* #}+{#fun btClock_free    `( BtClockClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#46>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun btClock_reset as btClock_reset    `( BtClockClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#50>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun btClock_getTimeMilliseconds as btClock_getTimeMilliseconds    `( BtClockClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Word64'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.h?r=2223#54>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuickprof.cpp?r=2223>+-}+{#fun btClock_getTimeMicroseconds as btClock_getTimeMicroseconds    `( BtClockClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Word64'  #}+-- * btConvexSeparatingDistanceUtil+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btTransformUtil.h?r=2223#161>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btTransformUtil.cpp?r=2223>+-}+{#fun btConvexSeparatingDistanceUtil_new as btConvexSeparatingDistanceUtil    {   `Float' ,  `Float'  } -> `BtConvexSeparatingDistanceUtil' mkBtConvexSeparatingDistanceUtil* #}+{#fun btConvexSeparatingDistanceUtil_free    `( BtConvexSeparatingDistanceUtilClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btTransformUtil.h?r=2223#173>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btTransformUtil.cpp?r=2223>+-}+{#fun btConvexSeparatingDistanceUtil_updateSeparatingDistance as btConvexSeparatingDistanceUtil_updateSeparatingDistance    `( BtConvexSeparatingDistanceUtilClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ transA+, withTransform* `Transform'  peekTransform* -- ^ transB+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btTransformUtil.h?r=2223#173>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btTransformUtil.cpp?r=2223>+-}+{#fun btConvexSeparatingDistanceUtil_updateSeparatingDistance as btConvexSeparatingDistanceUtil_updateSeparatingDistance'    `( BtConvexSeparatingDistanceUtilClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ transA+, allocaTransform-  `Transform'  peekTransform* -- ^ transB+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btTransformUtil.h?r=2223#168>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btTransformUtil.cpp?r=2223>+-}+{#fun btConvexSeparatingDistanceUtil_getConservativeSeparatingDistance as btConvexSeparatingDistanceUtil_getConservativeSeparatingDistance    `( BtConvexSeparatingDistanceUtilClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btTransformUtil.h?r=2223#205>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btTransformUtil.cpp?r=2223>+-}+{#fun btConvexSeparatingDistanceUtil_initSeparatingDistance as btConvexSeparatingDistanceUtil_initSeparatingDistance    `( BtConvexSeparatingDistanceUtilClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ separatingVector+,  `Float'  -- ^ separatingDistance+, withTransform* `Transform'  peekTransform* -- ^ transA+, withTransform* `Transform'  peekTransform* -- ^ transB+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btTransformUtil.h?r=2223#205>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btTransformUtil.cpp?r=2223>+-}+{#fun btConvexSeparatingDistanceUtil_initSeparatingDistance as btConvexSeparatingDistanceUtil_initSeparatingDistance'    `( BtConvexSeparatingDistanceUtilClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ separatingVector+,  `Float'  -- ^ separatingDistance+, allocaTransform-  `Transform'  peekTransform* -- ^ transA+, allocaTransform-  `Transform'  peekTransform* -- ^ transB+ } ->  `()'  #}+-- * btDefaultMotionState+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btDefaultMotionState.h?r=2223#14>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btDefaultMotionState.cpp?r=2223>+-}+{#fun btDefaultMotionState_new as btDefaultMotionState    {  withTransform* `Transform' , withTransform* `Transform'  } -> `BtDefaultMotionState' mkBtDefaultMotionState* #}+{#fun btDefaultMotionState_free    `( BtDefaultMotionStateClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btDefaultMotionState.h?r=2223#31>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btDefaultMotionState.cpp?r=2223>+-}+{#fun btDefaultMotionState_setWorldTransform as btDefaultMotionState_setWorldTransform    `( BtDefaultMotionStateClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ centerOfMassWorldTrans+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btDefaultMotionState.h?r=2223#31>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btDefaultMotionState.cpp?r=2223>+-}+{#fun btDefaultMotionState_setWorldTransform as btDefaultMotionState_setWorldTransform'    `( BtDefaultMotionStateClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ centerOfMassWorldTrans+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btDefaultMotionState.h?r=2223#24>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btDefaultMotionState.cpp?r=2223>+-}+{#fun btDefaultMotionState_getWorldTransform as btDefaultMotionState_getWorldTransform    `( BtDefaultMotionStateClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ centerOfMassWorldTrans+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btDefaultMotionState.h?r=2223#24>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btDefaultMotionState.cpp?r=2223>+-}+{#fun btDefaultMotionState_getWorldTransform as btDefaultMotionState_getWorldTransform'    `( BtDefaultMotionStateClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ centerOfMassWorldTrans+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btDefaultMotionState.h?r=2223#9>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btDefaultMotionState.cpp?r=2223>+-}+{#fun btDefaultMotionState_m_graphicsWorldTrans_set    `( BtDefaultMotionStateClass bc )' =>     { withBt* `bc' , withTransform* `Transform'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btDefaultMotionState.h?r=2223#9>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btDefaultMotionState.cpp?r=2223>+-}+{#fun btDefaultMotionState_m_graphicsWorldTrans_get    `( BtDefaultMotionStateClass bc )' =>     { withBt* `bc' , allocaTransform-  `Transform'  peekTransform* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btDefaultMotionState.h?r=2223#10>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btDefaultMotionState.cpp?r=2223>+-}+{#fun btDefaultMotionState_m_centerOfMassOffset_set    `( BtDefaultMotionStateClass bc )' =>     { withBt* `bc' , withTransform* `Transform'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btDefaultMotionState.h?r=2223#10>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btDefaultMotionState.cpp?r=2223>+-}+{#fun btDefaultMotionState_m_centerOfMassOffset_get    `( BtDefaultMotionStateClass bc )' =>     { withBt* `bc' , allocaTransform-  `Transform'  peekTransform* } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btDefaultMotionState.h?r=2223#11>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btDefaultMotionState.cpp?r=2223>+-}+{#fun btDefaultMotionState_m_startWorldTrans_set    `( BtDefaultMotionStateClass bc )' =>     { withBt* `bc' , withTransform* `Transform'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btDefaultMotionState.h?r=2223#11>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btDefaultMotionState.cpp?r=2223>+-}+{#fun btDefaultMotionState_m_startWorldTrans_get    `( BtDefaultMotionStateClass bc )' =>     { withBt* `bc' , allocaTransform-  `Transform'  peekTransform* } -> `()' #}+-- * btDefaultSerializer+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.h?r=2223#377>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.cpp?r=2223>+-}+{#fun btDefaultSerializer_new as btDefaultSerializer    {   `Int'  } -> `BtDefaultSerializer' mkBtDefaultSerializer* #}+{#fun btDefaultSerializer_free    `( BtDefaultSerializerClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.h?r=2223#646>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.cpp?r=2223>+-}+{#fun btDefaultSerializer_setSerializationFlags as btDefaultSerializer_setSerializationFlags    `( BtDefaultSerializerClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ flags+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.h?r=2223#461>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.cpp?r=2223>+-}+{#fun btDefaultSerializer_startSerialization as btDefaultSerializer_startSerialization    `( BtDefaultSerializerClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.h?r=2223#641>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.cpp?r=2223>+-}+{#fun btDefaultSerializer_getSerializationFlags as btDefaultSerializer_getSerializationFlags    `( BtDefaultSerializerClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.h?r=2223#472>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.cpp?r=2223>+-}+{#fun btDefaultSerializer_finishSerialization as btDefaultSerializer_finishSerialization    `( BtDefaultSerializerClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.h?r=2223#536>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.cpp?r=2223>+-}+{#fun btDefaultSerializer_getCurrentBufferSize as btDefaultSerializer_getCurrentBufferSize    `( BtDefaultSerializerClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.h?r=2223#612>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.cpp?r=2223>+-}+{#fun btDefaultSerializer_serializeName as btDefaultSerializer_serializeName    `( BtDefaultSerializerClass bc )' =>     { withBt* `bc'  -- ^ +,  `String'  -- ^ name+ } ->  `()'  #}+-- * btGeometryUtil+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btGeometryUtil.h?r=2223#24>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btGeometryUtil.cpp?r=2223>+-}+{#fun btGeometryUtil_new as btGeometryUtil    {  } -> `BtGeometryUtil' mkBtGeometryUtil* #}+{#fun btGeometryUtil_free    `( BtGeometryUtilClass bc )' =>     { withBt* `bc'  } -> `()' #}+-- * btHashInt+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btHashMap.h?r=2223#82>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btHashMap.cpp?r=2223>+-}+{#fun btHashInt_new as btHashInt    {   `Int'  } -> `BtHashInt' mkBtHashInt* #}+{#fun btHashInt_free    `( BtHashIntClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btHashMap.h?r=2223#86>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btHashMap.cpp?r=2223>+-}+{#fun btHashInt_getUid1 as btHashInt_getUid1    `( BtHashIntClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btHashMap.h?r=2223#101>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btHashMap.cpp?r=2223>+-}+{#fun btHashInt_getHash as btHashInt_getHash    `( BtHashIntClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Word32'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btHashMap.h?r=2223#91>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btHashMap.cpp?r=2223>+-}+{#fun btHashInt_setUid1 as btHashInt_setUid1    `( BtHashIntClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ uid+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btHashMap.h?r=2223#96>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btHashMap.cpp?r=2223>+-}+{#fun btHashInt_equals as btHashInt_equals    `( BtHashIntClass bc , BtHashIntClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ other+ } ->  `Bool'  #}+-- * btHashPtr+{#fun btHashPtr_free    `( BtHashPtrClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btHashMap.h?r=2223#139>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btHashMap.cpp?r=2223>+-}+{#fun btHashPtr_getHash as btHashPtr_getHash    `( BtHashPtrClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Word32'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btHashMap.h?r=2223#133>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btHashMap.cpp?r=2223>+-}+{#fun btHashPtr_equals as btHashPtr_equals    `( BtHashPtrClass bc , BtHashPtrClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ other+ } ->  `Bool'  #}+-- * btHashString+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btHashMap.h?r=2223#33>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btHashMap.cpp?r=2223>+-}+{#fun btHashString_new as btHashString    {   `String'  } -> `BtHashString' mkBtHashString* #}+{#fun btHashString_free    `( BtHashStringClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btHashMap.h?r=2223#28>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btHashMap.cpp?r=2223>+-}+{#fun btHashString_getHash as btHashString_getHash    `( BtHashStringClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Word32'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btHashMap.h?r=2223#66>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btHashMap.cpp?r=2223>+-}+{#fun btHashString_equals as btHashString_equals    `( BtHashStringClass bc , BtHashStringClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ other+ } ->  `Bool'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btHashMap.h?r=2223#51>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btHashMap.cpp?r=2223>+-}+{#fun btHashString_portableStringCompare as btHashString_portableStringCompare    `( BtHashStringClass bc )' =>     { withBt* `bc'  -- ^ +,  `String'  -- ^ src+,  `String'  -- ^ dst+ } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btHashMap.h?r=2223#26>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btHashMap.cpp?r=2223>+-}+{#fun btHashString_m_hash_set    `( BtHashStringClass bc )' =>     { withBt* `bc' ,  `Word32'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btHashMap.h?r=2223#26>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btHashMap.cpp?r=2223>+-}+{#fun btHashString_m_hash_get    `( BtHashStringClass bc )' =>     { withBt* `bc'  } ->  `Word32'   #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btHashMap.h?r=2223#25>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btHashMap.cpp?r=2223>+-}+{#fun btHashString_m_string_set    `( BtHashStringClass bc )' =>     { withBt* `bc' ,  `String'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btHashMap.h?r=2223#25>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btHashMap.cpp?r=2223>+-}+{#fun btHashString_m_string_get    `( BtHashStringClass bc )' =>     { withBt* `bc'  } ->  `String'   #}+-- * btIDebugDraw+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#112>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_draw3dText as btIDebugDraw_draw3dText    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ location+,  `String'  -- ^ textString+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#112>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_draw3dText as btIDebugDraw_draw3dText'    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ location+,  `String'  -- ^ textString+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#282>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawBox0 as btIDebugDraw_drawBox    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ bbMin+, withVector3* `Vector3'  peekVector3* -- ^ bbMax+, withVector3* `Vector3'  peekVector3* -- ^ color+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#282>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawBox0 as btIDebugDraw_drawBox'    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ bbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ bbMax+, allocaVector3-  `Vector3'  peekVector3* -- ^ color+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#282>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawBox0 as btIDebugDraw_drawBox0    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ bbMin+, withVector3* `Vector3'  peekVector3* -- ^ bbMax+, withVector3* `Vector3'  peekVector3* -- ^ color+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#282>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawBox0 as btIDebugDraw_drawBox0'    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ bbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ bbMax+, allocaVector3-  `Vector3'  peekVector3* -- ^ color+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#297>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawBox1 as btIDebugDraw_drawBox1    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ bbMin+, withVector3* `Vector3'  peekVector3* -- ^ bbMax+, withTransform* `Transform'  peekTransform* -- ^ trans+, withVector3* `Vector3'  peekVector3* -- ^ color+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#297>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawBox1 as btIDebugDraw_drawBox1'    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ bbMin+, allocaVector3-  `Vector3'  peekVector3* -- ^ bbMax+, allocaTransform-  `Transform'  peekTransform* -- ^ trans+, allocaVector3-  `Vector3'  peekVector3* -- ^ color+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#375>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawCone as btIDebugDraw_drawCone    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ radius+,  `Float'  -- ^ height+,  `Int'  -- ^ upAxis+, withTransform* `Transform'  peekTransform* -- ^ transform+, withVector3* `Vector3'  peekVector3* -- ^ color+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#375>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawCone as btIDebugDraw_drawCone'    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ radius+,  `Float'  -- ^ height+,  `Int'  -- ^ upAxis+, allocaTransform-  `Transform'  peekTransform* -- ^ transform+, allocaVector3-  `Vector3'  peekVector3* -- ^ color+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#313>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawCapsule as btIDebugDraw_drawCapsule    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ radius+,  `Float'  -- ^ halfHeight+,  `Int'  -- ^ upAxis+, withTransform* `Transform'  peekTransform* -- ^ transform+, withVector3* `Vector3'  peekVector3* -- ^ color+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#313>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawCapsule as btIDebugDraw_drawCapsule'    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ radius+,  `Float'  -- ^ halfHeight+,  `Int'  -- ^ upAxis+, allocaTransform-  `Transform'  peekTransform* -- ^ transform+, allocaVector3-  `Vector3'  peekVector3* -- ^ color+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#156>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawArc as btIDebugDraw_drawArc    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ center+, withVector3* `Vector3'  peekVector3* -- ^ normal+, withVector3* `Vector3'  peekVector3* -- ^ axis+,  `Float'  -- ^ radiusA+,  `Float'  -- ^ radiusB+,  `Float'  -- ^ minAngle+,  `Float'  -- ^ maxAngle+, withVector3* `Vector3'  peekVector3* -- ^ color+,  `Bool'  -- ^ drawSect+,  `Float'  -- ^ stepDegrees+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#156>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawArc as btIDebugDraw_drawArc'    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ center+, allocaVector3-  `Vector3'  peekVector3* -- ^ normal+, allocaVector3-  `Vector3'  peekVector3* -- ^ axis+,  `Float'  -- ^ radiusA+,  `Float'  -- ^ radiusB+,  `Float'  -- ^ minAngle+,  `Float'  -- ^ maxAngle+, allocaVector3-  `Vector3'  peekVector3* -- ^ color+,  `Bool'  -- ^ drawSect+,  `Float'  -- ^ stepDegrees+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#356>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawCylinder as btIDebugDraw_drawCylinder    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ radius+,  `Float'  -- ^ halfHeight+,  `Int'  -- ^ upAxis+, withTransform* `Transform'  peekTransform* -- ^ transform+, withVector3* `Vector3'  peekVector3* -- ^ color+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#356>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawCylinder as btIDebugDraw_drawCylinder'    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ radius+,  `Float'  -- ^ halfHeight+,  `Int'  -- ^ upAxis+, allocaTransform-  `Transform'  peekTransform* -- ^ transform+, allocaVector3-  `Vector3'  peekVector3* -- ^ color+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#110>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_reportErrorWarning as btIDebugDraw_reportErrorWarning    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +,  `String'  -- ^ warningString+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#97>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawTriangle0 as btIDebugDraw_drawTriangle    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ v0+, withVector3* `Vector3'  peekVector3* -- ^ v1+, withVector3* `Vector3'  peekVector3* -- ^ v2+, withVector3* `Vector3'  peekVector3* -- ^ arg3+, withVector3* `Vector3'  peekVector3* -- ^ arg4+, withVector3* `Vector3'  peekVector3* -- ^ arg5+, withVector3* `Vector3'  peekVector3* -- ^ color+,  `Float'  -- ^ alpha+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#97>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawTriangle0 as btIDebugDraw_drawTriangle'    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ v0+, allocaVector3-  `Vector3'  peekVector3* -- ^ v1+, allocaVector3-  `Vector3'  peekVector3* -- ^ v2+, allocaVector3-  `Vector3'  peekVector3* -- ^ arg3+, allocaVector3-  `Vector3'  peekVector3* -- ^ arg4+, allocaVector3-  `Vector3'  peekVector3* -- ^ arg5+, allocaVector3-  `Vector3'  peekVector3* -- ^ color+,  `Float'  -- ^ alpha+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#97>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawTriangle0 as btIDebugDraw_drawTriangle0    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ v0+, withVector3* `Vector3'  peekVector3* -- ^ v1+, withVector3* `Vector3'  peekVector3* -- ^ v2+, withVector3* `Vector3'  peekVector3* -- ^ arg3+, withVector3* `Vector3'  peekVector3* -- ^ arg4+, withVector3* `Vector3'  peekVector3* -- ^ arg5+, withVector3* `Vector3'  peekVector3* -- ^ color+,  `Float'  -- ^ alpha+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#97>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawTriangle0 as btIDebugDraw_drawTriangle0'    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ v0+, allocaVector3-  `Vector3'  peekVector3* -- ^ v1+, allocaVector3-  `Vector3'  peekVector3* -- ^ v2+, allocaVector3-  `Vector3'  peekVector3* -- ^ arg3+, allocaVector3-  `Vector3'  peekVector3* -- ^ arg4+, allocaVector3-  `Vector3'  peekVector3* -- ^ arg5+, allocaVector3-  `Vector3'  peekVector3* -- ^ color+,  `Float'  -- ^ alpha+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#101>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawTriangle1 as btIDebugDraw_drawTriangle1    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ v0+, withVector3* `Vector3'  peekVector3* -- ^ v1+, withVector3* `Vector3'  peekVector3* -- ^ v2+, withVector3* `Vector3'  peekVector3* -- ^ color+,  `Float'  -- ^ arg4+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#101>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawTriangle1 as btIDebugDraw_drawTriangle1'    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ v0+, allocaVector3-  `Vector3'  peekVector3* -- ^ v1+, allocaVector3-  `Vector3'  peekVector3* -- ^ v2+, allocaVector3-  `Vector3'  peekVector3* -- ^ color+,  `Float'  -- ^ arg4+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#116>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_getDebugMode as btIDebugDraw_getDebugMode    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#54>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawLine0 as btIDebugDraw_drawLine    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ from+, withVector3* `Vector3'  peekVector3* -- ^ to+, withVector3* `Vector3'  peekVector3* -- ^ color+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#54>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawLine0 as btIDebugDraw_drawLine'    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ from+, allocaVector3-  `Vector3'  peekVector3* -- ^ to+, allocaVector3-  `Vector3'  peekVector3* -- ^ color+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#54>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawLine0 as btIDebugDraw_drawLine0    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ from+, withVector3* `Vector3'  peekVector3* -- ^ to+, withVector3* `Vector3'  peekVector3* -- ^ color+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#54>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawLine0 as btIDebugDraw_drawLine0'    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ from+, allocaVector3-  `Vector3'  peekVector3* -- ^ to+, allocaVector3-  `Vector3'  peekVector3* -- ^ color+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#56>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawLine1 as btIDebugDraw_drawLine1    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ from+, withVector3* `Vector3'  peekVector3* -- ^ to+, withVector3* `Vector3'  peekVector3* -- ^ fromColor+, withVector3* `Vector3'  peekVector3* -- ^ toColor+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#56>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawLine1 as btIDebugDraw_drawLine1'    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ from+, allocaVector3-  `Vector3'  peekVector3* -- ^ to+, allocaVector3-  `Vector3'  peekVector3* -- ^ fromColor+, allocaVector3-  `Vector3'  peekVector3* -- ^ toColor+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#147>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawTransform as btIDebugDraw_drawTransform    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ transform+,  `Float'  -- ^ orthoLen+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#147>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawTransform as btIDebugDraw_drawTransform'    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ transform+,  `Float'  -- ^ orthoLen+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#118>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawAabb as btIDebugDraw_drawAabb    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ from+, withVector3* `Vector3'  peekVector3* -- ^ to+, withVector3* `Vector3'  peekVector3* -- ^ color+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#118>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawAabb as btIDebugDraw_drawAabb'    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ from+, allocaVector3-  `Vector3'  peekVector3* -- ^ to+, allocaVector3-  `Vector3'  peekVector3* -- ^ color+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#400>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawPlane as btIDebugDraw_drawPlane    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ planeNormal+,  `Float'  -- ^ planeConst+, withTransform* `Transform'  peekTransform* -- ^ transform+, withVector3* `Vector3'  peekVector3* -- ^ color+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#400>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawPlane as btIDebugDraw_drawPlane'    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ planeNormal+,  `Float'  -- ^ planeConst+, allocaTransform-  `Transform'  peekTransform* -- ^ transform+, allocaVector3-  `Vector3'  peekVector3* -- ^ color+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#108>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawContactPoint as btIDebugDraw_drawContactPoint    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ PointOnB+, withVector3* `Vector3'  peekVector3* -- ^ normalOnB+,  `Float'  -- ^ distance+,  `Int'  -- ^ lifeTime+, withVector3* `Vector3'  peekVector3* -- ^ color+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#108>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawContactPoint as btIDebugDraw_drawContactPoint'    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ PointOnB+, allocaVector3-  `Vector3'  peekVector3* -- ^ normalOnB+,  `Float'  -- ^ distance+,  `Int'  -- ^ lifeTime+, allocaVector3-  `Vector3'  peekVector3* -- ^ color+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#114>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_setDebugMode as btIDebugDraw_setDebugMode    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ debugMode+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#181>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawSpherePatch as btIDebugDraw_drawSpherePatch    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ center+, withVector3* `Vector3'  peekVector3* -- ^ up+, withVector3* `Vector3'  peekVector3* -- ^ axis+,  `Float'  -- ^ radius+,  `Float'  -- ^ minTh+,  `Float'  -- ^ maxTh+,  `Float'  -- ^ minPs+,  `Float'  -- ^ maxPs+, withVector3* `Vector3'  peekVector3* -- ^ color+,  `Float'  -- ^ stepDegrees+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#181>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawSpherePatch as btIDebugDraw_drawSpherePatch'    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ center+, allocaVector3-  `Vector3'  peekVector3* -- ^ up+, allocaVector3-  `Vector3'  peekVector3* -- ^ axis+,  `Float'  -- ^ radius+,  `Float'  -- ^ minTh+,  `Float'  -- ^ maxTh+,  `Float'  -- ^ minPs+,  `Float'  -- ^ maxPs+, allocaVector3-  `Vector3'  peekVector3* -- ^ color+,  `Float'  -- ^ stepDegrees+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#62>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawSphere0 as btIDebugDraw_drawSphere    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ radius+, withTransform* `Transform'  peekTransform* -- ^ transform+, withVector3* `Vector3'  peekVector3* -- ^ color+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#62>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawSphere0 as btIDebugDraw_drawSphere'    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ radius+, allocaTransform-  `Transform'  peekTransform* -- ^ transform+, allocaVector3-  `Vector3'  peekVector3* -- ^ color+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#62>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawSphere0 as btIDebugDraw_drawSphere0    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ radius+, withTransform* `Transform'  peekTransform* -- ^ transform+, withVector3* `Vector3'  peekVector3* -- ^ color+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#62>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawSphere0 as btIDebugDraw_drawSphere0'    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ radius+, allocaTransform-  `Transform'  peekTransform* -- ^ transform+, allocaVector3-  `Vector3'  peekVector3* -- ^ color+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#89>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawSphere1 as btIDebugDraw_drawSphere1    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +, withVector3* `Vector3'  peekVector3* -- ^ p+,  `Float'  -- ^ radius+, withVector3* `Vector3'  peekVector3* -- ^ color+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.h?r=2223#89>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btIDebugDraw.cpp?r=2223>+-}+{#fun btIDebugDraw_drawSphere1 as btIDebugDraw_drawSphere1'    `( BtIDebugDrawClass bc )' =>     { withBt* `bc'  -- ^ +, allocaVector3-  `Vector3'  peekVector3* -- ^ p+,  `Float'  -- ^ radius+, allocaVector3-  `Vector3'  peekVector3* -- ^ color+ } ->  `()'  #}+-- * btMatrix3x3DoubleData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btMatrix3x3.h?r=2223#732>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btMatrix3x3.cpp?r=2223>+-}+{#fun btMatrix3x3DoubleData_new as btMatrix3x3DoubleData    {  } -> `BtMatrix3x3DoubleData' mkBtMatrix3x3DoubleData* #}+{#fun btMatrix3x3DoubleData_free    `( BtMatrix3x3DoubleDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+-- * btMatrix3x3FloatData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btMatrix3x3.h?r=2223#726>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btMatrix3x3.cpp?r=2223>+-}+{#fun btMatrix3x3FloatData_new as btMatrix3x3FloatData    {  } -> `BtMatrix3x3FloatData' mkBtMatrix3x3FloatData* #}+{#fun btMatrix3x3FloatData_free    `( BtMatrix3x3FloatDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+-- * btMotionState+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btMotionState.h?r=2223#35>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btMotionState.cpp?r=2223>+-}+{#fun btMotionState_setWorldTransform as btMotionState_setWorldTransform    `( BtMotionStateClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ worldTrans+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btMotionState.h?r=2223#35>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btMotionState.cpp?r=2223>+-}+{#fun btMotionState_setWorldTransform as btMotionState_setWorldTransform'    `( BtMotionStateClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ worldTrans+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btMotionState.h?r=2223#32>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btMotionState.cpp?r=2223>+-}+{#fun btMotionState_getWorldTransform as btMotionState_getWorldTransform    `( BtMotionStateClass bc )' =>     { withBt* `bc'  -- ^ +, withTransform* `Transform'  peekTransform* -- ^ worldTrans+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btMotionState.h?r=2223#32>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btMotionState.cpp?r=2223>+-}+{#fun btMotionState_getWorldTransform as btMotionState_getWorldTransform'    `( BtMotionStateClass bc )' =>     { withBt* `bc'  -- ^ +, allocaTransform-  `Transform'  peekTransform* -- ^ worldTrans+ } ->  `()'  #}+-- * btPointerUid+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.h?r=2223#129>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.cpp?r=2223>+-}+{#fun btPointerUid_new as btPointerUid    {  } -> `BtPointerUid' mkBtPointerUid* #}+{#fun btPointerUid_free    `( BtPointerUidClass bc )' =>     { withBt* `bc'  } -> `()' #}+-- * btQuadWord+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.h?r=2223#129>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.cpp?r=2223>+-}+{#fun btQuadWord_new0 as btQuadWord0    {  } -> `BtQuadWord' mkBtQuadWord* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.h?r=2223#139>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.cpp?r=2223>+-}+{#fun btQuadWord_new1 as btQuadWord1    {   `Float' ,  `Float' ,  `Float'  } -> `BtQuadWord' mkBtQuadWord* #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.h?r=2223#150>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.cpp?r=2223>+-}+{#fun btQuadWord_new2 as btQuadWord2    {   `Float' ,  `Float' ,  `Float' ,  `Float'  } -> `BtQuadWord' mkBtQuadWord* #}+{#fun btQuadWord_free    `( BtQuadWordClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.h?r=2223#168>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.cpp?r=2223>+-}+{#fun btQuadWord_setMin as btQuadWord_setMin    `( BtQuadWordClass bc , BtQuadWordClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ other+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.h?r=2223#100>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.cpp?r=2223>+-}+{#fun btQuadWord_setValue0 as btQuadWord_setValue    `( BtQuadWordClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ x+,  `Float'  -- ^ y+,  `Float'  -- ^ z+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.h?r=2223#100>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.cpp?r=2223>+-}+{#fun btQuadWord_setValue0 as btQuadWord_setValue0    `( BtQuadWordClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ x+,  `Float'  -- ^ y+,  `Float'  -- ^ z+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.h?r=2223#121>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.cpp?r=2223>+-}+{#fun btQuadWord_setValue1 as btQuadWord_setValue1    `( BtQuadWordClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ x+,  `Float'  -- ^ y+,  `Float'  -- ^ z+,  `Float'  -- ^ w+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.h?r=2223#158>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.cpp?r=2223>+-}+{#fun btQuadWord_setMax as btQuadWord_setMax    `( BtQuadWordClass bc , BtQuadWordClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ other+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.h?r=2223#57>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.cpp?r=2223>+-}+{#fun btQuadWord_getX as btQuadWord_getX    `( BtQuadWordClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.h?r=2223#59>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.cpp?r=2223>+-}+{#fun btQuadWord_getY as btQuadWord_getY    `( BtQuadWordClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.h?r=2223#61>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.cpp?r=2223>+-}+{#fun btQuadWord_getZ as btQuadWord_getZ    `( BtQuadWordClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.h?r=2223#69>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.cpp?r=2223>+-}+{#fun btQuadWord_setW as btQuadWord_setW    `( BtQuadWordClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ w+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.h?r=2223#77>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.cpp?r=2223>+-}+{#fun btQuadWord_w as btQuadWord_w    `( BtQuadWordClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.h?r=2223#73>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.cpp?r=2223>+-}+{#fun btQuadWord_y as btQuadWord_y    `( BtQuadWordClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.h?r=2223#71>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.cpp?r=2223>+-}+{#fun btQuadWord_x as btQuadWord_x    `( BtQuadWordClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.h?r=2223#75>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.cpp?r=2223>+-}+{#fun btQuadWord_z as btQuadWord_z    `( BtQuadWordClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Float'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.h?r=2223#63>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.cpp?r=2223>+-}+{#fun btQuadWord_setX as btQuadWord_setX    `( BtQuadWordClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ x+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.h?r=2223#65>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.cpp?r=2223>+-}+{#fun btQuadWord_setY as btQuadWord_setY    `( BtQuadWordClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ y+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.h?r=2223#67>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btQuadWord.cpp?r=2223>+-}+{#fun btQuadWord_setZ as btQuadWord_setZ    `( BtQuadWordClass bc )' =>     { withBt* `bc'  -- ^ +,  `Float'  -- ^ z+ } ->  `()'  #}+-- * btSerializer+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.h?r=2223#100>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.cpp?r=2223>+-}+{#fun btSerializer_setSerializationFlags as btSerializer_setSerializationFlags    `( BtSerializerClass bc )' =>     { withBt* `bc'  -- ^ +,  `Int'  -- ^ flags+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.h?r=2223#78>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.cpp?r=2223>+-}+{#fun btSerializer_getCurrentBufferSize as btSerializer_getCurrentBufferSize    `( BtSerializerClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.h?r=2223#88>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.cpp?r=2223>+-}+{#fun btSerializer_startSerialization as btSerializer_startSerialization    `( BtSerializerClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.h?r=2223#98>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.cpp?r=2223>+-}+{#fun btSerializer_getSerializationFlags as btSerializer_getSerializationFlags    `( BtSerializerClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.h?r=2223#90>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.cpp?r=2223>+-}+{#fun btSerializer_finishSerialization as btSerializer_finishSerialization    `( BtSerializerClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.h?r=2223#96>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btSerializer.cpp?r=2223>+-}+{#fun btSerializer_serializeName as btSerializer_serializeName    `( BtSerializerClass bc )' =>     { withBt* `bc'  -- ^ +,  `String'  -- ^ ptr+ } ->  `()'  #}+-- * btStackAlloc+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btStackAlloc.h?r=2223#38>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btStackAlloc.cpp?r=2223>+-}+{#fun btStackAlloc_new as btStackAlloc    {   `Word32'  } -> `BtStackAlloc' mkBtStackAlloc* #}+{#fun btStackAlloc_free    `( BtStackAllocClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btStackAlloc.h?r=2223#41>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btStackAlloc.cpp?r=2223>+-}+{#fun btStackAlloc_create as btStackAlloc_create    `( BtStackAllocClass bc )' =>     { withBt* `bc'  -- ^ +,  `Word32'  -- ^ size+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btStackAlloc.h?r=2223#47>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btStackAlloc.cpp?r=2223>+-}+{#fun btStackAlloc_destroy as btStackAlloc_destroy    `( BtStackAllocClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btStackAlloc.h?r=2223#81>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btStackAlloc.cpp?r=2223>+-}+{#fun btStackAlloc_beginBlock as btStackAlloc_beginBlock    `( BtStackAllocClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `BtBlock' mkBtBlock*  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btStackAlloc.h?r=2223#63>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btStackAlloc.cpp?r=2223>+-}+{#fun btStackAlloc_getAvailableMemory as btStackAlloc_getAvailableMemory    `( BtStackAllocClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btStackAlloc.h?r=2223#89>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btStackAlloc.cpp?r=2223>+-}+{#fun btStackAlloc_endBlock as btStackAlloc_endBlock    `( BtStackAllocClass bc , BtBlockClass p0 )' =>     { withBt* `bc'  -- ^ +, withBt* `p0'  -- ^ block+ } ->  `()'  #}+-- * btTransformDoubleData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btTransform.h?r=2223#262>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btTransform.cpp?r=2223>+-}+{#fun btTransformDoubleData_new as btTransformDoubleData    {  } -> `BtTransformDoubleData' mkBtTransformDoubleData* #}+{#fun btTransformDoubleData_free    `( BtTransformDoubleDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+-- * btTransformFloatData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btTransform.h?r=2223#256>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btTransform.cpp?r=2223>+-}+{#fun btTransformFloatData_new as btTransformFloatData    {  } -> `BtTransformFloatData' mkBtTransformFloatData* #}+{#fun btTransformFloatData_free    `( BtTransformFloatDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+-- * btTransformUtil+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btTransformUtil.h?r=2223#39>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btTransformUtil.cpp?r=2223>+-}+{#fun btTransformUtil_new as btTransformUtil    {  } -> `BtTransformUtil' mkBtTransformUtil* #}+{#fun btTransformUtil_free    `( BtTransformUtilClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btTransformUtil.h?r=2223#112>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btTransformUtil.cpp?r=2223>+-}+{#fun btTransformUtil_calculateVelocity as btTransformUtil_calculateVelocity    `( )' =>     {  withTransform* `Transform'  peekTransform* -- ^ transform0+, withTransform* `Transform'  peekTransform* -- ^ transform1+,  `Float'  -- ^ timeStep+, withVector3* `Vector3'  peekVector3* -- ^ linVel+, withVector3* `Vector3'  peekVector3* -- ^ angVel+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btTransformUtil.h?r=2223#112>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btTransformUtil.cpp?r=2223>+-}+{#fun btTransformUtil_calculateVelocity as btTransformUtil_calculateVelocity'    `( )' =>     {  allocaTransform-  `Transform'  peekTransform* -- ^ transform0+, allocaTransform-  `Transform'  peekTransform* -- ^ transform1+,  `Float'  -- ^ timeStep+, allocaVector3-  `Vector3'  peekVector3* -- ^ linVel+, allocaVector3-  `Vector3'  peekVector3* -- ^ angVel+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btTransformUtil.h?r=2223#43>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btTransformUtil.cpp?r=2223>+-}+{#fun btTransformUtil_integrateTransform as btTransformUtil_integrateTransform    `( )' =>     {  withTransform* `Transform'  peekTransform* -- ^ curTrans+, withVector3* `Vector3'  peekVector3* -- ^ linvel+, withVector3* `Vector3'  peekVector3* -- ^ angvel+,  `Float'  -- ^ timeStep+, withTransform* `Transform'  peekTransform* -- ^ predictedTransform+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btTransformUtil.h?r=2223#43>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btTransformUtil.cpp?r=2223>+-}+{#fun btTransformUtil_integrateTransform as btTransformUtil_integrateTransform'    `( )' =>     {  allocaTransform-  `Transform'  peekTransform* -- ^ curTrans+, allocaVector3-  `Vector3'  peekVector3* -- ^ linvel+, allocaVector3-  `Vector3'  peekVector3* -- ^ angvel+,  `Float'  -- ^ timeStep+, allocaTransform-  `Transform'  peekTransform* -- ^ predictedTransform+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btTransformUtil.h?r=2223#82>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btTransformUtil.cpp?r=2223>+-}+{#fun btTransformUtil_calculateVelocityQuaternion as btTransformUtil_calculateVelocityQuaternion    `( )' =>     {  withVector3* `Vector3'  peekVector3* -- ^ pos0+, withVector3* `Vector3'  peekVector3* -- ^ pos1+, withQuaternion* `Quaternion'  peekQuaternion* -- ^ orn0+, withQuaternion* `Quaternion'  peekQuaternion* -- ^ orn1+,  `Float'  -- ^ timeStep+, withVector3* `Vector3'  peekVector3* -- ^ linVel+, withVector3* `Vector3'  peekVector3* -- ^ angVel+ } ->  `()'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btTransformUtil.h?r=2223#82>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btTransformUtil.cpp?r=2223>+-}+{#fun btTransformUtil_calculateVelocityQuaternion as btTransformUtil_calculateVelocityQuaternion'    `( )' =>     {  allocaVector3-  `Vector3'  peekVector3* -- ^ pos0+, allocaVector3-  `Vector3'  peekVector3* -- ^ pos1+, allocaQuaternion-  `Quaternion'  peekQuaternion* -- ^ orn0+, allocaQuaternion-  `Quaternion'  peekQuaternion* -- ^ orn1+,  `Float'  -- ^ timeStep+, allocaVector3-  `Vector3'  peekVector3* -- ^ linVel+, allocaVector3-  `Vector3'  peekVector3* -- ^ angVel+ } ->  `()'  #}+-- * btTypedObject+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btScalar.h?r=2223#512>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btScalar.cpp?r=2223>+-}+{#fun btTypedObject_new as btTypedObject    {   `Int'  } -> `BtTypedObject' mkBtTypedObject* #}+{#fun btTypedObject_free    `( BtTypedObjectClass bc )' =>     { withBt* `bc'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btScalar.h?r=2223#517>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btScalar.cpp?r=2223>+-}+{#fun btTypedObject_getObjectType as btTypedObject_getObjectType    `( BtTypedObjectClass bc )' =>     { withBt* `bc'  -- ^ + } ->  `Int'  #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btScalar.h?r=2223#516>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btScalar.cpp?r=2223>+-}+{#fun btTypedObject_m_objectType_set    `( BtTypedObjectClass bc )' =>     { withBt* `bc' ,  `Int'  } -> `()' #}+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btScalar.h?r=2223#516>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btScalar.cpp?r=2223>+-}+{#fun btTypedObject_m_objectType_get    `( BtTypedObjectClass bc )' =>     { withBt* `bc'  } ->  `Int'   #}+-- * btVector3DoubleData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btVector3.h?r=2223#719>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btVector3.cpp?r=2223>+-}+{#fun btVector3DoubleData_new as btVector3DoubleData    {  } -> `BtVector3DoubleData' mkBtVector3DoubleData* #}+{#fun btVector3DoubleData_free    `( BtVector3DoubleDataClass bc )' =>     { withBt* `bc'  } -> `()' #}+-- * btVector3FloatData+{- | <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btVector3.h?r=2223#714>+     <http://code.google.com/p/bullet/source/browse/trunk/src/LinearMath/btVector3.cpp?r=2223>+-}+{#fun btVector3FloatData_new as btVector3FloatData    {  } -> `BtVector3FloatData' mkBtVector3FloatData* #}+{#fun btVector3FloatData_free    `( BtVector3FloatDataClass bc )' =>     { withBt* `bc'  } -> `()' #}
+ Physics/Bullet/Raw/Types.hs view
@@ -0,0 +1,130 @@+module Physics.Bullet.Raw.Types where++import Foreign.Marshal.Alloc+import Foreign.Marshal.Array+import Foreign.ForeignPtr+import Foreign.Storable+import Foreign.Ptr++type Scalar     = Float+data Vector3    = Vector3 !Scalar !Scalar !Scalar+    deriving Show+data Vector4    = Vector4 !Scalar !Scalar !Scalar !Scalar+    deriving Show+data Matrix3x3  = Matrix3x3 !Vector3 !Vector3 !Vector3+    deriving Show+data Quaternion = Quaternion !Scalar !Scalar !Scalar !Scalar+    deriving Show+data Transform  = Transform !Matrix3x3 !Vector3+    deriving Show++-- Vector3+allocaVector3 :: (Storable a) => (Ptr a -> IO b) -> IO b+allocaVector3 = allocaBytes 12++withVector3 :: Vector3 -> (Ptr a -> IO  b) -> IO  b+withVector3 v f = allocaVector3 $ \p -> do+    pokeVector3 v p+    f $ castPtr p++pokeVector3 (Vector3 x y z) p = do+    pokeElemOff p 0 x +    pokeElemOff p 1 y+    pokeElemOff p 2 z++peekVector3 :: Ptr a -> IO Vector3+peekVector3 p' = do+    let p = castPtr p'+    x <- peekElemOff p 0+    y <- peekElemOff p 1+    z <- peekElemOff p 2+    return $ Vector3 x y z++-- Vector4+allocaVector4 :: (Storable a) => (Ptr a -> IO b) -> IO b+allocaVector4 = allocaBytes 16++withVector4 :: Vector4 -> (Ptr a -> IO  b) -> IO  b+withVector4 v f = allocaVector4 $ \p -> do+    pokeVector4 v p+    f $ castPtr p++pokeVector4 (Vector4 x y z w) p = do+    pokeElemOff p 0 x +    pokeElemOff p 1 y+    pokeElemOff p 2 z+    pokeElemOff p 3 w++peekVector4 :: Ptr a -> IO Vector4+peekVector4 p' = do+    let p = castPtr p'+    x <- peekElemOff p 0+    y <- peekElemOff p 1+    z <- peekElemOff p 2+    w <- peekElemOff p 3+    return $ Vector4 x y z w++-- Quaternion+allocaQuaternion :: (Storable a) => (Ptr a -> IO b) -> IO b+allocaQuaternion = allocaBytes 16++withQuaternion :: Quaternion -> (Ptr a -> IO  b) -> IO  b+withQuaternion v f = allocaQuaternion $ \p -> do+    pokeQuaternion v p+    f $ castPtr p++pokeQuaternion (Quaternion x y z w) p = do+    pokeElemOff p 0 x +    pokeElemOff p 1 y+    pokeElemOff p 2 z+    pokeElemOff p 3 w++peekQuaternion :: Ptr a -> IO Quaternion+peekQuaternion p' = do+    let p = castPtr p'+    x <- peekElemOff p 0+    y <- peekElemOff p 1+    z <- peekElemOff p 2+    w <- peekElemOff p 3+    return $ Quaternion x y z w++-- Matrix3x3+allocaMatrix3x3 :: (Storable a) => (Ptr a -> IO b) -> IO b+allocaMatrix3x3 = allocaBytes 36++withMatrix3x3 :: Matrix3x3 -> (Ptr a -> IO  b) -> IO  b+withMatrix3x3 v f = allocaMatrix3x3 $ \p -> do+    pokeMatrix3x3 v p+    f $ castPtr p++pokeMatrix3x3 (Matrix3x3 a b c) p = do+    pokeVector3 a p+    pokeVector3 b $ plusPtr p 12+    pokeVector3 c $ plusPtr p 24++peekMatrix3x3 :: Ptr a -> IO Matrix3x3+peekMatrix3x3 p = do+    a <- peekVector3 p+    b <- peekVector3 $ plusPtr p 12+    c <- peekVector3 $ plusPtr p 24+    return $ Matrix3x3 a b c++-- Transform+allocaTransform :: (Storable a) => (Ptr a -> IO b) -> IO b+allocaTransform = allocaBytes 48++withTransform :: Transform -> (Ptr a -> IO  b) -> IO  b+withTransform v f = allocaTransform $ \p -> do+    pokeTransform v p+    f $ castPtr p++pokeTransform (Transform m v) p = do+    pokeMatrix3x3 m p+    pokeVector3 v $ plusPtr p 36++peekTransform :: Ptr a -> IO Transform+peekTransform p = do+    m <- peekMatrix3x3 p+    v <- peekVector3 $ plusPtr p 36+    return $ Transform m v+
+ Physics/Bullet/Raw/Utils.hs view
@@ -0,0 +1,136 @@+module Physics.Bullet.Raw.Utils where++import Control.Monad as M++import Physics.Bullet.Raw+import Physics.Bullet.Raw.Types+import Physics.Bullet.Raw.Class++nullVector3 :: Vector3+nullVector3 = Vector3 0 0 0++nullMatrix3x3 :: Matrix3x3+nullMatrix3x3 = Matrix3x3 nullVector3 nullVector3 nullVector3++idMatrix3x3 :: Matrix3x3+idMatrix3x3 = Matrix3x3 (Vector3 1 0 0)+                        (Vector3 0 1 0)+                        (Vector3 0 0 1)++idTransform :: Transform+idTransform = Transform idMatrix3x3 nullVector3++simpleBtDiscreteDynamicsWorldM :: IO BtDiscreteDynamicsWorld+simpleBtDiscreteDynamicsWorldM = do+    dc <- btDefaultCollisionConstructionInfo+    c <- btDefaultCollisionConfiguration dc+    +    d <- btCollisionDispatcher c+    hc <- btHashedOverlappingPairCache+    b <- btDbvtBroadphase hc+    s <- btSequentialImpulseConstraintSolver+    btDiscreteDynamicsWorld d b s c++simpleBtContinuousDynamicsWorldM :: IO BtContinuousDynamicsWorld+simpleBtContinuousDynamicsWorldM = do+    dc <- btDefaultCollisionConstructionInfo+    c <- btDefaultCollisionConfiguration dc+    +    d <- btCollisionDispatcher c+    hc <- btHashedOverlappingPairCache+    b <- btDbvtBroadphase hc+    s <- btSequentialImpulseConstraintSolver+    btContinuousDynamicsWorld d b s c++localCreateRigidBodyM :: (BtDynamicsWorldClass bc, BtCollisionShapeClass p2) => bc -> Float -> Transform -> p2 -> IO (BtDefaultMotionState, BtRigidBody)+localCreateRigidBodyM dw mass startTransform shape = do+    inertia <- case mass /= 0 of+        True    -> btCollisionShape_calculateLocalInertia shape mass nullVector3+        False   -> return nullVector3+    +    motionState <- btDefaultMotionState startTransform idTransform+    body <- btRigidBody1 mass motionState shape inertia+    btCollisionObject_setContactProcessingThreshold body (1e30)+    btDynamicsWorld_addRigidBody dw body+    return (motionState,body)++mkVehicleM :: (BtDynamicsWorldClass bc,  BtCollisionShapeClass p1) => bc -> p1 -> Float -> IO (BtDefaultMotionState, BtRigidBody, BtRaycastVehicle)+mkVehicleM dw chassisShape mass = do+    --chassisShape <- btBoxShape $ Vector3 1 0.6 2.2+    compound <- btCompoundShape True+    let localTrans = Transform idMatrix3x3 $ Vector3 0 0 0+        wheelRadius = 0.5+        wheelWidth = 0.4+    btCompoundShape_addChildShape compound localTrans chassisShape+    +    (carMotionSate,carChassis) <- localCreateRigidBodyM dw mass idTransform compound+    --(carMotionSate,carChassis) <- localCreateRigidBody dw 8 (Transform idMatrix3x3 $ Vector3 480.0 20.3 (-520.0)) compound+    --wheelShape <- btCylinderShapeX $ Vector3 wheelWidth wheelRadius wheelRadius+    btRigidBody_setCenterOfMassTransform carChassis idTransform+    btRigidBody_setLinearVelocity carChassis nullVector3+    btRigidBody_setAngularVelocity carChassis nullVector3++    tuning <- btRaycastVehicle_btVehicleTuning    +    vehicleRayCaster <- btDefaultVehicleRaycaster dw+    vehicle <- btRaycastVehicle tuning carChassis vehicleRayCaster+    btCollisionObject_setActivationState carChassis 4 -- #define DISABLE_DEACTIVATION 4+    btDynamicsWorld_addVehicle dw vehicle+{-+#ifdef FORCE_ZAXIS_UP+		int rightIndex = 0; +		int upIndex = 2; +		int forwardIndex = 1;+		btVector3 wheelDirectionCS0(0,0,-1);+		btVector3 wheelAxleCS(1,0,0);+#else+		int rightIndex = 0;+		int upIndex = 1;+		int forwardIndex = 2;+		btVector3 wheelDirectionCS0(0,-1,0);+		btVector3 wheelAxleCS(-1,0,0);+#endif+-}+    btRaycastVehicle_setCoordinateSystem vehicle 0 1 2+    let connectionHeight        = 0.0+        cCUBE_HALF_EXTENTS      = 1.2+        wheelDirectionCS0       = Vector3 0 (-1) 0+        wheelAxleCS             = Vector3 (-1) 0 0+        suspensionRestLength    = 0.6+        suspensionStiffness     = 20+        suspensionDamping       = 2.3+        suspensionCompression   = 4.4+        rollInfluence           = 0.1+        wheelFriction           = 1000+        +    btRaycastVehicle_addWheel vehicle +                                (Vector3 (cCUBE_HALF_EXTENTS-(0.3*wheelWidth)) connectionHeight (2*cCUBE_HALF_EXTENTS-wheelRadius))+                                wheelDirectionCS0 wheelAxleCS suspensionRestLength wheelRadius tuning True++    btRaycastVehicle_addWheel vehicle +                                (Vector3 (-cCUBE_HALF_EXTENTS+(0.3*wheelWidth)) connectionHeight (2*cCUBE_HALF_EXTENTS-wheelRadius))+                                wheelDirectionCS0 wheelAxleCS suspensionRestLength wheelRadius tuning True++    btRaycastVehicle_addWheel vehicle +                                (Vector3 (-cCUBE_HALF_EXTENTS+(0.3*wheelWidth)) connectionHeight (-2*cCUBE_HALF_EXTENTS+wheelRadius))+                                wheelDirectionCS0 wheelAxleCS suspensionRestLength wheelRadius tuning False++    btRaycastVehicle_addWheel vehicle +                                (Vector3 (cCUBE_HALF_EXTENTS-(0.3*wheelWidth)) connectionHeight (-2*cCUBE_HALF_EXTENTS+wheelRadius))+                                wheelDirectionCS0 wheelAxleCS suspensionRestLength wheelRadius tuning False+    +    numWheels <- btRaycastVehicle_getNumWheels vehicle+    M.forM_ [0..numWheels-1] $ \i -> do+        wheel <- btRaycastVehicle_getWheelInfo vehicle i+        btWheelInfo_m_suspensionStiffness_set wheel suspensionStiffness+        btWheelInfo_m_wheelsDampingRelaxation_set wheel suspensionDamping+        btWheelInfo_m_wheelsDampingCompression_set wheel suspensionCompression+        btWheelInfo_m_frictionSlip_set wheel wheelFriction+        btWheelInfo_m_rollInfluence_set wheel rollInfluence+    M.forM_ [0..numWheels-1] $ \i -> do+        wheel <- btRaycastVehicle_getWheelInfo vehicle i+        print =<< btWheelInfo_m_suspensionStiffness_get wheel+        print =<< btWheelInfo_m_wheelsDampingRelaxation_get wheel+        print =<< btWheelInfo_m_wheelsDampingCompression_get wheel+        print =<< btWheelInfo_m_frictionSlip_get wheel+        print =<< btWheelInfo_m_rollInfluence_get wheel+    return (carMotionSate,carChassis,vehicle)
− README
@@ -1,17 +0,0 @@-Compile:-    - get bullet physics engine:-        svn checkout http://bullet.googlecode.com/svn/trunk/ bullet-read-only--    - compile and install the library:-        cd bullet-read-only-        cmake .-        make-        sudo make install--    - compile and install the haskell bullet binding:-        cabal install (run command in the bullet.cabal's directory)--    - compile and run the example (needs OpenGL and GLUT):-        cd Examples-        ghc --make -O2 BulletExample-        ./BulletExample
bullet.cabal view
@@ -1,5 +1,5 @@ Name:                bullet-Version:             0.1.1+Version:             0.2.1 Synopsis:            A wrapper for the Bullet physics engine. Description:         A wrapper for the Bullet physics engine. License:             BSD3@@ -9,24 +9,336 @@ Homepage:            http://www.haskell.org/haskellwiki/Bullet Stability:           Experimental Category:            Physics-Tested-With:         GHC == 6.10.1, GHC == 6.10.4+Tested-With:         GHC == 6.10.1, GHC == 6.10.4, GHC == 6.12.1, GHC == 7.0.3 Cabal-Version:       >= 1.2 Build-Type:          Simple -Extra-Source-Files:  cbits/bullet.h-                     Examples/BulletExample.hs-                     Examples/bullet-example-1.png-                     Examples/bullet-example-2.png-                     README+Extra-Source-Files:+  cbits/Bullet.h+  cbits/HaskellBulletAPI.h -Library-  Build-Depends:       base >= 4 && < 5+  bullet/LICENSE+  bullet/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h+  bullet/BulletCollision/BroadphaseCollision/btDispatcher.h+  bullet/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h+  bullet/BulletCollision/BroadphaseCollision/btAxisSweep3.h+  bullet/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h+  bullet/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h+  bullet/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h+  bullet/BulletCollision/BroadphaseCollision/btDbvt.h+  bullet/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h+  bullet/BulletCollision/BroadphaseCollision/btQuantizedBvh.h+  bullet/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h+  bullet/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h+  bullet/BulletCollision/CollisionDispatch/SphereTriangleDetector.h+  bullet/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h+  bullet/BulletCollision/CollisionDispatch/btCollisionWorld.h+  bullet/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h+  bullet/BulletCollision/CollisionDispatch/btCollisionObject.h+  bullet/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.h+  bullet/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h+  bullet/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.h+  bullet/BulletCollision/CollisionDispatch/btSimulationIslandManager.h+  bullet/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h+  bullet/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.h+  bullet/BulletCollision/CollisionDispatch/btCollisionDispatcher.h+  bullet/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h+  bullet/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h+  bullet/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.h+  bullet/BulletCollision/CollisionDispatch/btManifoldResult.h+  bullet/BulletCollision/CollisionDispatch/btGhostObject.h+  bullet/BulletCollision/CollisionDispatch/btBoxBoxDetector.h+  bullet/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h+  bullet/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h+  bullet/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h+  bullet/BulletCollision/CollisionDispatch/btUnionFind.h+  bullet/BulletCollision/CollisionDispatch/btInternalEdgeUtility.h+  bullet/BulletCollision/CollisionDispatch/btCollisionCreateFunc.h+  bullet/BulletCollision/CollisionDispatch/btCollisionConfiguration.h+  bullet/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h+  bullet/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h+  bullet/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h+  bullet/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h+  bullet/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h+  bullet/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h+  bullet/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h+  bullet/BulletCollision/NarrowPhaseCollision/btConvexCast.h+  bullet/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h+  bullet/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.h+  bullet/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h+  bullet/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h+  bullet/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h+  bullet/BulletCollision/NarrowPhaseCollision/btPointCollector.h+  bullet/BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h+  bullet/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h+  bullet/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h+  bullet/BulletCollision/CollisionShapes/btStaticPlaneShape.h+  bullet/BulletCollision/CollisionShapes/btCollisionShape.h+  bullet/BulletCollision/CollisionShapes/btTriangleCallback.h+  bullet/BulletCollision/CollisionShapes/btCollisionMargin.h+  bullet/BulletCollision/CollisionShapes/btEmptyShape.h+  bullet/BulletCollision/CollisionShapes/btOptimizedBvh.h+  bullet/BulletCollision/CollisionShapes/btMultiSphereShape.h+  bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h+  bullet/BulletCollision/CollisionShapes/btTriangleMesh.h+  bullet/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h+  bullet/BulletCollision/CollisionShapes/btConvexPointCloudShape.h+  bullet/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.h+  bullet/BulletCollision/CollisionShapes/btTetrahedronShape.h+  bullet/BulletCollision/CollisionShapes/btShapeHull.h+  bullet/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h+  bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.h+  bullet/BulletCollision/CollisionShapes/btConvexPolyhedron.h+  bullet/BulletCollision/CollisionShapes/btMaterial.h+  bullet/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h+  bullet/BulletCollision/CollisionShapes/btTriangleInfoMap.h+  bullet/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h+  bullet/BulletCollision/CollisionShapes/btCapsuleShape.h+  bullet/BulletCollision/CollisionShapes/btMinkowskiSumShape.h+  bullet/BulletCollision/CollisionShapes/btTriangleShape.h+  bullet/BulletCollision/CollisionShapes/btConvexHullShape.h+  bullet/BulletCollision/CollisionShapes/btBox2dShape.h+  bullet/BulletCollision/CollisionShapes/btCylinderShape.h+  bullet/BulletCollision/CollisionShapes/btBoxShape.h+  bullet/BulletCollision/CollisionShapes/btConeShape.h+  bullet/BulletCollision/CollisionShapes/btTriangleBuffer.h+  bullet/BulletCollision/CollisionShapes/btSphereShape.h+  bullet/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.h+  bullet/BulletCollision/CollisionShapes/btTriangleMeshShape.h+  bullet/BulletCollision/CollisionShapes/btConcaveShape.h+  bullet/BulletCollision/CollisionShapes/btCompoundShape.h+  bullet/BulletCollision/CollisionShapes/btConvexInternalShape.h+  bullet/BulletCollision/CollisionShapes/btConvexShape.h+  bullet/BulletCollision/CollisionShapes/btStridingMeshInterface.h+  bullet/BulletCollision/CollisionShapes/btConvex2dShape.h+  bullet/BulletCollision/CollisionShapes/btUniformScalingShape.h+  bullet/BulletCollision/Gimpact/gim_linear_math.h+  bullet/BulletCollision/Gimpact/btGenericPoolAllocator.h+  bullet/BulletCollision/Gimpact/gim_bitset.h+  bullet/BulletCollision/Gimpact/gim_memory.h+  bullet/BulletCollision/Gimpact/btGImpactBvh.h+  bullet/BulletCollision/Gimpact/gim_geometry.h+  bullet/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h+  bullet/BulletCollision/Gimpact/btClipPolygon.h+  bullet/BulletCollision/Gimpact/gim_geom_types.h+  bullet/BulletCollision/Gimpact/gim_basic_geometry_operations.h+  bullet/BulletCollision/Gimpact/gim_array.h+  bullet/BulletCollision/Gimpact/btTriangleShapeEx.h+  bullet/BulletCollision/Gimpact/btGeometryOperations.h+  bullet/BulletCollision/Gimpact/gim_tri_collision.h+  bullet/BulletCollision/Gimpact/gim_radixsort.h+  bullet/BulletCollision/Gimpact/btBoxCollision.h+  bullet/BulletCollision/Gimpact/gim_box_collision.h+  bullet/BulletCollision/Gimpact/gim_box_set.h+  bullet/BulletCollision/Gimpact/gim_hash_table.h+  bullet/BulletCollision/Gimpact/gim_math.h+  bullet/BulletCollision/Gimpact/btQuantization.h+  bullet/BulletCollision/Gimpact/gim_clip_polygon.h+  bullet/BulletCollision/Gimpact/btContactProcessing.h+  bullet/BulletCollision/Gimpact/gim_contact.h+  bullet/BulletCollision/Gimpact/btGImpactQuantizedBvh.h+  bullet/BulletCollision/Gimpact/btGImpactMassUtil.h+  bullet/BulletCollision/Gimpact/btGImpactShape.h+  bullet/btBulletCollisionCommon.h+  bullet/LinearMath/btList.h+  bullet/LinearMath/btScalar.h+  bullet/LinearMath/btSerializer.h+  bullet/LinearMath/btRandom.h+  bullet/LinearMath/btPoolAllocator.h+  bullet/LinearMath/btQuickprof.h+  bullet/LinearMath/btMinMax.h+  bullet/LinearMath/btAabbUtil2.h+  bullet/LinearMath/btConvexHull.h+  bullet/LinearMath/btGeometryUtil.h+  bullet/LinearMath/btQuaternion.h+  bullet/LinearMath/btMotionState.h+  bullet/LinearMath/btTransform.h+  bullet/LinearMath/btConvexHullComputer.h+  bullet/LinearMath/btAlignedAllocator.h+  bullet/LinearMath/btVector3.h+  bullet/LinearMath/btTransformUtil.h+  bullet/LinearMath/btAlignedObjectArray.h+  bullet/LinearMath/btDefaultMotionState.h+  bullet/LinearMath/btQuadWord.h+  bullet/LinearMath/btIDebugDraw.h+  bullet/LinearMath/btStackAlloc.h+  bullet/LinearMath/btMatrix3x3.h+  bullet/LinearMath/btHashMap.h+  bullet/BulletMultiThreaded/btGpuUtilsSharedCode.h+  bullet/BulletMultiThreaded/SpuGatheringCollisionDispatcher.h+  bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuContactResult.h+  bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.h+  bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/boxBoxDistance.h+  bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/Box.h+  bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuCollisionShapes.h+  bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuPreferredPenetrationDirections.h+  bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuLocalSupport.h+  bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuConvexPenetrationDepthSolver.h+  bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.h+  bullet/BulletMultiThreaded/PlatformDefinitions.h+  bullet/BulletMultiThreaded/PosixThreadSupport.h+  bullet/BulletMultiThreaded/btGpuUtilsSharedDefs.h+  bullet/BulletMultiThreaded/SpuDoubleBuffer.h+  bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolverLinkData_DX11.h+  bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolverVertexBuffer_DX11.h+  bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolverVertexData_DX11.h+  bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolver_DX11SIMDAware.h+  bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolverLinkData_DX11SIMDAware.h+  bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolverBuffer_DX11.h+  bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolver_DX11.h+  bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolverTriangleData_DX11.h+  bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverLinkData_OpenCL.h+  bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverTriangleData_OpenCL.h+  bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverBuffer_OpenCL.h+  bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolver_OpenCL.h+  bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverOutputCLtoGL.h+  bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolver_OpenCLSIMDAware.h+  bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverVertexBuffer_OpenGL.h+  bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverVertexData_OpenCL.h+  bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverLinkData_OpenCLSIMDAware.h+  bullet/BulletMultiThreaded/GpuSoftBodySolvers/CPU/btSoftBodySolverData.h+  bullet/BulletMultiThreaded/GpuSoftBodySolvers/CPU/btSoftBodySolver_CPU.h+  bullet/BulletMultiThreaded/HeapManager.h+  bullet/BulletMultiThreaded/btGpuDefines.h+  bullet/BulletMultiThreaded/TrbStateVec.h+  bullet/BulletMultiThreaded/SpuCollisionTaskProcess.h+  bullet/BulletMultiThreaded/btGpu3DGridBroadphaseSharedTypes.h+  bullet/BulletMultiThreaded/SpuLibspe2Support.h+  bullet/BulletMultiThreaded/btGpu3DGridBroadphaseSharedCode.h+  bullet/BulletMultiThreaded/SpuSync.h+  bullet/BulletMultiThreaded/vectormath2bullet.h+  bullet/BulletMultiThreaded/SequentialThreadSupport.h+  bullet/BulletMultiThreaded/Win32ThreadSupport.h+  bullet/BulletMultiThreaded/SpuCollisionObjectWrapper.h+  bullet/BulletMultiThreaded/btThreadSupportInterface.h+  bullet/BulletMultiThreaded/PpuAddressSpace.h+  bullet/BulletMultiThreaded/btParallelConstraintSolver.h+  bullet/BulletMultiThreaded/SpuContactManifoldCollisionAlgorithm.h+  bullet/BulletMultiThreaded/SpuSampleTaskProcess.h+  bullet/BulletMultiThreaded/btGpu3DGridBroadphaseSharedDefs.h+  bullet/BulletMultiThreaded/SpuSampleTask/SpuSampleTask.h+  bullet/BulletMultiThreaded/TrbDynBody.h+  bullet/BulletMultiThreaded/SpuFakeDma.h+  bullet/BulletMultiThreaded/btGpu3DGridBroadphase.h+  bullet/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h+  bullet/BulletDynamics/ConstraintSolver/btConstraintSolver.h+  bullet/BulletDynamics/ConstraintSolver/btTypedConstraint.h+  bullet/BulletDynamics/ConstraintSolver/btHinge2Constraint.h+  bullet/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h+  bullet/BulletDynamics/ConstraintSolver/btHingeConstraint.h+  bullet/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h+  bullet/BulletDynamics/ConstraintSolver/btContactSolverInfo.h+  bullet/BulletDynamics/ConstraintSolver/btSolverConstraint.h+  bullet/BulletDynamics/ConstraintSolver/btJacobianEntry.h+  bullet/BulletDynamics/ConstraintSolver/btUniversalConstraint.h+  bullet/BulletDynamics/ConstraintSolver/btSliderConstraint.h+  bullet/BulletDynamics/ConstraintSolver/btSolverBody.h+  bullet/BulletDynamics/ConstraintSolver/btContactConstraint.h+  bullet/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h+  bullet/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.h+  bullet/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h+  bullet/BulletDynamics/Character/btKinematicCharacterController.h+  bullet/BulletDynamics/Character/btCharacterControllerInterface.h+  bullet/BulletDynamics/Dynamics/btContinuousDynamicsWorld.h+  bullet/BulletDynamics/Dynamics/btRigidBody.h+  bullet/BulletDynamics/Dynamics/btDynamicsWorld.h+  bullet/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h+  bullet/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h+  bullet/BulletDynamics/Dynamics/btActionInterface.h+  bullet/BulletDynamics/Vehicle/btVehicleRaycaster.h+  bullet/BulletDynamics/Vehicle/btRaycastVehicle.h+  bullet/BulletDynamics/Vehicle/btWheelInfo.h+  bullet/Bullet-C-Api.h+  bullet/vectormath/vmInclude.h+  bullet/vectormath/scalar/floatInVec.h+  bullet/vectormath/scalar/boolInVec.h+  bullet/vectormath/scalar/mat_aos.h+  bullet/vectormath/scalar/quat_aos.h+  bullet/vectormath/scalar/vectormath_aos.h+  bullet/vectormath/scalar/vec_aos.h+  bullet/vectormath/sse/vecidx_aos.h+  bullet/vectormath/sse/floatInVec.h+  bullet/vectormath/sse/boolInVec.h+  bullet/vectormath/sse/mat_aos.h+  bullet/vectormath/sse/quat_aos.h+  bullet/vectormath/sse/vectormath_aos.h+  bullet/vectormath/sse/vec_aos.h+  bullet/MiniCL/cl_gl.h+  bullet/MiniCL/cl.h+  bullet/MiniCL/MiniCLTaskScheduler.h+  bullet/MiniCL/cl_MiniCL_Defs.h+  bullet/MiniCL/cl_platform.h+  bullet/MiniCL/MiniCLTask/MiniCLTask.h+  bullet/btBulletDynamicsCommon.h+  bullet/BulletSoftBody/btSoftBodySolverVertexBuffer.h+  bullet/BulletSoftBody/btSoftBody.h+  bullet/BulletSoftBody/btDefaultSoftBodySolver.h+  bullet/BulletSoftBody/btSoftRigidDynamicsWorld.h+  bullet/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h+  bullet/BulletSoftBody/btSoftBodyInternals.h+  bullet/BulletSoftBody/btSparseSDF.h+  bullet/BulletSoftBody/btSoftBodyHelpers.h+  bullet/BulletSoftBody/btSoftBodyData.h+  bullet/BulletSoftBody/btSoftSoftCollisionAlgorithm.h+  bullet/BulletSoftBody/btSoftRigidCollisionAlgorithm.h+  bullet/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h+  bullet/BulletSoftBody/btSoftBodySolvers.h -  Exposed-Modules:     Physics.Bullet+  Physics/Bullet/Raw/BulletCollision/BroadphaseCollision.chs+  Physics/Bullet/Raw/BulletCollision/CollisionDispatch.chs+  Physics/Bullet/Raw/BulletCollision/CollisionShapes.chs+  Physics/Bullet/Raw/BulletCollision/Gimpact.chs+  Physics/Bullet/Raw/BulletCollision/NarrowPhaseCollision.chs+  Physics/Bullet/Raw/BulletCollision.chs+  Physics/Bullet/Raw/BulletDynamics/ConstraintSolver.chs+  Physics/Bullet/Raw/BulletDynamics/Dynamics.chs+  Physics/Bullet/Raw/BulletDynamics/Vehicle.chs+  Physics/Bullet/Raw/BulletDynamics.chs+  --Physics/BulletRaw/BulletMultiThreaded/SpuNarrowPhaseCollisionTask.chs+  --Physics/BulletRaw/BulletMultiThreaded.chs+  Physics/Bullet/Raw/BulletSoftBody.chs+  Physics/Bullet/Raw/Class.chs+  Physics/Bullet/Raw/LinearMath.chs+  Physics/Bullet/Raw.chs +Library+  Build-Depends:       base >= 4 && < 5,+                       vect >= 0.4.6 && < 1++  Build-tools:         c2hs+  Exposed-Modules:     Physics.Bullet.Raw.C2HS+                       Physics.Bullet.Raw.Types+                       Physics.Bullet.Raw.Utils+                       Physics.Bullet.Raw.BulletCollision.BroadphaseCollision+                       Physics.Bullet.Raw.BulletCollision.CollisionDispatch+                       Physics.Bullet.Raw.BulletCollision.CollisionShapes+                       Physics.Bullet.Raw.BulletCollision.Gimpact+                       Physics.Bullet.Raw.BulletCollision.NarrowPhaseCollision+                       Physics.Bullet.Raw.BulletCollision+                       Physics.Bullet.Raw.BulletDynamics.ConstraintSolver+                       Physics.Bullet.Raw.BulletDynamics.Dynamics+                       Physics.Bullet.Raw.BulletDynamics.Vehicle+                       Physics.Bullet.Raw.BulletDynamics+                       --Physics.Bullet.Raw.BulletMultiThreaded.SpuNarrowPhaseCollisionTask+                       --Physics.Bullet.Raw.BulletMultiThreaded+                       Physics.Bullet.Raw.BulletSoftBody+                       Physics.Bullet.Raw.Class+                       Physics.Bullet.Raw.LinearMath+                       Physics.Bullet.Raw   Hs-Source-Dirs:      .   Extensions:          ForeignFunctionInterface-  Extra-Libraries:     BulletDynamics LinearMath BulletCollision -  C-Sources:           cbits/bullet.cpp-  Include-Dirs:        cbits+  if arch(i386)+    cc-options:          -march=i686 -m32 -msse2+  C-Sources:           cbits/Bullet.cpp+                       cbits/GLDebugDrawer.cpp++  if os(linux)+    Pkgconfig-Depends:   bullet+    Include-Dirs:        cbits+  else+    Extra-Libraries:     BulletSoftBody BulletDynamics BulletCollision LinearMath stdc+++                         --BulletMultiThreaded GIMPACTUtils ConvexDecomposition+    Include-Dirs:        cbits bullet++  --ghc-options: -O2
+ bullet/Bullet-C-Api.h view
@@ -0,0 +1,176 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++/*+	Draft high-level generic physics C-API. For low-level access, use the physics SDK native API's.+	Work in progress, functionality will be added on demand.++	If possible, use the richer Bullet C++ API, by including "btBulletDynamicsCommon.h"+*/++#ifndef BULLET_C_API_H+#define BULLET_C_API_H++#define PL_DECLARE_HANDLE(name) typedef struct name##__ { int unused; } *name++#ifdef BT_USE_DOUBLE_PRECISION+typedef double	plReal;+#else+typedef float	plReal;+#endif++typedef plReal	plVector3[3];+typedef plReal	plQuaternion[4];++#ifdef __cplusplus+extern "C" { +#endif++/**	Particular physics SDK (C-API) */+	PL_DECLARE_HANDLE(plPhysicsSdkHandle);++/** 	Dynamics world, belonging to some physics SDK (C-API)*/+	PL_DECLARE_HANDLE(plDynamicsWorldHandle);++/** Rigid Body that can be part of a Dynamics World (C-API)*/	+	PL_DECLARE_HANDLE(plRigidBodyHandle);++/** 	Collision Shape/Geometry, property of a Rigid Body (C-API)*/+	PL_DECLARE_HANDLE(plCollisionShapeHandle);++/** Constraint for Rigid Bodies (C-API)*/+	PL_DECLARE_HANDLE(plConstraintHandle);++/** Triangle Mesh interface (C-API)*/+	PL_DECLARE_HANDLE(plMeshInterfaceHandle);++/** Broadphase Scene/Proxy Handles (C-API)*/+	PL_DECLARE_HANDLE(plCollisionBroadphaseHandle);+	PL_DECLARE_HANDLE(plBroadphaseProxyHandle);+	PL_DECLARE_HANDLE(plCollisionWorldHandle);++/**+	Create and Delete a Physics SDK	+*/++	extern	plPhysicsSdkHandle	plNewBulletSdk(void); //this could be also another sdk, like ODE, PhysX etc.+	extern	void		plDeletePhysicsSdk(plPhysicsSdkHandle	physicsSdk);++/** Collision World, not strictly necessary, you can also just create a Dynamics World with Rigid Bodies which internally manages the Collision World with Collision Objects */++	typedef void(*btBroadphaseCallback)(void* clientData, void* object1,void* object2);++	extern plCollisionBroadphaseHandle	plCreateSapBroadphase(btBroadphaseCallback beginCallback,btBroadphaseCallback endCallback);++	extern void	plDestroyBroadphase(plCollisionBroadphaseHandle bp);++	extern 	plBroadphaseProxyHandle plCreateProxy(plCollisionBroadphaseHandle bp, void* clientData, plReal minX,plReal minY,plReal minZ, plReal maxX,plReal maxY, plReal maxZ);++	extern void plDestroyProxy(plCollisionBroadphaseHandle bp, plBroadphaseProxyHandle proxyHandle);++	extern void plSetBoundingBox(plBroadphaseProxyHandle proxyHandle, plReal minX,plReal minY,plReal minZ, plReal maxX,plReal maxY, plReal maxZ);++/* todo: add pair cache support with queries like add/remove/find pair */+	+	extern plCollisionWorldHandle plCreateCollisionWorld(plPhysicsSdkHandle physicsSdk);++/* todo: add/remove objects */+	++/* Dynamics World */++	extern  plDynamicsWorldHandle plCreateDynamicsWorld(plPhysicsSdkHandle physicsSdk);++	extern  void           plDeleteDynamicsWorld(plDynamicsWorldHandle world);++	extern	void	plStepSimulation(plDynamicsWorldHandle,	plReal	timeStep);++	extern  void plAddRigidBody(plDynamicsWorldHandle world, plRigidBodyHandle object);++	extern  void plRemoveRigidBody(plDynamicsWorldHandle world, plRigidBodyHandle object);+++/* Rigid Body  */++	extern  plRigidBodyHandle plCreateRigidBody(	void* user_data,  float mass, plCollisionShapeHandle cshape );++	extern  void plDeleteRigidBody(plRigidBodyHandle body);+++/* Collision Shape definition */++	extern  plCollisionShapeHandle plNewSphereShape(plReal radius);+	extern  plCollisionShapeHandle plNewBoxShape(plReal x, plReal y, plReal z);+	extern  plCollisionShapeHandle plNewCapsuleShape(plReal radius, plReal height);	+	extern  plCollisionShapeHandle plNewConeShape(plReal radius, plReal height);+	extern  plCollisionShapeHandle plNewCylinderShape(plReal radius, plReal height);+	extern	plCollisionShapeHandle plNewCompoundShape(void);+	extern	void	plAddChildShape(plCollisionShapeHandle compoundShape,plCollisionShapeHandle childShape, plVector3 childPos,plQuaternion childOrn);++	extern  void plDeleteShape(plCollisionShapeHandle shape);++	/* Convex Meshes */+	extern  plCollisionShapeHandle plNewConvexHullShape(void);+	extern  void		plAddVertex(plCollisionShapeHandle convexHull, plReal x,plReal y,plReal z);+/* Concave static triangle meshes */+	extern  plMeshInterfaceHandle		   plNewMeshInterface(void);+	extern  void		plAddTriangle(plMeshInterfaceHandle meshHandle, plVector3 v0,plVector3 v1,plVector3 v2);+	extern  plCollisionShapeHandle plNewStaticTriangleMeshShape(plMeshInterfaceHandle);++	extern  void plSetScaling(plCollisionShapeHandle shape, plVector3 scaling);++/* SOLID has Response Callback/Table/Management */+/* PhysX has Triggers, User Callbacks and filtering */+/* ODE has the typedef void dNearCallback (void *data, dGeomID o1, dGeomID o2); */++/*	typedef void plUpdatedPositionCallback(void* userData, plRigidBodyHandle	rbHandle, plVector3 pos); */+/*	typedef void plUpdatedOrientationCallback(void* userData, plRigidBodyHandle	rbHandle, plQuaternion orientation); */++	/* get world transform */+	extern void	plGetOpenGLMatrix(plRigidBodyHandle object, plReal* matrix);+	extern void	plGetPosition(plRigidBodyHandle object,plVector3 position);+	extern void plGetOrientation(plRigidBodyHandle object,plQuaternion orientation);++	/* set world transform (position/orientation) */+	extern  void plSetPosition(plRigidBodyHandle object, const plVector3 position);+	extern  void plSetOrientation(plRigidBodyHandle object, const plQuaternion orientation);+	extern	void plSetEuler(plReal yaw,plReal pitch,plReal roll, plQuaternion orient);+	extern	void plSetOpenGLMatrix(plRigidBodyHandle object, plReal* matrix);++	typedef struct plRayCastResult {+		plRigidBodyHandle		m_body;  +		plCollisionShapeHandle	m_shape; 		+		plVector3				m_positionWorld; 		+		plVector3				m_normalWorld;+	} plRayCastResult;++	extern  int plRayCast(plDynamicsWorldHandle world, const plVector3 rayStart, const plVector3 rayEnd, plRayCastResult res);++	/* Sweep API */++	/* extern  plRigidBodyHandle plObjectCast(plDynamicsWorldHandle world, const plVector3 rayStart, const plVector3 rayEnd, plVector3 hitpoint, plVector3 normal); */++	/* Continuous Collision Detection API */+	+	// needed for source/blender/blenkernel/intern/collision.c+	double plNearestPoints(float p1[3], float p2[3], float p3[3], float q1[3], float q2[3], float q3[3], float *pa, float *pb, float normal[3]);++#ifdef __cplusplus+}+#endif+++#endif //BULLET_C_API_H+
+ bullet/BulletCollision/BroadphaseCollision/btAxisSweep3.h view
@@ -0,0 +1,1051 @@+//Bullet Continuous Collision Detection and Physics Library+//Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++//+// btAxisSweep3.h+//+// Copyright (c) 2006 Simon Hobbs+//+// This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.+//+// Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:+//+// 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+//+// 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+//+// 3. This notice may not be removed or altered from any source distribution.++#ifndef BT_AXIS_SWEEP_3_H+#define BT_AXIS_SWEEP_3_H++#include "LinearMath/btVector3.h"+#include "btOverlappingPairCache.h"+#include "btBroadphaseInterface.h"+#include "btBroadphaseProxy.h"+#include "btOverlappingPairCallback.h"+#include "btDbvtBroadphase.h"++//#define DEBUG_BROADPHASE 1+#define USE_OVERLAP_TEST_ON_REMOVES 1++/// The internal templace class btAxisSweep3Internal implements the sweep and prune broadphase.+/// It uses quantized integers to represent the begin and end points for each of the 3 axis.+/// Dont use this class directly, use btAxisSweep3 or bt32BitAxisSweep3 instead.+template <typename BP_FP_INT_TYPE>+class btAxisSweep3Internal : public btBroadphaseInterface+{+protected:++	BP_FP_INT_TYPE	m_bpHandleMask;+	BP_FP_INT_TYPE	m_handleSentinel;++public:+	+ BT_DECLARE_ALIGNED_ALLOCATOR();++	class Edge+	{+	public:+		BP_FP_INT_TYPE m_pos;			// low bit is min/max+		BP_FP_INT_TYPE m_handle;++		BP_FP_INT_TYPE IsMax() const {return static_cast<BP_FP_INT_TYPE>(m_pos & 1);}+	};++public:+	class	Handle : public btBroadphaseProxy+	{+	public:+	BT_DECLARE_ALIGNED_ALLOCATOR();+	+		// indexes into the edge arrays+		BP_FP_INT_TYPE m_minEdges[3], m_maxEdges[3];		// 6 * 2 = 12+//		BP_FP_INT_TYPE m_uniqueId;+		btBroadphaseProxy*	m_dbvtProxy;//for faster raycast+		//void* m_pOwner; this is now in btBroadphaseProxy.m_clientObject+	+		SIMD_FORCE_INLINE void SetNextFree(BP_FP_INT_TYPE next) {m_minEdges[0] = next;}+		SIMD_FORCE_INLINE BP_FP_INT_TYPE GetNextFree() const {return m_minEdges[0];}+	};		// 24 bytes + 24 for Edge structures = 44 bytes total per entry++	+protected:+	btVector3 m_worldAabbMin;						// overall system bounds+	btVector3 m_worldAabbMax;						// overall system bounds++	btVector3 m_quantize;						// scaling factor for quantization++	BP_FP_INT_TYPE m_numHandles;						// number of active handles+	BP_FP_INT_TYPE m_maxHandles;						// max number of handles+	Handle* m_pHandles;						// handles pool+	+	BP_FP_INT_TYPE m_firstFreeHandle;		// free handles list++	Edge* m_pEdges[3];						// edge arrays for the 3 axes (each array has m_maxHandles * 2 + 2 sentinel entries)+	void* m_pEdgesRawPtr[3];++	btOverlappingPairCache* m_pairCache;++	///btOverlappingPairCallback is an additional optional user callback for adding/removing overlapping pairs, similar interface to btOverlappingPairCache.+	btOverlappingPairCallback* m_userPairCallback;+	+	bool	m_ownsPairCache;++	int	m_invalidPair;++	///additional dynamic aabb structure, used to accelerate ray cast queries.+	///can be disabled using a optional argument in the constructor+	btDbvtBroadphase*	m_raycastAccelerator;+	btOverlappingPairCache*	m_nullPairCache;+++	// allocation/deallocation+	BP_FP_INT_TYPE allocHandle();+	void freeHandle(BP_FP_INT_TYPE handle);+	++	bool testOverlap2D(const Handle* pHandleA, const Handle* pHandleB,int axis0,int axis1);++#ifdef DEBUG_BROADPHASE+	void debugPrintAxis(int axis,bool checkCardinality=true);+#endif //DEBUG_BROADPHASE++	//Overlap* AddOverlap(BP_FP_INT_TYPE handleA, BP_FP_INT_TYPE handleB);+	//void RemoveOverlap(BP_FP_INT_TYPE handleA, BP_FP_INT_TYPE handleB);++	++	void sortMinDown(int axis, BP_FP_INT_TYPE edge, btDispatcher* dispatcher, bool updateOverlaps );+	void sortMinUp(int axis, BP_FP_INT_TYPE edge, btDispatcher* dispatcher, bool updateOverlaps );+	void sortMaxDown(int axis, BP_FP_INT_TYPE edge, btDispatcher* dispatcher, bool updateOverlaps );+	void sortMaxUp(int axis, BP_FP_INT_TYPE edge, btDispatcher* dispatcher, bool updateOverlaps );++public:++	btAxisSweep3Internal(const btVector3& worldAabbMin,const btVector3& worldAabbMax, BP_FP_INT_TYPE handleMask, BP_FP_INT_TYPE handleSentinel, BP_FP_INT_TYPE maxHandles = 16384, btOverlappingPairCache* pairCache=0,bool disableRaycastAccelerator = false);++	virtual	~btAxisSweep3Internal();++	BP_FP_INT_TYPE getNumHandles() const+	{+		return m_numHandles;+	}++	virtual void	calculateOverlappingPairs(btDispatcher* dispatcher);+	+	BP_FP_INT_TYPE addHandle(const btVector3& aabbMin,const btVector3& aabbMax, void* pOwner,short int collisionFilterGroup,short int collisionFilterMask,btDispatcher* dispatcher,void* multiSapProxy);+	void removeHandle(BP_FP_INT_TYPE handle,btDispatcher* dispatcher);+	void updateHandle(BP_FP_INT_TYPE handle, const btVector3& aabbMin,const btVector3& aabbMax,btDispatcher* dispatcher);+	SIMD_FORCE_INLINE Handle* getHandle(BP_FP_INT_TYPE index) const {return m_pHandles + index;}++	virtual void resetPool(btDispatcher* dispatcher);++	void	processAllOverlappingPairs(btOverlapCallback* callback);++	//Broadphase Interface+	virtual btBroadphaseProxy*	createProxy(  const btVector3& aabbMin,  const btVector3& aabbMax,int shapeType,void* userPtr ,short int collisionFilterGroup,short int collisionFilterMask,btDispatcher* dispatcher,void* multiSapProxy);+	virtual void	destroyProxy(btBroadphaseProxy* proxy,btDispatcher* dispatcher);+	virtual void	setAabb(btBroadphaseProxy* proxy,const btVector3& aabbMin,const btVector3& aabbMax,btDispatcher* dispatcher);+	virtual void  getAabb(btBroadphaseProxy* proxy,btVector3& aabbMin, btVector3& aabbMax ) const;+	+	virtual void	rayTest(const btVector3& rayFrom,const btVector3& rayTo, btBroadphaseRayCallback& rayCallback, const btVector3& aabbMin=btVector3(0,0,0), const btVector3& aabbMax = btVector3(0,0,0));+	virtual void	aabbTest(const btVector3& aabbMin, const btVector3& aabbMax, btBroadphaseAabbCallback& callback);++	+	void quantize(BP_FP_INT_TYPE* out, const btVector3& point, int isMax) const;+	///unQuantize should be conservative: aabbMin/aabbMax should be larger then 'getAabb' result+	void unQuantize(btBroadphaseProxy* proxy,btVector3& aabbMin, btVector3& aabbMax ) const;+	+	bool	testAabbOverlap(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1);++	btOverlappingPairCache*	getOverlappingPairCache()+	{+		return m_pairCache;+	}+	const btOverlappingPairCache*	getOverlappingPairCache() const+	{+		return m_pairCache;+	}++	void	setOverlappingPairUserCallback(btOverlappingPairCallback* pairCallback)+	{+		m_userPairCallback = pairCallback;+	}+	const btOverlappingPairCallback*	getOverlappingPairUserCallback() const+	{+		return m_userPairCallback;+	}++	///getAabb returns the axis aligned bounding box in the 'global' coordinate frame+	///will add some transform later+	virtual void getBroadphaseAabb(btVector3& aabbMin,btVector3& aabbMax) const+	{+		aabbMin = m_worldAabbMin;+		aabbMax = m_worldAabbMax;+	}++	virtual void	printStats()+	{+/*		printf("btAxisSweep3.h\n");+		printf("numHandles = %d, maxHandles = %d\n",m_numHandles,m_maxHandles);+		printf("aabbMin=%f,%f,%f,aabbMax=%f,%f,%f\n",m_worldAabbMin.getX(),m_worldAabbMin.getY(),m_worldAabbMin.getZ(),+			m_worldAabbMax.getX(),m_worldAabbMax.getY(),m_worldAabbMax.getZ());+			*/++	}++};++////////////////////////////////////////////////////////////////////+++++#ifdef DEBUG_BROADPHASE+#include <stdio.h>++template <typename BP_FP_INT_TYPE>+void btAxisSweep3<BP_FP_INT_TYPE>::debugPrintAxis(int axis, bool checkCardinality)+{+	int numEdges = m_pHandles[0].m_maxEdges[axis];+	printf("SAP Axis %d, numEdges=%d\n",axis,numEdges);++	int i;+	for (i=0;i<numEdges+1;i++)+	{+		Edge* pEdge = m_pEdges[axis] + i;+		Handle* pHandlePrev = getHandle(pEdge->m_handle);+		int handleIndex = pEdge->IsMax()? pHandlePrev->m_maxEdges[axis] : pHandlePrev->m_minEdges[axis];+		char beginOrEnd;+		beginOrEnd=pEdge->IsMax()?'E':'B';+		printf("	[%c,h=%d,p=%x,i=%d]\n",beginOrEnd,pEdge->m_handle,pEdge->m_pos,handleIndex);+	}++	if (checkCardinality)+		btAssert(numEdges == m_numHandles*2+1);+}+#endif //DEBUG_BROADPHASE++template <typename BP_FP_INT_TYPE>+btBroadphaseProxy*	btAxisSweep3Internal<BP_FP_INT_TYPE>::createProxy(  const btVector3& aabbMin,  const btVector3& aabbMax,int shapeType,void* userPtr,short int collisionFilterGroup,short int collisionFilterMask,btDispatcher* dispatcher,void* multiSapProxy)+{+		(void)shapeType;+		BP_FP_INT_TYPE handleId = addHandle(aabbMin,aabbMax, userPtr,collisionFilterGroup,collisionFilterMask,dispatcher,multiSapProxy);+		+		Handle* handle = getHandle(handleId);+		+		if (m_raycastAccelerator)+		{+			btBroadphaseProxy* rayProxy = m_raycastAccelerator->createProxy(aabbMin,aabbMax,shapeType,userPtr,collisionFilterGroup,collisionFilterMask,dispatcher,0);+			handle->m_dbvtProxy = rayProxy;+		}+		return handle;+}++++template <typename BP_FP_INT_TYPE>+void	btAxisSweep3Internal<BP_FP_INT_TYPE>::destroyProxy(btBroadphaseProxy* proxy,btDispatcher* dispatcher)+{+	Handle* handle = static_cast<Handle*>(proxy);+	if (m_raycastAccelerator)+		m_raycastAccelerator->destroyProxy(handle->m_dbvtProxy,dispatcher);+	removeHandle(static_cast<BP_FP_INT_TYPE>(handle->m_uniqueId), dispatcher);+}++template <typename BP_FP_INT_TYPE>+void	btAxisSweep3Internal<BP_FP_INT_TYPE>::setAabb(btBroadphaseProxy* proxy,const btVector3& aabbMin,const btVector3& aabbMax,btDispatcher* dispatcher)+{+	Handle* handle = static_cast<Handle*>(proxy);+	handle->m_aabbMin = aabbMin;+	handle->m_aabbMax = aabbMax;+	updateHandle(static_cast<BP_FP_INT_TYPE>(handle->m_uniqueId), aabbMin, aabbMax,dispatcher);+	if (m_raycastAccelerator)+		m_raycastAccelerator->setAabb(handle->m_dbvtProxy,aabbMin,aabbMax,dispatcher);++}++template <typename BP_FP_INT_TYPE>+void	btAxisSweep3Internal<BP_FP_INT_TYPE>::rayTest(const btVector3& rayFrom,const btVector3& rayTo, btBroadphaseRayCallback& rayCallback,const btVector3& aabbMin,const btVector3& aabbMax)+{+	if (m_raycastAccelerator)+	{+		m_raycastAccelerator->rayTest(rayFrom,rayTo,rayCallback,aabbMin,aabbMax);+	} else+	{+		//choose axis?+		BP_FP_INT_TYPE axis = 0;+		//for each proxy+		for (BP_FP_INT_TYPE i=1;i<m_numHandles*2+1;i++)+		{+			if (m_pEdges[axis][i].IsMax())+			{+				rayCallback.process(getHandle(m_pEdges[axis][i].m_handle));+			}+		}+	}+}++template <typename BP_FP_INT_TYPE>+void	btAxisSweep3Internal<BP_FP_INT_TYPE>::aabbTest(const btVector3& aabbMin, const btVector3& aabbMax, btBroadphaseAabbCallback& callback)+{+	if (m_raycastAccelerator)+	{+		m_raycastAccelerator->aabbTest(aabbMin,aabbMax,callback);+	} else+	{+		//choose axis?+		BP_FP_INT_TYPE axis = 0;+		//for each proxy+		for (BP_FP_INT_TYPE i=1;i<m_numHandles*2+1;i++)+		{+			if (m_pEdges[axis][i].IsMax())+			{+				Handle* handle = getHandle(m_pEdges[axis][i].m_handle);+				if (TestAabbAgainstAabb2(aabbMin,aabbMax,handle->m_aabbMin,handle->m_aabbMax))+				{+					callback.process(handle);+				}+			}+		}+	}+}++++template <typename BP_FP_INT_TYPE>+void btAxisSweep3Internal<BP_FP_INT_TYPE>::getAabb(btBroadphaseProxy* proxy,btVector3& aabbMin, btVector3& aabbMax ) const+{+	Handle* pHandle = static_cast<Handle*>(proxy);+	aabbMin = pHandle->m_aabbMin;+	aabbMax = pHandle->m_aabbMax;+}+++template <typename BP_FP_INT_TYPE>+void btAxisSweep3Internal<BP_FP_INT_TYPE>::unQuantize(btBroadphaseProxy* proxy,btVector3& aabbMin, btVector3& aabbMax ) const+{+	Handle* pHandle = static_cast<Handle*>(proxy);++	unsigned short vecInMin[3];+	unsigned short vecInMax[3];++	vecInMin[0] = m_pEdges[0][pHandle->m_minEdges[0]].m_pos ;+	vecInMax[0] = m_pEdges[0][pHandle->m_maxEdges[0]].m_pos +1 ;+	vecInMin[1] = m_pEdges[1][pHandle->m_minEdges[1]].m_pos ;+	vecInMax[1] = m_pEdges[1][pHandle->m_maxEdges[1]].m_pos +1 ;+	vecInMin[2] = m_pEdges[2][pHandle->m_minEdges[2]].m_pos ;+	vecInMax[2] = m_pEdges[2][pHandle->m_maxEdges[2]].m_pos +1 ;+	+	aabbMin.setValue((btScalar)(vecInMin[0]) / (m_quantize.getX()),(btScalar)(vecInMin[1]) / (m_quantize.getY()),(btScalar)(vecInMin[2]) / (m_quantize.getZ()));+	aabbMin += m_worldAabbMin;+	+	aabbMax.setValue((btScalar)(vecInMax[0]) / (m_quantize.getX()),(btScalar)(vecInMax[1]) / (m_quantize.getY()),(btScalar)(vecInMax[2]) / (m_quantize.getZ()));+	aabbMax += m_worldAabbMin;+}+++++template <typename BP_FP_INT_TYPE>+btAxisSweep3Internal<BP_FP_INT_TYPE>::btAxisSweep3Internal(const btVector3& worldAabbMin,const btVector3& worldAabbMax, BP_FP_INT_TYPE handleMask, BP_FP_INT_TYPE handleSentinel,BP_FP_INT_TYPE userMaxHandles, btOverlappingPairCache* pairCache , bool disableRaycastAccelerator)+:m_bpHandleMask(handleMask),+m_handleSentinel(handleSentinel),+m_pairCache(pairCache),+m_userPairCallback(0),+m_ownsPairCache(false),+m_invalidPair(0),+m_raycastAccelerator(0)+{+	BP_FP_INT_TYPE maxHandles = static_cast<BP_FP_INT_TYPE>(userMaxHandles+1);//need to add one sentinel handle++	if (!m_pairCache)+	{+		void* ptr = btAlignedAlloc(sizeof(btHashedOverlappingPairCache),16);+		m_pairCache = new(ptr) btHashedOverlappingPairCache();+		m_ownsPairCache = true;+	}++	if (!disableRaycastAccelerator)+	{+		m_nullPairCache = new (btAlignedAlloc(sizeof(btNullPairCache),16)) btNullPairCache();+		m_raycastAccelerator = new (btAlignedAlloc(sizeof(btDbvtBroadphase),16)) btDbvtBroadphase(m_nullPairCache);//m_pairCache);+		m_raycastAccelerator->m_deferedcollide = true;//don't add/remove pairs+	}++	//btAssert(bounds.HasVolume());++	// init bounds+	m_worldAabbMin = worldAabbMin;+	m_worldAabbMax = worldAabbMax;++	btVector3 aabbSize = m_worldAabbMax - m_worldAabbMin;++	BP_FP_INT_TYPE	maxInt = m_handleSentinel;++	m_quantize = btVector3(btScalar(maxInt),btScalar(maxInt),btScalar(maxInt)) / aabbSize;++	// allocate handles buffer, using btAlignedAlloc, and put all handles on free list+	m_pHandles = new Handle[maxHandles];+	+	m_maxHandles = maxHandles;+	m_numHandles = 0;++	// handle 0 is reserved as the null index, and is also used as the sentinel+	m_firstFreeHandle = 1;+	{+		for (BP_FP_INT_TYPE i = m_firstFreeHandle; i < maxHandles; i++)+			m_pHandles[i].SetNextFree(static_cast<BP_FP_INT_TYPE>(i + 1));+		m_pHandles[maxHandles - 1].SetNextFree(0);+	}++	{+		// allocate edge buffers+		for (int i = 0; i < 3; i++)+		{+			m_pEdgesRawPtr[i] = btAlignedAlloc(sizeof(Edge)*maxHandles*2,16);+			m_pEdges[i] = new(m_pEdgesRawPtr[i]) Edge[maxHandles * 2];+		}+	}+	//removed overlap management++	// make boundary sentinels+	+	m_pHandles[0].m_clientObject = 0;++	for (int axis = 0; axis < 3; axis++)+	{+		m_pHandles[0].m_minEdges[axis] = 0;+		m_pHandles[0].m_maxEdges[axis] = 1;++		m_pEdges[axis][0].m_pos = 0;+		m_pEdges[axis][0].m_handle = 0;+		m_pEdges[axis][1].m_pos = m_handleSentinel;+		m_pEdges[axis][1].m_handle = 0;+#ifdef DEBUG_BROADPHASE+		debugPrintAxis(axis);+#endif //DEBUG_BROADPHASE++	}++}++template <typename BP_FP_INT_TYPE>+btAxisSweep3Internal<BP_FP_INT_TYPE>::~btAxisSweep3Internal()+{+	if (m_raycastAccelerator)+	{+		m_nullPairCache->~btOverlappingPairCache();+		btAlignedFree(m_nullPairCache);+		m_raycastAccelerator->~btDbvtBroadphase();+		btAlignedFree (m_raycastAccelerator);+	}++	for (int i = 2; i >= 0; i--)+	{+		btAlignedFree(m_pEdgesRawPtr[i]);+	}+	delete [] m_pHandles;++	if (m_ownsPairCache)+	{+		m_pairCache->~btOverlappingPairCache();+		btAlignedFree(m_pairCache);+	}+}++template <typename BP_FP_INT_TYPE>+void btAxisSweep3Internal<BP_FP_INT_TYPE>::quantize(BP_FP_INT_TYPE* out, const btVector3& point, int isMax) const+{+#ifdef OLD_CLAMPING_METHOD+	///problem with this clamping method is that the floating point during quantization might still go outside the range [(0|isMax) .. (m_handleSentinel&m_bpHandleMask]|isMax]+	///see http://code.google.com/p/bullet/issues/detail?id=87+	btVector3 clampedPoint(point);+	clampedPoint.setMax(m_worldAabbMin);+	clampedPoint.setMin(m_worldAabbMax);+	btVector3 v = (clampedPoint - m_worldAabbMin) * m_quantize;+	out[0] = (BP_FP_INT_TYPE)(((BP_FP_INT_TYPE)v.getX() & m_bpHandleMask) | isMax);+	out[1] = (BP_FP_INT_TYPE)(((BP_FP_INT_TYPE)v.getY() & m_bpHandleMask) | isMax);+	out[2] = (BP_FP_INT_TYPE)(((BP_FP_INT_TYPE)v.getZ() & m_bpHandleMask) | isMax);+#else+	btVector3 v = (point - m_worldAabbMin) * m_quantize;+	out[0]=(v[0]<=0)?(BP_FP_INT_TYPE)isMax:(v[0]>=m_handleSentinel)?(BP_FP_INT_TYPE)((m_handleSentinel&m_bpHandleMask)|isMax):(BP_FP_INT_TYPE)(((BP_FP_INT_TYPE)v[0]&m_bpHandleMask)|isMax);+	out[1]=(v[1]<=0)?(BP_FP_INT_TYPE)isMax:(v[1]>=m_handleSentinel)?(BP_FP_INT_TYPE)((m_handleSentinel&m_bpHandleMask)|isMax):(BP_FP_INT_TYPE)(((BP_FP_INT_TYPE)v[1]&m_bpHandleMask)|isMax);+	out[2]=(v[2]<=0)?(BP_FP_INT_TYPE)isMax:(v[2]>=m_handleSentinel)?(BP_FP_INT_TYPE)((m_handleSentinel&m_bpHandleMask)|isMax):(BP_FP_INT_TYPE)(((BP_FP_INT_TYPE)v[2]&m_bpHandleMask)|isMax);+#endif //OLD_CLAMPING_METHOD+}+++template <typename BP_FP_INT_TYPE>+BP_FP_INT_TYPE btAxisSweep3Internal<BP_FP_INT_TYPE>::allocHandle()+{+	btAssert(m_firstFreeHandle);++	BP_FP_INT_TYPE handle = m_firstFreeHandle;+	m_firstFreeHandle = getHandle(handle)->GetNextFree();+	m_numHandles++;++	return handle;+}++template <typename BP_FP_INT_TYPE>+void btAxisSweep3Internal<BP_FP_INT_TYPE>::freeHandle(BP_FP_INT_TYPE handle)+{+	btAssert(handle > 0 && handle < m_maxHandles);++	getHandle(handle)->SetNextFree(m_firstFreeHandle);+	m_firstFreeHandle = handle;++	m_numHandles--;+}+++template <typename BP_FP_INT_TYPE>+BP_FP_INT_TYPE btAxisSweep3Internal<BP_FP_INT_TYPE>::addHandle(const btVector3& aabbMin,const btVector3& aabbMax, void* pOwner,short int collisionFilterGroup,short int collisionFilterMask,btDispatcher* dispatcher,void* multiSapProxy)+{+	// quantize the bounds+	BP_FP_INT_TYPE min[3], max[3];+	quantize(min, aabbMin, 0);+	quantize(max, aabbMax, 1);++	// allocate a handle+	BP_FP_INT_TYPE handle = allocHandle();+	++	Handle* pHandle = getHandle(handle);+	+	pHandle->m_uniqueId = static_cast<int>(handle);+	//pHandle->m_pOverlaps = 0;+	pHandle->m_clientObject = pOwner;+	pHandle->m_collisionFilterGroup = collisionFilterGroup;+	pHandle->m_collisionFilterMask = collisionFilterMask;+	pHandle->m_multiSapParentProxy = multiSapProxy;++	// compute current limit of edge arrays+	BP_FP_INT_TYPE limit = static_cast<BP_FP_INT_TYPE>(m_numHandles * 2);++	+	// insert new edges just inside the max boundary edge+	for (BP_FP_INT_TYPE axis = 0; axis < 3; axis++)+	{++		m_pHandles[0].m_maxEdges[axis] += 2;++		m_pEdges[axis][limit + 1] = m_pEdges[axis][limit - 1];++		m_pEdges[axis][limit - 1].m_pos = min[axis];+		m_pEdges[axis][limit - 1].m_handle = handle;++		m_pEdges[axis][limit].m_pos = max[axis];+		m_pEdges[axis][limit].m_handle = handle;++		pHandle->m_minEdges[axis] = static_cast<BP_FP_INT_TYPE>(limit - 1);+		pHandle->m_maxEdges[axis] = limit;+	}++	// now sort the new edges to their correct position+	sortMinDown(0, pHandle->m_minEdges[0], dispatcher,false);+	sortMaxDown(0, pHandle->m_maxEdges[0], dispatcher,false);+	sortMinDown(1, pHandle->m_minEdges[1], dispatcher,false);+	sortMaxDown(1, pHandle->m_maxEdges[1], dispatcher,false);+	sortMinDown(2, pHandle->m_minEdges[2], dispatcher,true);+	sortMaxDown(2, pHandle->m_maxEdges[2], dispatcher,true);+++	return handle;+}+++template <typename BP_FP_INT_TYPE>+void btAxisSweep3Internal<BP_FP_INT_TYPE>::removeHandle(BP_FP_INT_TYPE handle,btDispatcher* dispatcher)+{++	Handle* pHandle = getHandle(handle);++	//explicitly remove the pairs containing the proxy+	//we could do it also in the sortMinUp (passing true)+	///@todo: compare performance+	if (!m_pairCache->hasDeferredRemoval())+	{+		m_pairCache->removeOverlappingPairsContainingProxy(pHandle,dispatcher);+	}++	// compute current limit of edge arrays+	int limit = static_cast<int>(m_numHandles * 2);+	+	int axis;++	for (axis = 0;axis<3;axis++)+	{+		m_pHandles[0].m_maxEdges[axis] -= 2;+	}++	// remove the edges by sorting them up to the end of the list+	for ( axis = 0; axis < 3; axis++)+	{+		Edge* pEdges = m_pEdges[axis];+		BP_FP_INT_TYPE max = pHandle->m_maxEdges[axis];+		pEdges[max].m_pos = m_handleSentinel;++		sortMaxUp(axis,max,dispatcher,false);+++		BP_FP_INT_TYPE i = pHandle->m_minEdges[axis];+		pEdges[i].m_pos = m_handleSentinel;+++		sortMinUp(axis,i,dispatcher,false);++		pEdges[limit-1].m_handle = 0;+		pEdges[limit-1].m_pos = m_handleSentinel;+		+#ifdef DEBUG_BROADPHASE+			debugPrintAxis(axis,false);+#endif //DEBUG_BROADPHASE+++	}+++	// free the handle+	freeHandle(handle);++	+}++template <typename BP_FP_INT_TYPE>+void btAxisSweep3Internal<BP_FP_INT_TYPE>::resetPool(btDispatcher* dispatcher)+{+	if (m_numHandles == 0)+	{+		m_firstFreeHandle = 1;+		{+			for (BP_FP_INT_TYPE i = m_firstFreeHandle; i < m_maxHandles; i++)+				m_pHandles[i].SetNextFree(static_cast<BP_FP_INT_TYPE>(i + 1));+			m_pHandles[m_maxHandles - 1].SetNextFree(0);+		}+	}+}       +++extern int gOverlappingPairs;+//#include <stdio.h>++template <typename BP_FP_INT_TYPE>+void	btAxisSweep3Internal<BP_FP_INT_TYPE>::calculateOverlappingPairs(btDispatcher* dispatcher)+{++	if (m_pairCache->hasDeferredRemoval())+	{+	+		btBroadphasePairArray&	overlappingPairArray = m_pairCache->getOverlappingPairArray();++		//perform a sort, to find duplicates and to sort 'invalid' pairs to the end+		overlappingPairArray.quickSort(btBroadphasePairSortPredicate());++		overlappingPairArray.resize(overlappingPairArray.size() - m_invalidPair);+		m_invalidPair = 0;++		+		int i;++		btBroadphasePair previousPair;+		previousPair.m_pProxy0 = 0;+		previousPair.m_pProxy1 = 0;+		previousPair.m_algorithm = 0;+		+		+		for (i=0;i<overlappingPairArray.size();i++)+		{+		+			btBroadphasePair& pair = overlappingPairArray[i];++			bool isDuplicate = (pair == previousPair);++			previousPair = pair;++			bool needsRemoval = false;++			if (!isDuplicate)+			{+				///important to use an AABB test that is consistent with the broadphase+				bool hasOverlap = testAabbOverlap(pair.m_pProxy0,pair.m_pProxy1);++				if (hasOverlap)+				{+					needsRemoval = false;//callback->processOverlap(pair);+				} else+				{+					needsRemoval = true;+				}+			} else+			{+				//remove duplicate+				needsRemoval = true;+				//should have no algorithm+				btAssert(!pair.m_algorithm);+			}+			+			if (needsRemoval)+			{+				m_pairCache->cleanOverlappingPair(pair,dispatcher);++		//		m_overlappingPairArray.swap(i,m_overlappingPairArray.size()-1);+		//		m_overlappingPairArray.pop_back();+				pair.m_pProxy0 = 0;+				pair.m_pProxy1 = 0;+				m_invalidPair++;+				gOverlappingPairs--;+			} +			+		}++	///if you don't like to skip the invalid pairs in the array, execute following code:+	#define CLEAN_INVALID_PAIRS 1+	#ifdef CLEAN_INVALID_PAIRS++		//perform a sort, to sort 'invalid' pairs to the end+		overlappingPairArray.quickSort(btBroadphasePairSortPredicate());++		overlappingPairArray.resize(overlappingPairArray.size() - m_invalidPair);+		m_invalidPair = 0;+	#endif//CLEAN_INVALID_PAIRS+		+		//printf("overlappingPairArray.size()=%d\n",overlappingPairArray.size());+	}++}+++template <typename BP_FP_INT_TYPE>+bool btAxisSweep3Internal<BP_FP_INT_TYPE>::testAabbOverlap(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1)+{+	const Handle* pHandleA = static_cast<Handle*>(proxy0);+	const Handle* pHandleB = static_cast<Handle*>(proxy1);+	+	//optimization 1: check the array index (memory address), instead of the m_pos++	for (int axis = 0; axis < 3; axis++)+	{ +		if (pHandleA->m_maxEdges[axis] < pHandleB->m_minEdges[axis] || +			pHandleB->m_maxEdges[axis] < pHandleA->m_minEdges[axis]) +		{ +			return false; +		} +	} +	return true;+}++template <typename BP_FP_INT_TYPE>+bool btAxisSweep3Internal<BP_FP_INT_TYPE>::testOverlap2D(const Handle* pHandleA, const Handle* pHandleB,int axis0,int axis1)+{+	//optimization 1: check the array index (memory address), instead of the m_pos++	if (pHandleA->m_maxEdges[axis0] < pHandleB->m_minEdges[axis0] || +		pHandleB->m_maxEdges[axis0] < pHandleA->m_minEdges[axis0] ||+		pHandleA->m_maxEdges[axis1] < pHandleB->m_minEdges[axis1] ||+		pHandleB->m_maxEdges[axis1] < pHandleA->m_minEdges[axis1]) +	{ +		return false; +	} +	return true;+}++template <typename BP_FP_INT_TYPE>+void btAxisSweep3Internal<BP_FP_INT_TYPE>::updateHandle(BP_FP_INT_TYPE handle, const btVector3& aabbMin,const btVector3& aabbMax,btDispatcher* dispatcher)+{+//	btAssert(bounds.IsFinite());+	//btAssert(bounds.HasVolume());++	Handle* pHandle = getHandle(handle);++	// quantize the new bounds+	BP_FP_INT_TYPE min[3], max[3];+	quantize(min, aabbMin, 0);+	quantize(max, aabbMax, 1);++	// update changed edges+	for (int axis = 0; axis < 3; axis++)+	{+		BP_FP_INT_TYPE emin = pHandle->m_minEdges[axis];+		BP_FP_INT_TYPE emax = pHandle->m_maxEdges[axis];++		int dmin = (int)min[axis] - (int)m_pEdges[axis][emin].m_pos;+		int dmax = (int)max[axis] - (int)m_pEdges[axis][emax].m_pos;++		m_pEdges[axis][emin].m_pos = min[axis];+		m_pEdges[axis][emax].m_pos = max[axis];++		// expand (only adds overlaps)+		if (dmin < 0)+			sortMinDown(axis, emin,dispatcher,true);++		if (dmax > 0)+			sortMaxUp(axis, emax,dispatcher,true);++		// shrink (only removes overlaps)+		if (dmin > 0)+			sortMinUp(axis, emin,dispatcher,true);++		if (dmax < 0)+			sortMaxDown(axis, emax,dispatcher,true);++#ifdef DEBUG_BROADPHASE+	debugPrintAxis(axis);+#endif //DEBUG_BROADPHASE+	}++	+}+++++// sorting a min edge downwards can only ever *add* overlaps+template <typename BP_FP_INT_TYPE>+void btAxisSweep3Internal<BP_FP_INT_TYPE>::sortMinDown(int axis, BP_FP_INT_TYPE edge, btDispatcher* /* dispatcher */, bool updateOverlaps)+{++	Edge* pEdge = m_pEdges[axis] + edge;+	Edge* pPrev = pEdge - 1;+	Handle* pHandleEdge = getHandle(pEdge->m_handle);++	while (pEdge->m_pos < pPrev->m_pos)+	{+		Handle* pHandlePrev = getHandle(pPrev->m_handle);++		if (pPrev->IsMax())+		{+			// if previous edge is a maximum check the bounds and add an overlap if necessary+			const int axis1 = (1  << axis) & 3;+			const int axis2 = (1  << axis1) & 3;+			if (updateOverlaps && testOverlap2D(pHandleEdge, pHandlePrev,axis1,axis2))+			{+				m_pairCache->addOverlappingPair(pHandleEdge,pHandlePrev);+				if (m_userPairCallback)+					m_userPairCallback->addOverlappingPair(pHandleEdge,pHandlePrev);++				//AddOverlap(pEdge->m_handle, pPrev->m_handle);++			}++			// update edge reference in other handle+			pHandlePrev->m_maxEdges[axis]++;+		}+		else+			pHandlePrev->m_minEdges[axis]++;++		pHandleEdge->m_minEdges[axis]--;++		// swap the edges+		Edge swap = *pEdge;+		*pEdge = *pPrev;+		*pPrev = swap;++		// decrement+		pEdge--;+		pPrev--;+	}++#ifdef DEBUG_BROADPHASE+	debugPrintAxis(axis);+#endif //DEBUG_BROADPHASE++}++// sorting a min edge upwards can only ever *remove* overlaps+template <typename BP_FP_INT_TYPE>+void btAxisSweep3Internal<BP_FP_INT_TYPE>::sortMinUp(int axis, BP_FP_INT_TYPE edge, btDispatcher* dispatcher, bool updateOverlaps)+{+	Edge* pEdge = m_pEdges[axis] + edge;+	Edge* pNext = pEdge + 1;+	Handle* pHandleEdge = getHandle(pEdge->m_handle);++	while (pNext->m_handle && (pEdge->m_pos >= pNext->m_pos))+	{+		Handle* pHandleNext = getHandle(pNext->m_handle);++		if (pNext->IsMax())+		{+			Handle* handle0 = getHandle(pEdge->m_handle);+			Handle* handle1 = getHandle(pNext->m_handle);+			const int axis1 = (1  << axis) & 3;+			const int axis2 = (1  << axis1) & 3;+			+			// if next edge is maximum remove any overlap between the two handles+			if (updateOverlaps +#ifdef USE_OVERLAP_TEST_ON_REMOVES+				&& testOverlap2D(handle0,handle1,axis1,axis2)+#endif //USE_OVERLAP_TEST_ON_REMOVES+				)+			{+				++				m_pairCache->removeOverlappingPair(handle0,handle1,dispatcher);	+				if (m_userPairCallback)+					m_userPairCallback->removeOverlappingPair(handle0,handle1,dispatcher);+				+			}+++			// update edge reference in other handle+			pHandleNext->m_maxEdges[axis]--;+		}+		else+			pHandleNext->m_minEdges[axis]--;++		pHandleEdge->m_minEdges[axis]++;++		// swap the edges+		Edge swap = *pEdge;+		*pEdge = *pNext;+		*pNext = swap;++		// increment+		pEdge++;+		pNext++;+	}+++}++// sorting a max edge downwards can only ever *remove* overlaps+template <typename BP_FP_INT_TYPE>+void btAxisSweep3Internal<BP_FP_INT_TYPE>::sortMaxDown(int axis, BP_FP_INT_TYPE edge, btDispatcher* dispatcher, bool updateOverlaps)+{++	Edge* pEdge = m_pEdges[axis] + edge;+	Edge* pPrev = pEdge - 1;+	Handle* pHandleEdge = getHandle(pEdge->m_handle);++	while (pEdge->m_pos < pPrev->m_pos)+	{+		Handle* pHandlePrev = getHandle(pPrev->m_handle);++		if (!pPrev->IsMax())+		{+			// if previous edge was a minimum remove any overlap between the two handles+			Handle* handle0 = getHandle(pEdge->m_handle);+			Handle* handle1 = getHandle(pPrev->m_handle);+			const int axis1 = (1  << axis) & 3;+			const int axis2 = (1  << axis1) & 3;++			if (updateOverlaps  +#ifdef USE_OVERLAP_TEST_ON_REMOVES+				&& testOverlap2D(handle0,handle1,axis1,axis2)+#endif //USE_OVERLAP_TEST_ON_REMOVES+				)+			{+				//this is done during the overlappingpairarray iteration/narrowphase collision++				+				m_pairCache->removeOverlappingPair(handle0,handle1,dispatcher);+				if (m_userPairCallback)+					m_userPairCallback->removeOverlappingPair(handle0,handle1,dispatcher);+			+++			}++			// update edge reference in other handle+			pHandlePrev->m_minEdges[axis]++;;+		}+		else+			pHandlePrev->m_maxEdges[axis]++;++		pHandleEdge->m_maxEdges[axis]--;++		// swap the edges+		Edge swap = *pEdge;+		*pEdge = *pPrev;+		*pPrev = swap;++		// decrement+		pEdge--;+		pPrev--;+	}++	+#ifdef DEBUG_BROADPHASE+	debugPrintAxis(axis);+#endif //DEBUG_BROADPHASE++}++// sorting a max edge upwards can only ever *add* overlaps+template <typename BP_FP_INT_TYPE>+void btAxisSweep3Internal<BP_FP_INT_TYPE>::sortMaxUp(int axis, BP_FP_INT_TYPE edge, btDispatcher* /* dispatcher */, bool updateOverlaps)+{+	Edge* pEdge = m_pEdges[axis] + edge;+	Edge* pNext = pEdge + 1;+	Handle* pHandleEdge = getHandle(pEdge->m_handle);++	while (pNext->m_handle && (pEdge->m_pos >= pNext->m_pos))+	{+		Handle* pHandleNext = getHandle(pNext->m_handle);++		const int axis1 = (1  << axis) & 3;+		const int axis2 = (1  << axis1) & 3;++		if (!pNext->IsMax())+		{+			// if next edge is a minimum check the bounds and add an overlap if necessary+			if (updateOverlaps && testOverlap2D(pHandleEdge, pHandleNext,axis1,axis2))+			{+				Handle* handle0 = getHandle(pEdge->m_handle);+				Handle* handle1 = getHandle(pNext->m_handle);+				m_pairCache->addOverlappingPair(handle0,handle1);+				if (m_userPairCallback)+					m_userPairCallback->addOverlappingPair(handle0,handle1);+			}++			// update edge reference in other handle+			pHandleNext->m_minEdges[axis]--;+		}+		else+			pHandleNext->m_maxEdges[axis]--;++		pHandleEdge->m_maxEdges[axis]++;++		// swap the edges+		Edge swap = *pEdge;+		*pEdge = *pNext;+		*pNext = swap;++		// increment+		pEdge++;+		pNext++;+	}+	+}++++////////////////////////////////////////////////////////////////////+++/// The btAxisSweep3 is an efficient implementation of the 3d axis sweep and prune broadphase.+/// It uses arrays rather then lists for storage of the 3 axis. Also it operates using 16 bit integer coordinates instead of floats.+/// For large worlds and many objects, use bt32BitAxisSweep3 or btDbvtBroadphase instead. bt32BitAxisSweep3 has higher precision and allows more then 16384 objects at the cost of more memory and bit of performance.+class btAxisSweep3 : public btAxisSweep3Internal<unsigned short int>+{+public:++	btAxisSweep3(const btVector3& worldAabbMin,const btVector3& worldAabbMax, unsigned short int maxHandles = 16384, btOverlappingPairCache* pairCache = 0, bool disableRaycastAccelerator = false);++};++/// The bt32BitAxisSweep3 allows higher precision quantization and more objects compared to the btAxisSweep3 sweep and prune.+/// This comes at the cost of more memory per handle, and a bit slower performance.+/// It uses arrays rather then lists for storage of the 3 axis.+class bt32BitAxisSweep3 : public btAxisSweep3Internal<unsigned int>+{+public:++	bt32BitAxisSweep3(const btVector3& worldAabbMin,const btVector3& worldAabbMax, unsigned int maxHandles = 1500000, btOverlappingPairCache* pairCache = 0, bool disableRaycastAccelerator = false);++};++#endif+
+ bullet/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h view
@@ -0,0 +1,82 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef		BT_BROADPHASE_INTERFACE_H+#define 	BT_BROADPHASE_INTERFACE_H++++struct btDispatcherInfo;+class btDispatcher;+#include "btBroadphaseProxy.h"++class btOverlappingPairCache;++++struct	btBroadphaseAabbCallback+{+	virtual ~btBroadphaseAabbCallback() {}+	virtual bool	process(const btBroadphaseProxy* proxy) = 0;+};+++struct	btBroadphaseRayCallback : public btBroadphaseAabbCallback+{+	///added some cached data to accelerate ray-AABB tests+	btVector3		m_rayDirectionInverse;+	unsigned int	m_signs[3];+	btScalar		m_lambda_max;++	virtual ~btBroadphaseRayCallback() {}+};++#include "LinearMath/btVector3.h"++///The btBroadphaseInterface class provides an interface to detect aabb-overlapping object pairs.+///Some implementations for this broadphase interface include btAxisSweep3, bt32BitAxisSweep3 and btDbvtBroadphase.+///The actual overlapping pair management, storage, adding and removing of pairs is dealt by the btOverlappingPairCache class.+class btBroadphaseInterface+{+public:+	virtual ~btBroadphaseInterface() {}++	virtual btBroadphaseProxy*	createProxy(  const btVector3& aabbMin,  const btVector3& aabbMax,int shapeType,void* userPtr, short int collisionFilterGroup,short int collisionFilterMask, btDispatcher* dispatcher,void* multiSapProxy) =0;+	virtual void	destroyProxy(btBroadphaseProxy* proxy,btDispatcher* dispatcher)=0;+	virtual void	setAabb(btBroadphaseProxy* proxy,const btVector3& aabbMin,const btVector3& aabbMax, btDispatcher* dispatcher)=0;+	virtual void	getAabb(btBroadphaseProxy* proxy,btVector3& aabbMin, btVector3& aabbMax ) const =0;++	virtual void	rayTest(const btVector3& rayFrom,const btVector3& rayTo, btBroadphaseRayCallback& rayCallback, const btVector3& aabbMin=btVector3(0,0,0), const btVector3& aabbMax = btVector3(0,0,0)) = 0;++	virtual void	aabbTest(const btVector3& aabbMin, const btVector3& aabbMax, btBroadphaseAabbCallback& callback) = 0;++	///calculateOverlappingPairs is optional: incremental algorithms (sweep and prune) might do it during the set aabb+	virtual void	calculateOverlappingPairs(btDispatcher* dispatcher)=0;++	virtual	btOverlappingPairCache*	getOverlappingPairCache()=0;+	virtual	const btOverlappingPairCache*	getOverlappingPairCache() const =0;++	///getAabb returns the axis aligned bounding box in the 'global' coordinate frame+	///will add some transform later+	virtual void getBroadphaseAabb(btVector3& aabbMin,btVector3& aabbMax) const =0;++	///reset broadphase internal structures, to ensure determinism/reproducability+	virtual void resetPool(btDispatcher* dispatcher) { (void) dispatcher; };++	virtual void	printStats() = 0;++};++#endif //BT_BROADPHASE_INTERFACE_H
+ bullet/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h view
@@ -0,0 +1,270 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_BROADPHASE_PROXY_H+#define BT_BROADPHASE_PROXY_H++#include "LinearMath/btScalar.h" //for SIMD_FORCE_INLINE+#include "LinearMath/btVector3.h"+#include "LinearMath/btAlignedAllocator.h"+++/// btDispatcher uses these types+/// IMPORTANT NOTE:The types are ordered polyhedral, implicit convex and concave+/// to facilitate type checking+/// CUSTOM_POLYHEDRAL_SHAPE_TYPE,CUSTOM_CONVEX_SHAPE_TYPE and CUSTOM_CONCAVE_SHAPE_TYPE can be used to extend Bullet without modifying source code+enum BroadphaseNativeTypes+{+	// polyhedral convex shapes+	BOX_SHAPE_PROXYTYPE,+	TRIANGLE_SHAPE_PROXYTYPE,+	TETRAHEDRAL_SHAPE_PROXYTYPE,+	CONVEX_TRIANGLEMESH_SHAPE_PROXYTYPE,+	CONVEX_HULL_SHAPE_PROXYTYPE,+	CONVEX_POINT_CLOUD_SHAPE_PROXYTYPE,+	CUSTOM_POLYHEDRAL_SHAPE_TYPE,+//implicit convex shapes+IMPLICIT_CONVEX_SHAPES_START_HERE,+	SPHERE_SHAPE_PROXYTYPE,+	MULTI_SPHERE_SHAPE_PROXYTYPE,+	CAPSULE_SHAPE_PROXYTYPE,+	CONE_SHAPE_PROXYTYPE,+	CONVEX_SHAPE_PROXYTYPE,+	CYLINDER_SHAPE_PROXYTYPE,+	UNIFORM_SCALING_SHAPE_PROXYTYPE,+	MINKOWSKI_SUM_SHAPE_PROXYTYPE,+	MINKOWSKI_DIFFERENCE_SHAPE_PROXYTYPE,+	BOX_2D_SHAPE_PROXYTYPE,+	CONVEX_2D_SHAPE_PROXYTYPE,+	CUSTOM_CONVEX_SHAPE_TYPE,+//concave shapes+CONCAVE_SHAPES_START_HERE,+	//keep all the convex shapetype below here, for the check IsConvexShape in broadphase proxy!+	TRIANGLE_MESH_SHAPE_PROXYTYPE,+	SCALED_TRIANGLE_MESH_SHAPE_PROXYTYPE,+	///used for demo integration FAST/Swift collision library and Bullet+	FAST_CONCAVE_MESH_PROXYTYPE,+	//terrain+	TERRAIN_SHAPE_PROXYTYPE,+///Used for GIMPACT Trimesh integration+	GIMPACT_SHAPE_PROXYTYPE,+///Multimaterial mesh+    MULTIMATERIAL_TRIANGLE_MESH_PROXYTYPE,+	+	EMPTY_SHAPE_PROXYTYPE,+	STATIC_PLANE_PROXYTYPE,+	CUSTOM_CONCAVE_SHAPE_TYPE,+CONCAVE_SHAPES_END_HERE,++	COMPOUND_SHAPE_PROXYTYPE,++	SOFTBODY_SHAPE_PROXYTYPE,+	HFFLUID_SHAPE_PROXYTYPE,+	HFFLUID_BUOYANT_CONVEX_SHAPE_PROXYTYPE,+	INVALID_SHAPE_PROXYTYPE,++	MAX_BROADPHASE_COLLISION_TYPES+	+};+++///The btBroadphaseProxy is the main class that can be used with the Bullet broadphases. +///It stores collision shape type information, collision filter information and a client object, typically a btCollisionObject or btRigidBody.+ATTRIBUTE_ALIGNED16(struct) btBroadphaseProxy+{++BT_DECLARE_ALIGNED_ALLOCATOR();+	+	///optional filtering to cull potential collisions+	enum CollisionFilterGroups+	{+	        DefaultFilter = 1,+	        StaticFilter = 2,+	        KinematicFilter = 4,+	        DebrisFilter = 8,+			SensorTrigger = 16,+			CharacterFilter = 32,+	        AllFilter = -1 //all bits sets: DefaultFilter | StaticFilter | KinematicFilter | DebrisFilter | SensorTrigger+	};++	//Usually the client btCollisionObject or Rigidbody class+	void*	m_clientObject;+	short int m_collisionFilterGroup;+	short int m_collisionFilterMask;+	void*	m_multiSapParentProxy;		+	int			m_uniqueId;//m_uniqueId is introduced for paircache. could get rid of this, by calculating the address offset etc.++	btVector3	m_aabbMin;+	btVector3	m_aabbMax;++	SIMD_FORCE_INLINE int getUid() const+	{+		return m_uniqueId;+	}++	//used for memory pools+	btBroadphaseProxy() :m_clientObject(0),m_multiSapParentProxy(0)+	{+	}++	btBroadphaseProxy(const btVector3& aabbMin,const btVector3& aabbMax,void* userPtr,short int collisionFilterGroup, short int collisionFilterMask,void* multiSapParentProxy=0)+		:m_clientObject(userPtr),+		m_collisionFilterGroup(collisionFilterGroup),+		m_collisionFilterMask(collisionFilterMask),+		m_aabbMin(aabbMin),+		m_aabbMax(aabbMax)+	{+		m_multiSapParentProxy = multiSapParentProxy;+	}++	++	static SIMD_FORCE_INLINE bool isPolyhedral(int proxyType)+	{+		return (proxyType  < IMPLICIT_CONVEX_SHAPES_START_HERE);+	}++	static SIMD_FORCE_INLINE bool	isConvex(int proxyType)+	{+		return (proxyType < CONCAVE_SHAPES_START_HERE);+	}++	static SIMD_FORCE_INLINE bool	isNonMoving(int proxyType)+	{+		return (isConcave(proxyType) && !(proxyType==GIMPACT_SHAPE_PROXYTYPE));+	}++	static SIMD_FORCE_INLINE bool	isConcave(int proxyType)+	{+		return ((proxyType > CONCAVE_SHAPES_START_HERE) &&+			(proxyType < CONCAVE_SHAPES_END_HERE));+	}+	static SIMD_FORCE_INLINE bool	isCompound(int proxyType)+	{+		return (proxyType == COMPOUND_SHAPE_PROXYTYPE);+	}++	static SIMD_FORCE_INLINE bool	isSoftBody(int proxyType)+	{+		return (proxyType == SOFTBODY_SHAPE_PROXYTYPE);+	}++	static SIMD_FORCE_INLINE bool isInfinite(int proxyType)+	{+		return (proxyType == STATIC_PLANE_PROXYTYPE);+	}++	static SIMD_FORCE_INLINE bool isConvex2d(int proxyType)+	{+		return (proxyType == BOX_2D_SHAPE_PROXYTYPE) ||	(proxyType == CONVEX_2D_SHAPE_PROXYTYPE);+	}++	+}+;++class btCollisionAlgorithm;++struct btBroadphaseProxy;++++///The btBroadphasePair class contains a pair of aabb-overlapping objects.+///A btDispatcher can search a btCollisionAlgorithm that performs exact/narrowphase collision detection on the actual collision shapes.+ATTRIBUTE_ALIGNED16(struct) btBroadphasePair+{+	btBroadphasePair ()+		:+	m_pProxy0(0),+		m_pProxy1(0),+		m_algorithm(0),+		m_internalInfo1(0)+	{+	}++BT_DECLARE_ALIGNED_ALLOCATOR();++	btBroadphasePair(const btBroadphasePair& other)+		:		m_pProxy0(other.m_pProxy0),+				m_pProxy1(other.m_pProxy1),+				m_algorithm(other.m_algorithm),+				m_internalInfo1(other.m_internalInfo1)+	{+	}+	btBroadphasePair(btBroadphaseProxy& proxy0,btBroadphaseProxy& proxy1)+	{++		//keep them sorted, so the std::set operations work+		if (proxy0.m_uniqueId < proxy1.m_uniqueId)+        { +            m_pProxy0 = &proxy0; +            m_pProxy1 = &proxy1; +        }+        else +        { +			m_pProxy0 = &proxy1; +            m_pProxy1 = &proxy0; +        }++		m_algorithm = 0;+		m_internalInfo1 = 0;++	}+	+	btBroadphaseProxy* m_pProxy0;+	btBroadphaseProxy* m_pProxy1;+	+	mutable btCollisionAlgorithm* m_algorithm;+	union { void* m_internalInfo1; int m_internalTmpValue;};//don't use this data, it will be removed in future version.++};++/*+//comparison for set operation, see Solid DT_Encounter+SIMD_FORCE_INLINE bool operator<(const btBroadphasePair& a, const btBroadphasePair& b) +{ +    return a.m_pProxy0 < b.m_pProxy0 || +        (a.m_pProxy0 == b.m_pProxy0 && a.m_pProxy1 < b.m_pProxy1); +}+*/++++class btBroadphasePairSortPredicate+{+	public:++		bool operator() ( const btBroadphasePair& a, const btBroadphasePair& b )+		{+			const int uidA0 = a.m_pProxy0 ? a.m_pProxy0->m_uniqueId : -1;+			const int uidB0 = b.m_pProxy0 ? b.m_pProxy0->m_uniqueId : -1;+			const int uidA1 = a.m_pProxy1 ? a.m_pProxy1->m_uniqueId : -1;+			const int uidB1 = b.m_pProxy1 ? b.m_pProxy1->m_uniqueId : -1;++			 return uidA0 > uidB0 || +				(a.m_pProxy0 == b.m_pProxy0 && uidA1 > uidB1) ||+				(a.m_pProxy0 == b.m_pProxy0 && a.m_pProxy1 == b.m_pProxy1 && a.m_algorithm > b.m_algorithm); +		}+};+++SIMD_FORCE_INLINE bool operator==(const btBroadphasePair& a, const btBroadphasePair& b) +{+	 return (a.m_pProxy0 == b.m_pProxy0) && (a.m_pProxy1 == b.m_pProxy1);+}+++#endif //BT_BROADPHASE_PROXY_H+
+ bullet/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h view
@@ -0,0 +1,80 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_COLLISION_ALGORITHM_H+#define BT_COLLISION_ALGORITHM_H++#include "LinearMath/btScalar.h"+#include "LinearMath/btAlignedObjectArray.h"++struct btBroadphaseProxy;+class btDispatcher;+class btManifoldResult;+class btCollisionObject;+struct btDispatcherInfo;+class	btPersistentManifold;++typedef btAlignedObjectArray<btPersistentManifold*>	btManifoldArray;++struct btCollisionAlgorithmConstructionInfo+{+	btCollisionAlgorithmConstructionInfo()+		:m_dispatcher1(0),+		m_manifold(0)+	{+	}+	btCollisionAlgorithmConstructionInfo(btDispatcher* dispatcher,int temp)+		:m_dispatcher1(dispatcher)+	{+		(void)temp;+	}++	btDispatcher*	m_dispatcher1;+	btPersistentManifold*	m_manifold;++//	int	getDispatcherId();++};+++///btCollisionAlgorithm is an collision interface that is compatible with the Broadphase and btDispatcher.+///It is persistent over frames+class btCollisionAlgorithm+{++protected:++	btDispatcher*	m_dispatcher;++protected:+//	int	getDispatcherId();+	+public:++	btCollisionAlgorithm() {};++	btCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci);++	virtual ~btCollisionAlgorithm() {};++	virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) = 0;++	virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) = 0;++	virtual	void	getAllContactManifolds(btManifoldArray&	manifoldArray) = 0;+};+++#endif //BT_COLLISION_ALGORITHM_H
+ bullet/BulletCollision/BroadphaseCollision/btDbvt.h view
@@ -0,0 +1,1256 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2007 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+///btDbvt implementation by Nathanael Presson++#ifndef BT_DYNAMIC_BOUNDING_VOLUME_TREE_H+#define BT_DYNAMIC_BOUNDING_VOLUME_TREE_H++#include "LinearMath/btAlignedObjectArray.h"+#include "LinearMath/btVector3.h"+#include "LinearMath/btTransform.h"+#include "LinearMath/btAabbUtil2.h"++//+// Compile time configuration+//+++// Implementation profiles+#define DBVT_IMPL_GENERIC		0	// Generic implementation	+#define DBVT_IMPL_SSE			1	// SSE++// Template implementation of ICollide+#ifdef _WIN32+#if (defined (_MSC_VER) && _MSC_VER >= 1400)+#define	DBVT_USE_TEMPLATE		1+#else+#define	DBVT_USE_TEMPLATE		0+#endif+#else+#define	DBVT_USE_TEMPLATE		0+#endif++// Use only intrinsics instead of inline asm+#define DBVT_USE_INTRINSIC_SSE	1++// Using memmov for collideOCL+#define DBVT_USE_MEMMOVE		1++// Enable benchmarking code+#define	DBVT_ENABLE_BENCHMARK	0++// Inlining+#define DBVT_INLINE				SIMD_FORCE_INLINE++// Specific methods implementation++//SSE gives errors on a MSVC 7.1+#if defined (BT_USE_SSE) && defined (_WIN32)+#define DBVT_SELECT_IMPL		DBVT_IMPL_SSE+#define DBVT_MERGE_IMPL			DBVT_IMPL_SSE+#define DBVT_INT0_IMPL			DBVT_IMPL_SSE+#else+#define DBVT_SELECT_IMPL		DBVT_IMPL_GENERIC+#define DBVT_MERGE_IMPL			DBVT_IMPL_GENERIC+#define DBVT_INT0_IMPL			DBVT_IMPL_GENERIC+#endif++#if	(DBVT_SELECT_IMPL==DBVT_IMPL_SSE)||	\+	(DBVT_MERGE_IMPL==DBVT_IMPL_SSE)||	\+	(DBVT_INT0_IMPL==DBVT_IMPL_SSE)+#include <emmintrin.h>+#endif++//+// Auto config and checks+//++#if DBVT_USE_TEMPLATE+#define	DBVT_VIRTUAL+#define DBVT_VIRTUAL_DTOR(a)+#define DBVT_PREFIX					template <typename T>+#define DBVT_IPOLICY				T& policy+#define DBVT_CHECKTYPE				static const ICollide&	typechecker=*(T*)1;(void)typechecker;+#else+#define	DBVT_VIRTUAL_DTOR(a)		virtual ~a() {}+#define DBVT_VIRTUAL				virtual+#define DBVT_PREFIX+#define DBVT_IPOLICY				ICollide& policy+#define DBVT_CHECKTYPE+#endif++#if DBVT_USE_MEMMOVE+#if !defined( __CELLOS_LV2__) && !defined(__MWERKS__)+#include <memory.h>+#endif+#include <string.h>+#endif++#ifndef DBVT_USE_TEMPLATE+#error "DBVT_USE_TEMPLATE undefined"+#endif++#ifndef DBVT_USE_MEMMOVE+#error "DBVT_USE_MEMMOVE undefined"+#endif++#ifndef DBVT_ENABLE_BENCHMARK+#error "DBVT_ENABLE_BENCHMARK undefined"+#endif++#ifndef DBVT_SELECT_IMPL+#error "DBVT_SELECT_IMPL undefined"+#endif++#ifndef DBVT_MERGE_IMPL+#error "DBVT_MERGE_IMPL undefined"+#endif++#ifndef DBVT_INT0_IMPL+#error "DBVT_INT0_IMPL undefined"+#endif++//+// Defaults volumes+//++/* btDbvtAabbMm			*/ +struct	btDbvtAabbMm+{+	DBVT_INLINE btVector3			Center() const	{ return((mi+mx)/2); }+	DBVT_INLINE btVector3			Lengths() const	{ return(mx-mi); }+	DBVT_INLINE btVector3			Extents() const	{ return((mx-mi)/2); }+	DBVT_INLINE const btVector3&	Mins() const	{ return(mi); }+	DBVT_INLINE const btVector3&	Maxs() const	{ return(mx); }+	static inline btDbvtAabbMm		FromCE(const btVector3& c,const btVector3& e);+	static inline btDbvtAabbMm		FromCR(const btVector3& c,btScalar r);+	static inline btDbvtAabbMm		FromMM(const btVector3& mi,const btVector3& mx);+	static inline btDbvtAabbMm		FromPoints(const btVector3* pts,int n);+	static inline btDbvtAabbMm		FromPoints(const btVector3** ppts,int n);+	DBVT_INLINE void				Expand(const btVector3& e);+	DBVT_INLINE void				SignedExpand(const btVector3& e);+	DBVT_INLINE bool				Contain(const btDbvtAabbMm& a) const;+	DBVT_INLINE int					Classify(const btVector3& n,btScalar o,int s) const;+	DBVT_INLINE btScalar			ProjectMinimum(const btVector3& v,unsigned signs) const;+	DBVT_INLINE friend bool			Intersect(	const btDbvtAabbMm& a,+		const btDbvtAabbMm& b);+	+	DBVT_INLINE friend bool			Intersect(	const btDbvtAabbMm& a,+		const btVector3& b);++	DBVT_INLINE friend btScalar		Proximity(	const btDbvtAabbMm& a,+		const btDbvtAabbMm& b);+	DBVT_INLINE friend int			Select(		const btDbvtAabbMm& o,+		const btDbvtAabbMm& a,+		const btDbvtAabbMm& b);+	DBVT_INLINE friend void			Merge(		const btDbvtAabbMm& a,+		const btDbvtAabbMm& b,+		btDbvtAabbMm& r);+	DBVT_INLINE friend bool			NotEqual(	const btDbvtAabbMm& a,+		const btDbvtAabbMm& b);+private:+	DBVT_INLINE void				AddSpan(const btVector3& d,btScalar& smi,btScalar& smx) const;+private:+	btVector3	mi,mx;+};++// Types	+typedef	btDbvtAabbMm	btDbvtVolume;++/* btDbvtNode				*/ +struct	btDbvtNode+{+	btDbvtVolume	volume;+	btDbvtNode*		parent;+	DBVT_INLINE bool	isleaf() const		{ return(childs[1]==0); }+	DBVT_INLINE bool	isinternal() const	{ return(!isleaf()); }+	union+	{+		btDbvtNode*	childs[2];+		void*	data;+		int		dataAsInt;+	};+};++///The btDbvt class implements a fast dynamic bounding volume tree based on axis aligned bounding boxes (aabb tree).+///This btDbvt is used for soft body collision detection and for the btDbvtBroadphase. It has a fast insert, remove and update of nodes.+///Unlike the btQuantizedBvh, nodes can be dynamically moved around, which allows for change in topology of the underlying data structure.+struct	btDbvt+{+	/* Stack element	*/ +	struct	sStkNN+	{+		const btDbvtNode*	a;+		const btDbvtNode*	b;+		sStkNN() {}+		sStkNN(const btDbvtNode* na,const btDbvtNode* nb) : a(na),b(nb) {}+	};+	struct	sStkNP+	{+		const btDbvtNode*	node;+		int			mask;+		sStkNP(const btDbvtNode* n,unsigned m) : node(n),mask(m) {}+	};+	struct	sStkNPS+	{+		const btDbvtNode*	node;+		int			mask;+		btScalar	value;+		sStkNPS() {}+		sStkNPS(const btDbvtNode* n,unsigned m,btScalar v) : node(n),mask(m),value(v) {}+	};+	struct	sStkCLN+	{+		const btDbvtNode*	node;+		btDbvtNode*		parent;+		sStkCLN(const btDbvtNode* n,btDbvtNode* p) : node(n),parent(p) {}+	};+	// Policies/Interfaces++	/* ICollide	*/ +	struct	ICollide+	{		+		DBVT_VIRTUAL_DTOR(ICollide)+			DBVT_VIRTUAL void	Process(const btDbvtNode*,const btDbvtNode*)		{}+		DBVT_VIRTUAL void	Process(const btDbvtNode*)					{}+		DBVT_VIRTUAL void	Process(const btDbvtNode* n,btScalar)			{ Process(n); }+		DBVT_VIRTUAL bool	Descent(const btDbvtNode*)					{ return(true); }+		DBVT_VIRTUAL bool	AllLeaves(const btDbvtNode*)					{ return(true); }+	};+	/* IWriter	*/ +	struct	IWriter+	{+		virtual ~IWriter() {}+		virtual void		Prepare(const btDbvtNode* root,int numnodes)=0;+		virtual void		WriteNode(const btDbvtNode*,int index,int parent,int child0,int child1)=0;+		virtual void		WriteLeaf(const btDbvtNode*,int index,int parent)=0;+	};+	/* IClone	*/ +	struct	IClone+	{+		virtual ~IClone()	{}+		virtual void		CloneLeaf(btDbvtNode*) {}+	};++	// Constants+	enum	{+		SIMPLE_STACKSIZE	=	64,+		DOUBLE_STACKSIZE	=	SIMPLE_STACKSIZE*2+	};++	// Fields+	btDbvtNode*		m_root;+	btDbvtNode*		m_free;+	int				m_lkhd;+	int				m_leaves;+	unsigned		m_opath;++	+	btAlignedObjectArray<sStkNN>	m_stkStack;+++	// Methods+	btDbvt();+	~btDbvt();+	void			clear();+	bool			empty() const { return(0==m_root); }+	void			optimizeBottomUp();+	void			optimizeTopDown(int bu_treshold=128);+	void			optimizeIncremental(int passes);+	btDbvtNode*		insert(const btDbvtVolume& box,void* data);+	void			update(btDbvtNode* leaf,int lookahead=-1);+	void			update(btDbvtNode* leaf,btDbvtVolume& volume);+	bool			update(btDbvtNode* leaf,btDbvtVolume& volume,const btVector3& velocity,btScalar margin);+	bool			update(btDbvtNode* leaf,btDbvtVolume& volume,const btVector3& velocity);+	bool			update(btDbvtNode* leaf,btDbvtVolume& volume,btScalar margin);	+	void			remove(btDbvtNode* leaf);+	void			write(IWriter* iwriter) const;+	void			clone(btDbvt& dest,IClone* iclone=0) const;+	static int		maxdepth(const btDbvtNode* node);+	static int		countLeaves(const btDbvtNode* node);+	static void		extractLeaves(const btDbvtNode* node,btAlignedObjectArray<const btDbvtNode*>& leaves);+#if DBVT_ENABLE_BENCHMARK+	static void		benchmark();+#else+	static void		benchmark(){}+#endif+	// DBVT_IPOLICY must support ICollide policy/interface+	DBVT_PREFIX+		static void		enumNodes(	const btDbvtNode* root,+		DBVT_IPOLICY);+	DBVT_PREFIX+		static void		enumLeaves(	const btDbvtNode* root,+		DBVT_IPOLICY);+	DBVT_PREFIX+		void		collideTT(	const btDbvtNode* root0,+		const btDbvtNode* root1,+		DBVT_IPOLICY);++	DBVT_PREFIX+		void		collideTTpersistentStack(	const btDbvtNode* root0,+		  const btDbvtNode* root1,+		  DBVT_IPOLICY);+#if 0+	DBVT_PREFIX+		void		collideTT(	const btDbvtNode* root0,+		const btDbvtNode* root1,+		const btTransform& xform,+		DBVT_IPOLICY);+	DBVT_PREFIX+		void		collideTT(	const btDbvtNode* root0,+		const btTransform& xform0,+		const btDbvtNode* root1,+		const btTransform& xform1,+		DBVT_IPOLICY);+#endif++	DBVT_PREFIX+		void		collideTV(	const btDbvtNode* root,+		const btDbvtVolume& volume,+		DBVT_IPOLICY);+	///rayTest is a re-entrant ray test, and can be called in parallel as long as the btAlignedAlloc is thread-safe (uses locking etc)+	///rayTest is slower than rayTestInternal, because it builds a local stack, using memory allocations, and it recomputes signs/rayDirectionInverses each time+	DBVT_PREFIX+		static void		rayTest(	const btDbvtNode* root,+		const btVector3& rayFrom,+		const btVector3& rayTo,+		DBVT_IPOLICY);+	///rayTestInternal is faster than rayTest, because it uses a persistent stack (to reduce dynamic memory allocations to a minimum) and it uses precomputed signs/rayInverseDirections+	///rayTestInternal is used by btDbvtBroadphase to accelerate world ray casts+	DBVT_PREFIX+		void		rayTestInternal(	const btDbvtNode* root,+								const btVector3& rayFrom,+								const btVector3& rayTo,+								const btVector3& rayDirectionInverse,+								unsigned int signs[3],+								btScalar lambda_max,+								const btVector3& aabbMin,+								const btVector3& aabbMax,+								DBVT_IPOLICY) const;++	DBVT_PREFIX+		static void		collideKDOP(const btDbvtNode* root,+		const btVector3* normals,+		const btScalar* offsets,+		int count,+		DBVT_IPOLICY);+	DBVT_PREFIX+		static void		collideOCL(	const btDbvtNode* root,+		const btVector3* normals,+		const btScalar* offsets,+		const btVector3& sortaxis,+		int count,								+		DBVT_IPOLICY,+		bool fullsort=true);+	DBVT_PREFIX+		static void		collideTU(	const btDbvtNode* root,+		DBVT_IPOLICY);+	// Helpers	+	static DBVT_INLINE int	nearest(const int* i,const btDbvt::sStkNPS* a,btScalar v,int l,int h)+	{+		int	m=0;+		while(l<h)+		{+			m=(l+h)>>1;+			if(a[i[m]].value>=v) l=m+1; else h=m;+		}+		return(h);+	}+	static DBVT_INLINE int	allocate(	btAlignedObjectArray<int>& ifree,+		btAlignedObjectArray<sStkNPS>& stock,+		const sStkNPS& value)+	{+		int	i;+		if(ifree.size()>0)+		{ i=ifree[ifree.size()-1];ifree.pop_back();stock[i]=value; }+		else+		{ i=stock.size();stock.push_back(value); }+		return(i); +	}+	//+private:+	btDbvt(const btDbvt&)	{}	+};++//+// Inline's+//++//+inline btDbvtAabbMm			btDbvtAabbMm::FromCE(const btVector3& c,const btVector3& e)+{+	btDbvtAabbMm box;+	box.mi=c-e;box.mx=c+e;+	return(box);+}++//+inline btDbvtAabbMm			btDbvtAabbMm::FromCR(const btVector3& c,btScalar r)+{+	return(FromCE(c,btVector3(r,r,r)));+}++//+inline btDbvtAabbMm			btDbvtAabbMm::FromMM(const btVector3& mi,const btVector3& mx)+{+	btDbvtAabbMm box;+	box.mi=mi;box.mx=mx;+	return(box);+}++//+inline btDbvtAabbMm			btDbvtAabbMm::FromPoints(const btVector3* pts,int n)+{+	btDbvtAabbMm box;+	box.mi=box.mx=pts[0];+	for(int i=1;i<n;++i)+	{+		box.mi.setMin(pts[i]);+		box.mx.setMax(pts[i]);+	}+	return(box);+}++//+inline btDbvtAabbMm			btDbvtAabbMm::FromPoints(const btVector3** ppts,int n)+{+	btDbvtAabbMm box;+	box.mi=box.mx=*ppts[0];+	for(int i=1;i<n;++i)+	{+		box.mi.setMin(*ppts[i]);+		box.mx.setMax(*ppts[i]);+	}+	return(box);+}++//+DBVT_INLINE void		btDbvtAabbMm::Expand(const btVector3& e)+{+	mi-=e;mx+=e;+}++//+DBVT_INLINE void		btDbvtAabbMm::SignedExpand(const btVector3& e)+{+	if(e.x()>0) mx.setX(mx.x()+e[0]); else mi.setX(mi.x()+e[0]);+	if(e.y()>0) mx.setY(mx.y()+e[1]); else mi.setY(mi.y()+e[1]);+	if(e.z()>0) mx.setZ(mx.z()+e[2]); else mi.setZ(mi.z()+e[2]);+}++//+DBVT_INLINE bool		btDbvtAabbMm::Contain(const btDbvtAabbMm& a) const+{+	return(	(mi.x()<=a.mi.x())&&+		(mi.y()<=a.mi.y())&&+		(mi.z()<=a.mi.z())&&+		(mx.x()>=a.mx.x())&&+		(mx.y()>=a.mx.y())&&+		(mx.z()>=a.mx.z()));+}++//+DBVT_INLINE int		btDbvtAabbMm::Classify(const btVector3& n,btScalar o,int s) const+{+	btVector3			pi,px;+	switch(s)+	{+	case	(0+0+0):	px=btVector3(mi.x(),mi.y(),mi.z());+		pi=btVector3(mx.x(),mx.y(),mx.z());break;+	case	(1+0+0):	px=btVector3(mx.x(),mi.y(),mi.z());+		pi=btVector3(mi.x(),mx.y(),mx.z());break;+	case	(0+2+0):	px=btVector3(mi.x(),mx.y(),mi.z());+		pi=btVector3(mx.x(),mi.y(),mx.z());break;+	case	(1+2+0):	px=btVector3(mx.x(),mx.y(),mi.z());+		pi=btVector3(mi.x(),mi.y(),mx.z());break;+	case	(0+0+4):	px=btVector3(mi.x(),mi.y(),mx.z());+		pi=btVector3(mx.x(),mx.y(),mi.z());break;+	case	(1+0+4):	px=btVector3(mx.x(),mi.y(),mx.z());+		pi=btVector3(mi.x(),mx.y(),mi.z());break;+	case	(0+2+4):	px=btVector3(mi.x(),mx.y(),mx.z());+		pi=btVector3(mx.x(),mi.y(),mi.z());break;+	case	(1+2+4):	px=btVector3(mx.x(),mx.y(),mx.z());+		pi=btVector3(mi.x(),mi.y(),mi.z());break;+	}+	if((btDot(n,px)+o)<0)		return(-1);+	if((btDot(n,pi)+o)>=0)	return(+1);+	return(0);+}++//+DBVT_INLINE btScalar	btDbvtAabbMm::ProjectMinimum(const btVector3& v,unsigned signs) const+{+	const btVector3*	b[]={&mx,&mi};+	const btVector3		p(	b[(signs>>0)&1]->x(),+		b[(signs>>1)&1]->y(),+		b[(signs>>2)&1]->z());+	return(btDot(p,v));+}++//+DBVT_INLINE void		btDbvtAabbMm::AddSpan(const btVector3& d,btScalar& smi,btScalar& smx) const+{+	for(int i=0;i<3;++i)+	{+		if(d[i]<0)+		{ smi+=mx[i]*d[i];smx+=mi[i]*d[i]; }+		else+		{ smi+=mi[i]*d[i];smx+=mx[i]*d[i]; }+	}+}++//+DBVT_INLINE bool		Intersect(	const btDbvtAabbMm& a,+								  const btDbvtAabbMm& b)+{+#if	DBVT_INT0_IMPL == DBVT_IMPL_SSE+	const __m128	rt(_mm_or_ps(	_mm_cmplt_ps(_mm_load_ps(b.mx),_mm_load_ps(a.mi)),+		_mm_cmplt_ps(_mm_load_ps(a.mx),_mm_load_ps(b.mi))));+	const __int32*	pu((const __int32*)&rt);+	return((pu[0]|pu[1]|pu[2])==0);+#else+	return(	(a.mi.x()<=b.mx.x())&&+		(a.mx.x()>=b.mi.x())&&+		(a.mi.y()<=b.mx.y())&&+		(a.mx.y()>=b.mi.y())&&+		(a.mi.z()<=b.mx.z())&&		+		(a.mx.z()>=b.mi.z()));+#endif+}++++//+DBVT_INLINE bool		Intersect(	const btDbvtAabbMm& a,+								  const btVector3& b)+{+	return(	(b.x()>=a.mi.x())&&+		(b.y()>=a.mi.y())&&+		(b.z()>=a.mi.z())&&+		(b.x()<=a.mx.x())&&+		(b.y()<=a.mx.y())&&+		(b.z()<=a.mx.z()));+}++++++//////////////////////////////////////+++//+DBVT_INLINE btScalar	Proximity(	const btDbvtAabbMm& a,+								  const btDbvtAabbMm& b)+{+	const btVector3	d=(a.mi+a.mx)-(b.mi+b.mx);+	return(btFabs(d.x())+btFabs(d.y())+btFabs(d.z()));+}++++//+DBVT_INLINE int			Select(	const btDbvtAabbMm& o,+							   const btDbvtAabbMm& a,+							   const btDbvtAabbMm& b)+{+#if	DBVT_SELECT_IMPL == DBVT_IMPL_SSE+	static ATTRIBUTE_ALIGNED16(const unsigned __int32)	mask[]={0x7fffffff,0x7fffffff,0x7fffffff,0x7fffffff};+	///@todo: the intrinsic version is 11% slower+#if DBVT_USE_INTRINSIC_SSE++	union btSSEUnion ///NOTE: if we use more intrinsics, move btSSEUnion into the LinearMath directory+	{+	   __m128		ssereg;+	   float		floats[4];+	   int			ints[4];+	};++	__m128	omi(_mm_load_ps(o.mi));+	omi=_mm_add_ps(omi,_mm_load_ps(o.mx));+	__m128	ami(_mm_load_ps(a.mi));+	ami=_mm_add_ps(ami,_mm_load_ps(a.mx));+	ami=_mm_sub_ps(ami,omi);+	ami=_mm_and_ps(ami,_mm_load_ps((const float*)mask));+	__m128	bmi(_mm_load_ps(b.mi));+	bmi=_mm_add_ps(bmi,_mm_load_ps(b.mx));+	bmi=_mm_sub_ps(bmi,omi);+	bmi=_mm_and_ps(bmi,_mm_load_ps((const float*)mask));+	__m128	t0(_mm_movehl_ps(ami,ami));+	ami=_mm_add_ps(ami,t0);+	ami=_mm_add_ss(ami,_mm_shuffle_ps(ami,ami,1));+	__m128 t1(_mm_movehl_ps(bmi,bmi));+	bmi=_mm_add_ps(bmi,t1);+	bmi=_mm_add_ss(bmi,_mm_shuffle_ps(bmi,bmi,1));+	+	btSSEUnion tmp;+	tmp.ssereg = _mm_cmple_ss(bmi,ami);+	return tmp.ints[0]&1;++#else+	ATTRIBUTE_ALIGNED16(__int32	r[1]);+	__asm+	{+		mov		eax,o+			mov		ecx,a+			mov		edx,b+			movaps	xmm0,[eax]+		movaps	xmm5,mask+			addps	xmm0,[eax+16]	+		movaps	xmm1,[ecx]+		movaps	xmm2,[edx]+		addps	xmm1,[ecx+16]+		addps	xmm2,[edx+16]+		subps	xmm1,xmm0+			subps	xmm2,xmm0+			andps	xmm1,xmm5+			andps	xmm2,xmm5+			movhlps	xmm3,xmm1+			movhlps	xmm4,xmm2+			addps	xmm1,xmm3+			addps	xmm2,xmm4+			pshufd	xmm3,xmm1,1+			pshufd	xmm4,xmm2,1+			addss	xmm1,xmm3+			addss	xmm2,xmm4+			cmpless	xmm2,xmm1+			movss	r,xmm2+	}+	return(r[0]&1);+#endif+#else+	return(Proximity(o,a)<Proximity(o,b)?0:1);+#endif+}++//+DBVT_INLINE void		Merge(	const btDbvtAabbMm& a,+							  const btDbvtAabbMm& b,+							  btDbvtAabbMm& r)+{+#if DBVT_MERGE_IMPL==DBVT_IMPL_SSE+	__m128	ami(_mm_load_ps(a.mi));+	__m128	amx(_mm_load_ps(a.mx));+	__m128	bmi(_mm_load_ps(b.mi));+	__m128	bmx(_mm_load_ps(b.mx));+	ami=_mm_min_ps(ami,bmi);+	amx=_mm_max_ps(amx,bmx);+	_mm_store_ps(r.mi,ami);+	_mm_store_ps(r.mx,amx);+#else+	for(int i=0;i<3;++i)+	{+		if(a.mi[i]<b.mi[i]) r.mi[i]=a.mi[i]; else r.mi[i]=b.mi[i];+		if(a.mx[i]>b.mx[i]) r.mx[i]=a.mx[i]; else r.mx[i]=b.mx[i];+	}+#endif+}++//+DBVT_INLINE bool		NotEqual(	const btDbvtAabbMm& a,+								 const btDbvtAabbMm& b)+{+	return(	(a.mi.x()!=b.mi.x())||+		(a.mi.y()!=b.mi.y())||+		(a.mi.z()!=b.mi.z())||+		(a.mx.x()!=b.mx.x())||+		(a.mx.y()!=b.mx.y())||+		(a.mx.z()!=b.mx.z()));+}++//+// Inline's+//++//+DBVT_PREFIX+inline void		btDbvt::enumNodes(	const btDbvtNode* root,+								  DBVT_IPOLICY)+{+	DBVT_CHECKTYPE+		policy.Process(root);+	if(root->isinternal())+	{+		enumNodes(root->childs[0],policy);+		enumNodes(root->childs[1],policy);+	}+}++//+DBVT_PREFIX+inline void		btDbvt::enumLeaves(	const btDbvtNode* root,+								   DBVT_IPOLICY)+{+	DBVT_CHECKTYPE+		if(root->isinternal())+		{+			enumLeaves(root->childs[0],policy);+			enumLeaves(root->childs[1],policy);+		}+		else+		{+			policy.Process(root);+		}+}++//+DBVT_PREFIX+inline void		btDbvt::collideTT(	const btDbvtNode* root0,+								  const btDbvtNode* root1,+								  DBVT_IPOLICY)+{+	DBVT_CHECKTYPE+		if(root0&&root1)+		{+			int								depth=1;+			int								treshold=DOUBLE_STACKSIZE-4;+			btAlignedObjectArray<sStkNN>	stkStack;+			stkStack.resize(DOUBLE_STACKSIZE);+			stkStack[0]=sStkNN(root0,root1);+			do	{		+				sStkNN	p=stkStack[--depth];+				if(depth>treshold)+				{+					stkStack.resize(stkStack.size()*2);+					treshold=stkStack.size()-4;+				}+				if(p.a==p.b)+				{+					if(p.a->isinternal())+					{+						stkStack[depth++]=sStkNN(p.a->childs[0],p.a->childs[0]);+						stkStack[depth++]=sStkNN(p.a->childs[1],p.a->childs[1]);+						stkStack[depth++]=sStkNN(p.a->childs[0],p.a->childs[1]);+					}+				}+				else if(Intersect(p.a->volume,p.b->volume))+				{+					if(p.a->isinternal())+					{+						if(p.b->isinternal())+						{+							stkStack[depth++]=sStkNN(p.a->childs[0],p.b->childs[0]);+							stkStack[depth++]=sStkNN(p.a->childs[1],p.b->childs[0]);+							stkStack[depth++]=sStkNN(p.a->childs[0],p.b->childs[1]);+							stkStack[depth++]=sStkNN(p.a->childs[1],p.b->childs[1]);+						}+						else+						{+							stkStack[depth++]=sStkNN(p.a->childs[0],p.b);+							stkStack[depth++]=sStkNN(p.a->childs[1],p.b);+						}+					}+					else+					{+						if(p.b->isinternal())+						{+							stkStack[depth++]=sStkNN(p.a,p.b->childs[0]);+							stkStack[depth++]=sStkNN(p.a,p.b->childs[1]);+						}+						else+						{+							policy.Process(p.a,p.b);+						}+					}+				}+			} while(depth);+		}+}++++DBVT_PREFIX+inline void		btDbvt::collideTTpersistentStack(	const btDbvtNode* root0,+								  const btDbvtNode* root1,+								  DBVT_IPOLICY)+{+	DBVT_CHECKTYPE+		if(root0&&root1)+		{+			int								depth=1;+			int								treshold=DOUBLE_STACKSIZE-4;+			+			m_stkStack.resize(DOUBLE_STACKSIZE);+			m_stkStack[0]=sStkNN(root0,root1);+			do	{		+				sStkNN	p=m_stkStack[--depth];+				if(depth>treshold)+				{+					m_stkStack.resize(m_stkStack.size()*2);+					treshold=m_stkStack.size()-4;+				}+				if(p.a==p.b)+				{+					if(p.a->isinternal())+					{+						m_stkStack[depth++]=sStkNN(p.a->childs[0],p.a->childs[0]);+						m_stkStack[depth++]=sStkNN(p.a->childs[1],p.a->childs[1]);+						m_stkStack[depth++]=sStkNN(p.a->childs[0],p.a->childs[1]);+					}+				}+				else if(Intersect(p.a->volume,p.b->volume))+				{+					if(p.a->isinternal())+					{+						if(p.b->isinternal())+						{+							m_stkStack[depth++]=sStkNN(p.a->childs[0],p.b->childs[0]);+							m_stkStack[depth++]=sStkNN(p.a->childs[1],p.b->childs[0]);+							m_stkStack[depth++]=sStkNN(p.a->childs[0],p.b->childs[1]);+							m_stkStack[depth++]=sStkNN(p.a->childs[1],p.b->childs[1]);+						}+						else+						{+							m_stkStack[depth++]=sStkNN(p.a->childs[0],p.b);+							m_stkStack[depth++]=sStkNN(p.a->childs[1],p.b);+						}+					}+					else+					{+						if(p.b->isinternal())+						{+							m_stkStack[depth++]=sStkNN(p.a,p.b->childs[0]);+							m_stkStack[depth++]=sStkNN(p.a,p.b->childs[1]);+						}+						else+						{+							policy.Process(p.a,p.b);+						}+					}+				}+			} while(depth);+		}+}++#if 0+//+DBVT_PREFIX+inline void		btDbvt::collideTT(	const btDbvtNode* root0,+								  const btDbvtNode* root1,+								  const btTransform& xform,+								  DBVT_IPOLICY)+{+	DBVT_CHECKTYPE+		if(root0&&root1)+		{+			int								depth=1;+			int								treshold=DOUBLE_STACKSIZE-4;+			btAlignedObjectArray<sStkNN>	stkStack;+			stkStack.resize(DOUBLE_STACKSIZE);+			stkStack[0]=sStkNN(root0,root1);+			do	{+				sStkNN	p=stkStack[--depth];+				if(Intersect(p.a->volume,p.b->volume,xform))+				{+					if(depth>treshold)+					{+						stkStack.resize(stkStack.size()*2);+						treshold=stkStack.size()-4;+					}+					if(p.a->isinternal())+					{+						if(p.b->isinternal())+						{					+							stkStack[depth++]=sStkNN(p.a->childs[0],p.b->childs[0]);+							stkStack[depth++]=sStkNN(p.a->childs[1],p.b->childs[0]);+							stkStack[depth++]=sStkNN(p.a->childs[0],p.b->childs[1]);+							stkStack[depth++]=sStkNN(p.a->childs[1],p.b->childs[1]);+						}+						else+						{+							stkStack[depth++]=sStkNN(p.a->childs[0],p.b);+							stkStack[depth++]=sStkNN(p.a->childs[1],p.b);+						}+					}+					else+					{+						if(p.b->isinternal())+						{+							stkStack[depth++]=sStkNN(p.a,p.b->childs[0]);+							stkStack[depth++]=sStkNN(p.a,p.b->childs[1]);+						}+						else+						{+							policy.Process(p.a,p.b);+						}+					}+				}+			} while(depth);+		}+}+//+DBVT_PREFIX+inline void		btDbvt::collideTT(	const btDbvtNode* root0,+								  const btTransform& xform0,+								  const btDbvtNode* root1,+								  const btTransform& xform1,+								  DBVT_IPOLICY)+{+	const btTransform	xform=xform0.inverse()*xform1;+	collideTT(root0,root1,xform,policy);+}+#endif ++//+DBVT_PREFIX+inline void		btDbvt::collideTV(	const btDbvtNode* root,+								  const btDbvtVolume& vol,+								  DBVT_IPOLICY)+{+	DBVT_CHECKTYPE+		if(root)+		{+			ATTRIBUTE_ALIGNED16(btDbvtVolume)		volume(vol);+			btAlignedObjectArray<const btDbvtNode*>	stack;+			stack.resize(0);+			stack.reserve(SIMPLE_STACKSIZE);+			stack.push_back(root);+			do	{+				const btDbvtNode*	n=stack[stack.size()-1];+				stack.pop_back();+				if(Intersect(n->volume,volume))+				{+					if(n->isinternal())+					{+						stack.push_back(n->childs[0]);+						stack.push_back(n->childs[1]);+					}+					else+					{+						policy.Process(n);+					}+				}+			} while(stack.size()>0);+		}+}++DBVT_PREFIX+inline void		btDbvt::rayTestInternal(	const btDbvtNode* root,+								const btVector3& rayFrom,+								const btVector3& rayTo,+								const btVector3& rayDirectionInverse,+								unsigned int signs[3],+								btScalar lambda_max,+								const btVector3& aabbMin,+								const btVector3& aabbMax,+								DBVT_IPOLICY) const+{+        (void) rayTo;+	DBVT_CHECKTYPE+	if(root)+	{+		btVector3 resultNormal;++		int								depth=1;+		int								treshold=DOUBLE_STACKSIZE-2;+		btAlignedObjectArray<const btDbvtNode*>	stack;+		stack.resize(DOUBLE_STACKSIZE);+		stack[0]=root;+		btVector3 bounds[2];+		do	+		{+			const btDbvtNode*	node=stack[--depth];+			bounds[0] = node->volume.Mins()-aabbMax;+			bounds[1] = node->volume.Maxs()-aabbMin;+			btScalar tmin=1.f,lambda_min=0.f;+			unsigned int result1=false;+			result1 = btRayAabb2(rayFrom,rayDirectionInverse,signs,bounds,tmin,lambda_min,lambda_max);+			if(result1)+			{+				if(node->isinternal())+				{+					if(depth>treshold)+					{+						stack.resize(stack.size()*2);+						treshold=stack.size()-2;+					}+					stack[depth++]=node->childs[0];+					stack[depth++]=node->childs[1];+				}+				else+				{+					policy.Process(node);+				}+			}+		} while(depth);+	}+}++//+DBVT_PREFIX+inline void		btDbvt::rayTest(	const btDbvtNode* root,+								const btVector3& rayFrom,+								const btVector3& rayTo,+								DBVT_IPOLICY)+{+	DBVT_CHECKTYPE+		if(root)+		{+			btVector3 rayDir = (rayTo-rayFrom);+			rayDir.normalize ();++			///what about division by zero? --> just set rayDirection[i] to INF/BT_LARGE_FLOAT+			btVector3 rayDirectionInverse;+			rayDirectionInverse[0] = rayDir[0] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[0];+			rayDirectionInverse[1] = rayDir[1] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[1];+			rayDirectionInverse[2] = rayDir[2] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[2];+			unsigned int signs[3] = { rayDirectionInverse[0] < 0.0, rayDirectionInverse[1] < 0.0, rayDirectionInverse[2] < 0.0};++			btScalar lambda_max = rayDir.dot(rayTo-rayFrom);++			btVector3 resultNormal;++			btAlignedObjectArray<const btDbvtNode*>	stack;++			int								depth=1;+			int								treshold=DOUBLE_STACKSIZE-2;++			stack.resize(DOUBLE_STACKSIZE);+			stack[0]=root;+			btVector3 bounds[2];+			do	{+				const btDbvtNode*	node=stack[--depth];++				bounds[0] = node->volume.Mins();+				bounds[1] = node->volume.Maxs();+				+				btScalar tmin=1.f,lambda_min=0.f;+				unsigned int result1 = btRayAabb2(rayFrom,rayDirectionInverse,signs,bounds,tmin,lambda_min,lambda_max);++#ifdef COMPARE_BTRAY_AABB2+				btScalar param=1.f;+				bool result2 = btRayAabb(rayFrom,rayTo,node->volume.Mins(),node->volume.Maxs(),param,resultNormal);+				btAssert(result1 == result2);+#endif //TEST_BTRAY_AABB2++				if(result1)+				{+					if(node->isinternal())+					{+						if(depth>treshold)+						{+							stack.resize(stack.size()*2);+							treshold=stack.size()-2;+						}+						stack[depth++]=node->childs[0];+						stack[depth++]=node->childs[1];+					}+					else+					{+						policy.Process(node);+					}+				}+			} while(depth);++		}+}++//+DBVT_PREFIX+inline void		btDbvt::collideKDOP(const btDbvtNode* root,+									const btVector3* normals,+									const btScalar* offsets,+									int count,+									DBVT_IPOLICY)+{+	DBVT_CHECKTYPE+		if(root)+		{+			const int						inside=(1<<count)-1;+			btAlignedObjectArray<sStkNP>	stack;+			int								signs[sizeof(unsigned)*8];+			btAssert(count<int (sizeof(signs)/sizeof(signs[0])));+			for(int i=0;i<count;++i)+			{+				signs[i]=	((normals[i].x()>=0)?1:0)++					((normals[i].y()>=0)?2:0)++					((normals[i].z()>=0)?4:0);+			}+			stack.reserve(SIMPLE_STACKSIZE);+			stack.push_back(sStkNP(root,0));+			do	{+				sStkNP	se=stack[stack.size()-1];+				bool	out=false;+				stack.pop_back();+				for(int i=0,j=1;(!out)&&(i<count);++i,j<<=1)+				{+					if(0==(se.mask&j))+					{+						const int	side=se.node->volume.Classify(normals[i],offsets[i],signs[i]);+						switch(side)+						{+						case	-1:	out=true;break;+						case	+1:	se.mask|=j;break;+						}+					}+				}+				if(!out)+				{+					if((se.mask!=inside)&&(se.node->isinternal()))+					{+						stack.push_back(sStkNP(se.node->childs[0],se.mask));+						stack.push_back(sStkNP(se.node->childs[1],se.mask));+					}+					else+					{+						if(policy.AllLeaves(se.node)) enumLeaves(se.node,policy);+					}+				}+			} while(stack.size());+		}+}++//+DBVT_PREFIX+inline void		btDbvt::collideOCL(	const btDbvtNode* root,+								   const btVector3* normals,+								   const btScalar* offsets,+								   const btVector3& sortaxis,+								   int count,+								   DBVT_IPOLICY,+								   bool fsort)+{+	DBVT_CHECKTYPE+		if(root)+		{+			const unsigned					srtsgns=(sortaxis[0]>=0?1:0)++				(sortaxis[1]>=0?2:0)++				(sortaxis[2]>=0?4:0);+			const int						inside=(1<<count)-1;+			btAlignedObjectArray<sStkNPS>	stock;+			btAlignedObjectArray<int>		ifree;+			btAlignedObjectArray<int>		stack;+			int								signs[sizeof(unsigned)*8];+			btAssert(count<int (sizeof(signs)/sizeof(signs[0])));+			for(int i=0;i<count;++i)+			{+				signs[i]=	((normals[i].x()>=0)?1:0)++					((normals[i].y()>=0)?2:0)++					((normals[i].z()>=0)?4:0);+			}+			stock.reserve(SIMPLE_STACKSIZE);+			stack.reserve(SIMPLE_STACKSIZE);+			ifree.reserve(SIMPLE_STACKSIZE);+			stack.push_back(allocate(ifree,stock,sStkNPS(root,0,root->volume.ProjectMinimum(sortaxis,srtsgns))));+			do	{+				const int	id=stack[stack.size()-1];+				sStkNPS		se=stock[id];+				stack.pop_back();ifree.push_back(id);+				if(se.mask!=inside)+				{+					bool	out=false;+					for(int i=0,j=1;(!out)&&(i<count);++i,j<<=1)+					{+						if(0==(se.mask&j))+						{+							const int	side=se.node->volume.Classify(normals[i],offsets[i],signs[i]);+							switch(side)+							{+							case	-1:	out=true;break;+							case	+1:	se.mask|=j;break;+							}+						}+					}+					if(out) continue;+				}+				if(policy.Descent(se.node))+				{+					if(se.node->isinternal())+					{+						const btDbvtNode* pns[]={	se.node->childs[0],se.node->childs[1]};+						sStkNPS		nes[]={	sStkNPS(pns[0],se.mask,pns[0]->volume.ProjectMinimum(sortaxis,srtsgns)),+							sStkNPS(pns[1],se.mask,pns[1]->volume.ProjectMinimum(sortaxis,srtsgns))};+						const int	q=nes[0].value<nes[1].value?1:0;				+						int			j=stack.size();+						if(fsort&&(j>0))+						{+							/* Insert 0	*/ +							j=nearest(&stack[0],&stock[0],nes[q].value,0,stack.size());+							stack.push_back(0);+#if DBVT_USE_MEMMOVE+							memmove(&stack[j+1],&stack[j],sizeof(int)*(stack.size()-j-1));+#else+							for(int k=stack.size()-1;k>j;--k) stack[k]=stack[k-1];+#endif+							stack[j]=allocate(ifree,stock,nes[q]);+							/* Insert 1	*/ +							j=nearest(&stack[0],&stock[0],nes[1-q].value,j,stack.size());+							stack.push_back(0);+#if DBVT_USE_MEMMOVE+							memmove(&stack[j+1],&stack[j],sizeof(int)*(stack.size()-j-1));+#else+							for(int k=stack.size()-1;k>j;--k) stack[k]=stack[k-1];+#endif+							stack[j]=allocate(ifree,stock,nes[1-q]);+						}+						else+						{+							stack.push_back(allocate(ifree,stock,nes[q]));+							stack.push_back(allocate(ifree,stock,nes[1-q]));+						}+					}+					else+					{+						policy.Process(se.node,se.value);+					}+				}+			} while(stack.size());+		}+}++//+DBVT_PREFIX+inline void		btDbvt::collideTU(	const btDbvtNode* root,+								  DBVT_IPOLICY)+{+	DBVT_CHECKTYPE+		if(root)+		{+			btAlignedObjectArray<const btDbvtNode*>	stack;+			stack.reserve(SIMPLE_STACKSIZE);+			stack.push_back(root);+			do	{+				const btDbvtNode*	n=stack[stack.size()-1];+				stack.pop_back();+				if(policy.Descent(n))+				{+					if(n->isinternal())+					{ stack.push_back(n->childs[0]);stack.push_back(n->childs[1]); }+					else+					{ policy.Process(n); }+				}+			} while(stack.size()>0);+		}+}++//+// PP Cleanup+//++#undef DBVT_USE_MEMMOVE+#undef DBVT_USE_TEMPLATE+#undef DBVT_VIRTUAL_DTOR+#undef DBVT_VIRTUAL+#undef DBVT_PREFIX+#undef DBVT_IPOLICY+#undef DBVT_CHECKTYPE+#undef DBVT_IMPL_GENERIC+#undef DBVT_IMPL_SSE+#undef DBVT_USE_INTRINSIC_SSE+#undef DBVT_SELECT_IMPL+#undef DBVT_MERGE_IMPL+#undef DBVT_INT0_IMPL++#endif
+ bullet/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h view
@@ -0,0 +1,146 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++///btDbvtBroadphase implementation by Nathanael Presson+#ifndef BT_DBVT_BROADPHASE_H+#define BT_DBVT_BROADPHASE_H++#include "BulletCollision/BroadphaseCollision/btDbvt.h"+#include "BulletCollision/BroadphaseCollision/btOverlappingPairCache.h"++//+// Compile time config+//++#define	DBVT_BP_PROFILE					0+//#define DBVT_BP_SORTPAIRS				1+#define DBVT_BP_PREVENTFALSEUPDATE		0+#define DBVT_BP_ACCURATESLEEPING		0+#define DBVT_BP_ENABLE_BENCHMARK		0+#define DBVT_BP_MARGIN					(btScalar)0.05++#if DBVT_BP_PROFILE+#define	DBVT_BP_PROFILING_RATE	256+#include "LinearMath/btQuickprof.h"+#endif++//+// btDbvtProxy+//+struct btDbvtProxy : btBroadphaseProxy+{+	/* Fields		*/ +	//btDbvtAabbMm	aabb;+	btDbvtNode*		leaf;+	btDbvtProxy*	links[2];+	int				stage;+	/* ctor			*/ +	btDbvtProxy(const btVector3& aabbMin,const btVector3& aabbMax,void* userPtr,short int collisionFilterGroup, short int collisionFilterMask) :+	btBroadphaseProxy(aabbMin,aabbMax,userPtr,collisionFilterGroup,collisionFilterMask)+	{+		links[0]=links[1]=0;+	}+};++typedef btAlignedObjectArray<btDbvtProxy*>	btDbvtProxyArray;++///The btDbvtBroadphase implements a broadphase using two dynamic AABB bounding volume hierarchies/trees (see btDbvt).+///One tree is used for static/non-moving objects, and another tree is used for dynamic objects. Objects can move from one tree to the other.+///This is a very fast broadphase, especially for very dynamic worlds where many objects are moving. Its insert/add and remove of objects is generally faster than the sweep and prune broadphases btAxisSweep3 and bt32BitAxisSweep3.+struct	btDbvtBroadphase : btBroadphaseInterface+{+	/* Config		*/ +	enum	{+		DYNAMIC_SET			=	0,	/* Dynamic set index	*/ +		FIXED_SET			=	1,	/* Fixed set index		*/ +		STAGECOUNT			=	2	/* Number of stages		*/ +	};+	/* Fields		*/ +	btDbvt					m_sets[2];					// Dbvt sets+	btDbvtProxy*			m_stageRoots[STAGECOUNT+1];	// Stages list+	btOverlappingPairCache*	m_paircache;				// Pair cache+	btScalar				m_prediction;				// Velocity prediction+	int						m_stageCurrent;				// Current stage+	int						m_fupdates;					// % of fixed updates per frame+	int						m_dupdates;					// % of dynamic updates per frame+	int						m_cupdates;					// % of cleanup updates per frame+	int						m_newpairs;					// Number of pairs created+	int						m_fixedleft;				// Fixed optimization left+	unsigned				m_updates_call;				// Number of updates call+	unsigned				m_updates_done;				// Number of updates done+	btScalar				m_updates_ratio;			// m_updates_done/m_updates_call+	int						m_pid;						// Parse id+	int						m_cid;						// Cleanup index+	int						m_gid;						// Gen id+	bool					m_releasepaircache;			// Release pair cache on delete+	bool					m_deferedcollide;			// Defere dynamic/static collision to collide call+	bool					m_needcleanup;				// Need to run cleanup?+#if DBVT_BP_PROFILE+	btClock					m_clock;+	struct	{+		unsigned long		m_total;+		unsigned long		m_ddcollide;+		unsigned long		m_fdcollide;+		unsigned long		m_cleanup;+		unsigned long		m_jobcount;+	}				m_profiling;+#endif+	/* Methods		*/ +	btDbvtBroadphase(btOverlappingPairCache* paircache=0);+	~btDbvtBroadphase();+	void							collide(btDispatcher* dispatcher);+	void							optimize();+	+	/* btBroadphaseInterface Implementation	*/+	btBroadphaseProxy*				createProxy(const btVector3& aabbMin,const btVector3& aabbMax,int shapeType,void* userPtr,short int collisionFilterGroup,short int collisionFilterMask,btDispatcher* dispatcher,void* multiSapProxy);+	virtual void					destroyProxy(btBroadphaseProxy* proxy,btDispatcher* dispatcher);+	virtual void					setAabb(btBroadphaseProxy* proxy,const btVector3& aabbMin,const btVector3& aabbMax,btDispatcher* dispatcher);+	virtual void					rayTest(const btVector3& rayFrom,const btVector3& rayTo, btBroadphaseRayCallback& rayCallback, const btVector3& aabbMin=btVector3(0,0,0), const btVector3& aabbMax = btVector3(0,0,0));+	virtual void					aabbTest(const btVector3& aabbMin, const btVector3& aabbMax, btBroadphaseAabbCallback& callback);++	virtual void					getAabb(btBroadphaseProxy* proxy,btVector3& aabbMin, btVector3& aabbMax ) const;+	virtual	void					calculateOverlappingPairs(btDispatcher* dispatcher);+	virtual	btOverlappingPairCache*	getOverlappingPairCache();+	virtual	const btOverlappingPairCache*	getOverlappingPairCache() const;+	virtual	void					getBroadphaseAabb(btVector3& aabbMin,btVector3& aabbMax) const;+	virtual	void					printStats();+++	///reset broadphase internal structures, to ensure determinism/reproducability+	virtual void resetPool(btDispatcher* dispatcher);++	void	performDeferredRemoval(btDispatcher* dispatcher);+	+	void	setVelocityPrediction(btScalar prediction)+	{+		m_prediction = prediction;+	}+	btScalar getVelocityPrediction() const+	{+		return m_prediction;+	}++	///this setAabbForceUpdate is similar to setAabb but always forces the aabb update. +	///it is not part of the btBroadphaseInterface but specific to btDbvtBroadphase.+	///it bypasses certain optimizations that prevent aabb updates (when the aabb shrinks), see+	///http://code.google.com/p/bullet/issues/detail?id=223+	void							setAabbForceUpdate(		btBroadphaseProxy* absproxy,const btVector3& aabbMin,const btVector3& aabbMax,btDispatcher* /*dispatcher*/);++	static void						benchmark(btBroadphaseInterface*);+++};++#endif
+ bullet/BulletCollision/BroadphaseCollision/btDispatcher.h view
@@ -0,0 +1,110 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_DISPATCHER_H+#define BT_DISPATCHER_H+#include "LinearMath/btScalar.h"++class btCollisionAlgorithm;+struct btBroadphaseProxy;+class btRigidBody;+class	btCollisionObject;+class btOverlappingPairCache;+++class btPersistentManifold;+class btStackAlloc;+class btPoolAllocator;++struct btDispatcherInfo+{+	enum DispatchFunc+	{+		DISPATCH_DISCRETE = 1,+		DISPATCH_CONTINUOUS+	};+	btDispatcherInfo()+		:m_timeStep(btScalar(0.)),+		m_stepCount(0),+		m_dispatchFunc(DISPATCH_DISCRETE),+		m_timeOfImpact(btScalar(1.)),+		m_useContinuous(true),+		m_debugDraw(0),+		m_enableSatConvex(false),+		m_enableSPU(true),+		m_useEpa(true),+		m_allowedCcdPenetration(btScalar(0.04)),+		m_useConvexConservativeDistanceUtil(false),+		m_convexConservativeDistanceThreshold(0.0f),+		m_stackAllocator(0)+	{++	}+	btScalar	m_timeStep;+	int			m_stepCount;+	int			m_dispatchFunc;+	mutable btScalar	m_timeOfImpact;+	bool		m_useContinuous;+	class btIDebugDraw*	m_debugDraw;+	bool		m_enableSatConvex;+	bool		m_enableSPU;+	bool		m_useEpa;+	btScalar	m_allowedCcdPenetration;+	bool		m_useConvexConservativeDistanceUtil;+	btScalar	m_convexConservativeDistanceThreshold;+	btStackAlloc*	m_stackAllocator;+};++///The btDispatcher interface class can be used in combination with broadphase to dispatch calculations for overlapping pairs.+///For example for pairwise collision detection, calculating contact points stored in btPersistentManifold or user callbacks (game logic).+class btDispatcher+{+++public:+	virtual ~btDispatcher() ;++	virtual btCollisionAlgorithm* findAlgorithm(btCollisionObject* body0,btCollisionObject* body1,btPersistentManifold* sharedManifold=0) = 0;++	virtual btPersistentManifold*	getNewManifold(void* body0,void* body1)=0;++	virtual void releaseManifold(btPersistentManifold* manifold)=0;++	virtual void clearManifold(btPersistentManifold* manifold)=0;++	virtual bool	needsCollision(btCollisionObject* body0,btCollisionObject* body1) = 0;++	virtual bool	needsResponse(btCollisionObject* body0,btCollisionObject* body1)=0;++	virtual void	dispatchAllCollisionPairs(btOverlappingPairCache* pairCache,const btDispatcherInfo& dispatchInfo,btDispatcher* dispatcher)  =0;++	virtual int getNumManifolds() const = 0;++	virtual btPersistentManifold* getManifoldByIndexInternal(int index) = 0;++	virtual	btPersistentManifold**	getInternalManifoldPointer() = 0;++	virtual	btPoolAllocator*	getInternalManifoldPool() = 0;++	virtual	const btPoolAllocator*	getInternalManifoldPool() const = 0;++	virtual	void* allocateCollisionAlgorithm(int size)  = 0;++	virtual	void freeCollisionAlgorithm(void* ptr) = 0;++};+++#endif //BT_DISPATCHER_H
+ bullet/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h view
@@ -0,0 +1,151 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+#ifndef BT_MULTI_SAP_BROADPHASE+#define BT_MULTI_SAP_BROADPHASE++#include "btBroadphaseInterface.h"+#include "LinearMath/btAlignedObjectArray.h"+#include "btOverlappingPairCache.h"+++class btBroadphaseInterface;+class btSimpleBroadphase;+++typedef btAlignedObjectArray<btBroadphaseInterface*> btSapBroadphaseArray;++///The btMultiSapBroadphase is a research project, not recommended to use in production. Use btAxisSweep3 or btDbvtBroadphase instead.+///The btMultiSapBroadphase is a broadphase that contains multiple SAP broadphases.+///The user can add SAP broadphases that cover the world. A btBroadphaseProxy can be in multiple child broadphases at the same time.+///A btQuantizedBvh acceleration structures finds overlapping SAPs for each btBroadphaseProxy.+///See http://www.continuousphysics.com/Bullet/phpBB2/viewtopic.php?t=328+///and http://www.continuousphysics.com/Bullet/phpBB2/viewtopic.php?t=1329+class btMultiSapBroadphase :public btBroadphaseInterface+{+	btSapBroadphaseArray	m_sapBroadphases;+	+	btSimpleBroadphase*		m_simpleBroadphase;++	btOverlappingPairCache*	m_overlappingPairs;++	class btQuantizedBvh*			m_optimizedAabbTree;+++	bool					m_ownsPairCache;+	+	btOverlapFilterCallback*	m_filterCallback;++	int			m_invalidPair;++	struct	btBridgeProxy+	{+		btBroadphaseProxy*		m_childProxy;+		btBroadphaseInterface*	m_childBroadphase;+	};+++public:++	struct	btMultiSapProxy	: public btBroadphaseProxy+	{++		///array with all the entries that this proxy belongs to+		btAlignedObjectArray<btBridgeProxy*> m_bridgeProxies;+		btVector3	m_aabbMin;+		btVector3	m_aabbMax;++		int	m_shapeType;++/*		void*	m_userPtr;+		short int	m_collisionFilterGroup;+		short int	m_collisionFilterMask;+*/+		btMultiSapProxy(const btVector3& aabbMin,  const btVector3& aabbMax,int shapeType,void* userPtr, short int collisionFilterGroup,short int collisionFilterMask)+			:btBroadphaseProxy(aabbMin,aabbMax,userPtr,collisionFilterGroup,collisionFilterMask),+			m_aabbMin(aabbMin),+			m_aabbMax(aabbMax),+			m_shapeType(shapeType)+		{+			m_multiSapParentProxy =this;+		}++		+	};++protected:+++	btAlignedObjectArray<btMultiSapProxy*> m_multiSapProxies;++public:++	btMultiSapBroadphase(int maxProxies = 16384,btOverlappingPairCache* pairCache=0);+++	btSapBroadphaseArray&	getBroadphaseArray()+	{+		return m_sapBroadphases;+	}++	const btSapBroadphaseArray&	getBroadphaseArray() const+	{+		return m_sapBroadphases;+	}++	virtual ~btMultiSapBroadphase();++	virtual btBroadphaseProxy*	createProxy(  const btVector3& aabbMin,  const btVector3& aabbMax,int shapeType,void* userPtr, short int collisionFilterGroup,short int collisionFilterMask, btDispatcher* dispatcher,void* multiSapProxy);+	virtual void	destroyProxy(btBroadphaseProxy* proxy,btDispatcher* dispatcher);+	virtual void	setAabb(btBroadphaseProxy* proxy,const btVector3& aabbMin,const btVector3& aabbMax, btDispatcher* dispatcher);+	virtual void	getAabb(btBroadphaseProxy* proxy,btVector3& aabbMin, btVector3& aabbMax ) const;++	virtual void	rayTest(const btVector3& rayFrom,const btVector3& rayTo, btBroadphaseRayCallback& rayCallback,const btVector3& aabbMin=btVector3(0,0,0),const btVector3& aabbMax=btVector3(0,0,0));++	void	addToChildBroadphase(btMultiSapProxy* parentMultiSapProxy, btBroadphaseProxy* childProxy, btBroadphaseInterface*	childBroadphase);++	///calculateOverlappingPairs is optional: incremental algorithms (sweep and prune) might do it during the set aabb+	virtual void	calculateOverlappingPairs(btDispatcher* dispatcher);++	bool	testAabbOverlap(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1);++	virtual	btOverlappingPairCache*	getOverlappingPairCache()+	{+		return m_overlappingPairs;+	}+	virtual	const btOverlappingPairCache*	getOverlappingPairCache() const+	{+		return m_overlappingPairs;+	}++	///getAabb returns the axis aligned bounding box in the 'global' coordinate frame+	///will add some transform later+	virtual void getBroadphaseAabb(btVector3& aabbMin,btVector3& aabbMax) const+	{+		aabbMin.setValue(-BT_LARGE_FLOAT,-BT_LARGE_FLOAT,-BT_LARGE_FLOAT);+		aabbMax.setValue(BT_LARGE_FLOAT,BT_LARGE_FLOAT,BT_LARGE_FLOAT);+	}++	void	buildTree(const btVector3& bvhAabbMin,const btVector3& bvhAabbMax);++	virtual void	printStats();++	void quicksort (btBroadphasePairArray& a, int lo, int hi);++	///reset broadphase internal structures, to ensure determinism/reproducability+	virtual void resetPool(btDispatcher* dispatcher);++};++#endif //BT_MULTI_SAP_BROADPHASE
+ bullet/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h view
@@ -0,0 +1,469 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_OVERLAPPING_PAIR_CACHE_H+#define BT_OVERLAPPING_PAIR_CACHE_H+++#include "btBroadphaseInterface.h"+#include "btBroadphaseProxy.h"+#include "btOverlappingPairCallback.h"++#include "LinearMath/btAlignedObjectArray.h"+class btDispatcher;++typedef btAlignedObjectArray<btBroadphasePair>	btBroadphasePairArray;++struct	btOverlapCallback+{+	virtual ~btOverlapCallback()+	{}+	//return true for deletion of the pair+	virtual bool	processOverlap(btBroadphasePair& pair) = 0;++};++struct btOverlapFilterCallback+{+	virtual ~btOverlapFilterCallback()+	{}+	// return true when pairs need collision+	virtual bool	needBroadphaseCollision(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1) const = 0;+};++++++++extern int gRemovePairs;+extern int gAddedPairs;+extern int gFindPairs;++const int BT_NULL_PAIR=0xffffffff;++///The btOverlappingPairCache provides an interface for overlapping pair management (add, remove, storage), used by the btBroadphaseInterface broadphases.+///The btHashedOverlappingPairCache and btSortedOverlappingPairCache classes are two implementations.+class btOverlappingPairCache : public btOverlappingPairCallback+{+public:+	virtual ~btOverlappingPairCache() {} // this is needed so we can get to the derived class destructor++	virtual btBroadphasePair*	getOverlappingPairArrayPtr() = 0;+	+	virtual const btBroadphasePair*	getOverlappingPairArrayPtr() const = 0;++	virtual btBroadphasePairArray&	getOverlappingPairArray() = 0;++	virtual	void	cleanOverlappingPair(btBroadphasePair& pair,btDispatcher* dispatcher) = 0;++	virtual int getNumOverlappingPairs() const = 0;++	virtual void	cleanProxyFromPairs(btBroadphaseProxy* proxy,btDispatcher* dispatcher) = 0;++	virtual	void setOverlapFilterCallback(btOverlapFilterCallback* callback) = 0;++	virtual void	processAllOverlappingPairs(btOverlapCallback*,btDispatcher* dispatcher) = 0;++	virtual btBroadphasePair* findPair(btBroadphaseProxy* proxy0, btBroadphaseProxy* proxy1) = 0;++	virtual bool	hasDeferredRemoval() = 0;++	virtual	void	setInternalGhostPairCallback(btOverlappingPairCallback* ghostPairCallback)=0;++	virtual void	sortOverlappingPairs(btDispatcher* dispatcher) = 0;+++};++/// Hash-space based Pair Cache, thanks to Erin Catto, Box2D, http://www.box2d.org, and Pierre Terdiman, Codercorner, http://codercorner.com+class btHashedOverlappingPairCache : public btOverlappingPairCache+{+	btBroadphasePairArray	m_overlappingPairArray;+	btOverlapFilterCallback* m_overlapFilterCallback;+	bool		m_blockedForChanges;+++public:+	btHashedOverlappingPairCache();+	virtual ~btHashedOverlappingPairCache();++	+	void	removeOverlappingPairsContainingProxy(btBroadphaseProxy* proxy,btDispatcher* dispatcher);++	virtual void*	removeOverlappingPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1,btDispatcher* dispatcher);+	+	SIMD_FORCE_INLINE bool needsBroadphaseCollision(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1) const+	{+		if (m_overlapFilterCallback)+			return m_overlapFilterCallback->needBroadphaseCollision(proxy0,proxy1);++		bool collides = (proxy0->m_collisionFilterGroup & proxy1->m_collisionFilterMask) != 0;+		collides = collides && (proxy1->m_collisionFilterGroup & proxy0->m_collisionFilterMask);+		+		return collides;+	}++	// Add a pair and return the new pair. If the pair already exists,+	// no new pair is created and the old one is returned.+	virtual btBroadphasePair* 	addOverlappingPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1)+	{+		gAddedPairs++;++		if (!needsBroadphaseCollision(proxy0,proxy1))+			return 0;++		return internalAddPair(proxy0,proxy1);+	}++	++	void	cleanProxyFromPairs(btBroadphaseProxy* proxy,btDispatcher* dispatcher);++	+	virtual void	processAllOverlappingPairs(btOverlapCallback*,btDispatcher* dispatcher);++	virtual btBroadphasePair*	getOverlappingPairArrayPtr()+	{+		return &m_overlappingPairArray[0];+	}++	const btBroadphasePair*	getOverlappingPairArrayPtr() const+	{+		return &m_overlappingPairArray[0];+	}++	btBroadphasePairArray&	getOverlappingPairArray()+	{+		return m_overlappingPairArray;+	}++	const btBroadphasePairArray&	getOverlappingPairArray() const+	{+		return m_overlappingPairArray;+	}++	void	cleanOverlappingPair(btBroadphasePair& pair,btDispatcher* dispatcher);++++	btBroadphasePair* findPair(btBroadphaseProxy* proxy0, btBroadphaseProxy* proxy1);++	int GetCount() const { return m_overlappingPairArray.size(); }+//	btBroadphasePair* GetPairs() { return m_pairs; }++	btOverlapFilterCallback* getOverlapFilterCallback()+	{+		return m_overlapFilterCallback;+	}++	void setOverlapFilterCallback(btOverlapFilterCallback* callback)+	{+		m_overlapFilterCallback = callback;+	}++	int	getNumOverlappingPairs() const+	{+		return m_overlappingPairArray.size();+	}+private:+	+	btBroadphasePair* 	internalAddPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1);++	void	growTables();++	SIMD_FORCE_INLINE bool equalsPair(const btBroadphasePair& pair, int proxyId1, int proxyId2)+	{	+		return pair.m_pProxy0->getUid() == proxyId1 && pair.m_pProxy1->getUid() == proxyId2;+	}++	/*+	// Thomas Wang's hash, see: http://www.concentric.net/~Ttwang/tech/inthash.htm+	// This assumes proxyId1 and proxyId2 are 16-bit.+	SIMD_FORCE_INLINE int getHash(int proxyId1, int proxyId2)+	{+		int key = (proxyId2 << 16) | proxyId1;+		key = ~key + (key << 15);+		key = key ^ (key >> 12);+		key = key + (key << 2);+		key = key ^ (key >> 4);+		key = key * 2057;+		key = key ^ (key >> 16);+		return key;+	}+	*/+++	+	SIMD_FORCE_INLINE	unsigned int getHash(unsigned int proxyId1, unsigned int proxyId2)+	{+		int key = static_cast<int>(((unsigned int)proxyId1) | (((unsigned int)proxyId2) <<16));+		// Thomas Wang's hash++		key += ~(key << 15);+		key ^=  (key >> 10);+		key +=  (key << 3);+		key ^=  (key >> 6);+		key += ~(key << 11);+		key ^=  (key >> 16);+		return static_cast<unsigned int>(key);+	}+	+++++	SIMD_FORCE_INLINE btBroadphasePair* internalFindPair(btBroadphaseProxy* proxy0, btBroadphaseProxy* proxy1, int hash)+	{+		int proxyId1 = proxy0->getUid();+		int proxyId2 = proxy1->getUid();+		#if 0 // wrong, 'equalsPair' use unsorted uids, copy-past devil striked again. Nat.+		if (proxyId1 > proxyId2) +			btSwap(proxyId1, proxyId2);+		#endif++		int index = m_hashTable[hash];+		+		while( index != BT_NULL_PAIR && equalsPair(m_overlappingPairArray[index], proxyId1, proxyId2) == false)+		{+			index = m_next[index];+		}++		if ( index == BT_NULL_PAIR )+		{+			return NULL;+		}++		btAssert(index < m_overlappingPairArray.size());++		return &m_overlappingPairArray[index];+	}++	virtual bool	hasDeferredRemoval()+	{+		return false;+	}++	virtual	void	setInternalGhostPairCallback(btOverlappingPairCallback* ghostPairCallback)+	{+		m_ghostPairCallback = ghostPairCallback;+	}++	virtual void	sortOverlappingPairs(btDispatcher* dispatcher);+	++protected:+	+	btAlignedObjectArray<int>	m_hashTable;+	btAlignedObjectArray<int>	m_next;+	btOverlappingPairCallback*	m_ghostPairCallback;+	+};+++++///btSortedOverlappingPairCache maintains the objects with overlapping AABB+///Typically managed by the Broadphase, Axis3Sweep or btSimpleBroadphase+class	btSortedOverlappingPairCache : public btOverlappingPairCache+{+	protected:+		//avoid brute-force finding all the time+		btBroadphasePairArray	m_overlappingPairArray;++		//during the dispatch, check that user doesn't destroy/create proxy+		bool		m_blockedForChanges;++		///by default, do the removal during the pair traversal+		bool		m_hasDeferredRemoval;+		+		//if set, use the callback instead of the built in filter in needBroadphaseCollision+		btOverlapFilterCallback* m_overlapFilterCallback;++		btOverlappingPairCallback*	m_ghostPairCallback;++	public:+			+		btSortedOverlappingPairCache();	+		virtual ~btSortedOverlappingPairCache();++		virtual void	processAllOverlappingPairs(btOverlapCallback*,btDispatcher* dispatcher);++		void*	removeOverlappingPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1,btDispatcher* dispatcher);++		void	cleanOverlappingPair(btBroadphasePair& pair,btDispatcher* dispatcher);+		+		btBroadphasePair*	addOverlappingPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1);++		btBroadphasePair*	findPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1);+			+		+		void	cleanProxyFromPairs(btBroadphaseProxy* proxy,btDispatcher* dispatcher);++		void	removeOverlappingPairsContainingProxy(btBroadphaseProxy* proxy,btDispatcher* dispatcher);+++		inline bool needsBroadphaseCollision(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1) const+		{+			if (m_overlapFilterCallback)+				return m_overlapFilterCallback->needBroadphaseCollision(proxy0,proxy1);++			bool collides = (proxy0->m_collisionFilterGroup & proxy1->m_collisionFilterMask) != 0;+			collides = collides && (proxy1->m_collisionFilterGroup & proxy0->m_collisionFilterMask);+			+			return collides;+		}+		+		btBroadphasePairArray&	getOverlappingPairArray()+		{+			return m_overlappingPairArray;+		}++		const btBroadphasePairArray&	getOverlappingPairArray() const+		{+			return m_overlappingPairArray;+		}++		+++		btBroadphasePair*	getOverlappingPairArrayPtr()+		{+			return &m_overlappingPairArray[0];+		}++		const btBroadphasePair*	getOverlappingPairArrayPtr() const+		{+			return &m_overlappingPairArray[0];+		}++		int	getNumOverlappingPairs() const+		{+			return m_overlappingPairArray.size();+		}+		+		btOverlapFilterCallback* getOverlapFilterCallback()+		{+			return m_overlapFilterCallback;+		}++		void setOverlapFilterCallback(btOverlapFilterCallback* callback)+		{+			m_overlapFilterCallback = callback;+		}++		virtual bool	hasDeferredRemoval()+		{+			return m_hasDeferredRemoval;+		}++		virtual	void	setInternalGhostPairCallback(btOverlappingPairCallback* ghostPairCallback)+		{+			m_ghostPairCallback = ghostPairCallback;+		}++		virtual void	sortOverlappingPairs(btDispatcher* dispatcher);+		++};++++///btNullPairCache skips add/removal of overlapping pairs. Userful for benchmarking and unit testing.+class btNullPairCache : public btOverlappingPairCache+{++	btBroadphasePairArray	m_overlappingPairArray;++public:++	virtual btBroadphasePair*	getOverlappingPairArrayPtr()+	{+		return &m_overlappingPairArray[0];+	}+	const btBroadphasePair*	getOverlappingPairArrayPtr() const+	{+		return &m_overlappingPairArray[0];+	}+	btBroadphasePairArray&	getOverlappingPairArray()+	{+		return m_overlappingPairArray;+	}+	+	virtual	void	cleanOverlappingPair(btBroadphasePair& /*pair*/,btDispatcher* /*dispatcher*/)+	{++	}++	virtual int getNumOverlappingPairs() const+	{+		return 0;+	}++	virtual void	cleanProxyFromPairs(btBroadphaseProxy* /*proxy*/,btDispatcher* /*dispatcher*/)+	{++	}++	virtual	void setOverlapFilterCallback(btOverlapFilterCallback* /*callback*/)+	{+	}++	virtual void	processAllOverlappingPairs(btOverlapCallback*,btDispatcher* /*dispatcher*/)+	{+	}++	virtual btBroadphasePair* findPair(btBroadphaseProxy* /*proxy0*/, btBroadphaseProxy* /*proxy1*/)+	{+		return 0;+	}++	virtual bool	hasDeferredRemoval()+	{+		return true;+	}++	virtual	void	setInternalGhostPairCallback(btOverlappingPairCallback* /* ghostPairCallback */)+	{++	}++	virtual btBroadphasePair*	addOverlappingPair(btBroadphaseProxy* /*proxy0*/,btBroadphaseProxy* /*proxy1*/)+	{+		return 0;+	}++	virtual void*	removeOverlappingPair(btBroadphaseProxy* /*proxy0*/,btBroadphaseProxy* /*proxy1*/,btDispatcher* /*dispatcher*/)+	{+		return 0;+	}++	virtual void	removeOverlappingPairsContainingProxy(btBroadphaseProxy* /*proxy0*/,btDispatcher* /*dispatcher*/)+	{+	}+	+	virtual void	sortOverlappingPairs(btDispatcher* dispatcher)+	{+        (void) dispatcher;+	}+++};+++#endif //BT_OVERLAPPING_PAIR_CACHE_H++
+ bullet/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h view
@@ -0,0 +1,40 @@++/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef OVERLAPPING_PAIR_CALLBACK_H+#define OVERLAPPING_PAIR_CALLBACK_H++class btDispatcher;+struct  btBroadphasePair;++///The btOverlappingPairCallback class is an additional optional broadphase user callback for adding/removing overlapping pairs, similar interface to btOverlappingPairCache.+class btOverlappingPairCallback+{+public:+	virtual ~btOverlappingPairCallback()+	{++	}+	+	virtual btBroadphasePair*	addOverlappingPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1) = 0;++	virtual void*	removeOverlappingPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1,btDispatcher* dispatcher) = 0;++	virtual void	removeOverlappingPairsContainingProxy(btBroadphaseProxy* proxy0,btDispatcher* dispatcher) = 0;++};++#endif //OVERLAPPING_PAIR_CALLBACK_H
+ bullet/BulletCollision/BroadphaseCollision/btQuantizedBvh.h view
@@ -0,0 +1,579 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_QUANTIZED_BVH_H+#define BT_QUANTIZED_BVH_H++class btSerializer;++//#define DEBUG_CHECK_DEQUANTIZATION 1+#ifdef DEBUG_CHECK_DEQUANTIZATION+#ifdef __SPU__+#define printf spu_printf+#endif //__SPU__++#include <stdio.h>+#include <stdlib.h>+#endif //DEBUG_CHECK_DEQUANTIZATION++#include "LinearMath/btVector3.h"+#include "LinearMath/btAlignedAllocator.h"++#ifdef BT_USE_DOUBLE_PRECISION+#define btQuantizedBvhData btQuantizedBvhDoubleData+#define btOptimizedBvhNodeData btOptimizedBvhNodeDoubleData+#define btQuantizedBvhDataName "btQuantizedBvhDoubleData"+#else+#define btQuantizedBvhData btQuantizedBvhFloatData+#define btOptimizedBvhNodeData btOptimizedBvhNodeFloatData+#define btQuantizedBvhDataName "btQuantizedBvhFloatData"+#endif++++//http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclang/html/vclrf__m128.asp+++//Note: currently we have 16 bytes per quantized node+#define MAX_SUBTREE_SIZE_IN_BYTES  2048++// 10 gives the potential for 1024 parts, with at most 2^21 (2097152) (minus one+// actually) triangles each (since the sign bit is reserved+#define MAX_NUM_PARTS_IN_BITS 10++///btQuantizedBvhNode is a compressed aabb node, 16 bytes.+///Node can be used for leafnode or internal node. Leafnodes can point to 32-bit triangle index (non-negative range).+ATTRIBUTE_ALIGNED16	(struct) btQuantizedBvhNode+{+	BT_DECLARE_ALIGNED_ALLOCATOR();++	//12 bytes+	unsigned short int	m_quantizedAabbMin[3];+	unsigned short int	m_quantizedAabbMax[3];+	//4 bytes+	int	m_escapeIndexOrTriangleIndex;++	bool isLeafNode() const+	{+		//skipindex is negative (internal node), triangleindex >=0 (leafnode)+		return (m_escapeIndexOrTriangleIndex >= 0);+	}+	int getEscapeIndex() const+	{+		btAssert(!isLeafNode());+		return -m_escapeIndexOrTriangleIndex;+	}+	int	getTriangleIndex() const+	{+		btAssert(isLeafNode());+		// Get only the lower bits where the triangle index is stored+		return (m_escapeIndexOrTriangleIndex&~((~0)<<(31-MAX_NUM_PARTS_IN_BITS)));+	}+	int	getPartId() const+	{+		btAssert(isLeafNode());+		// Get only the highest bits where the part index is stored+		return (m_escapeIndexOrTriangleIndex>>(31-MAX_NUM_PARTS_IN_BITS));+	}+}+;++/// btOptimizedBvhNode contains both internal and leaf node information.+/// Total node size is 44 bytes / node. You can use the compressed version of 16 bytes.+ATTRIBUTE_ALIGNED16 (struct) btOptimizedBvhNode+{+	BT_DECLARE_ALIGNED_ALLOCATOR();++	//32 bytes+	btVector3	m_aabbMinOrg;+	btVector3	m_aabbMaxOrg;++	//4+	int	m_escapeIndex;++	//8+	//for child nodes+	int	m_subPart;+	int	m_triangleIndex;+	int	m_padding[5];//bad, due to alignment+++};+++///btBvhSubtreeInfo provides info to gather a subtree of limited size+ATTRIBUTE_ALIGNED16(class) btBvhSubtreeInfo+{+public:+	BT_DECLARE_ALIGNED_ALLOCATOR();++	//12 bytes+	unsigned short int	m_quantizedAabbMin[3];+	unsigned short int	m_quantizedAabbMax[3];+	//4 bytes, points to the root of the subtree+	int			m_rootNodeIndex;+	//4 bytes+	int			m_subtreeSize;+	int			m_padding[3];++	btBvhSubtreeInfo()+	{+		//memset(&m_padding[0], 0, sizeof(m_padding));+	}+++	void	setAabbFromQuantizeNode(const btQuantizedBvhNode& quantizedNode)+	{+		m_quantizedAabbMin[0] = quantizedNode.m_quantizedAabbMin[0];+		m_quantizedAabbMin[1] = quantizedNode.m_quantizedAabbMin[1];+		m_quantizedAabbMin[2] = quantizedNode.m_quantizedAabbMin[2];+		m_quantizedAabbMax[0] = quantizedNode.m_quantizedAabbMax[0];+		m_quantizedAabbMax[1] = quantizedNode.m_quantizedAabbMax[1];+		m_quantizedAabbMax[2] = quantizedNode.m_quantizedAabbMax[2];+	}+}+;+++class btNodeOverlapCallback+{+public:+	virtual ~btNodeOverlapCallback() {};++	virtual void processNode(int subPart, int triangleIndex) = 0;+};++#include "LinearMath/btAlignedAllocator.h"+#include "LinearMath/btAlignedObjectArray.h"++++///for code readability:+typedef btAlignedObjectArray<btOptimizedBvhNode>	NodeArray;+typedef btAlignedObjectArray<btQuantizedBvhNode>	QuantizedNodeArray;+typedef btAlignedObjectArray<btBvhSubtreeInfo>		BvhSubtreeInfoArray;+++///The btQuantizedBvh class stores an AABB tree that can be quickly traversed on CPU and Cell SPU.+///It is used by the btBvhTriangleMeshShape as midphase, and by the btMultiSapBroadphase.+///It is recommended to use quantization for better performance and lower memory requirements.+ATTRIBUTE_ALIGNED16(class) btQuantizedBvh+{+public:+	enum btTraversalMode+	{+		TRAVERSAL_STACKLESS = 0,+		TRAVERSAL_STACKLESS_CACHE_FRIENDLY,+		TRAVERSAL_RECURSIVE+	};++protected:+++	btVector3			m_bvhAabbMin;+	btVector3			m_bvhAabbMax;+	btVector3			m_bvhQuantization;++	int					m_bulletVersion;	//for serialization versioning. It could also be used to detect endianess.++	int					m_curNodeIndex;+	//quantization data+	bool				m_useQuantization;++++	NodeArray			m_leafNodes;+	NodeArray			m_contiguousNodes;+	QuantizedNodeArray	m_quantizedLeafNodes;+	QuantizedNodeArray	m_quantizedContiguousNodes;+	+	btTraversalMode	m_traversalMode;+	BvhSubtreeInfoArray		m_SubtreeHeaders;++	//This is only used for serialization so we don't have to add serialization directly to btAlignedObjectArray+	mutable int m_subtreeHeaderCount;++	++++	///two versions, one for quantized and normal nodes. This allows code-reuse while maintaining readability (no template/macro!)+	///this might be refactored into a virtual, it is usually not calculated at run-time+	void	setInternalNodeAabbMin(int nodeIndex, const btVector3& aabbMin)+	{+		if (m_useQuantization)+		{+			quantize(&m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[0] ,aabbMin,0);+		} else+		{+			m_contiguousNodes[nodeIndex].m_aabbMinOrg = aabbMin;++		}+	}+	void	setInternalNodeAabbMax(int nodeIndex,const btVector3& aabbMax)+	{+		if (m_useQuantization)+		{+			quantize(&m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[0],aabbMax,1);+		} else+		{+			m_contiguousNodes[nodeIndex].m_aabbMaxOrg = aabbMax;+		}+	}++	btVector3 getAabbMin(int nodeIndex) const+	{+		if (m_useQuantization)+		{+			return unQuantize(&m_quantizedLeafNodes[nodeIndex].m_quantizedAabbMin[0]);+		}+		//non-quantized+		return m_leafNodes[nodeIndex].m_aabbMinOrg;++	}+	btVector3 getAabbMax(int nodeIndex) const+	{+		if (m_useQuantization)+		{+			return unQuantize(&m_quantizedLeafNodes[nodeIndex].m_quantizedAabbMax[0]);+		} +		//non-quantized+		return m_leafNodes[nodeIndex].m_aabbMaxOrg;+		+	}++	+	void	setInternalNodeEscapeIndex(int nodeIndex, int escapeIndex)+	{+		if (m_useQuantization)+		{+			m_quantizedContiguousNodes[nodeIndex].m_escapeIndexOrTriangleIndex = -escapeIndex;+		} +		else+		{+			m_contiguousNodes[nodeIndex].m_escapeIndex = escapeIndex;+		}++	}++	void mergeInternalNodeAabb(int nodeIndex,const btVector3& newAabbMin,const btVector3& newAabbMax) +	{+		if (m_useQuantization)+		{+			unsigned short int quantizedAabbMin[3];+			unsigned short int quantizedAabbMax[3];+			quantize(quantizedAabbMin,newAabbMin,0);+			quantize(quantizedAabbMax,newAabbMax,1);+			for (int i=0;i<3;i++)+			{+				if (m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[i] > quantizedAabbMin[i])+					m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[i] = quantizedAabbMin[i];++				if (m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[i] < quantizedAabbMax[i])+					m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[i] = quantizedAabbMax[i];++			}+		} else+		{+			//non-quantized+			m_contiguousNodes[nodeIndex].m_aabbMinOrg.setMin(newAabbMin);+			m_contiguousNodes[nodeIndex].m_aabbMaxOrg.setMax(newAabbMax);		+		}+	}++	void	swapLeafNodes(int firstIndex,int secondIndex);++	void	assignInternalNodeFromLeafNode(int internalNode,int leafNodeIndex);++protected:++	++	void	buildTree	(int startIndex,int endIndex);++	int	calcSplittingAxis(int startIndex,int endIndex);++	int	sortAndCalcSplittingIndex(int startIndex,int endIndex,int splitAxis);+	+	void	walkStacklessTree(btNodeOverlapCallback* nodeCallback,const btVector3& aabbMin,const btVector3& aabbMax) const;++	void	walkStacklessQuantizedTreeAgainstRay(btNodeOverlapCallback* nodeCallback, const btVector3& raySource, const btVector3& rayTarget, const btVector3& aabbMin, const btVector3& aabbMax, int startNodeIndex,int endNodeIndex) const;+	void	walkStacklessQuantizedTree(btNodeOverlapCallback* nodeCallback,unsigned short int* quantizedQueryAabbMin,unsigned short int* quantizedQueryAabbMax,int startNodeIndex,int endNodeIndex) const;+	void	walkStacklessTreeAgainstRay(btNodeOverlapCallback* nodeCallback, const btVector3& raySource, const btVector3& rayTarget, const btVector3& aabbMin, const btVector3& aabbMax, int startNodeIndex,int endNodeIndex) const;++	///tree traversal designed for small-memory processors like PS3 SPU+	void	walkStacklessQuantizedTreeCacheFriendly(btNodeOverlapCallback* nodeCallback,unsigned short int* quantizedQueryAabbMin,unsigned short int* quantizedQueryAabbMax) const;++	///use the 16-byte stackless 'skipindex' node tree to do a recursive traversal+	void	walkRecursiveQuantizedTreeAgainstQueryAabb(const btQuantizedBvhNode* currentNode,btNodeOverlapCallback* nodeCallback,unsigned short int* quantizedQueryAabbMin,unsigned short int* quantizedQueryAabbMax) const;++	///use the 16-byte stackless 'skipindex' node tree to do a recursive traversal+	void	walkRecursiveQuantizedTreeAgainstQuantizedTree(const btQuantizedBvhNode* treeNodeA,const btQuantizedBvhNode* treeNodeB,btNodeOverlapCallback* nodeCallback) const;+	++++	void	updateSubtreeHeaders(int leftChildNodexIndex,int rightChildNodexIndex);++public:+	+	BT_DECLARE_ALIGNED_ALLOCATOR();++	btQuantizedBvh();++	virtual ~btQuantizedBvh();++	+	///***************************************** expert/internal use only *************************+	void	setQuantizationValues(const btVector3& bvhAabbMin,const btVector3& bvhAabbMax,btScalar quantizationMargin=btScalar(1.0));+	QuantizedNodeArray&	getLeafNodeArray() {			return	m_quantizedLeafNodes;	}+	///buildInternal is expert use only: assumes that setQuantizationValues and LeafNodeArray are initialized+	void	buildInternal();+	///***************************************** expert/internal use only *************************++	void	reportAabbOverlappingNodex(btNodeOverlapCallback* nodeCallback,const btVector3& aabbMin,const btVector3& aabbMax) const;+	void	reportRayOverlappingNodex (btNodeOverlapCallback* nodeCallback, const btVector3& raySource, const btVector3& rayTarget) const;+	void	reportBoxCastOverlappingNodex(btNodeOverlapCallback* nodeCallback, const btVector3& raySource, const btVector3& rayTarget, const btVector3& aabbMin,const btVector3& aabbMax) const;++		SIMD_FORCE_INLINE void quantize(unsigned short* out, const btVector3& point,int isMax) const+	{++		btAssert(m_useQuantization);++		btAssert(point.getX() <= m_bvhAabbMax.getX());+		btAssert(point.getY() <= m_bvhAabbMax.getY());+		btAssert(point.getZ() <= m_bvhAabbMax.getZ());++		btAssert(point.getX() >= m_bvhAabbMin.getX());+		btAssert(point.getY() >= m_bvhAabbMin.getY());+		btAssert(point.getZ() >= m_bvhAabbMin.getZ());++		btVector3 v = (point - m_bvhAabbMin) * m_bvhQuantization;+		///Make sure rounding is done in a way that unQuantize(quantizeWithClamp(...)) is conservative+		///end-points always set the first bit, so that they are sorted properly (so that neighbouring AABBs overlap properly)+		///@todo: double-check this+		if (isMax)+		{+			out[0] = (unsigned short) (((unsigned short)(v.getX()+btScalar(1.)) | 1));+			out[1] = (unsigned short) (((unsigned short)(v.getY()+btScalar(1.)) | 1));+			out[2] = (unsigned short) (((unsigned short)(v.getZ()+btScalar(1.)) | 1));+		} else+		{+			out[0] = (unsigned short) (((unsigned short)(v.getX()) & 0xfffe));+			out[1] = (unsigned short) (((unsigned short)(v.getY()) & 0xfffe));+			out[2] = (unsigned short) (((unsigned short)(v.getZ()) & 0xfffe));+		}+++#ifdef DEBUG_CHECK_DEQUANTIZATION+		btVector3 newPoint = unQuantize(out);+		if (isMax)+		{+			if (newPoint.getX() < point.getX())+			{+				printf("unconservative X, diffX = %f, oldX=%f,newX=%f\n",newPoint.getX()-point.getX(), newPoint.getX(),point.getX());+			}+			if (newPoint.getY() < point.getY())+			{+				printf("unconservative Y, diffY = %f, oldY=%f,newY=%f\n",newPoint.getY()-point.getY(), newPoint.getY(),point.getY());+			}+			if (newPoint.getZ() < point.getZ())+			{++				printf("unconservative Z, diffZ = %f, oldZ=%f,newZ=%f\n",newPoint.getZ()-point.getZ(), newPoint.getZ(),point.getZ());+			}+		} else+		{+			if (newPoint.getX() > point.getX())+			{+				printf("unconservative X, diffX = %f, oldX=%f,newX=%f\n",newPoint.getX()-point.getX(), newPoint.getX(),point.getX());+			}+			if (newPoint.getY() > point.getY())+			{+				printf("unconservative Y, diffY = %f, oldY=%f,newY=%f\n",newPoint.getY()-point.getY(), newPoint.getY(),point.getY());+			}+			if (newPoint.getZ() > point.getZ())+			{+				printf("unconservative Z, diffZ = %f, oldZ=%f,newZ=%f\n",newPoint.getZ()-point.getZ(), newPoint.getZ(),point.getZ());+			}+		}+#endif //DEBUG_CHECK_DEQUANTIZATION++	}+++	SIMD_FORCE_INLINE void quantizeWithClamp(unsigned short* out, const btVector3& point2,int isMax) const+	{++		btAssert(m_useQuantization);++		btVector3 clampedPoint(point2);+		clampedPoint.setMax(m_bvhAabbMin);+		clampedPoint.setMin(m_bvhAabbMax);++		quantize(out,clampedPoint,isMax);++	}+	+	SIMD_FORCE_INLINE btVector3	unQuantize(const unsigned short* vecIn) const+	{+			btVector3	vecOut;+			vecOut.setValue(+			(btScalar)(vecIn[0]) / (m_bvhQuantization.getX()),+			(btScalar)(vecIn[1]) / (m_bvhQuantization.getY()),+			(btScalar)(vecIn[2]) / (m_bvhQuantization.getZ()));+			vecOut += m_bvhAabbMin;+			return vecOut;+	}++	///setTraversalMode let's you choose between stackless, recursive or stackless cache friendly tree traversal. Note this is only implemented for quantized trees.+	void	setTraversalMode(btTraversalMode	traversalMode)+	{+		m_traversalMode = traversalMode;+	}+++	SIMD_FORCE_INLINE QuantizedNodeArray&	getQuantizedNodeArray()+	{	+		return	m_quantizedContiguousNodes;+	}+++	SIMD_FORCE_INLINE BvhSubtreeInfoArray&	getSubtreeInfoArray()+	{+		return m_SubtreeHeaders;+	}++////////////////////////////////////////////////////////////////////++	/////Calculate space needed to store BVH for serialization+	unsigned calculateSerializeBufferSize() const;++	/// Data buffer MUST be 16 byte aligned+	virtual bool serialize(void *o_alignedDataBuffer, unsigned i_dataBufferSize, bool i_swapEndian) const;++	///deSerializeInPlace loads and initializes a BVH from a buffer in memory 'in place'+	static btQuantizedBvh *deSerializeInPlace(void *i_alignedDataBuffer, unsigned int i_dataBufferSize, bool i_swapEndian);++	static unsigned int getAlignmentSerializationPadding();+//////////////////////////////////////////////////////////////////////++	+	virtual	int	calculateSerializeBufferSizeNew() const;++	///fills the dataBuffer and returns the struct name (and 0 on failure)+	virtual	const char*	serialize(void* dataBuffer, btSerializer* serializer) const;++	virtual	void deSerializeFloat(struct btQuantizedBvhFloatData& quantizedBvhFloatData);++	virtual	void deSerializeDouble(struct btQuantizedBvhDoubleData& quantizedBvhDoubleData);+++////////////////////////////////////////////////////////////////////++	SIMD_FORCE_INLINE bool isQuantized()+	{+		return m_useQuantization;+	}++private:+	// Special "copy" constructor that allows for in-place deserialization+	// Prevents btVector3's default constructor from being called, but doesn't inialize much else+	// ownsMemory should most likely be false if deserializing, and if you are not, don't call this (it also changes the function signature, which we need)+	btQuantizedBvh(btQuantizedBvh &other, bool ownsMemory);++}+;+++struct	btBvhSubtreeInfoData+{+	int			m_rootNodeIndex;+	int			m_subtreeSize;+	unsigned short m_quantizedAabbMin[3];+	unsigned short m_quantizedAabbMax[3];+};++struct btOptimizedBvhNodeFloatData+{+	btVector3FloatData	m_aabbMinOrg;+	btVector3FloatData	m_aabbMaxOrg;+	int	m_escapeIndex;+	int	m_subPart;+	int	m_triangleIndex;+	char m_pad[4];+};++struct btOptimizedBvhNodeDoubleData+{+	btVector3DoubleData	m_aabbMinOrg;+	btVector3DoubleData	m_aabbMaxOrg;+	int	m_escapeIndex;+	int	m_subPart;+	int	m_triangleIndex;+	char	m_pad[4];+};+++struct btQuantizedBvhNodeData+{+	unsigned short m_quantizedAabbMin[3];+	unsigned short m_quantizedAabbMax[3];+	int	m_escapeIndexOrTriangleIndex;+};++struct	btQuantizedBvhFloatData+{+	btVector3FloatData			m_bvhAabbMin;+	btVector3FloatData			m_bvhAabbMax;+	btVector3FloatData			m_bvhQuantization;+	int					m_curNodeIndex;+	int					m_useQuantization;+	int					m_numContiguousLeafNodes;+	int					m_numQuantizedContiguousNodes;+	btOptimizedBvhNodeFloatData	*m_contiguousNodesPtr;+	btQuantizedBvhNodeData		*m_quantizedContiguousNodesPtr;+	btBvhSubtreeInfoData	*m_subTreeInfoPtr;+	int					m_traversalMode;+	int					m_numSubtreeHeaders;+	+};++struct	btQuantizedBvhDoubleData+{+	btVector3DoubleData			m_bvhAabbMin;+	btVector3DoubleData			m_bvhAabbMax;+	btVector3DoubleData			m_bvhQuantization;+	int							m_curNodeIndex;+	int							m_useQuantization;+	int							m_numContiguousLeafNodes;+	int							m_numQuantizedContiguousNodes;+	btOptimizedBvhNodeDoubleData	*m_contiguousNodesPtr;+	btQuantizedBvhNodeData			*m_quantizedContiguousNodesPtr;++	int							m_traversalMode;+	int							m_numSubtreeHeaders;+	btBvhSubtreeInfoData		*m_subTreeInfoPtr;+};+++SIMD_FORCE_INLINE	int	btQuantizedBvh::calculateSerializeBufferSizeNew() const+{+	return sizeof(btQuantizedBvhData);+}++++#endif //BT_QUANTIZED_BVH_H
+ bullet/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h view
@@ -0,0 +1,171 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_SIMPLE_BROADPHASE_H+#define BT_SIMPLE_BROADPHASE_H+++#include "btOverlappingPairCache.h"+++struct btSimpleBroadphaseProxy : public btBroadphaseProxy+{+	int			m_nextFree;+	+//	int			m_handleId;++	+	btSimpleBroadphaseProxy() {};++	btSimpleBroadphaseProxy(const btVector3& minpt,const btVector3& maxpt,int shapeType,void* userPtr,short int collisionFilterGroup,short int collisionFilterMask,void* multiSapProxy)+	:btBroadphaseProxy(minpt,maxpt,userPtr,collisionFilterGroup,collisionFilterMask,multiSapProxy)+	{+		(void)shapeType;+	}+	+	+	SIMD_FORCE_INLINE void SetNextFree(int next) {m_nextFree = next;}+	SIMD_FORCE_INLINE int GetNextFree() const {return m_nextFree;}++	+++};++///The SimpleBroadphase is just a unit-test for btAxisSweep3, bt32BitAxisSweep3, or btDbvtBroadphase, so use those classes instead.+///It is a brute force aabb culling broadphase based on O(n^2) aabb checks+class btSimpleBroadphase : public btBroadphaseInterface+{++protected:++	int		m_numHandles;						// number of active handles+	int		m_maxHandles;						// max number of handles+	int		m_LastHandleIndex;							+	+	btSimpleBroadphaseProxy* m_pHandles;						// handles pool++	void* m_pHandlesRawPtr;+	int		m_firstFreeHandle;		// free handles list+	+	int allocHandle()+	{+		btAssert(m_numHandles < m_maxHandles);+		int freeHandle = m_firstFreeHandle;+		m_firstFreeHandle = m_pHandles[freeHandle].GetNextFree();+		m_numHandles++;+		if(freeHandle > m_LastHandleIndex)+		{+			m_LastHandleIndex = freeHandle;+		}+		return freeHandle;+	}++	void freeHandle(btSimpleBroadphaseProxy* proxy)+	{+		int handle = int(proxy-m_pHandles);+		btAssert(handle >= 0 && handle < m_maxHandles);+		if(handle == m_LastHandleIndex)+		{+			m_LastHandleIndex--;+		}+		proxy->SetNextFree(m_firstFreeHandle);+		m_firstFreeHandle = handle;++		proxy->m_clientObject = 0;++		m_numHandles--;+	}++	btOverlappingPairCache*	m_pairCache;+	bool	m_ownsPairCache;++	int	m_invalidPair;++	+	+	inline btSimpleBroadphaseProxy*	getSimpleProxyFromProxy(btBroadphaseProxy* proxy)+	{+		btSimpleBroadphaseProxy* proxy0 = static_cast<btSimpleBroadphaseProxy*>(proxy);+		return proxy0;+	}++	inline const btSimpleBroadphaseProxy*	getSimpleProxyFromProxy(btBroadphaseProxy* proxy) const+	{+		const btSimpleBroadphaseProxy* proxy0 = static_cast<const btSimpleBroadphaseProxy*>(proxy);+		return proxy0;+	}++	///reset broadphase internal structures, to ensure determinism/reproducability+	virtual void resetPool(btDispatcher* dispatcher);+++	void	validate();++protected:+++	++public:+	btSimpleBroadphase(int maxProxies=16384,btOverlappingPairCache* overlappingPairCache=0);+	virtual ~btSimpleBroadphase();+++		static bool	aabbOverlap(btSimpleBroadphaseProxy* proxy0,btSimpleBroadphaseProxy* proxy1);+++	virtual btBroadphaseProxy*	createProxy(  const btVector3& aabbMin,  const btVector3& aabbMax,int shapeType,void* userPtr ,short int collisionFilterGroup,short int collisionFilterMask, btDispatcher* dispatcher,void* multiSapProxy);++	virtual void	calculateOverlappingPairs(btDispatcher* dispatcher);++	virtual void	destroyProxy(btBroadphaseProxy* proxy,btDispatcher* dispatcher);+	virtual void	setAabb(btBroadphaseProxy* proxy,const btVector3& aabbMin,const btVector3& aabbMax, btDispatcher* dispatcher);+	virtual void	getAabb(btBroadphaseProxy* proxy,btVector3& aabbMin, btVector3& aabbMax ) const;++	virtual void	rayTest(const btVector3& rayFrom,const btVector3& rayTo, btBroadphaseRayCallback& rayCallback, const btVector3& aabbMin=btVector3(0,0,0),const btVector3& aabbMax=btVector3(0,0,0));+	virtual void	aabbTest(const btVector3& aabbMin, const btVector3& aabbMax, btBroadphaseAabbCallback& callback);+		+	btOverlappingPairCache*	getOverlappingPairCache()+	{+		return m_pairCache;+	}+	const btOverlappingPairCache*	getOverlappingPairCache() const+	{+		return m_pairCache;+	}++	bool	testAabbOverlap(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1);+++	///getAabb returns the axis aligned bounding box in the 'global' coordinate frame+	///will add some transform later+	virtual void getBroadphaseAabb(btVector3& aabbMin,btVector3& aabbMax) const+	{+		aabbMin.setValue(-BT_LARGE_FLOAT,-BT_LARGE_FLOAT,-BT_LARGE_FLOAT);+		aabbMax.setValue(BT_LARGE_FLOAT,BT_LARGE_FLOAT,BT_LARGE_FLOAT);+	}++	virtual void	printStats()+	{+//		printf("btSimpleBroadphase.h\n");+//		printf("numHandles = %d, maxHandles = %d\n",m_numHandles,m_maxHandles);+	}+};++++#endif //BT_SIMPLE_BROADPHASE_H+
+ bullet/BulletCollision/CollisionDispatch/SphereTriangleDetector.h view
@@ -0,0 +1,51 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_SPHERE_TRIANGLE_DETECTOR_H+#define BT_SPHERE_TRIANGLE_DETECTOR_H++#include "BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h"++++class btSphereShape;+class btTriangleShape;++++/// sphere-triangle to match the btDiscreteCollisionDetectorInterface+struct SphereTriangleDetector : public btDiscreteCollisionDetectorInterface+{+	virtual void	getClosestPoints(const ClosestPointInput& input,Result& output,class btIDebugDraw* debugDraw,bool swapResults=false);++	SphereTriangleDetector(btSphereShape* sphere,btTriangleShape* triangle, btScalar contactBreakingThreshold);++	virtual ~SphereTriangleDetector() {};++	bool collide(const btVector3& sphereCenter,btVector3 &point, btVector3& resultNormal, btScalar& depth, btScalar &timeOfImpact, btScalar	contactBreakingThreshold);++private:++	+	bool pointInTriangle(const btVector3 vertices[], const btVector3 &normal, btVector3 *p );+	bool facecontains(const btVector3 &p,const btVector3* vertices,btVector3& normal);++	btSphereShape* m_sphere;+	btTriangleShape* m_triangle;+	btScalar	m_contactBreakingThreshold;+	+};+#endif //BT_SPHERE_TRIANGLE_DETECTOR_H+
+ bullet/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h view
@@ -0,0 +1,36 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2008 Erwin Coumans  http://bulletphysics.com++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef __BT_ACTIVATING_COLLISION_ALGORITHM_H+#define __BT_ACTIVATING_COLLISION_ALGORITHM_H++#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h"++///This class is not enabled yet (work-in-progress) to more aggressively activate objects.+class btActivatingCollisionAlgorithm : public btCollisionAlgorithm+{+//	btCollisionObject* m_colObj0;+//	btCollisionObject* m_colObj1;++public:++	btActivatingCollisionAlgorithm (const btCollisionAlgorithmConstructionInfo& ci);++	btActivatingCollisionAlgorithm (const btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* colObj0,btCollisionObject* colObj1);++	virtual ~btActivatingCollisionAlgorithm();++};+#endif //__BT_ACTIVATING_COLLISION_ALGORITHM_H
+ bullet/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h view
@@ -0,0 +1,66 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_BOX_2D_BOX_2D__COLLISION_ALGORITHM_H+#define BT_BOX_2D_BOX_2D__COLLISION_ALGORITHM_H++#include "BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h"+#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h"+#include "BulletCollision/BroadphaseCollision/btDispatcher.h"+#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h"++class btPersistentManifold;++///box-box collision detection+class btBox2dBox2dCollisionAlgorithm : public btActivatingCollisionAlgorithm+{+	bool	m_ownManifold;+	btPersistentManifold*	m_manifoldPtr;+	+public:+	btBox2dBox2dCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci)+		: btActivatingCollisionAlgorithm(ci) {}++	virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);++	virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);++	btBox2dBox2dCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1);++	virtual ~btBox2dBox2dCollisionAlgorithm();++	virtual	void	getAllContactManifolds(btManifoldArray&	manifoldArray)+	{+		if (m_manifoldPtr && m_ownManifold)+		{+			manifoldArray.push_back(m_manifoldPtr);+		}+	}+++	struct CreateFunc :public 	btCollisionAlgorithmCreateFunc+	{+		virtual	btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1)+		{+			int bbsize = sizeof(btBox2dBox2dCollisionAlgorithm);+			void* ptr = ci.m_dispatcher1->allocateCollisionAlgorithm(bbsize);+			return new(ptr) btBox2dBox2dCollisionAlgorithm(0,ci,body0,body1);+		}+	};++};++#endif //BT_BOX_2D_BOX_2D__COLLISION_ALGORITHM_H+
+ bullet/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.h view
@@ -0,0 +1,66 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_BOX_BOX__COLLISION_ALGORITHM_H+#define BT_BOX_BOX__COLLISION_ALGORITHM_H++#include "btActivatingCollisionAlgorithm.h"+#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h"+#include "BulletCollision/BroadphaseCollision/btDispatcher.h"+#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h"++class btPersistentManifold;++///box-box collision detection+class btBoxBoxCollisionAlgorithm : public btActivatingCollisionAlgorithm+{+	bool	m_ownManifold;+	btPersistentManifold*	m_manifoldPtr;+	+public:+	btBoxBoxCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci)+		: btActivatingCollisionAlgorithm(ci) {}++	virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);++	virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);++	btBoxBoxCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1);++	virtual ~btBoxBoxCollisionAlgorithm();++	virtual	void	getAllContactManifolds(btManifoldArray&	manifoldArray)+	{+		if (m_manifoldPtr && m_ownManifold)+		{+			manifoldArray.push_back(m_manifoldPtr);+		}+	}+++	struct CreateFunc :public 	btCollisionAlgorithmCreateFunc+	{+		virtual	btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1)+		{+			int bbsize = sizeof(btBoxBoxCollisionAlgorithm);+			void* ptr = ci.m_dispatcher1->allocateCollisionAlgorithm(bbsize);+			return new(ptr) btBoxBoxCollisionAlgorithm(0,ci,body0,body1);+		}+	};++};++#endif //BT_BOX_BOX__COLLISION_ALGORITHM_H+
+ bullet/BulletCollision/CollisionDispatch/btBoxBoxDetector.h view
@@ -0,0 +1,44 @@+/*+ * Box-Box collision detection re-distributed under the ZLib license with permission from Russell L. Smith+ * Original version is from Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.+ * All rights reserved.  Email: russ@q12.org   Web: www.q12.org++Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+#ifndef BT_BOX_BOX_DETECTOR_H+#define BT_BOX_BOX_DETECTOR_H+++class btBoxShape;+#include "BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h"+++/// btBoxBoxDetector wraps the ODE box-box collision detector+/// re-distributed under the Zlib license with permission from Russell L. Smith+struct btBoxBoxDetector : public btDiscreteCollisionDetectorInterface+{+	btBoxShape* m_box1;+	btBoxShape* m_box2;++public:++	btBoxBoxDetector(btBoxShape* box1,btBoxShape* box2);++	virtual ~btBoxBoxDetector() {};++	virtual void	getClosestPoints(const ClosestPointInput& input,Result& output,class btIDebugDraw* debugDraw,bool swapResults=false);++};++#endif //BT_BOX_BOX_DETECTOR_H
+ bullet/BulletCollision/CollisionDispatch/btCollisionConfiguration.h view
@@ -0,0 +1,48 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_COLLISION_CONFIGURATION+#define BT_COLLISION_CONFIGURATION++struct btCollisionAlgorithmCreateFunc;++class btStackAlloc;+class btPoolAllocator;++///btCollisionConfiguration allows to configure Bullet collision detection+///stack allocator size, default collision algorithms and persistent manifold pool size+///@todo: describe the meaning+class	btCollisionConfiguration+{++public:++	virtual ~btCollisionConfiguration()+	{+	}++	///memory pools+	virtual btPoolAllocator* getPersistentManifoldPool() = 0;++	virtual btPoolAllocator* getCollisionAlgorithmPool() = 0;++	virtual btStackAlloc*	getStackAllocator() = 0;++	virtual btCollisionAlgorithmCreateFunc* getCollisionAlgorithmCreateFunc(int proxyType0,int proxyType1) =0;++};++#endif //BT_COLLISION_CONFIGURATION+
+ bullet/BulletCollision/CollisionDispatch/btCollisionCreateFunc.h view
@@ -0,0 +1,45 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_COLLISION_CREATE_FUNC+#define BT_COLLISION_CREATE_FUNC++#include "LinearMath/btAlignedObjectArray.h"+class btCollisionAlgorithm;+class btCollisionObject;++struct btCollisionAlgorithmConstructionInfo;++///Used by the btCollisionDispatcher to register and create instances for btCollisionAlgorithm+struct btCollisionAlgorithmCreateFunc+{+	bool m_swapped;+	+	btCollisionAlgorithmCreateFunc()+		:m_swapped(false)+	{+	}+	virtual ~btCollisionAlgorithmCreateFunc(){};++	virtual	btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& , btCollisionObject* body0,btCollisionObject* body1)+	{+		+		(void)body0;+		(void)body1;+		return 0;+	}+};+#endif //BT_COLLISION_CREATE_FUNC+
+ bullet/BulletCollision/CollisionDispatch/btCollisionDispatcher.h view
@@ -0,0 +1,172 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_COLLISION__DISPATCHER_H+#define BT_COLLISION__DISPATCHER_H++#include "BulletCollision/BroadphaseCollision/btDispatcher.h"+#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h"++#include "BulletCollision/CollisionDispatch/btManifoldResult.h"++#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h"+#include "LinearMath/btAlignedObjectArray.h"++class btIDebugDraw;+class btOverlappingPairCache;+class btPoolAllocator;+class btCollisionConfiguration;++#include "btCollisionCreateFunc.h"++#define USE_DISPATCH_REGISTRY_ARRAY 1++class btCollisionDispatcher;+///user can override this nearcallback for collision filtering and more finegrained control over collision detection+typedef void (*btNearCallback)(btBroadphasePair& collisionPair, btCollisionDispatcher& dispatcher, const btDispatcherInfo& dispatchInfo);+++///btCollisionDispatcher supports algorithms that handle ConvexConvex and ConvexConcave collision pairs.+///Time of Impact, Closest Points and Penetration Depth.+class btCollisionDispatcher : public btDispatcher+{++protected:++	int		m_dispatcherFlags;++	btAlignedObjectArray<btPersistentManifold*>	m_manifoldsPtr;++	btManifoldResult	m_defaultManifoldResult;++	btNearCallback		m_nearCallback;+	+	btPoolAllocator*	m_collisionAlgorithmPoolAllocator;++	btPoolAllocator*	m_persistentManifoldPoolAllocator;++	btCollisionAlgorithmCreateFunc* m_doubleDispatch[MAX_BROADPHASE_COLLISION_TYPES][MAX_BROADPHASE_COLLISION_TYPES];++	btCollisionConfiguration*	m_collisionConfiguration;+++public:++	enum DispatcherFlags+	{+		CD_STATIC_STATIC_REPORTED = 1,+		CD_USE_RELATIVE_CONTACT_BREAKING_THRESHOLD = 2,+		CD_DISABLE_CONTACTPOOL_DYNAMIC_ALLOCATION = 4+	};++	int	getDispatcherFlags() const+	{+		return m_dispatcherFlags;+	}++	void	setDispatcherFlags(int flags)+	{+		m_dispatcherFlags = flags;+	}++	///registerCollisionCreateFunc allows registration of custom/alternative collision create functions+	void	registerCollisionCreateFunc(int proxyType0,int proxyType1, btCollisionAlgorithmCreateFunc* createFunc);++	int	getNumManifolds() const+	{ +		return int( m_manifoldsPtr.size());+	}++	btPersistentManifold**	getInternalManifoldPointer()+	{+		return &m_manifoldsPtr[0];+	}++	 btPersistentManifold* getManifoldByIndexInternal(int index)+	{+		return m_manifoldsPtr[index];+	}++	 const btPersistentManifold* getManifoldByIndexInternal(int index) const+	{+		return m_manifoldsPtr[index];+	}++	btCollisionDispatcher (btCollisionConfiguration* collisionConfiguration);++	virtual ~btCollisionDispatcher();++	virtual btPersistentManifold*	getNewManifold(void* b0,void* b1);+	+	virtual void releaseManifold(btPersistentManifold* manifold);+++	virtual void clearManifold(btPersistentManifold* manifold);++			+	btCollisionAlgorithm* findAlgorithm(btCollisionObject* body0,btCollisionObject* body1,btPersistentManifold* sharedManifold = 0);+		+	virtual bool	needsCollision(btCollisionObject* body0,btCollisionObject* body1);+	+	virtual bool	needsResponse(btCollisionObject* body0,btCollisionObject* body1);+	+	virtual void	dispatchAllCollisionPairs(btOverlappingPairCache* pairCache,const btDispatcherInfo& dispatchInfo,btDispatcher* dispatcher) ;++	void	setNearCallback(btNearCallback	nearCallback)+	{+		m_nearCallback = nearCallback; +	}++	btNearCallback	getNearCallback() const+	{+		return m_nearCallback;+	}++	//by default, Bullet will use this near callback+	static void  defaultNearCallback(btBroadphasePair& collisionPair, btCollisionDispatcher& dispatcher, const btDispatcherInfo& dispatchInfo);++	virtual	void* allocateCollisionAlgorithm(int size);++	virtual	void freeCollisionAlgorithm(void* ptr);++	btCollisionConfiguration*	getCollisionConfiguration()+	{+		return m_collisionConfiguration;+	}++	const btCollisionConfiguration*	getCollisionConfiguration() const+	{+		return m_collisionConfiguration;+	}++	void	setCollisionConfiguration(btCollisionConfiguration* config)+	{+		m_collisionConfiguration = config;+	}++	virtual	btPoolAllocator*	getInternalManifoldPool()+	{+		return m_persistentManifoldPoolAllocator;+	}++	virtual	const btPoolAllocator*	getInternalManifoldPool() const+	{+		return m_persistentManifoldPoolAllocator;+	}++};++#endif //BT_COLLISION__DISPATCHER_H+
+ bullet/BulletCollision/CollisionDispatch/btCollisionObject.h view
@@ -0,0 +1,524 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_COLLISION_OBJECT_H+#define BT_COLLISION_OBJECT_H++#include "LinearMath/btTransform.h"++//island management, m_activationState1+#define ACTIVE_TAG 1+#define ISLAND_SLEEPING 2+#define WANTS_DEACTIVATION 3+#define DISABLE_DEACTIVATION 4+#define DISABLE_SIMULATION 5++struct	btBroadphaseProxy;+class	btCollisionShape;+struct btCollisionShapeData;+#include "LinearMath/btMotionState.h"+#include "LinearMath/btAlignedAllocator.h"+#include "LinearMath/btAlignedObjectArray.h"++typedef btAlignedObjectArray<class btCollisionObject*> btCollisionObjectArray;++#ifdef BT_USE_DOUBLE_PRECISION+#define btCollisionObjectData btCollisionObjectDoubleData+#define btCollisionObjectDataName "btCollisionObjectDoubleData"+#else+#define btCollisionObjectData btCollisionObjectFloatData+#define btCollisionObjectDataName "btCollisionObjectFloatData"+#endif+++/// btCollisionObject can be used to manage collision detection objects. +/// btCollisionObject maintains all information that is needed for a collision detection: Shape, Transform and AABB proxy.+/// They can be added to the btCollisionWorld.+ATTRIBUTE_ALIGNED16(class)	btCollisionObject+{++protected:++	btTransform	m_worldTransform;++	///m_interpolationWorldTransform is used for CCD and interpolation+	///it can be either previous or future (predicted) transform+	btTransform	m_interpolationWorldTransform;+	//those two are experimental: just added for bullet time effect, so you can still apply impulses (directly modifying velocities) +	//without destroying the continuous interpolated motion (which uses this interpolation velocities)+	btVector3	m_interpolationLinearVelocity;+	btVector3	m_interpolationAngularVelocity;+	+	btVector3	m_anisotropicFriction;+	int			m_hasAnisotropicFriction;+	btScalar	m_contactProcessingThreshold;	++	btBroadphaseProxy*		m_broadphaseHandle;+	btCollisionShape*		m_collisionShape;+	///m_extensionPointer is used by some internal low-level Bullet extensions.+	void*					m_extensionPointer;+	+	///m_rootCollisionShape is temporarily used to store the original collision shape+	///The m_collisionShape might be temporarily replaced by a child collision shape during collision detection purposes+	///If it is NULL, the m_collisionShape is not temporarily replaced.+	btCollisionShape*		m_rootCollisionShape;++	int				m_collisionFlags;++	int				m_islandTag1;+	int				m_companionId;++	int				m_activationState1;+	btScalar			m_deactivationTime;++	btScalar		m_friction;+	btScalar		m_restitution;++	///m_internalType is reserved to distinguish Bullet's btCollisionObject, btRigidBody, btSoftBody, btGhostObject etc.+	///do not assign your own m_internalType unless you write a new dynamics object class.+	int				m_internalType;++	///users can point to their objects, m_userPointer is not used by Bullet, see setUserPointer/getUserPointer+	void*			m_userObjectPointer;++	///time of impact calculation+	btScalar		m_hitFraction; +	+	///Swept sphere radius (0.0 by default), see btConvexConvexAlgorithm::+	btScalar		m_ccdSweptSphereRadius;++	/// Don't do continuous collision detection if the motion (in one step) is less then m_ccdMotionThreshold+	btScalar		m_ccdMotionThreshold;+	+	/// If some object should have elaborate collision filtering by sub-classes+	int			m_checkCollideWith;++	virtual bool	checkCollideWithOverride(btCollisionObject* /* co */)+	{+		return true;+	}++public:++	BT_DECLARE_ALIGNED_ALLOCATOR();++	enum CollisionFlags+	{+		CF_STATIC_OBJECT= 1,+		CF_KINEMATIC_OBJECT= 2,+		CF_NO_CONTACT_RESPONSE = 4,+		CF_CUSTOM_MATERIAL_CALLBACK = 8,//this allows per-triangle material (friction/restitution)+		CF_CHARACTER_OBJECT = 16,+		CF_DISABLE_VISUALIZE_OBJECT = 32, //disable debug drawing+		CF_DISABLE_SPU_COLLISION_PROCESSING = 64//disable parallel/SPU processing+	};++	enum	CollisionObjectTypes+	{+		CO_COLLISION_OBJECT =1,+		CO_RIGID_BODY=2,+		///CO_GHOST_OBJECT keeps track of all objects overlapping its AABB and that pass its collision filter+		///It is useful for collision sensors, explosion objects, character controller etc.+		CO_GHOST_OBJECT=4,+		CO_SOFT_BODY=8,+		CO_HF_FLUID=16,+		CO_USER_TYPE=32+	};++	SIMD_FORCE_INLINE bool mergesSimulationIslands() const+	{+		///static objects, kinematic and object without contact response don't merge islands+		return  ((m_collisionFlags & (CF_STATIC_OBJECT | CF_KINEMATIC_OBJECT | CF_NO_CONTACT_RESPONSE) )==0);+	}++	const btVector3& getAnisotropicFriction() const+	{+		return m_anisotropicFriction;+	}+	void	setAnisotropicFriction(const btVector3& anisotropicFriction)+	{+		m_anisotropicFriction = anisotropicFriction;+		m_hasAnisotropicFriction = (anisotropicFriction[0]!=1.f) || (anisotropicFriction[1]!=1.f) || (anisotropicFriction[2]!=1.f);+	}+	bool	hasAnisotropicFriction() const+	{+		return m_hasAnisotropicFriction!=0;+	}++	///the constraint solver can discard solving contacts, if the distance is above this threshold. 0 by default.+	///Note that using contacts with positive distance can improve stability. It increases, however, the chance of colliding with degerate contacts, such as 'interior' triangle edges+	void	setContactProcessingThreshold( btScalar contactProcessingThreshold)+	{+		m_contactProcessingThreshold = contactProcessingThreshold;+	}+	btScalar	getContactProcessingThreshold() const+	{+		return m_contactProcessingThreshold;+	}++	SIMD_FORCE_INLINE bool		isStaticObject() const {+		return (m_collisionFlags & CF_STATIC_OBJECT) != 0;+	}++	SIMD_FORCE_INLINE bool		isKinematicObject() const+	{+		return (m_collisionFlags & CF_KINEMATIC_OBJECT) != 0;+	}++	SIMD_FORCE_INLINE bool		isStaticOrKinematicObject() const+	{+		return (m_collisionFlags & (CF_KINEMATIC_OBJECT | CF_STATIC_OBJECT)) != 0 ;+	}++	SIMD_FORCE_INLINE bool		hasContactResponse() const {+		return (m_collisionFlags & CF_NO_CONTACT_RESPONSE)==0;+	}++	+	btCollisionObject();++	virtual ~btCollisionObject();++	virtual void	setCollisionShape(btCollisionShape* collisionShape)+	{+		m_collisionShape = collisionShape;+		m_rootCollisionShape = collisionShape;+	}++	SIMD_FORCE_INLINE const btCollisionShape*	getCollisionShape() const+	{+		return m_collisionShape;+	}++	SIMD_FORCE_INLINE btCollisionShape*	getCollisionShape()+	{+		return m_collisionShape;+	}++	SIMD_FORCE_INLINE const btCollisionShape*	getRootCollisionShape() const+	{+		return m_rootCollisionShape;+	}++	SIMD_FORCE_INLINE btCollisionShape*	getRootCollisionShape()+	{+		return m_rootCollisionShape;+	}++	///Avoid using this internal API call+	///internalSetTemporaryCollisionShape is used to temporary replace the actual collision shape by a child collision shape.+	void	internalSetTemporaryCollisionShape(btCollisionShape* collisionShape)+	{+		m_collisionShape = collisionShape;+	}++	///Avoid using this internal API call, the extension pointer is used by some Bullet extensions. +	///If you need to store your own user pointer, use 'setUserPointer/getUserPointer' instead.+	void*		internalGetExtensionPointer() const+	{+		return m_extensionPointer;+	}+	///Avoid using this internal API call, the extension pointer is used by some Bullet extensions+	///If you need to store your own user pointer, use 'setUserPointer/getUserPointer' instead.+	void	internalSetExtensionPointer(void* pointer)+	{+		m_extensionPointer = pointer;+	}++	SIMD_FORCE_INLINE	int	getActivationState() const { return m_activationState1;}+	+	void setActivationState(int newState);++	void	setDeactivationTime(btScalar time)+	{+		m_deactivationTime = time;+	}+	btScalar	getDeactivationTime() const+	{+		return m_deactivationTime;+	}++	void forceActivationState(int newState);++	void	activate(bool forceActivation = false);++	SIMD_FORCE_INLINE bool isActive() const+	{+		return ((getActivationState() != ISLAND_SLEEPING) && (getActivationState() != DISABLE_SIMULATION));+	}++	void	setRestitution(btScalar rest)+	{+		m_restitution = rest;+	}+	btScalar	getRestitution() const+	{+		return m_restitution;+	}+	void	setFriction(btScalar frict)+	{+		m_friction = frict;+	}+	btScalar	getFriction() const+	{+		return m_friction;+	}++	///reserved for Bullet internal usage+	int	getInternalType() const+	{+		return m_internalType;+	}++	btTransform&	getWorldTransform()+	{+		return m_worldTransform;+	}++	const btTransform&	getWorldTransform() const+	{+		return m_worldTransform;+	}++	void	setWorldTransform(const btTransform& worldTrans)+	{+		m_worldTransform = worldTrans;+	}+++	SIMD_FORCE_INLINE btBroadphaseProxy*	getBroadphaseHandle()+	{+		return m_broadphaseHandle;+	}++	SIMD_FORCE_INLINE const btBroadphaseProxy*	getBroadphaseHandle() const+	{+		return m_broadphaseHandle;+	}++	void	setBroadphaseHandle(btBroadphaseProxy* handle)+	{+		m_broadphaseHandle = handle;+	}+++	const btTransform&	getInterpolationWorldTransform() const+	{+		return m_interpolationWorldTransform;+	}++	btTransform&	getInterpolationWorldTransform()+	{+		return m_interpolationWorldTransform;+	}++	void	setInterpolationWorldTransform(const btTransform&	trans)+	{+		m_interpolationWorldTransform = trans;+	}++	void	setInterpolationLinearVelocity(const btVector3& linvel)+	{+		m_interpolationLinearVelocity = linvel;+	}++	void	setInterpolationAngularVelocity(const btVector3& angvel)+	{+		m_interpolationAngularVelocity = angvel;+	}++	const btVector3&	getInterpolationLinearVelocity() const+	{+		return m_interpolationLinearVelocity;+	}++	const btVector3&	getInterpolationAngularVelocity() const+	{+		return m_interpolationAngularVelocity;+	}++	SIMD_FORCE_INLINE int getIslandTag() const+	{+		return	m_islandTag1;+	}++	void	setIslandTag(int tag)+	{+		m_islandTag1 = tag;+	}++	SIMD_FORCE_INLINE int getCompanionId() const+	{+		return	m_companionId;+	}++	void	setCompanionId(int id)+	{+		m_companionId = id;+	}++	SIMD_FORCE_INLINE btScalar			getHitFraction() const+	{+		return m_hitFraction; +	}++	void	setHitFraction(btScalar hitFraction)+	{+		m_hitFraction = hitFraction;+	}++	+	SIMD_FORCE_INLINE int	getCollisionFlags() const+	{+		return m_collisionFlags;+	}++	void	setCollisionFlags(int flags)+	{+		m_collisionFlags = flags;+	}+	+	///Swept sphere radius (0.0 by default), see btConvexConvexAlgorithm::+	btScalar			getCcdSweptSphereRadius() const+	{+		return m_ccdSweptSphereRadius;+	}++	///Swept sphere radius (0.0 by default), see btConvexConvexAlgorithm::+	void	setCcdSweptSphereRadius(btScalar radius)+	{+		m_ccdSweptSphereRadius = radius;+	}++	btScalar 	getCcdMotionThreshold() const+	{+		return m_ccdMotionThreshold;+	}++	btScalar 	getCcdSquareMotionThreshold() const+	{+		return m_ccdMotionThreshold*m_ccdMotionThreshold;+	}++++	/// Don't do continuous collision detection if the motion (in one step) is less then m_ccdMotionThreshold+	void	setCcdMotionThreshold(btScalar ccdMotionThreshold)+	{+		m_ccdMotionThreshold = ccdMotionThreshold;+	}++	///users can point to their objects, userPointer is not used by Bullet+	void*	getUserPointer() const+	{+		return m_userObjectPointer;+	}+	+	///users can point to their objects, userPointer is not used by Bullet+	void	setUserPointer(void* userPointer)+	{+		m_userObjectPointer = userPointer;+	}+++	inline bool checkCollideWith(btCollisionObject* co)+	{+		if (m_checkCollideWith)+			return checkCollideWithOverride(co);++		return true;+	}++	virtual	int	calculateSerializeBufferSize()	const;++	///fills the dataBuffer and returns the struct name (and 0 on failure)+	virtual	const char*	serialize(void* dataBuffer, class btSerializer* serializer) const;++	virtual void serializeSingleObject(class btSerializer* serializer) const;++};++///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64+struct	btCollisionObjectDoubleData+{+	void					*m_broadphaseHandle;+	void					*m_collisionShape;+	btCollisionShapeData	*m_rootCollisionShape;+	char					*m_name;++	btTransformDoubleData	m_worldTransform;+	btTransformDoubleData	m_interpolationWorldTransform;+	btVector3DoubleData		m_interpolationLinearVelocity;+	btVector3DoubleData		m_interpolationAngularVelocity;+	btVector3DoubleData		m_anisotropicFriction;+	double					m_contactProcessingThreshold;	+	double					m_deactivationTime;+	double					m_friction;+	double					m_restitution;+	double					m_hitFraction; +	double					m_ccdSweptSphereRadius;+	double					m_ccdMotionThreshold;++	int						m_hasAnisotropicFriction;+	int						m_collisionFlags;+	int						m_islandTag1;+	int						m_companionId;+	int						m_activationState1;+	int						m_internalType;+	int						m_checkCollideWith;++	char	m_padding[4];+};++///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64+struct	btCollisionObjectFloatData+{+	void					*m_broadphaseHandle;+	void					*m_collisionShape;+	btCollisionShapeData	*m_rootCollisionShape;+	char					*m_name;++	btTransformFloatData	m_worldTransform;+	btTransformFloatData	m_interpolationWorldTransform;+	btVector3FloatData		m_interpolationLinearVelocity;+	btVector3FloatData		m_interpolationAngularVelocity;+	btVector3FloatData		m_anisotropicFriction;+	float					m_contactProcessingThreshold;	+	float					m_deactivationTime;+	float					m_friction;+	float					m_restitution;+	float					m_hitFraction; +	float					m_ccdSweptSphereRadius;+	float					m_ccdMotionThreshold;++	int						m_hasAnisotropicFriction;+	int						m_collisionFlags;+	int						m_islandTag1;+	int						m_companionId;+	int						m_activationState1;+	int						m_internalType;+	int						m_checkCollideWith;+};++++SIMD_FORCE_INLINE	int	btCollisionObject::calculateSerializeBufferSize() const+{+	return sizeof(btCollisionObjectData);+}++++#endif //BT_COLLISION_OBJECT_H
+ bullet/BulletCollision/CollisionDispatch/btCollisionWorld.h view
@@ -0,0 +1,509 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://bulletphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+++/**+ * @mainpage Bullet Documentation+ *+ * @section intro_sec Introduction+ * Bullet Collision Detection & Physics SDK+ *+ * Bullet is a Collision Detection and Rigid Body Dynamics Library. The Library is Open Source and free for commercial use, under the ZLib license ( http://opensource.org/licenses/zlib-license.php ).+ *+ * The main documentation is Bullet_User_Manual.pdf, included in the source code distribution.+ * There is the Physics Forum for feedback and general Collision Detection and Physics discussions.+ * Please visit http://www.bulletphysics.com+ *+ * @section install_sec Installation+ *+ * @subsection step1 Step 1: Download+ * You can download the Bullet Physics Library from the Google Code repository: http://code.google.com/p/bullet/downloads/list+ *+ * @subsection step2 Step 2: Building+ * Bullet main build system for all platforms is cmake, you can download http://www.cmake.org+ * cmake can autogenerate projectfiles for Microsoft Visual Studio, Apple Xcode, KDevelop and Unix Makefiles.+ * The easiest is to run the CMake cmake-gui graphical user interface and choose the options and generate projectfiles.+ * You can also use cmake in the command-line. Here are some examples for various platforms:+ * cmake . -G "Visual Studio 9 2008"+ * cmake . -G Xcode+ * cmake . -G "Unix Makefiles"+ * Although cmake is recommended, you can also use autotools for UNIX: ./autogen.sh ./configure to create a Makefile and then run make.+ * + * @subsection step3 Step 3: Testing demos+ * Try to run and experiment with BasicDemo executable as a starting point.+ * Bullet can be used in several ways, as Full Rigid Body simulation, as Collision Detector Library or Low Level / Snippets like the GJK Closest Point calculation.+ * The Dependencies can be seen in this documentation under Directories+ * + * @subsection step4 Step 4: Integrating in your application, full Rigid Body and Soft Body simulation+ * Check out BasicDemo how to create a btDynamicsWorld, btRigidBody and btCollisionShape, Stepping the simulation and synchronizing your graphics object transform.+ * Check out SoftDemo how to use soft body dynamics, using btSoftRigidDynamicsWorld.+ * @subsection step5 Step 5 : Integrate the Collision Detection Library (without Dynamics and other Extras)+ * Bullet Collision Detection can also be used without the Dynamics/Extras.+ * Check out btCollisionWorld and btCollisionObject, and the CollisionInterfaceDemo.+ * @subsection step6 Step 6 : Use Snippets like the GJK Closest Point calculation.+ * Bullet has been designed in a modular way keeping dependencies to a minimum. The ConvexHullDistance demo demonstrates direct use of btGjkPairDetector.+ *+ * @section copyright Copyright+ * For up-to-data information and copyright and contributors list check out the Bullet_User_Manual.pdf+ * + */+ + ++#ifndef BT_COLLISION_WORLD_H+#define BT_COLLISION_WORLD_H++class btStackAlloc;+class btCollisionShape;+class btConvexShape;+class btBroadphaseInterface;+class btSerializer;++#include "LinearMath/btVector3.h"+#include "LinearMath/btTransform.h"+#include "btCollisionObject.h"+#include "btCollisionDispatcher.h"+#include "BulletCollision/BroadphaseCollision/btOverlappingPairCache.h"+#include "LinearMath/btAlignedObjectArray.h"++///CollisionWorld is interface and container for the collision detection+class btCollisionWorld+{++	+protected:++	btAlignedObjectArray<btCollisionObject*>	m_collisionObjects;+	+	btDispatcher*	m_dispatcher1;++	btDispatcherInfo	m_dispatchInfo;++	btStackAlloc*	m_stackAlloc;++	btBroadphaseInterface*	m_broadphasePairCache;++	btIDebugDraw*	m_debugDrawer;++	///m_forceUpdateAllAabbs can be set to false as an optimization to only update active object AABBs+	///it is true by default, because it is error-prone (setting the position of static objects wouldn't update their AABB)+	bool m_forceUpdateAllAabbs;++	void	serializeCollisionObjects(btSerializer* serializer);++public:++	//this constructor doesn't own the dispatcher and paircache/broadphase+	btCollisionWorld(btDispatcher* dispatcher,btBroadphaseInterface* broadphasePairCache, btCollisionConfiguration* collisionConfiguration);++	virtual ~btCollisionWorld();++	void	setBroadphase(btBroadphaseInterface*	pairCache)+	{+		m_broadphasePairCache = pairCache;+	}++	const btBroadphaseInterface*	getBroadphase() const+	{+		return m_broadphasePairCache;+	}++	btBroadphaseInterface*	getBroadphase()+	{+		return m_broadphasePairCache;+	}++	btOverlappingPairCache*	getPairCache()+	{+		return m_broadphasePairCache->getOverlappingPairCache();+	}+++	btDispatcher*	getDispatcher()+	{+		return m_dispatcher1;+	}++	const btDispatcher*	getDispatcher() const+	{+		return m_dispatcher1;+	}++	void	updateSingleAabb(btCollisionObject* colObj);++	virtual void	updateAabbs();+	+	virtual void	setDebugDrawer(btIDebugDraw*	debugDrawer)+	{+			m_debugDrawer = debugDrawer;+	}++	virtual btIDebugDraw*	getDebugDrawer()+	{+		return m_debugDrawer;+	}++	virtual void	debugDrawWorld();++	virtual void debugDrawObject(const btTransform& worldTransform, const btCollisionShape* shape, const btVector3& color);+++	///LocalShapeInfo gives extra information for complex shapes+	///Currently, only btTriangleMeshShape is available, so it just contains triangleIndex and subpart+	struct	LocalShapeInfo+	{+		int	m_shapePart;+		int	m_triangleIndex;+		+		//const btCollisionShape*	m_shapeTemp;+		//const btTransform*	m_shapeLocalTransform;+	};++	struct	LocalRayResult+	{+		LocalRayResult(btCollisionObject*	collisionObject, +			LocalShapeInfo*	localShapeInfo,+			const btVector3&		hitNormalLocal,+			btScalar hitFraction)+		:m_collisionObject(collisionObject),+		m_localShapeInfo(localShapeInfo),+		m_hitNormalLocal(hitNormalLocal),+		m_hitFraction(hitFraction)+		{+		}++		btCollisionObject*		m_collisionObject;+		LocalShapeInfo*			m_localShapeInfo;+		btVector3				m_hitNormalLocal;+		btScalar				m_hitFraction;++	};++	///RayResultCallback is used to report new raycast results+	struct	RayResultCallback+	{+		btScalar	m_closestHitFraction;+		btCollisionObject*		m_collisionObject;+		short int	m_collisionFilterGroup;+		short int	m_collisionFilterMask;+      //@BP Mod - Custom flags, currently used to enable backface culling on tri-meshes, see btRaycastCallback+      unsigned int m_flags;++		virtual ~RayResultCallback()+		{+		}+		bool	hasHit() const+		{+			return (m_collisionObject != 0);+		}++		RayResultCallback()+			:m_closestHitFraction(btScalar(1.)),+			m_collisionObject(0),+			m_collisionFilterGroup(btBroadphaseProxy::DefaultFilter),+			m_collisionFilterMask(btBroadphaseProxy::AllFilter),+         //@BP Mod+         m_flags(0)+		{+		}++		virtual bool needsCollision(btBroadphaseProxy* proxy0) const+		{+			bool collides = (proxy0->m_collisionFilterGroup & m_collisionFilterMask) != 0;+			collides = collides && (m_collisionFilterGroup & proxy0->m_collisionFilterMask);+			return collides;+		}+++		virtual	btScalar	addSingleResult(LocalRayResult& rayResult,bool normalInWorldSpace) = 0;+	};++	struct	ClosestRayResultCallback : public RayResultCallback+	{+		ClosestRayResultCallback(const btVector3&	rayFromWorld,const btVector3&	rayToWorld)+		:m_rayFromWorld(rayFromWorld),+		m_rayToWorld(rayToWorld)+		{+		}++		btVector3	m_rayFromWorld;//used to calculate hitPointWorld from hitFraction+		btVector3	m_rayToWorld;++		btVector3	m_hitNormalWorld;+		btVector3	m_hitPointWorld;+			+		virtual	btScalar	addSingleResult(LocalRayResult& rayResult,bool normalInWorldSpace)+		{+			//caller already does the filter on the m_closestHitFraction+			btAssert(rayResult.m_hitFraction <= m_closestHitFraction);+			+			m_closestHitFraction = rayResult.m_hitFraction;+			m_collisionObject = rayResult.m_collisionObject;+			if (normalInWorldSpace)+			{+				m_hitNormalWorld = rayResult.m_hitNormalLocal;+			} else+			{+				///need to transform normal into worldspace+				m_hitNormalWorld = m_collisionObject->getWorldTransform().getBasis()*rayResult.m_hitNormalLocal;+			}+			m_hitPointWorld.setInterpolate3(m_rayFromWorld,m_rayToWorld,rayResult.m_hitFraction);+			return rayResult.m_hitFraction;+		}+	};++	struct	AllHitsRayResultCallback : public RayResultCallback+	{+		AllHitsRayResultCallback(const btVector3&	rayFromWorld,const btVector3&	rayToWorld)+		:m_rayFromWorld(rayFromWorld),+		m_rayToWorld(rayToWorld)+		{+		}++		btAlignedObjectArray<btCollisionObject*>		m_collisionObjects;++		btVector3	m_rayFromWorld;//used to calculate hitPointWorld from hitFraction+		btVector3	m_rayToWorld;++		btAlignedObjectArray<btVector3>	m_hitNormalWorld;+		btAlignedObjectArray<btVector3>	m_hitPointWorld;+		btAlignedObjectArray<btScalar> m_hitFractions;+			+		virtual	btScalar	addSingleResult(LocalRayResult& rayResult,bool normalInWorldSpace)+		{+			m_collisionObject = rayResult.m_collisionObject;+			m_collisionObjects.push_back(rayResult.m_collisionObject);+			btVector3 hitNormalWorld;+			if (normalInWorldSpace)+			{+				hitNormalWorld = rayResult.m_hitNormalLocal;+			} else+			{+				///need to transform normal into worldspace+				hitNormalWorld = m_collisionObject->getWorldTransform().getBasis()*rayResult.m_hitNormalLocal;+			}+			m_hitNormalWorld.push_back(hitNormalWorld);+			btVector3 hitPointWorld;+			hitPointWorld.setInterpolate3(m_rayFromWorld,m_rayToWorld,rayResult.m_hitFraction);+			m_hitPointWorld.push_back(hitPointWorld);+			m_hitFractions.push_back(rayResult.m_hitFraction);+			return m_closestHitFraction;+		}+	};+++	struct LocalConvexResult+	{+		LocalConvexResult(btCollisionObject*	hitCollisionObject, +			LocalShapeInfo*	localShapeInfo,+			const btVector3&		hitNormalLocal,+			const btVector3&		hitPointLocal,+			btScalar hitFraction+			)+		:m_hitCollisionObject(hitCollisionObject),+		m_localShapeInfo(localShapeInfo),+		m_hitNormalLocal(hitNormalLocal),+		m_hitPointLocal(hitPointLocal),+		m_hitFraction(hitFraction)+		{+		}++		btCollisionObject*		m_hitCollisionObject;+		LocalShapeInfo*			m_localShapeInfo;+		btVector3				m_hitNormalLocal;+		btVector3				m_hitPointLocal;+		btScalar				m_hitFraction;+	};++	///RayResultCallback is used to report new raycast results+	struct	ConvexResultCallback+	{+		btScalar	m_closestHitFraction;+		short int	m_collisionFilterGroup;+		short int	m_collisionFilterMask;+		+		ConvexResultCallback()+			:m_closestHitFraction(btScalar(1.)),+			m_collisionFilterGroup(btBroadphaseProxy::DefaultFilter),+			m_collisionFilterMask(btBroadphaseProxy::AllFilter)+		{+		}++		virtual ~ConvexResultCallback()+		{+		}+		+		bool	hasHit() const+		{+			return (m_closestHitFraction < btScalar(1.));+		}++		++		virtual bool needsCollision(btBroadphaseProxy* proxy0) const+		{+			bool collides = (proxy0->m_collisionFilterGroup & m_collisionFilterMask) != 0;+			collides = collides && (m_collisionFilterGroup & proxy0->m_collisionFilterMask);+			return collides;+		}++		virtual	btScalar	addSingleResult(LocalConvexResult& convexResult,bool normalInWorldSpace) = 0;+	};++	struct	ClosestConvexResultCallback : public ConvexResultCallback+	{+		ClosestConvexResultCallback(const btVector3&	convexFromWorld,const btVector3&	convexToWorld)+		:m_convexFromWorld(convexFromWorld),+		m_convexToWorld(convexToWorld),+		m_hitCollisionObject(0)+		{+		}++		btVector3	m_convexFromWorld;//used to calculate hitPointWorld from hitFraction+		btVector3	m_convexToWorld;++		btVector3	m_hitNormalWorld;+		btVector3	m_hitPointWorld;+		btCollisionObject*	m_hitCollisionObject;+		+		virtual	btScalar	addSingleResult(LocalConvexResult& convexResult,bool normalInWorldSpace)+		{+//caller already does the filter on the m_closestHitFraction+			btAssert(convexResult.m_hitFraction <= m_closestHitFraction);+						+			m_closestHitFraction = convexResult.m_hitFraction;+			m_hitCollisionObject = convexResult.m_hitCollisionObject;+			if (normalInWorldSpace)+			{+				m_hitNormalWorld = convexResult.m_hitNormalLocal;+			} else+			{+				///need to transform normal into worldspace+				m_hitNormalWorld = m_hitCollisionObject->getWorldTransform().getBasis()*convexResult.m_hitNormalLocal;+			}+			m_hitPointWorld = convexResult.m_hitPointLocal;+			return convexResult.m_hitFraction;+		}+	};++	///ContactResultCallback is used to report contact points+	struct	ContactResultCallback+	{+		short int	m_collisionFilterGroup;+		short int	m_collisionFilterMask;+		+		ContactResultCallback()+			:m_collisionFilterGroup(btBroadphaseProxy::DefaultFilter),+			m_collisionFilterMask(btBroadphaseProxy::AllFilter)+		{+		}++		virtual ~ContactResultCallback()+		{+		}+		+		virtual bool needsCollision(btBroadphaseProxy* proxy0) const+		{+			bool collides = (proxy0->m_collisionFilterGroup & m_collisionFilterMask) != 0;+			collides = collides && (m_collisionFilterGroup & proxy0->m_collisionFilterMask);+			return collides;+		}++		virtual	btScalar	addSingleResult(btManifoldPoint& cp,	const btCollisionObject* colObj0,int partId0,int index0,const btCollisionObject* colObj1,int partId1,int index1) = 0;+	};++++	int	getNumCollisionObjects() const+	{+		return int(m_collisionObjects.size());+	}++	/// rayTest performs a raycast on all objects in the btCollisionWorld, and calls the resultCallback+	/// This allows for several queries: first hit, all hits, any hit, dependent on the value returned by the callback.+	virtual void rayTest(const btVector3& rayFromWorld, const btVector3& rayToWorld, RayResultCallback& resultCallback) const; ++	/// convexTest performs a swept convex cast on all objects in the btCollisionWorld, and calls the resultCallback+	/// This allows for several queries: first hit, all hits, any hit, dependent on the value return by the callback.+	void    convexSweepTest (const btConvexShape* castShape, const btTransform& from, const btTransform& to, ConvexResultCallback& resultCallback,  btScalar allowedCcdPenetration = btScalar(0.)) const;++	///contactTest performs a discrete collision test between colObj against all objects in the btCollisionWorld, and calls the resultCallback.+	///it reports one or more contact points for every overlapping object (including the one with deepest penetration)+	void	contactTest(btCollisionObject* colObj, ContactResultCallback& resultCallback);++	///contactTest performs a discrete collision test between two collision objects and calls the resultCallback if overlap if detected.+	///it reports one or more contact points (including the one with deepest penetration)+	void	contactPairTest(btCollisionObject* colObjA, btCollisionObject* colObjB, ContactResultCallback& resultCallback);+++	/// rayTestSingle performs a raycast call and calls the resultCallback. It is used internally by rayTest.+	/// In a future implementation, we consider moving the ray test as a virtual method in btCollisionShape.+	/// This allows more customization.+	static void	rayTestSingle(const btTransform& rayFromTrans,const btTransform& rayToTrans,+					  btCollisionObject* collisionObject,+					  const btCollisionShape* collisionShape,+					  const btTransform& colObjWorldTransform,+					  RayResultCallback& resultCallback);++	/// objectQuerySingle performs a collision detection query and calls the resultCallback. It is used internally by rayTest.+	static void	objectQuerySingle(const btConvexShape* castShape, const btTransform& rayFromTrans,const btTransform& rayToTrans,+					  btCollisionObject* collisionObject,+					  const btCollisionShape* collisionShape,+					  const btTransform& colObjWorldTransform,+					  ConvexResultCallback& resultCallback, btScalar	allowedPenetration);++	virtual void	addCollisionObject(btCollisionObject* collisionObject,short int collisionFilterGroup=btBroadphaseProxy::DefaultFilter,short int collisionFilterMask=btBroadphaseProxy::AllFilter);++	btCollisionObjectArray& getCollisionObjectArray()+	{+		return m_collisionObjects;+	}++	const btCollisionObjectArray& getCollisionObjectArray() const+	{+		return m_collisionObjects;+	}+++	virtual void	removeCollisionObject(btCollisionObject* collisionObject);++	virtual void	performDiscreteCollisionDetection();++	btDispatcherInfo& getDispatchInfo()+	{+		return m_dispatchInfo;+	}++	const btDispatcherInfo& getDispatchInfo() const+	{+		return m_dispatchInfo;+	}+	+	bool	getForceUpdateAllAabbs() const+	{+		return m_forceUpdateAllAabbs;+	}+	void setForceUpdateAllAabbs( bool forceUpdateAllAabbs)+	{+		m_forceUpdateAllAabbs = forceUpdateAllAabbs;+	}++	///Preliminary serialization test for Bullet 2.76. Loading those files requires a separate parser (Bullet/Demos/SerializeDemo)+	virtual	void	serialize(btSerializer* serializer);++};+++#endif //BT_COLLISION_WORLD_H
+ bullet/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.h view
@@ -0,0 +1,86 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_COMPOUND_COLLISION_ALGORITHM_H+#define BT_COMPOUND_COLLISION_ALGORITHM_H++#include "btActivatingCollisionAlgorithm.h"+#include "BulletCollision/BroadphaseCollision/btDispatcher.h"+#include "BulletCollision/BroadphaseCollision/btBroadphaseInterface.h"++#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h"+class btDispatcher;+#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h"+#include "btCollisionCreateFunc.h"+#include "LinearMath/btAlignedObjectArray.h"+class btDispatcher;+class btCollisionObject;++/// btCompoundCollisionAlgorithm  supports collision between CompoundCollisionShapes and other collision shapes+class btCompoundCollisionAlgorithm  : public btActivatingCollisionAlgorithm+{+	btAlignedObjectArray<btCollisionAlgorithm*> m_childCollisionAlgorithms;+	bool m_isSwapped;++	class btPersistentManifold*	m_sharedManifold;+	bool					m_ownsManifold;++	int	m_compoundShapeRevision;//to keep track of changes, so that childAlgorithm array can be updated+	+	void	removeChildAlgorithms();+	+	void	preallocateChildAlgorithms(btCollisionObject* body0,btCollisionObject* body1);++public:++	btCompoundCollisionAlgorithm( const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1,bool isSwapped);++	virtual ~btCompoundCollisionAlgorithm();++	virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);++	btScalar	calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);++	virtual	void	getAllContactManifolds(btManifoldArray&	manifoldArray)+	{+		int i;+		for (i=0;i<m_childCollisionAlgorithms.size();i++)+		{+			if (m_childCollisionAlgorithms[i])+				m_childCollisionAlgorithms[i]->getAllContactManifolds(manifoldArray);+		}+	}++	struct CreateFunc :public 	btCollisionAlgorithmCreateFunc+	{+		virtual	btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1)+		{+			void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btCompoundCollisionAlgorithm));+			return new(mem) btCompoundCollisionAlgorithm(ci,body0,body1,false);+		}+	};++	struct SwappedCreateFunc :public 	btCollisionAlgorithmCreateFunc+	{+		virtual	btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1)+		{+			void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btCompoundCollisionAlgorithm));+			return new(mem) btCompoundCollisionAlgorithm(ci,body0,body1,true);+		}+	};++};++#endif //BT_COMPOUND_COLLISION_ALGORITHM_H
+ bullet/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h view
@@ -0,0 +1,95 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_CONVEX_2D_CONVEX_2D_ALGORITHM_H+#define BT_CONVEX_2D_CONVEX_2D_ALGORITHM_H++#include "BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h"+#include "BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h"+#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h"+#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h"+#include "BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h"+#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h"+#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h"+#include "LinearMath/btTransformUtil.h" //for btConvexSeparatingDistanceUtil++class btConvexPenetrationDepthSolver;+++///The convex2dConvex2dAlgorithm collision algorithm support 2d collision detection for btConvex2dShape+///Currently it requires the btMinkowskiPenetrationDepthSolver, it has support for 2d penetration depth computation+class btConvex2dConvex2dAlgorithm : public btActivatingCollisionAlgorithm+{+	btSimplexSolverInterface*		m_simplexSolver;+	btConvexPenetrationDepthSolver* m_pdSolver;++	+	bool	m_ownManifold;+	btPersistentManifold*	m_manifoldPtr;+	bool			m_lowLevelOfDetail;+	+	int m_numPerturbationIterations;+	int m_minimumPointsPerturbationThreshold;++public:++	btConvex2dConvex2dAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1, btSimplexSolverInterface* simplexSolver, btConvexPenetrationDepthSolver* pdSolver, int numPerturbationIterations, int minimumPointsPerturbationThreshold);+++	virtual ~btConvex2dConvex2dAlgorithm();++	virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);++	virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);++	virtual	void	getAllContactManifolds(btManifoldArray&	manifoldArray)+	{+		///should we use m_ownManifold to avoid adding duplicates?+		if (m_manifoldPtr && m_ownManifold)+			manifoldArray.push_back(m_manifoldPtr);+	}+++	void	setLowLevelOfDetail(bool useLowLevel);+++	const btPersistentManifold*	getManifold()+	{+		return m_manifoldPtr;+	}++	struct CreateFunc :public 	btCollisionAlgorithmCreateFunc+	{++		btConvexPenetrationDepthSolver*		m_pdSolver;+		btSimplexSolverInterface*			m_simplexSolver;+		int m_numPerturbationIterations;+		int m_minimumPointsPerturbationThreshold;++		CreateFunc(btSimplexSolverInterface*			simplexSolver, btConvexPenetrationDepthSolver* pdSolver);+		+		virtual ~CreateFunc();++		virtual	btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1)+		{+			void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btConvex2dConvex2dAlgorithm));+			return new(mem) btConvex2dConvex2dAlgorithm(ci.m_manifold,ci,body0,body1,m_simplexSolver,m_pdSolver,m_numPerturbationIterations,m_minimumPointsPerturbationThreshold);+		}+	};+++};++#endif //BT_CONVEX_2D_CONVEX_2D_ALGORITHM_H
+ bullet/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h view
@@ -0,0 +1,116 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_CONVEX_CONCAVE_COLLISION_ALGORITHM_H+#define BT_CONVEX_CONCAVE_COLLISION_ALGORITHM_H++#include "btActivatingCollisionAlgorithm.h"+#include "BulletCollision/BroadphaseCollision/btDispatcher.h"+#include "BulletCollision/BroadphaseCollision/btBroadphaseInterface.h"+#include "BulletCollision/CollisionShapes/btTriangleCallback.h"+#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h"+class btDispatcher;+#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h"+#include "btCollisionCreateFunc.h"++///For each triangle in the concave mesh that overlaps with the AABB of a convex (m_convexProxy), processTriangle is called.+class btConvexTriangleCallback : public btTriangleCallback+{+	btCollisionObject* m_convexBody;+	btCollisionObject* m_triBody;++	btVector3	m_aabbMin;+	btVector3	m_aabbMax ;+++	btManifoldResult* m_resultOut;+	btDispatcher*	m_dispatcher;+	const btDispatcherInfo* m_dispatchInfoPtr;+	btScalar m_collisionMarginTriangle;+	+public:+int	m_triangleCount;+	+	btPersistentManifold*	m_manifoldPtr;++	btConvexTriangleCallback(btDispatcher* dispatcher,btCollisionObject* body0,btCollisionObject* body1,bool isSwapped);++	void	setTimeStepAndCounters(btScalar collisionMarginTriangle,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);++	virtual ~btConvexTriangleCallback();++	virtual void processTriangle(btVector3* triangle, int partId, int triangleIndex);+	+	void clearCache();++	SIMD_FORCE_INLINE const btVector3& getAabbMin() const+	{+		return m_aabbMin;+	}+	SIMD_FORCE_INLINE const btVector3& getAabbMax() const+	{+		return m_aabbMax;+	}++};+++++/// btConvexConcaveCollisionAlgorithm  supports collision between convex shapes and (concave) trianges meshes.+class btConvexConcaveCollisionAlgorithm  : public btActivatingCollisionAlgorithm+{++	bool	m_isSwapped;++	btConvexTriangleCallback m_btConvexTriangleCallback;++++public:++	btConvexConcaveCollisionAlgorithm( const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1,bool isSwapped);++	virtual ~btConvexConcaveCollisionAlgorithm();++	virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);++	btScalar	calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);++	virtual	void	getAllContactManifolds(btManifoldArray&	manifoldArray);+	+	void	clearCache();++	struct CreateFunc :public 	btCollisionAlgorithmCreateFunc+	{+		virtual	btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1)+		{+			void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btConvexConcaveCollisionAlgorithm));+			return new(mem) btConvexConcaveCollisionAlgorithm(ci,body0,body1,false);+		}+	};++	struct SwappedCreateFunc :public 	btCollisionAlgorithmCreateFunc+	{+		virtual	btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1)+		{+			void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btConvexConcaveCollisionAlgorithm));+			return new(mem) btConvexConcaveCollisionAlgorithm(ci,body0,body1,true);+		}+	};++};++#endif //BT_CONVEX_CONCAVE_COLLISION_ALGORITHM_H
+ bullet/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h view
@@ -0,0 +1,109 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_CONVEX_CONVEX_ALGORITHM_H+#define BT_CONVEX_CONVEX_ALGORITHM_H++#include "btActivatingCollisionAlgorithm.h"+#include "BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h"+#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h"+#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h"+#include "BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h"+#include "btCollisionCreateFunc.h"+#include "btCollisionDispatcher.h"+#include "LinearMath/btTransformUtil.h" //for btConvexSeparatingDistanceUtil++class btConvexPenetrationDepthSolver;++///Enabling USE_SEPDISTANCE_UTIL2 requires 100% reliable distance computation. However, when using large size ratios GJK can be imprecise+///so the distance is not conservative. In that case, enabling this USE_SEPDISTANCE_UTIL2 would result in failing/missing collisions.+///Either improve GJK for large size ratios (testing a 100 units versus a 0.1 unit object) or only enable the util+///for certain pairs that have a small size ratio++//#define USE_SEPDISTANCE_UTIL2 1++///The convexConvexAlgorithm collision algorithm implements time of impact, convex closest points and penetration depth calculations between two convex objects.+///Multiple contact points are calculated by perturbing the orientation of the smallest object orthogonal to the separating normal.+///This idea was described by Gino van den Bergen in this forum topic http://www.bulletphysics.com/Bullet/phpBB3/viewtopic.php?f=4&t=288&p=888#p888+class btConvexConvexAlgorithm : public btActivatingCollisionAlgorithm+{+#ifdef USE_SEPDISTANCE_UTIL2+	btConvexSeparatingDistanceUtil	m_sepDistance;+#endif+	btSimplexSolverInterface*		m_simplexSolver;+	btConvexPenetrationDepthSolver* m_pdSolver;++	+	bool	m_ownManifold;+	btPersistentManifold*	m_manifoldPtr;+	bool			m_lowLevelOfDetail;+	+	int m_numPerturbationIterations;+	int m_minimumPointsPerturbationThreshold;+++	///cache separating vector to speedup collision detection+	++public:++	btConvexConvexAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1, btSimplexSolverInterface* simplexSolver, btConvexPenetrationDepthSolver* pdSolver, int numPerturbationIterations, int minimumPointsPerturbationThreshold);+++	virtual ~btConvexConvexAlgorithm();++	virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);++	virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);++	virtual	void	getAllContactManifolds(btManifoldArray&	manifoldArray)+	{+		///should we use m_ownManifold to avoid adding duplicates?+		if (m_manifoldPtr && m_ownManifold)+			manifoldArray.push_back(m_manifoldPtr);+	}+++	void	setLowLevelOfDetail(bool useLowLevel);+++	const btPersistentManifold*	getManifold()+	{+		return m_manifoldPtr;+	}++	struct CreateFunc :public 	btCollisionAlgorithmCreateFunc+	{++		btConvexPenetrationDepthSolver*		m_pdSolver;+		btSimplexSolverInterface*			m_simplexSolver;+		int m_numPerturbationIterations;+		int m_minimumPointsPerturbationThreshold;++		CreateFunc(btSimplexSolverInterface*			simplexSolver, btConvexPenetrationDepthSolver* pdSolver);+		+		virtual ~CreateFunc();++		virtual	btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1)+		{+			void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btConvexConvexAlgorithm));+			return new(mem) btConvexConvexAlgorithm(ci.m_manifold,ci,body0,body1,m_simplexSolver,m_pdSolver,m_numPerturbationIterations,m_minimumPointsPerturbationThreshold);+		}+	};+++};++#endif //BT_CONVEX_CONVEX_ALGORITHM_H
+ bullet/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.h view
@@ -0,0 +1,84 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose,+including commercial applications, and to alter it and redistribute it freely,+subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_CONVEX_PLANE_COLLISION_ALGORITHM_H+#define BT_CONVEX_PLANE_COLLISION_ALGORITHM_H++#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h"+#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h"+#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h"+class btPersistentManifold;+#include "btCollisionDispatcher.h"++#include "LinearMath/btVector3.h"++/// btSphereBoxCollisionAlgorithm  provides sphere-box collision detection.+/// Other features are frame-coherency (persistent data) and collision response.+class btConvexPlaneCollisionAlgorithm : public btCollisionAlgorithm+{+	bool		m_ownManifold;+	btPersistentManifold*	m_manifoldPtr;+	bool		m_isSwapped;+	int			m_numPerturbationIterations;+	int			m_minimumPointsPerturbationThreshold;++public:++	btConvexPlaneCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* col0,btCollisionObject* col1, bool isSwapped, int numPerturbationIterations,int minimumPointsPerturbationThreshold);++	virtual ~btConvexPlaneCollisionAlgorithm();++	virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);++	void collideSingleContact (const btQuaternion& perturbeRot, btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);++	virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);++	virtual	void	getAllContactManifolds(btManifoldArray&	manifoldArray)+	{+		if (m_manifoldPtr && m_ownManifold)+		{+			manifoldArray.push_back(m_manifoldPtr);+		}+	}++	struct CreateFunc :public 	btCollisionAlgorithmCreateFunc+	{+		int	m_numPerturbationIterations;+		int m_minimumPointsPerturbationThreshold;+			+		CreateFunc() +			: m_numPerturbationIterations(1),+			m_minimumPointsPerturbationThreshold(1)+		{+		}+		+		virtual	btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1)+		{+			void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btConvexPlaneCollisionAlgorithm));+			if (!m_swapped)+			{+				return new(mem) btConvexPlaneCollisionAlgorithm(0,ci,body0,body1,false,m_numPerturbationIterations,m_minimumPointsPerturbationThreshold);+			} else+			{+				return new(mem) btConvexPlaneCollisionAlgorithm(0,ci,body0,body1,true,m_numPerturbationIterations,m_minimumPointsPerturbationThreshold);+			}+		}+	};++};++#endif //BT_CONVEX_PLANE_COLLISION_ALGORITHM_H+
+ bullet/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h view
@@ -0,0 +1,135 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_DEFAULT_COLLISION_CONFIGURATION+#define BT_DEFAULT_COLLISION_CONFIGURATION++#include "btCollisionConfiguration.h"+class btVoronoiSimplexSolver;+class btConvexPenetrationDepthSolver;++struct	btDefaultCollisionConstructionInfo+{+	btStackAlloc*		m_stackAlloc;+	btPoolAllocator*	m_persistentManifoldPool;+	btPoolAllocator*	m_collisionAlgorithmPool;+	int					m_defaultMaxPersistentManifoldPoolSize;+	int					m_defaultMaxCollisionAlgorithmPoolSize;+	int					m_customCollisionAlgorithmMaxElementSize;+	int					m_defaultStackAllocatorSize;+	int					m_useEpaPenetrationAlgorithm;++	btDefaultCollisionConstructionInfo()+		:m_stackAlloc(0),+		m_persistentManifoldPool(0),+		m_collisionAlgorithmPool(0),+		m_defaultMaxPersistentManifoldPoolSize(4096),+		m_defaultMaxCollisionAlgorithmPoolSize(4096),+		m_customCollisionAlgorithmMaxElementSize(0),+		m_defaultStackAllocatorSize(0),+		m_useEpaPenetrationAlgorithm(true)+	{+	}+};++++///btCollisionConfiguration allows to configure Bullet collision detection+///stack allocator, pool memory allocators+///@todo: describe the meaning+class	btDefaultCollisionConfiguration : public btCollisionConfiguration+{++protected:++	int	m_persistentManifoldPoolSize;+	+	btStackAlloc*	m_stackAlloc;+	bool	m_ownsStackAllocator;++	btPoolAllocator*	m_persistentManifoldPool;+	bool	m_ownsPersistentManifoldPool;+++	btPoolAllocator*	m_collisionAlgorithmPool;+	bool	m_ownsCollisionAlgorithmPool;++	//default simplex/penetration depth solvers+	btVoronoiSimplexSolver*	m_simplexSolver;+	btConvexPenetrationDepthSolver*	m_pdSolver;+	+	//default CreationFunctions, filling the m_doubleDispatch table+	btCollisionAlgorithmCreateFunc*	m_convexConvexCreateFunc;+	btCollisionAlgorithmCreateFunc*	m_convexConcaveCreateFunc;+	btCollisionAlgorithmCreateFunc*	m_swappedConvexConcaveCreateFunc;+	btCollisionAlgorithmCreateFunc*	m_compoundCreateFunc;+	btCollisionAlgorithmCreateFunc*	m_swappedCompoundCreateFunc;+	btCollisionAlgorithmCreateFunc* m_emptyCreateFunc;+	btCollisionAlgorithmCreateFunc* m_sphereSphereCF;+#ifdef USE_BUGGY_SPHERE_BOX_ALGORITHM+	btCollisionAlgorithmCreateFunc* m_sphereBoxCF;+	btCollisionAlgorithmCreateFunc* m_boxSphereCF;+#endif //USE_BUGGY_SPHERE_BOX_ALGORITHM++	btCollisionAlgorithmCreateFunc* m_boxBoxCF;+	btCollisionAlgorithmCreateFunc*	m_sphereTriangleCF;+	btCollisionAlgorithmCreateFunc*	m_triangleSphereCF;+	btCollisionAlgorithmCreateFunc*	m_planeConvexCF;+	btCollisionAlgorithmCreateFunc*	m_convexPlaneCF;+	+public:+++	btDefaultCollisionConfiguration(const btDefaultCollisionConstructionInfo& constructionInfo = btDefaultCollisionConstructionInfo());++	virtual ~btDefaultCollisionConfiguration();++		///memory pools+	virtual btPoolAllocator* getPersistentManifoldPool()+	{+		return m_persistentManifoldPool;+	}++	virtual btPoolAllocator* getCollisionAlgorithmPool()+	{+		return m_collisionAlgorithmPool;+	}++	virtual btStackAlloc*	getStackAllocator()+	{+		return m_stackAlloc;+	}++	virtual	btVoronoiSimplexSolver*	getSimplexSolver()+	{+		return m_simplexSolver;+	}+++	virtual btCollisionAlgorithmCreateFunc* getCollisionAlgorithmCreateFunc(int proxyType0,int proxyType1);++	///Use this method to allow to generate multiple contact points between at once, between two objects using the generic convex-convex algorithm.+	///By default, this feature is disabled for best performance.+	///@param numPerturbationIterations controls the number of collision queries. Set it to zero to disable the feature.+	///@param minimumPointsPerturbationThreshold is the minimum number of points in the contact cache, above which the feature is disabled+	///3 is a good value for both params, if you want to enable the feature. This is because the default contact cache contains a maximum of 4 points, and one collision query at the unperturbed orientation is performed first.+	///See Bullet/Demos/CollisionDemo for an example how this feature gathers multiple points.+	///@todo we could add a per-object setting of those parameters, for level-of-detail collision detection.+	void	setConvexConvexMultipointIterations(int numPerturbationIterations=3, int minimumPointsPerturbationThreshold = 3);++};++#endif //BT_DEFAULT_COLLISION_CONFIGURATION+
+ bullet/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.h view
@@ -0,0 +1,54 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_EMPTY_ALGORITH+#define BT_EMPTY_ALGORITH+#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h"+#include "btCollisionCreateFunc.h"+#include "btCollisionDispatcher.h"++#define ATTRIBUTE_ALIGNED(a)++///EmptyAlgorithm is a stub for unsupported collision pairs.+///The dispatcher can dispatch a persistent btEmptyAlgorithm to avoid a search every frame.+class btEmptyAlgorithm : public btCollisionAlgorithm+{++public:+	+	btEmptyAlgorithm(const btCollisionAlgorithmConstructionInfo& ci);++	virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);++	virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);++	virtual	void	getAllContactManifolds(btManifoldArray&	manifoldArray)+	{+	}++	struct CreateFunc :public 	btCollisionAlgorithmCreateFunc+	{+		virtual	btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1)+		{+			(void)body0;+			(void)body1;+			void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btEmptyAlgorithm));+			return new(mem) btEmptyAlgorithm(ci);+		}+	};++} ATTRIBUTE_ALIGNED(16);++#endif //BT_EMPTY_ALGORITH
+ bullet/BulletCollision/CollisionDispatch/btGhostObject.h view
@@ -0,0 +1,175 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2008 Erwin Coumans  http://bulletphysics.com++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_GHOST_OBJECT_H+#define BT_GHOST_OBJECT_H+++#include "btCollisionObject.h"+#include "BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h"+#include "LinearMath/btAlignedAllocator.h"+#include "BulletCollision/BroadphaseCollision/btOverlappingPairCache.h"+#include "btCollisionWorld.h"++class btConvexShape;++class btDispatcher;++///The btGhostObject can keep track of all objects that are overlapping+///By default, this overlap is based on the AABB+///This is useful for creating a character controller, collision sensors/triggers, explosions etc.+///We plan on adding rayTest and other queries for the btGhostObject+ATTRIBUTE_ALIGNED16(class) btGhostObject : public btCollisionObject+{+protected:++	btAlignedObjectArray<btCollisionObject*> m_overlappingObjects;++public:++	btGhostObject();++	virtual ~btGhostObject();++	void	convexSweepTest(const class btConvexShape* castShape, const btTransform& convexFromWorld, const btTransform& convexToWorld, btCollisionWorld::ConvexResultCallback& resultCallback, btScalar allowedCcdPenetration = 0.f) const;++	void	rayTest(const btVector3& rayFromWorld, const btVector3& rayToWorld, btCollisionWorld::RayResultCallback& resultCallback) const; ++	///this method is mainly for expert/internal use only.+	virtual void	addOverlappingObjectInternal(btBroadphaseProxy* otherProxy, btBroadphaseProxy* thisProxy=0);+	///this method is mainly for expert/internal use only.+	virtual void	removeOverlappingObjectInternal(btBroadphaseProxy* otherProxy,btDispatcher* dispatcher,btBroadphaseProxy* thisProxy=0);++	int	getNumOverlappingObjects() const+	{+		return m_overlappingObjects.size();+	}++	btCollisionObject*	getOverlappingObject(int index)+	{+		return m_overlappingObjects[index];+	}++	const btCollisionObject*	getOverlappingObject(int index) const+	{+		return m_overlappingObjects[index];+	}++	btAlignedObjectArray<btCollisionObject*>&	getOverlappingPairs()+	{+		return m_overlappingObjects;+	}++	const btAlignedObjectArray<btCollisionObject*>	getOverlappingPairs() const+	{+		return m_overlappingObjects;+	}++	//+	// internal cast+	//++	static const btGhostObject*	upcast(const btCollisionObject* colObj)+	{+		if (colObj->getInternalType()==CO_GHOST_OBJECT)+			return (const btGhostObject*)colObj;+		return 0;+	}+	static btGhostObject*			upcast(btCollisionObject* colObj)+	{+		if (colObj->getInternalType()==CO_GHOST_OBJECT)+			return (btGhostObject*)colObj;+		return 0;+	}++};++class	btPairCachingGhostObject : public btGhostObject+{+	btHashedOverlappingPairCache*	m_hashPairCache;++public:++	btPairCachingGhostObject();++	virtual ~btPairCachingGhostObject();++	///this method is mainly for expert/internal use only.+	virtual void	addOverlappingObjectInternal(btBroadphaseProxy* otherProxy, btBroadphaseProxy* thisProxy=0);++	virtual void	removeOverlappingObjectInternal(btBroadphaseProxy* otherProxy,btDispatcher* dispatcher,btBroadphaseProxy* thisProxy=0);++	btHashedOverlappingPairCache*	getOverlappingPairCache()+	{+		return m_hashPairCache;+	}++};++++///The btGhostPairCallback interfaces and forwards adding and removal of overlapping pairs from the btBroadphaseInterface to btGhostObject.+class btGhostPairCallback : public btOverlappingPairCallback+{+	+public:+	btGhostPairCallback()+	{+	}++	virtual ~btGhostPairCallback()+	{+		+	}++	virtual btBroadphasePair*	addOverlappingPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1)+	{+		btCollisionObject* colObj0 = (btCollisionObject*) proxy0->m_clientObject;+		btCollisionObject* colObj1 = (btCollisionObject*) proxy1->m_clientObject;+		btGhostObject* ghost0 = 		btGhostObject::upcast(colObj0);+		btGhostObject* ghost1 = 		btGhostObject::upcast(colObj1);+		if (ghost0)+			ghost0->addOverlappingObjectInternal(proxy1, proxy0);+		if (ghost1)+			ghost1->addOverlappingObjectInternal(proxy0, proxy1);+		return 0;+	}++	virtual void*	removeOverlappingPair(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1,btDispatcher* dispatcher)+	{+		btCollisionObject* colObj0 = (btCollisionObject*) proxy0->m_clientObject;+		btCollisionObject* colObj1 = (btCollisionObject*) proxy1->m_clientObject;+		btGhostObject* ghost0 = 		btGhostObject::upcast(colObj0);+		btGhostObject* ghost1 = 		btGhostObject::upcast(colObj1);+		if (ghost0)+			ghost0->removeOverlappingObjectInternal(proxy1,dispatcher,proxy0);+		if (ghost1)+			ghost1->removeOverlappingObjectInternal(proxy0,dispatcher,proxy1);+		return 0;+	}++	virtual void	removeOverlappingPairsContainingProxy(btBroadphaseProxy* /*proxy0*/,btDispatcher* /*dispatcher*/)+	{+		btAssert(0);+		//need to keep track of all ghost objects and call them here+		//m_hashPairCache->removeOverlappingPairsContainingProxy(proxy0,dispatcher);+	}++	++};++#endif+
+ bullet/BulletCollision/CollisionDispatch/btInternalEdgeUtility.h view
@@ -0,0 +1,46 @@++#ifndef BT_INTERNAL_EDGE_UTILITY_H+#define BT_INTERNAL_EDGE_UTILITY_H++#include "LinearMath/btHashMap.h"+#include "LinearMath/btVector3.h"++#include "BulletCollision/CollisionShapes/btTriangleInfoMap.h"++///The btInternalEdgeUtility helps to avoid or reduce artifacts due to wrong collision normals caused by internal edges.+///See also http://code.google.com/p/bullet/issues/detail?id=27++class btBvhTriangleMeshShape;+class btCollisionObject;+class btManifoldPoint;+class btIDebugDraw;++++enum btInternalEdgeAdjustFlags+{+	BT_TRIANGLE_CONVEX_BACKFACE_MODE = 1,+	BT_TRIANGLE_CONCAVE_DOUBLE_SIDED = 2, //double sided options are experimental, single sided is recommended+	BT_TRIANGLE_CONVEX_DOUBLE_SIDED = 4+};+++///Call btGenerateInternalEdgeInfo to create triangle info, store in the shape 'userInfo'+void	btGenerateInternalEdgeInfo (btBvhTriangleMeshShape*trimeshShape, btTriangleInfoMap* triangleInfoMap);+++///Call the btFixMeshNormal to adjust the collision normal, using the triangle info map (generated using btGenerateInternalEdgeInfo)+///If this info map is missing, or the triangle is not store in this map, nothing will be done+void	btAdjustInternalEdgeContacts(btManifoldPoint& cp, const btCollisionObject* trimeshColObj0,const btCollisionObject* otherColObj1, int partId0, int index0, int normalAdjustFlags = 0);++///Enable the BT_INTERNAL_EDGE_DEBUG_DRAW define and call btSetDebugDrawer, to get visual info to see if the internal edge utility works properly.+///If the utility doesn't work properly, you might have to adjust the threshold values in btTriangleInfoMap+//#define BT_INTERNAL_EDGE_DEBUG_DRAW++#ifdef BT_INTERNAL_EDGE_DEBUG_DRAW+void	btSetDebugDrawer(btIDebugDraw* debugDrawer);+#endif //BT_INTERNAL_EDGE_DEBUG_DRAW+++#endif //BT_INTERNAL_EDGE_UTILITY_H+
+ bullet/BulletCollision/CollisionDispatch/btManifoldResult.h view
@@ -0,0 +1,128 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+++#ifndef BT_MANIFOLD_RESULT_H+#define BT_MANIFOLD_RESULT_H++class btCollisionObject;+#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h"+class btManifoldPoint;++#include "BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h"++#include "LinearMath/btTransform.h"++typedef bool (*ContactAddedCallback)(btManifoldPoint& cp,	const btCollisionObject* colObj0,int partId0,int index0,const btCollisionObject* colObj1,int partId1,int index1);+extern ContactAddedCallback		gContactAddedCallback;++//#define DEBUG_PART_INDEX 1+++///btManifoldResult is a helper class to manage  contact results.+class btManifoldResult : public btDiscreteCollisionDetectorInterface::Result+{+protected:++	btPersistentManifold* m_manifoldPtr;++	//we need this for compounds+	btTransform	m_rootTransA;+	btTransform	m_rootTransB;++	btCollisionObject* m_body0;+	btCollisionObject* m_body1;+	int	m_partId0;+	int m_partId1;+	int m_index0;+	int m_index1;+	++public:++	btManifoldResult()+#ifdef DEBUG_PART_INDEX+		:+	m_partId0(-1),+	m_partId1(-1),+	m_index0(-1),+	m_index1(-1)+#endif //DEBUG_PART_INDEX+	{+	}++	btManifoldResult(btCollisionObject* body0,btCollisionObject* body1);++	virtual ~btManifoldResult() {};++	void	setPersistentManifold(btPersistentManifold* manifoldPtr)+	{+		m_manifoldPtr = manifoldPtr;+	}++	const btPersistentManifold*	getPersistentManifold() const+	{+		return m_manifoldPtr;+	}+	btPersistentManifold*	getPersistentManifold()+	{+		return m_manifoldPtr;+	}++	virtual void setShapeIdentifiersA(int partId0,int index0)+	{+		m_partId0=partId0;+		m_index0=index0;+	}++	virtual void setShapeIdentifiersB(	int partId1,int index1)+	{+		m_partId1=partId1;+		m_index1=index1;+	}+++	virtual void addContactPoint(const btVector3& normalOnBInWorld,const btVector3& pointInWorld,btScalar depth);++	SIMD_FORCE_INLINE	void refreshContactPoints()+	{+		btAssert(m_manifoldPtr);+		if (!m_manifoldPtr->getNumContacts())+			return;++		bool isSwapped = m_manifoldPtr->getBody0() != m_body0;++		if (isSwapped)+		{+			m_manifoldPtr->refreshContactPoints(m_rootTransB,m_rootTransA);+		} else+		{+			m_manifoldPtr->refreshContactPoints(m_rootTransA,m_rootTransB);+		}+	}++	const btCollisionObject* getBody0Internal() const+	{+		return m_body0;+	}++	const btCollisionObject* getBody1Internal() const+	{+		return m_body1;+	}+	+};++#endif //BT_MANIFOLD_RESULT_H
+ bullet/BulletCollision/CollisionDispatch/btSimulationIslandManager.h view
@@ -0,0 +1,81 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_SIMULATION_ISLAND_MANAGER_H+#define BT_SIMULATION_ISLAND_MANAGER_H++#include "BulletCollision/CollisionDispatch/btUnionFind.h"+#include "btCollisionCreateFunc.h"+#include "LinearMath/btAlignedObjectArray.h"+#include "btCollisionObject.h"++class btCollisionObject;+class btCollisionWorld;+class btDispatcher;+class btPersistentManifold;+++///SimulationIslandManager creates and handles simulation islands, using btUnionFind+class btSimulationIslandManager+{+	btUnionFind m_unionFind;++	btAlignedObjectArray<btPersistentManifold*>  m_islandmanifold;+	btAlignedObjectArray<btCollisionObject* >  m_islandBodies;+	+	bool m_splitIslands;+	+public:+	btSimulationIslandManager();+	virtual ~btSimulationIslandManager();+++	void initUnionFind(int n);	+	+		+	btUnionFind& getUnionFind() { return m_unionFind;}++	virtual	void	updateActivationState(btCollisionWorld* colWorld,btDispatcher* dispatcher);+	virtual	void	storeIslandActivationState(btCollisionWorld* world);+++	void	findUnions(btDispatcher* dispatcher,btCollisionWorld* colWorld);++	++	struct	IslandCallback+	{+		virtual ~IslandCallback() {};++		virtual	void	ProcessIsland(btCollisionObject** bodies,int numBodies,class btPersistentManifold**	manifolds,int numManifolds, int islandId) = 0;+	};++	void	buildAndProcessIslands(btDispatcher* dispatcher,btCollisionWorld* collisionWorld, IslandCallback* callback);++	void buildIslands(btDispatcher* dispatcher,btCollisionWorld* colWorld);++	bool getSplitIslands()+	{+		return m_splitIslands;+	}+	void setSplitIslands(bool doSplitIslands)+	{+		m_splitIslands = doSplitIslands;+	}++};++#endif //BT_SIMULATION_ISLAND_MANAGER_H+
+ bullet/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h view
@@ -0,0 +1,75 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_SPHERE_BOX_COLLISION_ALGORITHM_H+#define BT_SPHERE_BOX_COLLISION_ALGORITHM_H++#include "btActivatingCollisionAlgorithm.h"+#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h"+#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h"+class btPersistentManifold;+#include "btCollisionDispatcher.h"++#include "LinearMath/btVector3.h"++/// btSphereBoxCollisionAlgorithm  provides sphere-box collision detection.+/// Other features are frame-coherency (persistent data) and collision response.+class btSphereBoxCollisionAlgorithm : public btActivatingCollisionAlgorithm+{+	bool	m_ownManifold;+	btPersistentManifold*	m_manifoldPtr;+	bool	m_isSwapped;+	+public:++	btSphereBoxCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* col0,btCollisionObject* col1, bool isSwapped);++	virtual ~btSphereBoxCollisionAlgorithm();++	virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);++	virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);++	virtual	void	getAllContactManifolds(btManifoldArray&	manifoldArray)+	{+		if (m_manifoldPtr && m_ownManifold)+		{+			manifoldArray.push_back(m_manifoldPtr);+		}+	}++	btScalar getSphereDistance( btCollisionObject* boxObj,btVector3& v3PointOnBox, btVector3& v3PointOnSphere, const btVector3& v3SphereCenter, btScalar fRadius );++	btScalar getSpherePenetration( btCollisionObject* boxObj, btVector3& v3PointOnBox, btVector3& v3PointOnSphere, const btVector3& v3SphereCenter, btScalar fRadius, const btVector3& aabbMin, const btVector3& aabbMax);+	+	struct CreateFunc :public 	btCollisionAlgorithmCreateFunc+	{+		virtual	btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1)+		{+			void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btSphereBoxCollisionAlgorithm));+			if (!m_swapped)+			{+				return new(mem) btSphereBoxCollisionAlgorithm(0,ci,body0,body1,false);+			} else+			{+				return new(mem) btSphereBoxCollisionAlgorithm(0,ci,body0,body1,true);+			}+		}+	};++};++#endif //BT_SPHERE_BOX_COLLISION_ALGORITHM_H+
+ bullet/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h view
@@ -0,0 +1,66 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_SPHERE_SPHERE_COLLISION_ALGORITHM_H+#define BT_SPHERE_SPHERE_COLLISION_ALGORITHM_H++#include "btActivatingCollisionAlgorithm.h"+#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h"+#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h"+#include "btCollisionDispatcher.h"++class btPersistentManifold;++/// btSphereSphereCollisionAlgorithm  provides sphere-sphere collision detection.+/// Other features are frame-coherency (persistent data) and collision response.+/// Also provides the most basic sample for custom/user btCollisionAlgorithm+class btSphereSphereCollisionAlgorithm : public btActivatingCollisionAlgorithm+{+	bool	m_ownManifold;+	btPersistentManifold*	m_manifoldPtr;+	+public:+	btSphereSphereCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1);++	btSphereSphereCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci)+		: btActivatingCollisionAlgorithm(ci) {}++	virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);++	virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);++	virtual	void	getAllContactManifolds(btManifoldArray&	manifoldArray)+	{+		if (m_manifoldPtr && m_ownManifold)+		{+			manifoldArray.push_back(m_manifoldPtr);+		}+	}+	+	virtual ~btSphereSphereCollisionAlgorithm();++	struct CreateFunc :public 	btCollisionAlgorithmCreateFunc+	{+		virtual	btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1)+		{+			void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btSphereSphereCollisionAlgorithm));+			return new(mem) btSphereSphereCollisionAlgorithm(0,ci,body0,body1);+		}+	};++};++#endif //BT_SPHERE_SPHERE_COLLISION_ALGORITHM_H+
+ bullet/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h view
@@ -0,0 +1,69 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_SPHERE_TRIANGLE_COLLISION_ALGORITHM_H+#define BT_SPHERE_TRIANGLE_COLLISION_ALGORITHM_H++#include "btActivatingCollisionAlgorithm.h"+#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h"+#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h"+class btPersistentManifold;+#include "btCollisionDispatcher.h"++/// btSphereSphereCollisionAlgorithm  provides sphere-sphere collision detection.+/// Other features are frame-coherency (persistent data) and collision response.+/// Also provides the most basic sample for custom/user btCollisionAlgorithm+class btSphereTriangleCollisionAlgorithm : public btActivatingCollisionAlgorithm+{+	bool	m_ownManifold;+	btPersistentManifold*	m_manifoldPtr;+	bool	m_swapped;+	+public:+	btSphereTriangleCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1,bool swapped);++	btSphereTriangleCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci)+		: btActivatingCollisionAlgorithm(ci) {}++	virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);++	virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);++	virtual	void	getAllContactManifolds(btManifoldArray&	manifoldArray)+	{+		if (m_manifoldPtr && m_ownManifold)+		{+			manifoldArray.push_back(m_manifoldPtr);+		}+	}+	+	virtual ~btSphereTriangleCollisionAlgorithm();++	struct CreateFunc :public 	btCollisionAlgorithmCreateFunc+	{+		+		virtual	btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1)+		{+			+			void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btSphereTriangleCollisionAlgorithm));++			return new(mem) btSphereTriangleCollisionAlgorithm(ci.m_manifold,ci,body0,body1,m_swapped);+		}+	};++};++#endif //BT_SPHERE_TRIANGLE_COLLISION_ALGORITHM_H+
+ bullet/BulletCollision/CollisionDispatch/btUnionFind.h view
@@ -0,0 +1,129 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_UNION_FIND_H+#define BT_UNION_FIND_H++#include "LinearMath/btAlignedObjectArray.h"++#define USE_PATH_COMPRESSION 1++///see for discussion of static island optimizations by Vroonsh here: http://code.google.com/p/bullet/issues/detail?id=406+#define STATIC_SIMULATION_ISLAND_OPTIMIZATION 1++struct	btElement+{+	int	m_id;+	int	m_sz;+};++///UnionFind calculates connected subsets+// Implements weighted Quick Union with path compression+// optimization: could use short ints instead of ints (halving memory, would limit the number of rigid bodies to 64k, sounds reasonable)+class btUnionFind+  {+    private:+		btAlignedObjectArray<btElement>	m_elements;++    public:+	  +		btUnionFind();+		~btUnionFind();++	+		//this is a special operation, destroying the content of btUnionFind.+		//it sorts the elements, based on island id, in order to make it easy to iterate over islands+		void	sortIslands();++	  void	reset(int N);++	  SIMD_FORCE_INLINE int	getNumElements() const+	  {+		  return int(m_elements.size());+	  }+	  SIMD_FORCE_INLINE bool  isRoot(int x) const+	  {+		  return (x == m_elements[x].m_id);+	  }++	  btElement&	getElement(int index)+	  {+		  return m_elements[index];+	  }+	  const btElement& getElement(int index) const+	  {+		  return m_elements[index];+	  }+   +	  void	allocate(int N);+	  void	Free();+++++	  int find(int p, int q)+		{ +			return (find(p) == find(q)); +		}++		void unite(int p, int q)+		{+			int i = find(p), j = find(q);+			if (i == j) +				return;++#ifndef USE_PATH_COMPRESSION+			//weighted quick union, this keeps the 'trees' balanced, and keeps performance of unite O( log(n) )+			if (m_elements[i].m_sz < m_elements[j].m_sz)+			{ +				m_elements[i].m_id = j; m_elements[j].m_sz += m_elements[i].m_sz; +			}+			else +			{ +				m_elements[j].m_id = i; m_elements[i].m_sz += m_elements[j].m_sz; +			}+#else+			m_elements[i].m_id = j; m_elements[j].m_sz += m_elements[i].m_sz; +#endif //USE_PATH_COMPRESSION+		}++		int find(int x)+		{ +			//btAssert(x < m_N);+			//btAssert(x >= 0);++			while (x != m_elements[x].m_id) +			{+		//not really a reason not to use path compression, and it flattens the trees/improves find performance dramatically+	+		#ifdef USE_PATH_COMPRESSION+				const btElement* elementPtr = &m_elements[m_elements[x].m_id];+				m_elements[x].m_id = elementPtr->m_id;+				x = elementPtr->m_id;			+		#else//+				x = m_elements[x].m_id;+		#endif		+				//btAssert(x < m_N);+				//btAssert(x >= 0);++			}+			return x; +		}+++  };+++#endif //BT_UNION_FIND_H
+ bullet/BulletCollision/CollisionShapes/btBox2dShape.h view
@@ -0,0 +1,363 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_OBB_BOX_2D_SHAPE_H+#define BT_OBB_BOX_2D_SHAPE_H++#include "BulletCollision/CollisionShapes/btPolyhedralConvexShape.h"+#include "BulletCollision/CollisionShapes/btCollisionMargin.h"+#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h"+#include "LinearMath/btVector3.h"+#include "LinearMath/btMinMax.h"++///The btBox2dShape is a box primitive around the origin, its sides axis aligned with length specified by half extents, in local shape coordinates. When used as part of a btCollisionObject or btRigidBody it will be an oriented box in world space.+class btBox2dShape: public btPolyhedralConvexShape+{++	//btVector3	m_boxHalfExtents1; //use m_implicitShapeDimensions instead++	btVector3 m_centroid;+	btVector3 m_vertices[4];+	btVector3 m_normals[4];++public:++	btVector3 getHalfExtentsWithMargin() const+	{+		btVector3 halfExtents = getHalfExtentsWithoutMargin();+		btVector3 margin(getMargin(),getMargin(),getMargin());+		halfExtents += margin;+		return halfExtents;+	}+	+	const btVector3& getHalfExtentsWithoutMargin() const+	{+		return m_implicitShapeDimensions;//changed in Bullet 2.63: assume the scaling and margin are included+	}+	++	virtual btVector3	localGetSupportingVertex(const btVector3& vec) const+	{+		btVector3 halfExtents = getHalfExtentsWithoutMargin();+		btVector3 margin(getMargin(),getMargin(),getMargin());+		halfExtents += margin;+		+		return btVector3(btFsels(vec.x(), halfExtents.x(), -halfExtents.x()),+			btFsels(vec.y(), halfExtents.y(), -halfExtents.y()),+			btFsels(vec.z(), halfExtents.z(), -halfExtents.z()));+	}++	SIMD_FORCE_INLINE  btVector3	localGetSupportingVertexWithoutMargin(const btVector3& vec)const+	{+		const btVector3& halfExtents = getHalfExtentsWithoutMargin();+		+		return btVector3(btFsels(vec.x(), halfExtents.x(), -halfExtents.x()),+			btFsels(vec.y(), halfExtents.y(), -halfExtents.y()),+			btFsels(vec.z(), halfExtents.z(), -halfExtents.z()));+	}++	virtual void	batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const+	{+		const btVector3& halfExtents = getHalfExtentsWithoutMargin();+	+		for (int i=0;i<numVectors;i++)+		{+			const btVector3& vec = vectors[i];+			supportVerticesOut[i].setValue(btFsels(vec.x(), halfExtents.x(), -halfExtents.x()),+				btFsels(vec.y(), halfExtents.y(), -halfExtents.y()),+				btFsels(vec.z(), halfExtents.z(), -halfExtents.z())); +		}++	}+++	btBox2dShape( const btVector3& boxHalfExtents) +		: btPolyhedralConvexShape(),+		m_centroid(0,0,0)+	{+		m_vertices[0].setValue(-boxHalfExtents.getX(),-boxHalfExtents.getY(),0);+		m_vertices[1].setValue(boxHalfExtents.getX(),-boxHalfExtents.getY(),0);+		m_vertices[2].setValue(boxHalfExtents.getX(),boxHalfExtents.getY(),0);+		m_vertices[3].setValue(-boxHalfExtents.getX(),boxHalfExtents.getY(),0);++		m_normals[0].setValue(0,-1,0);+		m_normals[1].setValue(1,0,0);+		m_normals[2].setValue(0,1,0);+		m_normals[3].setValue(-1,0,0);++		m_shapeType = BOX_2D_SHAPE_PROXYTYPE;+		btVector3 margin(getMargin(),getMargin(),getMargin());+		m_implicitShapeDimensions = (boxHalfExtents * m_localScaling) - margin;+	};++	virtual void setMargin(btScalar collisionMargin)+	{+		//correct the m_implicitShapeDimensions for the margin+		btVector3 oldMargin(getMargin(),getMargin(),getMargin());+		btVector3 implicitShapeDimensionsWithMargin = m_implicitShapeDimensions+oldMargin;+		+		btConvexInternalShape::setMargin(collisionMargin);+		btVector3 newMargin(getMargin(),getMargin(),getMargin());+		m_implicitShapeDimensions = implicitShapeDimensionsWithMargin - newMargin;++	}+	virtual void	setLocalScaling(const btVector3& scaling)+	{+		btVector3 oldMargin(getMargin(),getMargin(),getMargin());+		btVector3 implicitShapeDimensionsWithMargin = m_implicitShapeDimensions+oldMargin;+		btVector3 unScaledImplicitShapeDimensionsWithMargin = implicitShapeDimensionsWithMargin / m_localScaling;++		btConvexInternalShape::setLocalScaling(scaling);++		m_implicitShapeDimensions = (unScaledImplicitShapeDimensionsWithMargin * m_localScaling) - oldMargin;++	}++	virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const;++	++	virtual void	calculateLocalInertia(btScalar mass,btVector3& inertia) const;++++++	int	getVertexCount() const+	{+		return 4;+	}++	virtual int getNumVertices()const+	{+		return 4;+	}++	const btVector3* getVertices() const+	{+		return &m_vertices[0];+	}++	const btVector3* getNormals() const+	{+		return &m_normals[0];+	}++++++++	virtual void getPlane(btVector3& planeNormal,btVector3& planeSupport,int i ) const+	{+		//this plane might not be aligned...+		btVector4 plane ;+		getPlaneEquation(plane,i);+		planeNormal = btVector3(plane.getX(),plane.getY(),plane.getZ());+		planeSupport = localGetSupportingVertex(-planeNormal);+	}+++	const btVector3& getCentroid() const+	{+		return m_centroid;+	}+	+	virtual int getNumPlanes() const+	{+		return 6;+	}	+	+	++	virtual int getNumEdges() const+	{+		return 12;+	}+++	virtual void getVertex(int i,btVector3& vtx) const+	{+		btVector3 halfExtents = getHalfExtentsWithoutMargin();++		vtx = btVector3(+				halfExtents.x() * (1-(i&1)) - halfExtents.x() * (i&1),+				halfExtents.y() * (1-((i&2)>>1)) - halfExtents.y() * ((i&2)>>1),+				halfExtents.z() * (1-((i&4)>>2)) - halfExtents.z() * ((i&4)>>2));+	}+	++	virtual void	getPlaneEquation(btVector4& plane,int i) const+	{+		btVector3 halfExtents = getHalfExtentsWithoutMargin();++		switch (i)+		{+		case 0:+			plane.setValue(btScalar(1.),btScalar(0.),btScalar(0.),-halfExtents.x());+			break;+		case 1:+			plane.setValue(btScalar(-1.),btScalar(0.),btScalar(0.),-halfExtents.x());+			break;+		case 2:+			plane.setValue(btScalar(0.),btScalar(1.),btScalar(0.),-halfExtents.y());+			break;+		case 3:+			plane.setValue(btScalar(0.),btScalar(-1.),btScalar(0.),-halfExtents.y());+			break;+		case 4:+			plane.setValue(btScalar(0.),btScalar(0.),btScalar(1.),-halfExtents.z());+			break;+		case 5:+			plane.setValue(btScalar(0.),btScalar(0.),btScalar(-1.),-halfExtents.z());+			break;+		default:+			btAssert(0);+		}+	}++	+	virtual void getEdge(int i,btVector3& pa,btVector3& pb) const+	//virtual void getEdge(int i,Edge& edge) const+	{+		int edgeVert0 = 0;+		int edgeVert1 = 0;++		switch (i)+		{+		case 0:+				edgeVert0 = 0;+				edgeVert1 = 1;+			break;+		case 1:+				edgeVert0 = 0;+				edgeVert1 = 2;+			break;+		case 2:+			edgeVert0 = 1;+			edgeVert1 = 3;++			break;+		case 3:+			edgeVert0 = 2;+			edgeVert1 = 3;+			break;+		case 4:+			edgeVert0 = 0;+			edgeVert1 = 4;+			break;+		case 5:+			edgeVert0 = 1;+			edgeVert1 = 5;++			break;+		case 6:+			edgeVert0 = 2;+			edgeVert1 = 6;+			break;+		case 7:+			edgeVert0 = 3;+			edgeVert1 = 7;+			break;+		case 8:+			edgeVert0 = 4;+			edgeVert1 = 5;+			break;+		case 9:+			edgeVert0 = 4;+			edgeVert1 = 6;+			break;+		case 10:+			edgeVert0 = 5;+			edgeVert1 = 7;+			break;+		case 11:+			edgeVert0 = 6;+			edgeVert1 = 7;+			break;+		default:+			btAssert(0);++		}++		getVertex(edgeVert0,pa );+		getVertex(edgeVert1,pb );+	}+++++	+	virtual	bool isInside(const btVector3& pt,btScalar tolerance) const+	{+		btVector3 halfExtents = getHalfExtentsWithoutMargin();++		//btScalar minDist = 2*tolerance;+		+		bool result =	(pt.x() <= (halfExtents.x()+tolerance)) &&+						(pt.x() >= (-halfExtents.x()-tolerance)) &&+						(pt.y() <= (halfExtents.y()+tolerance)) &&+						(pt.y() >= (-halfExtents.y()-tolerance)) &&+						(pt.z() <= (halfExtents.z()+tolerance)) &&+						(pt.z() >= (-halfExtents.z()-tolerance));+		+		return result;+	}+++	//debugging+	virtual const char*	getName()const+	{+		return "Box2d";+	}++	virtual int		getNumPreferredPenetrationDirections() const+	{+		return 6;+	}+	+	virtual void	getPreferredPenetrationDirection(int index, btVector3& penetrationVector) const+	{+		switch (index)+		{+		case 0:+			penetrationVector.setValue(btScalar(1.),btScalar(0.),btScalar(0.));+			break;+		case 1:+			penetrationVector.setValue(btScalar(-1.),btScalar(0.),btScalar(0.));+			break;+		case 2:+			penetrationVector.setValue(btScalar(0.),btScalar(1.),btScalar(0.));+			break;+		case 3:+			penetrationVector.setValue(btScalar(0.),btScalar(-1.),btScalar(0.));+			break;+		case 4:+			penetrationVector.setValue(btScalar(0.),btScalar(0.),btScalar(1.));+			break;+		case 5:+			penetrationVector.setValue(btScalar(0.),btScalar(0.),btScalar(-1.));+			break;+		default:+			btAssert(0);+		}+	}++};++#endif //BT_OBB_BOX_2D_SHAPE_H++
+ bullet/BulletCollision/CollisionShapes/btBoxShape.h view
@@ -0,0 +1,318 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_OBB_BOX_MINKOWSKI_H+#define BT_OBB_BOX_MINKOWSKI_H++#include "btPolyhedralConvexShape.h"+#include "btCollisionMargin.h"+#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h"+#include "LinearMath/btVector3.h"+#include "LinearMath/btMinMax.h"++///The btBoxShape is a box primitive around the origin, its sides axis aligned with length specified by half extents, in local shape coordinates. When used as part of a btCollisionObject or btRigidBody it will be an oriented box in world space.+class btBoxShape: public btPolyhedralConvexShape+{++	//btVector3	m_boxHalfExtents1; //use m_implicitShapeDimensions instead+++public:++	btVector3 getHalfExtentsWithMargin() const+	{+		btVector3 halfExtents = getHalfExtentsWithoutMargin();+		btVector3 margin(getMargin(),getMargin(),getMargin());+		halfExtents += margin;+		return halfExtents;+	}+	+	const btVector3& getHalfExtentsWithoutMargin() const+	{+		return m_implicitShapeDimensions;//scaling is included, margin is not+	}+	++	virtual btVector3	localGetSupportingVertex(const btVector3& vec) const+	{+		btVector3 halfExtents = getHalfExtentsWithoutMargin();+		btVector3 margin(getMargin(),getMargin(),getMargin());+		halfExtents += margin;+		+		return btVector3(btFsels(vec.x(), halfExtents.x(), -halfExtents.x()),+			btFsels(vec.y(), halfExtents.y(), -halfExtents.y()),+			btFsels(vec.z(), halfExtents.z(), -halfExtents.z()));+	}++	SIMD_FORCE_INLINE  btVector3	localGetSupportingVertexWithoutMargin(const btVector3& vec)const+	{+		const btVector3& halfExtents = getHalfExtentsWithoutMargin();+		+		return btVector3(btFsels(vec.x(), halfExtents.x(), -halfExtents.x()),+			btFsels(vec.y(), halfExtents.y(), -halfExtents.y()),+			btFsels(vec.z(), halfExtents.z(), -halfExtents.z()));+	}++	virtual void	batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const+	{+		const btVector3& halfExtents = getHalfExtentsWithoutMargin();+	+		for (int i=0;i<numVectors;i++)+		{+			const btVector3& vec = vectors[i];+			supportVerticesOut[i].setValue(btFsels(vec.x(), halfExtents.x(), -halfExtents.x()),+				btFsels(vec.y(), halfExtents.y(), -halfExtents.y()),+				btFsels(vec.z(), halfExtents.z(), -halfExtents.z())); +		}++	}+++	btBoxShape( const btVector3& boxHalfExtents) +		: btPolyhedralConvexShape()+	{+		m_shapeType = BOX_SHAPE_PROXYTYPE;+		btVector3 margin(getMargin(),getMargin(),getMargin());+		m_implicitShapeDimensions = (boxHalfExtents * m_localScaling) - margin;+	};++	virtual void setMargin(btScalar collisionMargin)+	{+		//correct the m_implicitShapeDimensions for the margin+		btVector3 oldMargin(getMargin(),getMargin(),getMargin());+		btVector3 implicitShapeDimensionsWithMargin = m_implicitShapeDimensions+oldMargin;+		+		btConvexInternalShape::setMargin(collisionMargin);+		btVector3 newMargin(getMargin(),getMargin(),getMargin());+		m_implicitShapeDimensions = implicitShapeDimensionsWithMargin - newMargin;++	}+	virtual void	setLocalScaling(const btVector3& scaling)+	{+		btVector3 oldMargin(getMargin(),getMargin(),getMargin());+		btVector3 implicitShapeDimensionsWithMargin = m_implicitShapeDimensions+oldMargin;+		btVector3 unScaledImplicitShapeDimensionsWithMargin = implicitShapeDimensionsWithMargin / m_localScaling;++		btConvexInternalShape::setLocalScaling(scaling);++		m_implicitShapeDimensions = (unScaledImplicitShapeDimensionsWithMargin * m_localScaling) - oldMargin;++	}++	virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const;++	++	virtual void	calculateLocalInertia(btScalar mass,btVector3& inertia) const;++	virtual void getPlane(btVector3& planeNormal,btVector3& planeSupport,int i ) const+	{+		//this plane might not be aligned...+		btVector4 plane ;+		getPlaneEquation(plane,i);+		planeNormal = btVector3(plane.getX(),plane.getY(),plane.getZ());+		planeSupport = localGetSupportingVertex(-planeNormal);+	}++	+	virtual int getNumPlanes() const+	{+		return 6;+	}	+	+	virtual int	getNumVertices() const +	{+		return 8;+	}++	virtual int getNumEdges() const+	{+		return 12;+	}+++	virtual void getVertex(int i,btVector3& vtx) const+	{+		btVector3 halfExtents = getHalfExtentsWithMargin();++		vtx = btVector3(+				halfExtents.x() * (1-(i&1)) - halfExtents.x() * (i&1),+				halfExtents.y() * (1-((i&2)>>1)) - halfExtents.y() * ((i&2)>>1),+				halfExtents.z() * (1-((i&4)>>2)) - halfExtents.z() * ((i&4)>>2));+	}+	++	virtual void	getPlaneEquation(btVector4& plane,int i) const+	{+		btVector3 halfExtents = getHalfExtentsWithoutMargin();++		switch (i)+		{+		case 0:+			plane.setValue(btScalar(1.),btScalar(0.),btScalar(0.),-halfExtents.x());+			break;+		case 1:+			plane.setValue(btScalar(-1.),btScalar(0.),btScalar(0.),-halfExtents.x());+			break;+		case 2:+			plane.setValue(btScalar(0.),btScalar(1.),btScalar(0.),-halfExtents.y());+			break;+		case 3:+			plane.setValue(btScalar(0.),btScalar(-1.),btScalar(0.),-halfExtents.y());+			break;+		case 4:+			plane.setValue(btScalar(0.),btScalar(0.),btScalar(1.),-halfExtents.z());+			break;+		case 5:+			plane.setValue(btScalar(0.),btScalar(0.),btScalar(-1.),-halfExtents.z());+			break;+		default:+			btAssert(0);+		}+	}++	+	virtual void getEdge(int i,btVector3& pa,btVector3& pb) const+	//virtual void getEdge(int i,Edge& edge) const+	{+		int edgeVert0 = 0;+		int edgeVert1 = 0;++		switch (i)+		{+		case 0:+				edgeVert0 = 0;+				edgeVert1 = 1;+			break;+		case 1:+				edgeVert0 = 0;+				edgeVert1 = 2;+			break;+		case 2:+			edgeVert0 = 1;+			edgeVert1 = 3;++			break;+		case 3:+			edgeVert0 = 2;+			edgeVert1 = 3;+			break;+		case 4:+			edgeVert0 = 0;+			edgeVert1 = 4;+			break;+		case 5:+			edgeVert0 = 1;+			edgeVert1 = 5;++			break;+		case 6:+			edgeVert0 = 2;+			edgeVert1 = 6;+			break;+		case 7:+			edgeVert0 = 3;+			edgeVert1 = 7;+			break;+		case 8:+			edgeVert0 = 4;+			edgeVert1 = 5;+			break;+		case 9:+			edgeVert0 = 4;+			edgeVert1 = 6;+			break;+		case 10:+			edgeVert0 = 5;+			edgeVert1 = 7;+			break;+		case 11:+			edgeVert0 = 6;+			edgeVert1 = 7;+			break;+		default:+			btAssert(0);++		}++		getVertex(edgeVert0,pa );+		getVertex(edgeVert1,pb );+	}+++++	+	virtual	bool isInside(const btVector3& pt,btScalar tolerance) const+	{+		btVector3 halfExtents = getHalfExtentsWithoutMargin();++		//btScalar minDist = 2*tolerance;+		+		bool result =	(pt.x() <= (halfExtents.x()+tolerance)) &&+						(pt.x() >= (-halfExtents.x()-tolerance)) &&+						(pt.y() <= (halfExtents.y()+tolerance)) &&+						(pt.y() >= (-halfExtents.y()-tolerance)) &&+						(pt.z() <= (halfExtents.z()+tolerance)) &&+						(pt.z() >= (-halfExtents.z()-tolerance));+		+		return result;+	}+++	//debugging+	virtual const char*	getName()const+	{+		return "Box";+	}++	virtual int		getNumPreferredPenetrationDirections() const+	{+		return 6;+	}+	+	virtual void	getPreferredPenetrationDirection(int index, btVector3& penetrationVector) const+	{+		switch (index)+		{+		case 0:+			penetrationVector.setValue(btScalar(1.),btScalar(0.),btScalar(0.));+			break;+		case 1:+			penetrationVector.setValue(btScalar(-1.),btScalar(0.),btScalar(0.));+			break;+		case 2:+			penetrationVector.setValue(btScalar(0.),btScalar(1.),btScalar(0.));+			break;+		case 3:+			penetrationVector.setValue(btScalar(0.),btScalar(-1.),btScalar(0.));+			break;+		case 4:+			penetrationVector.setValue(btScalar(0.),btScalar(0.),btScalar(1.));+			break;+		case 5:+			penetrationVector.setValue(btScalar(0.),btScalar(0.),btScalar(-1.));+			break;+		default:+			btAssert(0);+		}+	}++};+++#endif //BT_OBB_BOX_MINKOWSKI_H++
+ bullet/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h view
@@ -0,0 +1,139 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_BVH_TRIANGLE_MESH_SHAPE_H+#define BT_BVH_TRIANGLE_MESH_SHAPE_H++#include "btTriangleMeshShape.h"+#include "btOptimizedBvh.h"+#include "LinearMath/btAlignedAllocator.h"+#include "btTriangleInfoMap.h"++///The btBvhTriangleMeshShape is a static-triangle mesh shape with several optimizations, such as bounding volume hierarchy and cache friendly traversal for PlayStation 3 Cell SPU. It is recommended to enable useQuantizedAabbCompression for better memory usage.+///It takes a triangle mesh as input, for example a btTriangleMesh or btTriangleIndexVertexArray. The btBvhTriangleMeshShape class allows for triangle mesh deformations by a refit or partialRefit method.+///Instead of building the bounding volume hierarchy acceleration structure, it is also possible to serialize (save) and deserialize (load) the structure from disk.+///See Demos\ConcaveDemo\ConcavePhysicsDemo.cpp for an example.+ATTRIBUTE_ALIGNED16(class) btBvhTriangleMeshShape : public btTriangleMeshShape+{++	btOptimizedBvh*	m_bvh;+	btTriangleInfoMap*	m_triangleInfoMap;++	bool m_useQuantizedAabbCompression;+	bool m_ownsBvh;+	bool m_pad[11];////need padding due to alignment++public:++	BT_DECLARE_ALIGNED_ALLOCATOR();++	+	btBvhTriangleMeshShape(btStridingMeshInterface* meshInterface, bool useQuantizedAabbCompression, bool buildBvh = true);++	///optionally pass in a larger bvh aabb, used for quantization. This allows for deformations within this aabb+	btBvhTriangleMeshShape(btStridingMeshInterface* meshInterface, bool useQuantizedAabbCompression,const btVector3& bvhAabbMin,const btVector3& bvhAabbMax, bool buildBvh = true);+	+	virtual ~btBvhTriangleMeshShape();++	bool getOwnsBvh () const+	{+		return m_ownsBvh;+	}+++	+	void performRaycast (btTriangleCallback* callback, const btVector3& raySource, const btVector3& rayTarget);+	void performConvexcast (btTriangleCallback* callback, const btVector3& boxSource, const btVector3& boxTarget, const btVector3& boxMin, const btVector3& boxMax);++	virtual void	processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const;++	void	refitTree(const btVector3& aabbMin,const btVector3& aabbMax);++	///for a fast incremental refit of parts of the tree. Note: the entire AABB of the tree will become more conservative, it never shrinks+	void	partialRefitTree(const btVector3& aabbMin,const btVector3& aabbMax);++	//debugging+	virtual const char*	getName()const {return "BVHTRIANGLEMESH";}+++	virtual void	setLocalScaling(const btVector3& scaling);+	+	btOptimizedBvh*	getOptimizedBvh()+	{+		return m_bvh;+	}++	void	setOptimizedBvh(btOptimizedBvh* bvh, const btVector3& localScaling=btVector3(1,1,1));++	void    buildOptimizedBvh();++	bool	usesQuantizedAabbCompression() const+	{+		return	m_useQuantizedAabbCompression;+	}++	void	setTriangleInfoMap(btTriangleInfoMap* triangleInfoMap)+	{+		m_triangleInfoMap = triangleInfoMap;+	}++	const btTriangleInfoMap*	getTriangleInfoMap() const+	{+		return m_triangleInfoMap;+	}+	+	btTriangleInfoMap*	getTriangleInfoMap()+	{+		return m_triangleInfoMap;+	}++	virtual	int	calculateSerializeBufferSize() const;++	///fills the dataBuffer and returns the struct name (and 0 on failure)+	virtual	const char*	serialize(void* dataBuffer, btSerializer* serializer) const;++	virtual void	serializeSingleBvh(btSerializer* serializer) const;++	virtual void	serializeSingleTriangleInfoMap(btSerializer* serializer) const;++};++///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64+struct	btTriangleMeshShapeData+{+	btCollisionShapeData	m_collisionShapeData;++	btStridingMeshInterfaceData m_meshInterface;++	btQuantizedBvhFloatData		*m_quantizedFloatBvh;+	btQuantizedBvhDoubleData	*m_quantizedDoubleBvh;++	btTriangleInfoMapData	*m_triangleInfoMap;+	+	float	m_collisionMargin;++	char m_pad3[4];+	+};+++SIMD_FORCE_INLINE	int	btBvhTriangleMeshShape::calculateSerializeBufferSize() const+{+	return sizeof(btTriangleMeshShapeData);+}++++#endif //BT_BVH_TRIANGLE_MESH_SHAPE_H
+ bullet/BulletCollision/CollisionShapes/btCapsuleShape.h view
@@ -0,0 +1,173 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_CAPSULE_SHAPE_H+#define BT_CAPSULE_SHAPE_H++#include "btConvexInternalShape.h"+#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" // for the types+++///The btCapsuleShape represents a capsule around the Y axis, there is also the btCapsuleShapeX aligned around the X axis and btCapsuleShapeZ around the Z axis.+///The total height is height+2*radius, so the height is just the height between the center of each 'sphere' of the capsule caps.+///The btCapsuleShape is a convex hull of two spheres. The btMultiSphereShape is a more general collision shape that takes the convex hull of multiple sphere, so it can also represent a capsule when just using two spheres.+class btCapsuleShape : public btConvexInternalShape+{+protected:+	int	m_upAxis;++protected:+	///only used for btCapsuleShapeZ and btCapsuleShapeX subclasses.+	btCapsuleShape() : btConvexInternalShape() {m_shapeType = CAPSULE_SHAPE_PROXYTYPE;};++public:+	btCapsuleShape(btScalar radius,btScalar height);++	///CollisionShape Interface+	virtual void	calculateLocalInertia(btScalar mass,btVector3& inertia) const;++	/// btConvexShape Interface+	virtual btVector3	localGetSupportingVertexWithoutMargin(const btVector3& vec)const;++	virtual void	batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const;+	+	virtual void setMargin(btScalar collisionMargin)+	{+		//correct the m_implicitShapeDimensions for the margin+		btVector3 oldMargin(getMargin(),getMargin(),getMargin());+		btVector3 implicitShapeDimensionsWithMargin = m_implicitShapeDimensions+oldMargin;+		+		btConvexInternalShape::setMargin(collisionMargin);+		btVector3 newMargin(getMargin(),getMargin(),getMargin());+		m_implicitShapeDimensions = implicitShapeDimensionsWithMargin - newMargin;++	}++	virtual void getAabb (const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const+	{+			btVector3 halfExtents(getRadius(),getRadius(),getRadius());+			halfExtents[m_upAxis] = getRadius() + getHalfHeight();+			halfExtents += btVector3(getMargin(),getMargin(),getMargin());+			btMatrix3x3 abs_b = t.getBasis().absolute();  +			btVector3 center = t.getOrigin();+			btVector3 extent = btVector3(abs_b[0].dot(halfExtents),abs_b[1].dot(halfExtents),abs_b[2].dot(halfExtents));		  +			+			aabbMin = center - extent;+			aabbMax = center + extent;+	}++	virtual const char*	getName()const +	{+		return "CapsuleShape";+	}++	int	getUpAxis() const+	{+		return m_upAxis;+	}++	btScalar	getRadius() const+	{+		int radiusAxis = (m_upAxis+2)%3;+		return m_implicitShapeDimensions[radiusAxis];+	}++	btScalar	getHalfHeight() const+	{+		return m_implicitShapeDimensions[m_upAxis];+	}++	virtual void	setLocalScaling(const btVector3& scaling)+	{+		btVector3 oldMargin(getMargin(),getMargin(),getMargin());+		btVector3 implicitShapeDimensionsWithMargin = m_implicitShapeDimensions+oldMargin;+		btVector3 unScaledImplicitShapeDimensionsWithMargin = implicitShapeDimensionsWithMargin / m_localScaling;++		btConvexInternalShape::setLocalScaling(scaling);++		m_implicitShapeDimensions = (unScaledImplicitShapeDimensionsWithMargin * m_localScaling) - oldMargin;++	}++	virtual	int	calculateSerializeBufferSize() const;++	///fills the dataBuffer and returns the struct name (and 0 on failure)+	virtual	const char*	serialize(void* dataBuffer, btSerializer* serializer) const;+++};++///btCapsuleShapeX represents a capsule around the Z axis+///the total height is height+2*radius, so the height is just the height between the center of each 'sphere' of the capsule caps.+class btCapsuleShapeX : public btCapsuleShape+{+public:++	btCapsuleShapeX(btScalar radius,btScalar height);+		+	//debugging+	virtual const char*	getName()const+	{+		return "CapsuleX";+	}++	++};++///btCapsuleShapeZ represents a capsule around the Z axis+///the total height is height+2*radius, so the height is just the height between the center of each 'sphere' of the capsule caps.+class btCapsuleShapeZ : public btCapsuleShape+{+public:+	btCapsuleShapeZ(btScalar radius,btScalar height);++		//debugging+	virtual const char*	getName()const+	{+		return "CapsuleZ";+	}++	+};++///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64+struct	btCapsuleShapeData+{+	btConvexInternalShapeData	m_convexInternalShapeData;++	int	m_upAxis;++	char	m_padding[4];+};++SIMD_FORCE_INLINE	int	btCapsuleShape::calculateSerializeBufferSize() const+{+	return sizeof(btCapsuleShapeData);+}++	///fills the dataBuffer and returns the struct name (and 0 on failure)+SIMD_FORCE_INLINE	const char*	btCapsuleShape::serialize(void* dataBuffer, btSerializer* serializer) const+{+	btCapsuleShapeData* shapeData = (btCapsuleShapeData*) dataBuffer;+	+	btConvexInternalShape::serialize(&shapeData->m_convexInternalShapeData,serializer);++	shapeData->m_upAxis = m_upAxis;+	+	return "btCapsuleShapeData";+}++#endif //BT_CAPSULE_SHAPE_H
+ bullet/BulletCollision/CollisionShapes/btCollisionMargin.h view
@@ -0,0 +1,26 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_COLLISION_MARGIN_H+#define BT_COLLISION_MARGIN_H++//used by Gjk and some other algorithms++#define CONVEX_DISTANCE_MARGIN btScalar(0.04)// btScalar(0.1)//;//btScalar(0.01)++++#endif //BT_COLLISION_MARGIN_H+
+ bullet/BulletCollision/CollisionShapes/btCollisionShape.h view
@@ -0,0 +1,150 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_COLLISION_SHAPE_H+#define BT_COLLISION_SHAPE_H++#include "LinearMath/btTransform.h"+#include "LinearMath/btVector3.h"+#include "LinearMath/btMatrix3x3.h"+#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" //for the shape types+class btSerializer;+++///The btCollisionShape class provides an interface for collision shapes that can be shared among btCollisionObjects.+class btCollisionShape+{+protected:+	int m_shapeType;+	void* m_userPointer;++public:++	btCollisionShape() : m_shapeType (INVALID_SHAPE_PROXYTYPE), m_userPointer(0)+	{+	}++	virtual ~btCollisionShape()+	{+	}++	///getAabb returns the axis aligned bounding box in the coordinate frame of the given transform t.+	virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const =0;++	virtual void	getBoundingSphere(btVector3& center,btScalar& radius) const;++	///getAngularMotionDisc returns the maximus radius needed for Conservative Advancement to handle time-of-impact with rotations.+	virtual btScalar	getAngularMotionDisc() const;++	virtual btScalar	getContactBreakingThreshold(btScalar defaultContactThresholdFactor) const;+++	///calculateTemporalAabb calculates the enclosing aabb for the moving object over interval [0..timeStep)+	///result is conservative+	void calculateTemporalAabb(const btTransform& curTrans,const btVector3& linvel,const btVector3& angvel,btScalar timeStep, btVector3& temporalAabbMin,btVector3& temporalAabbMax) const;++++	SIMD_FORCE_INLINE bool	isPolyhedral() const+	{+		return btBroadphaseProxy::isPolyhedral(getShapeType());+	}++	SIMD_FORCE_INLINE bool	isConvex2d() const+	{+		return btBroadphaseProxy::isConvex2d(getShapeType());+	}++	SIMD_FORCE_INLINE bool	isConvex() const+	{+		return btBroadphaseProxy::isConvex(getShapeType());+	}+	SIMD_FORCE_INLINE bool	isNonMoving() const+	{+		return btBroadphaseProxy::isNonMoving(getShapeType());+	}+	SIMD_FORCE_INLINE bool	isConcave() const+	{+		return btBroadphaseProxy::isConcave(getShapeType());+	}+	SIMD_FORCE_INLINE bool	isCompound() const+	{+		return btBroadphaseProxy::isCompound(getShapeType());+	}++	SIMD_FORCE_INLINE bool	isSoftBody() const+	{+		return btBroadphaseProxy::isSoftBody(getShapeType());+	}++	///isInfinite is used to catch simulation error (aabb check)+	SIMD_FORCE_INLINE bool isInfinite() const+	{+		return btBroadphaseProxy::isInfinite(getShapeType());+	}++#ifndef __SPU__+	virtual void	setLocalScaling(const btVector3& scaling) =0;+	virtual const btVector3& getLocalScaling() const =0;+	virtual void	calculateLocalInertia(btScalar mass,btVector3& inertia) const = 0;+++//debugging support+	virtual const char*	getName()const =0 ;+#endif //__SPU__++	+	int		getShapeType() const { return m_shapeType; }+	virtual void	setMargin(btScalar margin) = 0;+	virtual btScalar	getMargin() const = 0;++	+	///optional user data pointer+	void	setUserPointer(void*  userPtr)+	{+		m_userPointer = userPtr;+	}++	void*	getUserPointer() const+	{+		return m_userPointer;+	}++	virtual	int	calculateSerializeBufferSize() const;++	///fills the dataBuffer and returns the struct name (and 0 on failure)+	virtual	const char*	serialize(void* dataBuffer, btSerializer* serializer) const;++	virtual void	serializeSingleShape(btSerializer* serializer) const;++};	++///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64+struct	btCollisionShapeData+{+	char	*m_name;+	int		m_shapeType;+	char	m_padding[4];+};++SIMD_FORCE_INLINE	int	btCollisionShape::calculateSerializeBufferSize() const+{+	return sizeof(btCollisionShapeData);+}++++#endif //BT_COLLISION_SHAPE_H+
+ bullet/BulletCollision/CollisionShapes/btCompoundShape.h view
@@ -0,0 +1,212 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_COMPOUND_SHAPE_H+#define BT_COMPOUND_SHAPE_H++#include "btCollisionShape.h"++#include "LinearMath/btVector3.h"+#include "LinearMath/btTransform.h"+#include "LinearMath/btMatrix3x3.h"+#include "btCollisionMargin.h"+#include "LinearMath/btAlignedObjectArray.h"++//class btOptimizedBvh;+struct btDbvt;++ATTRIBUTE_ALIGNED16(struct) btCompoundShapeChild+{+	BT_DECLARE_ALIGNED_ALLOCATOR();++	btTransform			m_transform;+	btCollisionShape*	m_childShape;+	int					m_childShapeType;+	btScalar			m_childMargin;+	struct btDbvtNode*	m_node;+};++SIMD_FORCE_INLINE bool operator==(const btCompoundShapeChild& c1, const btCompoundShapeChild& c2)+{+	return  ( c1.m_transform      == c2.m_transform &&+		c1.m_childShape     == c2.m_childShape &&+		c1.m_childShapeType == c2.m_childShapeType &&+		c1.m_childMargin    == c2.m_childMargin );+}++/// The btCompoundShape allows to store multiple other btCollisionShapes+/// This allows for moving concave collision objects. This is more general then the static concave btBvhTriangleMeshShape.+/// It has an (optional) dynamic aabb tree to accelerate early rejection tests. +/// @todo: This aabb tree can also be use to speed up ray tests on btCompoundShape, see http://code.google.com/p/bullet/issues/detail?id=25+/// Currently, removal of child shapes is only supported when disabling the aabb tree (pass 'false' in the constructor of btCompoundShape)+ATTRIBUTE_ALIGNED16(class) btCompoundShape	: public btCollisionShape+{+	btAlignedObjectArray<btCompoundShapeChild> m_children;+	btVector3						m_localAabbMin;+	btVector3						m_localAabbMax;++	btDbvt*							m_dynamicAabbTree;++	///increment m_updateRevision when adding/removing/replacing child shapes, so that some caches can be updated+	int								m_updateRevision;++	btScalar	m_collisionMargin;++protected:+	btVector3	m_localScaling;++public:+	BT_DECLARE_ALIGNED_ALLOCATOR();++	btCompoundShape(bool enableDynamicAabbTree = true);++	virtual ~btCompoundShape();++	void	addChildShape(const btTransform& localTransform,btCollisionShape* shape);++	/// Remove all children shapes that contain the specified shape+	virtual void removeChildShape(btCollisionShape* shape);++	void removeChildShapeByIndex(int childShapeindex);+++	int		getNumChildShapes() const+	{+		return int (m_children.size());+	}++	btCollisionShape* getChildShape(int index)+	{+		return m_children[index].m_childShape;+	}+	const btCollisionShape* getChildShape(int index) const+	{+		return m_children[index].m_childShape;+	}++	btTransform&	getChildTransform(int index)+	{+		return m_children[index].m_transform;+	}+	const btTransform&	getChildTransform(int index) const+	{+		return m_children[index].m_transform;+	}++	///set a new transform for a child, and update internal data structures (local aabb and dynamic tree)+	void	updateChildTransform(int childIndex, const btTransform& newChildTransform, bool shouldRecalculateLocalAabb = true);+++	btCompoundShapeChild* getChildList()+	{+		return &m_children[0];+	}++	///getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version+	virtual	void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const;++	/** Re-calculate the local Aabb. Is called at the end of removeChildShapes. +	Use this yourself if you modify the children or their transforms. */+	virtual void recalculateLocalAabb(); ++	virtual void	setLocalScaling(const btVector3& scaling);++	virtual const btVector3& getLocalScaling() const +	{+		return m_localScaling;+	}++	virtual void	calculateLocalInertia(btScalar mass,btVector3& inertia) const;++	virtual void	setMargin(btScalar margin)+	{+		m_collisionMargin = margin;+	}+	virtual btScalar	getMargin() const+	{+		return m_collisionMargin;+	}+	virtual const char*	getName()const+	{+		return "Compound";+	}++	const btDbvt*	getDynamicAabbTree() const+	{+		return m_dynamicAabbTree;+	}+	+	btDbvt*	getDynamicAabbTree()+	{+		return m_dynamicAabbTree;+	}++	void createAabbTreeFromChildren();++	///computes the exact moment of inertia and the transform from the coordinate system defined by the principal axes of the moment of inertia+	///and the center of mass to the current coordinate system. "masses" points to an array of masses of the children. The resulting transform+	///"principal" has to be applied inversely to all children transforms in order for the local coordinate system of the compound+	///shape to be centered at the center of mass and to coincide with the principal axes. This also necessitates a correction of the world transform+	///of the collision object by the principal transform.+	void calculatePrincipalAxisTransform(btScalar* masses, btTransform& principal, btVector3& inertia) const;++	int	getUpdateRevision() const+	{+		return m_updateRevision;+	}++	virtual	int	calculateSerializeBufferSize() const;++	///fills the dataBuffer and returns the struct name (and 0 on failure)+	virtual	const char*	serialize(void* dataBuffer, btSerializer* serializer) const;+++};++///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64+struct btCompoundShapeChildData+{+	btTransformFloatData	m_transform;+	btCollisionShapeData	*m_childShape;+	int						m_childShapeType;+	float					m_childMargin;+};++///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64+struct	btCompoundShapeData+{+	btCollisionShapeData		m_collisionShapeData;++	btCompoundShapeChildData	*m_childShapePtr;++	int							m_numChildShapes;++	float	m_collisionMargin;++};+++SIMD_FORCE_INLINE	int	btCompoundShape::calculateSerializeBufferSize() const+{+	return sizeof(btCompoundShapeData);+}++++++++#endif //BT_COMPOUND_SHAPE_H
+ bullet/BulletCollision/CollisionShapes/btConcaveShape.h view
@@ -0,0 +1,60 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_CONCAVE_SHAPE_H+#define BT_CONCAVE_SHAPE_H++#include "btCollisionShape.h"+#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" // for the types+#include "btTriangleCallback.h"++/// PHY_ScalarType enumerates possible scalar types.+/// See the btStridingMeshInterface or btHeightfieldTerrainShape for its use+typedef enum PHY_ScalarType {+	PHY_FLOAT,+	PHY_DOUBLE,+	PHY_INTEGER,+	PHY_SHORT,+	PHY_FIXEDPOINT88,+	PHY_UCHAR+} PHY_ScalarType;++///The btConcaveShape class provides an interface for non-moving (static) concave shapes.+///It has been implemented by the btStaticPlaneShape, btBvhTriangleMeshShape and btHeightfieldTerrainShape.+class btConcaveShape : public btCollisionShape+{+protected:+	btScalar m_collisionMargin;++public:+	btConcaveShape();++	virtual ~btConcaveShape();++	virtual void	processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const = 0;++	virtual btScalar getMargin() const {+		return m_collisionMargin;+	}+	virtual void setMargin(btScalar collisionMargin)+	{+		m_collisionMargin = collisionMargin;+	}++++};++#endif //BT_CONCAVE_SHAPE_H
+ bullet/BulletCollision/CollisionShapes/btConeShape.h view
@@ -0,0 +1,103 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_CONE_MINKOWSKI_H+#define BT_CONE_MINKOWSKI_H++#include "btConvexInternalShape.h"+#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" // for the types++///The btConeShape implements a cone shape primitive, centered around the origin and aligned with the Y axis. The btConeShapeX is aligned around the X axis and btConeShapeZ around the Z axis.+class btConeShape : public btConvexInternalShape++{++	btScalar m_sinAngle;+	btScalar m_radius;+	btScalar m_height;+	int		m_coneIndices[3];+	btVector3 coneLocalSupport(const btVector3& v) const;+++public:+	btConeShape (btScalar radius,btScalar height);+	+	virtual btVector3	localGetSupportingVertex(const btVector3& vec) const;+	virtual btVector3	localGetSupportingVertexWithoutMargin(const btVector3& vec) const;+	virtual void	batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const;++	btScalar getRadius() const { return m_radius;}+	btScalar getHeight() const { return m_height;}+++	virtual void	calculateLocalInertia(btScalar mass,btVector3& inertia) const+	{+		btTransform identity;+		identity.setIdentity();+		btVector3 aabbMin,aabbMax;+		getAabb(identity,aabbMin,aabbMax);++		btVector3 halfExtents = (aabbMax-aabbMin)*btScalar(0.5);++		btScalar margin = getMargin();++		btScalar lx=btScalar(2.)*(halfExtents.x()+margin);+		btScalar ly=btScalar(2.)*(halfExtents.y()+margin);+		btScalar lz=btScalar(2.)*(halfExtents.z()+margin);+		const btScalar x2 = lx*lx;+		const btScalar y2 = ly*ly;+		const btScalar z2 = lz*lz;+		const btScalar scaledmass = mass * btScalar(0.08333333);++		inertia = scaledmass * (btVector3(y2+z2,x2+z2,x2+y2));++//		inertia.x() = scaledmass * (y2+z2);+//		inertia.y() = scaledmass * (x2+z2);+//		inertia.z() = scaledmass * (x2+y2);+	}+++		virtual const char*	getName()const +		{+			return "Cone";+		}+		+		///choose upAxis index+		void	setConeUpIndex(int upIndex);+		+		int	getConeUpIndex() const+		{+			return m_coneIndices[1];+		}++	virtual void	setLocalScaling(const btVector3& scaling);++};++///btConeShape implements a Cone shape, around the X axis+class btConeShapeX : public btConeShape+{+	public:+		btConeShapeX(btScalar radius,btScalar height);+};++///btConeShapeZ implements a Cone shape, around the Z axis+class btConeShapeZ : public btConeShape+{+	public:+		btConeShapeZ(btScalar radius,btScalar height);+};+#endif //BT_CONE_MINKOWSKI_H+
+ bullet/BulletCollision/CollisionShapes/btConvex2dShape.h view
@@ -0,0 +1,80 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_CONVEX_2D_SHAPE_H+#define BT_CONVEX_2D_SHAPE_H++#include "BulletCollision/CollisionShapes/btConvexShape.h"+#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" // for the types++///The btConvex2dShape allows to use arbitrary convex shapes as 2d convex shapes, with the Z component assumed to be 0.+///For 2d boxes, the btBox2dShape is recommended.+class btConvex2dShape : public btConvexShape+{+	btConvexShape*	m_childConvexShape;++	public:+	+	btConvex2dShape(	btConvexShape* convexChildShape);+	+	virtual ~btConvex2dShape();+	+	virtual btVector3	localGetSupportingVertexWithoutMargin(const btVector3& vec)const;++	virtual btVector3	localGetSupportingVertex(const btVector3& vec)const;++	virtual void	batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const;++	virtual void	calculateLocalInertia(btScalar mass,btVector3& inertia) const;++	btConvexShape*	getChildShape() +	{+		return m_childConvexShape;+	}++	const btConvexShape*	getChildShape() const+	{+		return m_childConvexShape;+	}++	virtual const char*	getName()const +	{+		return "Convex2dShape";+	}+	+++	///////////////////////////+++	///getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version+	void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const;++	virtual void getAabbSlow(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const;++	virtual void	setLocalScaling(const btVector3& scaling) ;+	virtual const btVector3& getLocalScaling() const ;++	virtual void	setMargin(btScalar margin);+	virtual btScalar	getMargin() const;++	virtual int		getNumPreferredPenetrationDirections() const;+	+	virtual void	getPreferredPenetrationDirection(int index, btVector3& penetrationVector) const;+++};++#endif //BT_CONVEX_2D_SHAPE_H
+ bullet/BulletCollision/CollisionShapes/btConvexHullShape.h view
@@ -0,0 +1,120 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_CONVEX_HULL_SHAPE_H+#define BT_CONVEX_HULL_SHAPE_H++#include "btPolyhedralConvexShape.h"+#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" // for the types+#include "LinearMath/btAlignedObjectArray.h"+++///The btConvexHullShape implements an implicit convex hull of an array of vertices.+///Bullet provides a general and fast collision detector for convex shapes based on GJK and EPA using localGetSupportingVertex.+ATTRIBUTE_ALIGNED16(class) btConvexHullShape : public btPolyhedralConvexAabbCachingShape+{+	btAlignedObjectArray<btVector3>	m_unscaledPoints;++public:+	BT_DECLARE_ALIGNED_ALLOCATOR();++	+	///this constructor optionally takes in a pointer to points. Each point is assumed to be 3 consecutive btScalar (x,y,z), the striding defines the number of bytes between each point, in memory.+	///It is easier to not pass any points in the constructor, and just add one point at a time, using addPoint.+	///btConvexHullShape make an internal copy of the points.+	btConvexHullShape(const btScalar* points=0,int numPoints=0, int stride=sizeof(btVector3));++	void addPoint(const btVector3& point);++	+	btVector3* getUnscaledPoints()+	{+		return &m_unscaledPoints[0];+	}++	const btVector3* getUnscaledPoints() const+	{+		return &m_unscaledPoints[0];+	}++	///getPoints is obsolete, please use getUnscaledPoints+	const btVector3* getPoints() const+	{+		return getUnscaledPoints();+	}++	+++	SIMD_FORCE_INLINE	btVector3 getScaledPoint(int i) const+	{+		return m_unscaledPoints[i] * m_localScaling;+	}++	SIMD_FORCE_INLINE	int getNumPoints() const +	{+		return m_unscaledPoints.size();+	}++	virtual btVector3	localGetSupportingVertex(const btVector3& vec)const;+	virtual btVector3	localGetSupportingVertexWithoutMargin(const btVector3& vec)const;+	virtual void	batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const;+	+++	//debugging+	virtual const char*	getName()const {return "Convex";}++	+	virtual int	getNumVertices() const;+	virtual int getNumEdges() const;+	virtual void getEdge(int i,btVector3& pa,btVector3& pb) const;+	virtual void getVertex(int i,btVector3& vtx) const;+	virtual int	getNumPlanes() const;+	virtual void getPlane(btVector3& planeNormal,btVector3& planeSupport,int i ) const;+	virtual	bool isInside(const btVector3& pt,btScalar tolerance) const;++	///in case we receive negative scaling+	virtual void	setLocalScaling(const btVector3& scaling);++	virtual	int	calculateSerializeBufferSize() const;++	///fills the dataBuffer and returns the struct name (and 0 on failure)+	virtual	const char*	serialize(void* dataBuffer, btSerializer* serializer) const;++};++///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64+struct	btConvexHullShapeData+{+	btConvexInternalShapeData	m_convexInternalShapeData;++	btVector3FloatData	*m_unscaledPointsFloatPtr;+	btVector3DoubleData	*m_unscaledPointsDoublePtr;++	int		m_numUnscaledPoints;+	char m_padding3[4];++};+++SIMD_FORCE_INLINE	int	btConvexHullShape::calculateSerializeBufferSize() const+{+	return sizeof(btConvexHullShapeData);+}+++#endif //BT_CONVEX_HULL_SHAPE_H+
+ bullet/BulletCollision/CollisionShapes/btConvexInternalShape.h view
@@ -0,0 +1,202 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_CONVEX_INTERNAL_SHAPE_H+#define BT_CONVEX_INTERNAL_SHAPE_H++#include "btConvexShape.h"+#include "LinearMath/btAabbUtil2.h"+++///The btConvexInternalShape is an internal base class, shared by most convex shape implementations.+class btConvexInternalShape : public btConvexShape+{++	protected:++	//local scaling. collisionMargin is not scaled !+	btVector3	m_localScaling;++	btVector3	m_implicitShapeDimensions;+	+	btScalar	m_collisionMargin;++	btScalar	m_padding;++	btConvexInternalShape();++public:++	++	virtual ~btConvexInternalShape()+	{++	}++	virtual btVector3	localGetSupportingVertex(const btVector3& vec)const;++	const btVector3& getImplicitShapeDimensions() const+	{+		return m_implicitShapeDimensions;+	}++	///warning: use setImplicitShapeDimensions with care+	///changing a collision shape while the body is in the world is not recommended,+	///it is best to remove the body from the world, then make the change, and re-add it+	///alternatively flush the contact points, see documentation for 'cleanProxyFromPairs'+	void	setImplicitShapeDimensions(const btVector3& dimensions)+	{+		m_implicitShapeDimensions = dimensions;+	}++	///getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version+	void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const+	{+		getAabbSlow(t,aabbMin,aabbMax);+	}+++	+	virtual void getAabbSlow(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const;+++	virtual void	setLocalScaling(const btVector3& scaling);+	virtual const btVector3& getLocalScaling() const +	{+		return m_localScaling;+	}++	const btVector3& getLocalScalingNV() const +	{+		return m_localScaling;+	}++	virtual void	setMargin(btScalar margin)+	{+		m_collisionMargin = margin;+	}+	virtual btScalar	getMargin() const+	{+		return m_collisionMargin;+	}++	btScalar	getMarginNV() const+	{+		return m_collisionMargin;+	}++	virtual int		getNumPreferredPenetrationDirections() const+	{+		return 0;+	}+	+	virtual void	getPreferredPenetrationDirection(int index, btVector3& penetrationVector) const+	{+		(void)penetrationVector;+		(void)index;+		btAssert(0);+	}++	virtual	int	calculateSerializeBufferSize() const;++	///fills the dataBuffer and returns the struct name (and 0 on failure)+	virtual	const char*	serialize(void* dataBuffer, btSerializer* serializer) const;++	+};++///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64+struct	btConvexInternalShapeData+{+	btCollisionShapeData	m_collisionShapeData;++	btVector3FloatData	m_localScaling;++	btVector3FloatData	m_implicitShapeDimensions;+	+	float			m_collisionMargin;++	int	m_padding;++};++++SIMD_FORCE_INLINE	int	btConvexInternalShape::calculateSerializeBufferSize() const+{+	return sizeof(btConvexInternalShapeData);+}++///fills the dataBuffer and returns the struct name (and 0 on failure)+SIMD_FORCE_INLINE	const char*	btConvexInternalShape::serialize(void* dataBuffer, btSerializer* serializer) const+{+	btConvexInternalShapeData* shapeData = (btConvexInternalShapeData*) dataBuffer;+	btCollisionShape::serialize(&shapeData->m_collisionShapeData, serializer);++	m_implicitShapeDimensions.serializeFloat(shapeData->m_implicitShapeDimensions);+	m_localScaling.serializeFloat(shapeData->m_localScaling);+	shapeData->m_collisionMargin = float(m_collisionMargin);++	return "btConvexInternalShapeData";+}+++++///btConvexInternalAabbCachingShape adds local aabb caching for convex shapes, to avoid expensive bounding box calculations+class btConvexInternalAabbCachingShape : public btConvexInternalShape+{+	btVector3	m_localAabbMin;+	btVector3	m_localAabbMax;+	bool		m_isLocalAabbValid;+	+protected:+					+	btConvexInternalAabbCachingShape();+	+	void setCachedLocalAabb (const btVector3& aabbMin, const btVector3& aabbMax)+	{+		m_isLocalAabbValid = true;+		m_localAabbMin = aabbMin;+		m_localAabbMax = aabbMax;+	}++	inline void getCachedLocalAabb (btVector3& aabbMin, btVector3& aabbMax) const+	{+		btAssert(m_isLocalAabbValid);+		aabbMin = m_localAabbMin;+		aabbMax = m_localAabbMax;+	}++	inline void getNonvirtualAabb(const btTransform& trans,btVector3& aabbMin,btVector3& aabbMax, btScalar margin) const+	{++		//lazy evaluation of local aabb+		btAssert(m_isLocalAabbValid);+		btTransformAabb(m_localAabbMin,m_localAabbMax,margin,trans,aabbMin,aabbMax);+	}+		+public:+		+	virtual void	setLocalScaling(const btVector3& scaling);++	virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const;++	void	recalcLocalAabb();++};++#endif //BT_CONVEX_INTERNAL_SHAPE_H
+ bullet/BulletCollision/CollisionShapes/btConvexPointCloudShape.h view
@@ -0,0 +1,105 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_CONVEX_POINT_CLOUD_SHAPE_H+#define BT_CONVEX_POINT_CLOUD_SHAPE_H++#include "btPolyhedralConvexShape.h"+#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" // for the types+#include "LinearMath/btAlignedObjectArray.h"++///The btConvexPointCloudShape implements an implicit convex hull of an array of vertices.+ATTRIBUTE_ALIGNED16(class) btConvexPointCloudShape : public btPolyhedralConvexAabbCachingShape+{+	btVector3* m_unscaledPoints;+	int m_numPoints;++public:+	BT_DECLARE_ALIGNED_ALLOCATOR();++	btConvexPointCloudShape()+	{+		m_localScaling.setValue(1.f,1.f,1.f);+		m_shapeType = CONVEX_POINT_CLOUD_SHAPE_PROXYTYPE;+		m_unscaledPoints = 0;+		m_numPoints = 0;+	}++	btConvexPointCloudShape(btVector3* points,int numPoints, const btVector3& localScaling,bool computeAabb = true)+	{+		m_localScaling = localScaling;+		m_shapeType = CONVEX_POINT_CLOUD_SHAPE_PROXYTYPE;+		m_unscaledPoints = points;+		m_numPoints = numPoints;++		if (computeAabb)+			recalcLocalAabb();+	}++	void setPoints (btVector3* points, int numPoints, bool computeAabb = true,const btVector3& localScaling=btVector3(1.f,1.f,1.f))+	{+		m_unscaledPoints = points;+		m_numPoints = numPoints;+		m_localScaling = localScaling;++		if (computeAabb)+			recalcLocalAabb();+	}++	SIMD_FORCE_INLINE	btVector3* getUnscaledPoints()+	{+		return m_unscaledPoints;+	}++	SIMD_FORCE_INLINE	const btVector3* getUnscaledPoints() const+	{+		return m_unscaledPoints;+	}++	SIMD_FORCE_INLINE	int getNumPoints() const +	{+		return m_numPoints;+	}++	SIMD_FORCE_INLINE	btVector3	getScaledPoint( int index) const+	{+		return m_unscaledPoints[index] * m_localScaling;+	}++#ifndef __SPU__+	virtual btVector3	localGetSupportingVertex(const btVector3& vec)const;+	virtual btVector3	localGetSupportingVertexWithoutMargin(const btVector3& vec)const;+	virtual void	batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const;+#endif+++	//debugging+	virtual const char*	getName()const {return "ConvexPointCloud";}++	virtual int	getNumVertices() const;+	virtual int getNumEdges() const;+	virtual void getEdge(int i,btVector3& pa,btVector3& pb) const;+	virtual void getVertex(int i,btVector3& vtx) const;+	virtual int	getNumPlanes() const;+	virtual void getPlane(btVector3& planeNormal,btVector3& planeSupport,int i ) const;+	virtual	bool isInside(const btVector3& pt,btScalar tolerance) const;++	///in case we receive negative scaling+	virtual void	setLocalScaling(const btVector3& scaling);+};+++#endif //BT_CONVEX_POINT_CLOUD_SHAPE_H+
+ bullet/BulletCollision/CollisionShapes/btConvexPolyhedron.h view
@@ -0,0 +1,54 @@+/*
+Bullet Continuous Collision Detection and Physics Library
+Copyright (c) 2011 Advanced Micro Devices, Inc.  http://bulletphysics.org
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+Permission is granted to anyone to use this software for any purpose, 
+including commercial applications, and to alter it and redistribute it freely, 
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+*/
+
+
+///This file was written by Erwin Coumans
+
+
+#ifndef _BT_POLYHEDRAL_FEATURES_H
+#define _BT_POLYHEDRAL_FEATURES_H
+
+#include "LinearMath/btTransform.h"
+#include "LinearMath/btAlignedObjectArray.h"
+
+
+struct btFace
+{
+	btAlignedObjectArray<int>	m_indices;
+	btAlignedObjectArray<int>	m_connectedFaces;
+	float	m_plane[4];
+};
+
+
+class btConvexPolyhedron
+{
+	public:
+	btConvexPolyhedron();
+	virtual	~btConvexPolyhedron();
+
+	btAlignedObjectArray<btVector3>	m_vertices;
+	btAlignedObjectArray<btFace>	m_faces;
+	btAlignedObjectArray<btVector3> m_uniqueEdges;
+	btVector3		m_localCenter;
+
+	void	initialize();
+
+	void project(const btTransform& trans, const btVector3& dir, float& min, float& max) const;
+};
+
+	
+#endif //_BT_POLYHEDRAL_FEATURES_H
+
+
+ bullet/BulletCollision/CollisionShapes/btConvexShape.h view
@@ -0,0 +1,82 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_CONVEX_SHAPE_INTERFACE1+#define BT_CONVEX_SHAPE_INTERFACE1++#include "btCollisionShape.h"++#include "LinearMath/btVector3.h"+#include "LinearMath/btTransform.h"+#include "LinearMath/btMatrix3x3.h"+#include "btCollisionMargin.h"+#include "LinearMath/btAlignedAllocator.h"++#define MAX_PREFERRED_PENETRATION_DIRECTIONS 10++/// The btConvexShape is an abstract shape interface, implemented by all convex shapes such as btBoxShape, btConvexHullShape etc.+/// It describes general convex shapes using the localGetSupportingVertex interface, used by collision detectors such as btGjkPairDetector.+ATTRIBUTE_ALIGNED16(class) btConvexShape : public btCollisionShape+{+++public:++	BT_DECLARE_ALIGNED_ALLOCATOR();++	btConvexShape ();++	virtual ~btConvexShape();++	virtual btVector3	localGetSupportingVertex(const btVector3& vec)const = 0;++	////////+	#ifndef __SPU__+	virtual btVector3	localGetSupportingVertexWithoutMargin(const btVector3& vec) const=0;+	#endif //#ifndef __SPU__++	btVector3 localGetSupportVertexWithoutMarginNonVirtual (const btVector3& vec) const;+	btVector3 localGetSupportVertexNonVirtual (const btVector3& vec) const;+	btScalar getMarginNonVirtual () const;+	void getAabbNonVirtual (const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const;++	+	//notice that the vectors should be unit length+	virtual void	batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const= 0;++	///getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version+	void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const =0;++	virtual void getAabbSlow(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const =0;++	virtual void	setLocalScaling(const btVector3& scaling) =0;+	virtual const btVector3& getLocalScaling() const =0;++	virtual void	setMargin(btScalar margin)=0;++	virtual btScalar	getMargin() const=0;++	virtual int		getNumPreferredPenetrationDirections() const=0;+	+	virtual void	getPreferredPenetrationDirection(int index, btVector3& penetrationVector) const=0;+++	+	+};++++#endif //BT_CONVEX_SHAPE_INTERFACE1
+ bullet/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h view
@@ -0,0 +1,75 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+#ifndef BT_CONVEX_TRIANGLEMESH_SHAPE_H+#define BT_CONVEX_TRIANGLEMESH_SHAPE_H+++#include "btPolyhedralConvexShape.h"+#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" // for the types+++/// The btConvexTriangleMeshShape is a convex hull of a triangle mesh, but the performance is not as good as btConvexHullShape.+/// A small benefit of this class is that it uses the btStridingMeshInterface, so you can avoid the duplication of the triangle mesh data. Nevertheless, most users should use the much better performing btConvexHullShape instead.+class btConvexTriangleMeshShape : public btPolyhedralConvexAabbCachingShape+{++	class btStridingMeshInterface*	m_stridingMesh;++public:+	btConvexTriangleMeshShape(btStridingMeshInterface* meshInterface, bool calcAabb = true);++	class btStridingMeshInterface*	getMeshInterface()+	{+		return m_stridingMesh;+	}+	const class btStridingMeshInterface* getMeshInterface() const+	{+		return m_stridingMesh;+	}+	+	virtual btVector3	localGetSupportingVertex(const btVector3& vec)const;+	virtual btVector3	localGetSupportingVertexWithoutMargin(const btVector3& vec)const;+	virtual void	batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const;+	+	//debugging+	virtual const char*	getName()const {return "ConvexTrimesh";}+	+	virtual int	getNumVertices() const;+	virtual int getNumEdges() const;+	virtual void getEdge(int i,btVector3& pa,btVector3& pb) const;+	virtual void getVertex(int i,btVector3& vtx) const;+	virtual int	getNumPlanes() const;+	virtual void getPlane(btVector3& planeNormal,btVector3& planeSupport,int i ) const;+	virtual	bool isInside(const btVector3& pt,btScalar tolerance) const;++	+	virtual void	setLocalScaling(const btVector3& scaling);+	virtual const btVector3& getLocalScaling() const;++	///computes the exact moment of inertia and the transform from the coordinate system defined by the principal axes of the moment of inertia+	///and the center of mass to the current coordinate system. A mass of 1 is assumed, for other masses just multiply the computed "inertia"+	///by the mass. The resulting transform "principal" has to be applied inversely to the mesh in order for the local coordinate system of the+	///shape to be centered at the center of mass and to coincide with the principal axes. This also necessitates a correction of the world transform+	///of the collision object by the principal transform. This method also computes the volume of the convex mesh.+	void calculatePrincipalAxisTransform(btTransform& principal, btVector3& inertia, btScalar& volume) const;++};++++#endif //BT_CONVEX_TRIANGLEMESH_SHAPE_H+++
+ bullet/BulletCollision/CollisionShapes/btCylinderShape.h view
@@ -0,0 +1,200 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_CYLINDER_MINKOWSKI_H+#define BT_CYLINDER_MINKOWSKI_H++#include "btBoxShape.h"+#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" // for the types+#include "LinearMath/btVector3.h"++/// The btCylinderShape class implements a cylinder shape primitive, centered around the origin. Its central axis aligned with the Y axis. btCylinderShapeX is aligned with the X axis and btCylinderShapeZ around the Z axis.+class btCylinderShape : public btConvexInternalShape++{++protected:++	int	m_upAxis;++public:++	btVector3 getHalfExtentsWithMargin() const+	{+		btVector3 halfExtents = getHalfExtentsWithoutMargin();+		btVector3 margin(getMargin(),getMargin(),getMargin());+		halfExtents += margin;+		return halfExtents;+	}+	+	const btVector3& getHalfExtentsWithoutMargin() const+	{+		return m_implicitShapeDimensions;//changed in Bullet 2.63: assume the scaling and margin are included+	}++	btCylinderShape (const btVector3& halfExtents);+	+	void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const;++	virtual void	calculateLocalInertia(btScalar mass,btVector3& inertia) const;++	virtual btVector3	localGetSupportingVertexWithoutMargin(const btVector3& vec)const;++	virtual void	batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const;++	virtual void setMargin(btScalar collisionMargin)+	{+		//correct the m_implicitShapeDimensions for the margin+		btVector3 oldMargin(getMargin(),getMargin(),getMargin());+		btVector3 implicitShapeDimensionsWithMargin = m_implicitShapeDimensions+oldMargin;+		+		btConvexInternalShape::setMargin(collisionMargin);+		btVector3 newMargin(getMargin(),getMargin(),getMargin());+		m_implicitShapeDimensions = implicitShapeDimensionsWithMargin - newMargin;++	}++	virtual btVector3	localGetSupportingVertex(const btVector3& vec) const+	{++		btVector3 supVertex;+		supVertex = localGetSupportingVertexWithoutMargin(vec);+		+		if ( getMargin()!=btScalar(0.) )+		{+			btVector3 vecnorm = vec;+			if (vecnorm .length2() < (SIMD_EPSILON*SIMD_EPSILON))+			{+				vecnorm.setValue(btScalar(-1.),btScalar(-1.),btScalar(-1.));+			} +			vecnorm.normalize();+			supVertex+= getMargin() * vecnorm;+		}+		return supVertex;+	}+++	//use box inertia+	//	virtual void	calculateLocalInertia(btScalar mass,btVector3& inertia) const;+++	int	getUpAxis() const+	{+		return m_upAxis;+	}++	virtual btScalar getRadius() const+	{+		return getHalfExtentsWithMargin().getX();+	}++	virtual void	setLocalScaling(const btVector3& scaling)+	{+		btVector3 oldMargin(getMargin(),getMargin(),getMargin());+		btVector3 implicitShapeDimensionsWithMargin = m_implicitShapeDimensions+oldMargin;+		btVector3 unScaledImplicitShapeDimensionsWithMargin = implicitShapeDimensionsWithMargin / m_localScaling;++		btConvexInternalShape::setLocalScaling(scaling);++		m_implicitShapeDimensions = (unScaledImplicitShapeDimensionsWithMargin * m_localScaling) - oldMargin;++	}++	//debugging+	virtual const char*	getName()const+	{+		return "CylinderY";+	}++	virtual	int	calculateSerializeBufferSize() const;++	///fills the dataBuffer and returns the struct name (and 0 on failure)+	virtual	const char*	serialize(void* dataBuffer, btSerializer* serializer) const;++};++class btCylinderShapeX : public btCylinderShape+{+public:+	btCylinderShapeX (const btVector3& halfExtents);++	virtual btVector3	localGetSupportingVertexWithoutMargin(const btVector3& vec)const;+	virtual void	batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const;+	+		//debugging+	virtual const char*	getName()const+	{+		return "CylinderX";+	}++	virtual btScalar getRadius() const+	{+		return getHalfExtentsWithMargin().getY();+	}++};++class btCylinderShapeZ : public btCylinderShape+{+public:+	btCylinderShapeZ (const btVector3& halfExtents);++	virtual btVector3	localGetSupportingVertexWithoutMargin(const btVector3& vec)const;+	virtual void	batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const;++		//debugging+	virtual const char*	getName()const+	{+		return "CylinderZ";+	}++	virtual btScalar getRadius() const+	{+		return getHalfExtentsWithMargin().getX();+	}++};++///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64+struct	btCylinderShapeData+{+	btConvexInternalShapeData	m_convexInternalShapeData;++	int	m_upAxis;++	char	m_padding[4];+};++SIMD_FORCE_INLINE	int	btCylinderShape::calculateSerializeBufferSize() const+{+	return sizeof(btCylinderShapeData);+}++	///fills the dataBuffer and returns the struct name (and 0 on failure)+SIMD_FORCE_INLINE	const char*	btCylinderShape::serialize(void* dataBuffer, btSerializer* serializer) const+{+	btCylinderShapeData* shapeData = (btCylinderShapeData*) dataBuffer;+	+	btConvexInternalShape::serialize(&shapeData->m_convexInternalShapeData,serializer);++	shapeData->m_upAxis = m_upAxis;+	+	return "btCylinderShapeData";+}++++#endif //BT_CYLINDER_MINKOWSKI_H+
+ bullet/BulletCollision/CollisionShapes/btEmptyShape.h view
@@ -0,0 +1,70 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_EMPTY_SHAPE_H+#define BT_EMPTY_SHAPE_H++#include "btConcaveShape.h"++#include "LinearMath/btVector3.h"+#include "LinearMath/btTransform.h"+#include "LinearMath/btMatrix3x3.h"+#include "btCollisionMargin.h"+++++/// The btEmptyShape is a collision shape without actual collision detection shape, so most users should ignore this class.+/// It can be replaced by another shape during runtime, but the inertia tensor should be recomputed.+class btEmptyShape	: public btConcaveShape+{+public:+	btEmptyShape();++	virtual ~btEmptyShape();+++	///getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version+	void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const;+++	virtual void	setLocalScaling(const btVector3& scaling)+	{+		m_localScaling = scaling;+	}+	virtual const btVector3& getLocalScaling() const +	{+		return m_localScaling;+	}++	virtual void	calculateLocalInertia(btScalar mass,btVector3& inertia) const;+	+	virtual const char*	getName()const+	{+		return "Empty";+	}++	virtual void processAllTriangles(btTriangleCallback* ,const btVector3& ,const btVector3& ) const+	{+	}++protected:+	btVector3	m_localScaling;++};++++#endif //BT_EMPTY_SHAPE_H
+ bullet/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.h view
@@ -0,0 +1,161 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_HEIGHTFIELD_TERRAIN_SHAPE_H+#define BT_HEIGHTFIELD_TERRAIN_SHAPE_H++#include "btConcaveShape.h"++///btHeightfieldTerrainShape simulates a 2D heightfield terrain+/**+  The caller is responsible for maintaining the heightfield array; this+  class does not make a copy.++  The heightfield can be dynamic so long as the min/max height values+  capture the extremes (heights must always be in that range).++  The local origin of the heightfield is assumed to be the exact+  center (as determined by width and length and height, with each+  axis multiplied by the localScaling).++  \b NOTE: be careful with coordinates.  If you have a heightfield with a local+  min height of -100m, and a max height of +500m, you may be tempted to place it+  at the origin (0,0) and expect the heights in world coordinates to be+  -100 to +500 meters.+  Actually, the heights will be -300 to +300m, because bullet will re-center+  the heightfield based on its AABB (which is determined by the min/max+  heights).  So keep in mind that once you create a btHeightfieldTerrainShape+  object, the heights will be adjusted relative to the center of the AABB.  This+  is different to the behavior of many rendering engines, but is useful for+  physics engines.++  Most (but not all) rendering and heightfield libraries assume upAxis = 1+  (that is, the y-axis is "up").  This class allows any of the 3 coordinates+  to be "up".  Make sure your choice of axis is consistent with your rendering+  system.++  The heightfield heights are determined from the data type used for the+  heightfieldData array.  ++   - PHY_UCHAR: height at a point is the uchar value at the+       grid point, multipled by heightScale.  uchar isn't recommended+       because of its inability to deal with negative values, and+       low resolution (8-bit).++   - PHY_SHORT: height at a point is the short int value at that grid+       point, multipled by heightScale.++   - PHY_FLOAT: height at a point is the float value at that grid+       point.  heightScale is ignored when using the float heightfield+       data type.++  Whatever the caller specifies as minHeight and maxHeight will be honored.+  The class will not inspect the heightfield to discover the actual minimum+  or maximum heights.  These values are used to determine the heightfield's+  axis-aligned bounding box, multiplied by localScaling.++  For usage and testing see the TerrainDemo.+ */+class btHeightfieldTerrainShape : public btConcaveShape+{+protected:+	btVector3	m_localAabbMin;+	btVector3	m_localAabbMax;+	btVector3	m_localOrigin;++	///terrain data+	int	m_heightStickWidth;+	int m_heightStickLength;+	btScalar	m_minHeight;+	btScalar	m_maxHeight;+	btScalar m_width;+	btScalar m_length;+	btScalar m_heightScale;+	union+	{+		unsigned char*	m_heightfieldDataUnsignedChar;+		short*		m_heightfieldDataShort;+		btScalar*			m_heightfieldDataFloat;+		void*			m_heightfieldDataUnknown;+	};++	PHY_ScalarType	m_heightDataType;	+	bool	m_flipQuadEdges;+  bool  m_useDiamondSubdivision;++	int	m_upAxis;+	+	btVector3	m_localScaling;++	virtual btScalar	getRawHeightFieldValue(int x,int y) const;+	void		quantizeWithClamp(int* out, const btVector3& point,int isMax) const;+	void		getVertex(int x,int y,btVector3& vertex) const;++++	/// protected initialization+	/**+	  Handles the work of constructors so that public constructors can be+	  backwards-compatible without a lot of copy/paste.+	 */+	void initialize(int heightStickWidth, int heightStickLength,+	                void* heightfieldData, btScalar heightScale,+	                btScalar minHeight, btScalar maxHeight, int upAxis,+	                PHY_ScalarType heightDataType, bool flipQuadEdges);++public:+	/// preferred constructor+	/**+	  This constructor supports a range of heightfield+	  data types, and allows for a non-zero minimum height value.+	  heightScale is needed for any integer-based heightfield data types.+	 */+	btHeightfieldTerrainShape(int heightStickWidth,int heightStickLength,+	                          void* heightfieldData, btScalar heightScale,+	                          btScalar minHeight, btScalar maxHeight,+	                          int upAxis, PHY_ScalarType heightDataType,+	                          bool flipQuadEdges);++	/// legacy constructor+	/**+	  The legacy constructor assumes the heightfield has a minimum height+	  of zero.  Only unsigned char or floats are supported.  For legacy+	  compatibility reasons, heightScale is calculated as maxHeight / 65535 +	  (and is only used when useFloatData = false).+ 	 */+	btHeightfieldTerrainShape(int heightStickWidth,int heightStickLength,void* heightfieldData, btScalar maxHeight,int upAxis,bool useFloatData,bool flipQuadEdges);++	virtual ~btHeightfieldTerrainShape();+++	void setUseDiamondSubdivision(bool useDiamondSubdivision=true) { m_useDiamondSubdivision = useDiamondSubdivision;}+++	virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const;++	virtual void	processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const;++	virtual void	calculateLocalInertia(btScalar mass,btVector3& inertia) const;++	virtual void	setLocalScaling(const btVector3& scaling);+	+	virtual const btVector3& getLocalScaling() const;+	+	//debugging+	virtual const char*	getName()const {return "HEIGHTFIELD";}++};++#endif //BT_HEIGHTFIELD_TERRAIN_SHAPE_H
+ bullet/BulletCollision/CollisionShapes/btMaterial.h view
@@ -0,0 +1,35 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++/// This file was created by Alex Silverman++#ifndef BT_MATERIAL_H+#define BT_MATERIAL_H++// Material class to be used by btMultimaterialTriangleMeshShape to store triangle properties+class btMaterial+{+    // public members so that materials can change due to world events+public:+    btScalar m_friction;+    btScalar m_restitution;+    int pad[2];++    btMaterial(){}+    btMaterial(btScalar fric, btScalar rest) { m_friction = fric; m_restitution = rest; }+};++#endif // BT_MATERIAL_H+
+ bullet/BulletCollision/CollisionShapes/btMinkowskiSumShape.h view
@@ -0,0 +1,60 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_MINKOWSKI_SUM_SHAPE_H+#define BT_MINKOWSKI_SUM_SHAPE_H++#include "btConvexInternalShape.h"+#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" // for the types++/// The btMinkowskiSumShape is only for advanced users. This shape represents implicit based minkowski sum of two convex implicit shapes.+class btMinkowskiSumShape : public btConvexInternalShape+{++	btTransform	m_transA;+	btTransform	m_transB;+	const btConvexShape*	m_shapeA;+	const btConvexShape*	m_shapeB;++public:++	btMinkowskiSumShape(const btConvexShape* shapeA,const btConvexShape* shapeB);++	virtual btVector3	localGetSupportingVertexWithoutMargin(const btVector3& vec)const;++	virtual void	batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const;+++	virtual void	calculateLocalInertia(btScalar mass,btVector3& inertia) const;++	void	setTransformA(const btTransform&	transA) { m_transA = transA;}+	void	setTransformB(const btTransform&	transB) { m_transB = transB;}++	const btTransform& getTransformA()const  { return m_transA;}+	const btTransform& GetTransformB()const  { return m_transB;}+++	virtual btScalar	getMargin() const;++	const btConvexShape*	getShapeA() const { return m_shapeA;}+	const btConvexShape*	getShapeB() const { return m_shapeB;}++	virtual const char*	getName()const +	{+		return "MinkowskiSum";+	}+};++#endif //BT_MINKOWSKI_SUM_SHAPE_H
+ bullet/BulletCollision/CollisionShapes/btMultiSphereShape.h view
@@ -0,0 +1,99 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_MULTI_SPHERE_MINKOWSKI_H+#define BT_MULTI_SPHERE_MINKOWSKI_H++#include "btConvexInternalShape.h"+#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" // for the types+#include "LinearMath/btAlignedObjectArray.h"+#include "LinearMath/btAabbUtil2.h"++++///The btMultiSphereShape represents the convex hull of a collection of spheres. You can create special capsules or other smooth volumes.+///It is possible to animate the spheres for deformation, but call 'recalcLocalAabb' after changing any sphere position/radius+class btMultiSphereShape : public btConvexInternalAabbCachingShape+{+	+	btAlignedObjectArray<btVector3> m_localPositionArray;+	btAlignedObjectArray<btScalar>  m_radiArray;+	+public:+	btMultiSphereShape (const btVector3* positions,const btScalar* radi,int numSpheres);++	///CollisionShape Interface+	virtual void	calculateLocalInertia(btScalar mass,btVector3& inertia) const;++	/// btConvexShape Interface+	virtual btVector3	localGetSupportingVertexWithoutMargin(const btVector3& vec)const;++	virtual void	batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const;+	+	int	getSphereCount() const+	{+		return m_localPositionArray.size();+	}++	const btVector3&	getSpherePosition(int index) const+	{+		return m_localPositionArray[index];+	}++	btScalar	getSphereRadius(int index) const+	{+		return m_radiArray[index];+	}+++	virtual const char*	getName()const +	{+		return "MultiSphere";+	}++	virtual	int	calculateSerializeBufferSize() const;++	///fills the dataBuffer and returns the struct name (and 0 on failure)+	virtual	const char*	serialize(void* dataBuffer, btSerializer* serializer) const;+++};+++struct	btPositionAndRadius+{+	btVector3FloatData	m_pos;+	float		m_radius;+};++struct	btMultiSphereShapeData+{+	btConvexInternalShapeData	m_convexInternalShapeData;++	btPositionAndRadius	*m_localPositionArrayPtr;+	int				m_localPositionArraySize;+	char	m_padding[4];+};++++SIMD_FORCE_INLINE	int	btMultiSphereShape::calculateSerializeBufferSize() const+{+	return sizeof(btMultiSphereShapeData);+}++++#endif //BT_MULTI_SPHERE_MINKOWSKI_H
+ bullet/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.h view
@@ -0,0 +1,120 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++/// This file was created by Alex Silverman++#ifndef BT_BVH_TRIANGLE_MATERIAL_MESH_SHAPE_H+#define BT_BVH_TRIANGLE_MATERIAL_MESH_SHAPE_H++#include "btBvhTriangleMeshShape.h"+#include "btMaterial.h"++///The BvhTriangleMaterialMeshShape extends the btBvhTriangleMeshShape. Its main contribution is the interface into a material array, which allows per-triangle friction and restitution.+ATTRIBUTE_ALIGNED16(class) btMultimaterialTriangleMeshShape : public btBvhTriangleMeshShape+{+    btAlignedObjectArray <btMaterial*> m_materialList;+    int ** m_triangleMaterials;++public:++	BT_DECLARE_ALIGNED_ALLOCATOR();++    btMultimaterialTriangleMeshShape(btStridingMeshInterface* meshInterface, bool useQuantizedAabbCompression, bool buildBvh = true):+        btBvhTriangleMeshShape(meshInterface, useQuantizedAabbCompression, buildBvh)+        {+            m_shapeType = MULTIMATERIAL_TRIANGLE_MESH_PROXYTYPE;++            const unsigned char *vertexbase;+            int numverts;+            PHY_ScalarType type;+            int stride;+            const unsigned char *indexbase;+            int indexstride;+            int numfaces;+            PHY_ScalarType indicestype;++            //m_materialLookup = (int**)(btAlignedAlloc(sizeof(int*) * meshInterface->getNumSubParts(), 16));++            for(int i = 0; i < meshInterface->getNumSubParts(); i++)+            {+                m_meshInterface->getLockedReadOnlyVertexIndexBase(+                    &vertexbase,+                    numverts,+                    type,+                    stride,+                    &indexbase,+                    indexstride,+                    numfaces,+                    indicestype,+                    i);+                //m_materialLookup[i] = (int*)(btAlignedAlloc(sizeof(int) * numfaces, 16));+            }+        }++	///optionally pass in a larger bvh aabb, used for quantization. This allows for deformations within this aabb+	btMultimaterialTriangleMeshShape(btStridingMeshInterface* meshInterface, bool useQuantizedAabbCompression,const btVector3& bvhAabbMin,const btVector3& bvhAabbMax, bool buildBvh = true):+        btBvhTriangleMeshShape(meshInterface, useQuantizedAabbCompression, bvhAabbMin, bvhAabbMax, buildBvh)+        {+            m_shapeType = MULTIMATERIAL_TRIANGLE_MESH_PROXYTYPE;++            const unsigned char *vertexbase;+            int numverts;+            PHY_ScalarType type;+            int stride;+            const unsigned char *indexbase;+            int indexstride;+            int numfaces;+            PHY_ScalarType indicestype;++            //m_materialLookup = (int**)(btAlignedAlloc(sizeof(int*) * meshInterface->getNumSubParts(), 16));++            for(int i = 0; i < meshInterface->getNumSubParts(); i++)+            {+                m_meshInterface->getLockedReadOnlyVertexIndexBase(+                    &vertexbase,+                    numverts,+                    type,+                    stride,+                    &indexbase,+                    indexstride,+                    numfaces,+                    indicestype,+                    i);+                //m_materialLookup[i] = (int*)(btAlignedAlloc(sizeof(int) * numfaces * 2, 16));+            }+        }+	+    virtual ~btMultimaterialTriangleMeshShape()+    {+/*+        for(int i = 0; i < m_meshInterface->getNumSubParts(); i++)+        {+            btAlignedFree(m_materialValues[i]);+            m_materialLookup[i] = NULL;+        }+        btAlignedFree(m_materialValues);+        m_materialLookup = NULL;+*/+    }+	//debugging+	virtual const char*	getName()const {return "MULTIMATERIALTRIANGLEMESH";}++    ///Obtains the material for a specific triangle+    const btMaterial * getMaterialProperties(int partID, int triIndex);++}+;++#endif //BT_BVH_TRIANGLE_MATERIAL_MESH_SHAPE_H
+ bullet/BulletCollision/CollisionShapes/btOptimizedBvh.h view
@@ -0,0 +1,65 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++///Contains contributions from Disney Studio's++#ifndef BT_OPTIMIZED_BVH_H+#define BT_OPTIMIZED_BVH_H++#include "BulletCollision/BroadphaseCollision/btQuantizedBvh.h"++class btStridingMeshInterface;+++///The btOptimizedBvh extends the btQuantizedBvh to create AABB tree for triangle meshes, through the btStridingMeshInterface.+ATTRIBUTE_ALIGNED16(class) btOptimizedBvh : public btQuantizedBvh+{+	+public:+	BT_DECLARE_ALIGNED_ALLOCATOR();++protected:++public:++	btOptimizedBvh();++	virtual ~btOptimizedBvh();++	void	build(btStridingMeshInterface* triangles,bool useQuantizedAabbCompression, const btVector3& bvhAabbMin, const btVector3& bvhAabbMax);++	void	refit(btStridingMeshInterface* triangles,const btVector3& aabbMin,const btVector3& aabbMax);++	void	refitPartial(btStridingMeshInterface* triangles,const btVector3& aabbMin, const btVector3& aabbMax);++	void	updateBvhNodes(btStridingMeshInterface* meshInterface,int firstNode,int endNode,int index);++	/// Data buffer MUST be 16 byte aligned+	virtual bool serializeInPlace(void *o_alignedDataBuffer, unsigned i_dataBufferSize, bool i_swapEndian) const+	{+		return btQuantizedBvh::serialize(o_alignedDataBuffer,i_dataBufferSize,i_swapEndian);++	}++	///deSerializeInPlace loads and initializes a BVH from a buffer in memory 'in place'+	static btOptimizedBvh *deSerializeInPlace(void *i_alignedDataBuffer, unsigned int i_dataBufferSize, bool i_swapEndian);+++};+++#endif //BT_OPTIMIZED_BVH_H++
+ bullet/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h view
@@ -0,0 +1,112 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_POLYHEDRAL_CONVEX_SHAPE_H+#define BT_POLYHEDRAL_CONVEX_SHAPE_H++#include "LinearMath/btMatrix3x3.h"+#include "btConvexInternalShape.h"+class btConvexPolyhedron;+++///The btPolyhedralConvexShape is an internal interface class for polyhedral convex shapes.+class btPolyhedralConvexShape : public btConvexInternalShape+{+	++protected:+	+	btConvexPolyhedron* m_polyhedron;++public:++	btPolyhedralConvexShape();++	virtual ~btPolyhedralConvexShape();++	///optional method mainly used to generate multiple contact points by clipping polyhedral features (faces/edges)+	virtual bool	initializePolyhedralFeatures();++	const btConvexPolyhedron*	getConvexPolyhedron() const+	{+		return m_polyhedron;+	}++	//brute force implementations++	virtual btVector3	localGetSupportingVertexWithoutMargin(const btVector3& vec)const;+	virtual void	batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const;+	+	virtual void	calculateLocalInertia(btScalar mass,btVector3& inertia) const;+	+	+	virtual int	getNumVertices() const = 0 ;+	virtual int getNumEdges() const = 0;+	virtual void getEdge(int i,btVector3& pa,btVector3& pb) const = 0;+	virtual void getVertex(int i,btVector3& vtx) const = 0;+	virtual int	getNumPlanes() const = 0;+	virtual void getPlane(btVector3& planeNormal,btVector3& planeSupport,int i ) const = 0;+//	virtual int getIndex(int i) const = 0 ; ++	virtual	bool isInside(const btVector3& pt,btScalar tolerance) const = 0;+	+};+++///The btPolyhedralConvexAabbCachingShape adds aabb caching to the btPolyhedralConvexShape+class btPolyhedralConvexAabbCachingShape : public btPolyhedralConvexShape+{++	btVector3	m_localAabbMin;+	btVector3	m_localAabbMax;+	bool		m_isLocalAabbValid;+		+protected:++	void setCachedLocalAabb (const btVector3& aabbMin, const btVector3& aabbMax)+	{+		m_isLocalAabbValid = true;+		m_localAabbMin = aabbMin;+		m_localAabbMax = aabbMax;+	}++	inline void getCachedLocalAabb (btVector3& aabbMin, btVector3& aabbMax) const+	{+		btAssert(m_isLocalAabbValid);+		aabbMin = m_localAabbMin;+		aabbMax = m_localAabbMax;+	}++public:++	btPolyhedralConvexAabbCachingShape();+	+	inline void getNonvirtualAabb(const btTransform& trans,btVector3& aabbMin,btVector3& aabbMax, btScalar margin) const+	{++		//lazy evaluation of local aabb+		btAssert(m_isLocalAabbValid);+		btTransformAabb(m_localAabbMin,m_localAabbMax,margin,trans,aabbMin,aabbMax);+	}++	virtual void	setLocalScaling(const btVector3& scaling);++	virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const;++	void	recalcLocalAabb();++};++#endif //BT_POLYHEDRAL_CONVEX_SHAPE_H
+ bullet/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h view
@@ -0,0 +1,93 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_SCALED_BVH_TRIANGLE_MESH_SHAPE_H+#define BT_SCALED_BVH_TRIANGLE_MESH_SHAPE_H++#include "BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h"+++///The btScaledBvhTriangleMeshShape allows to instance a scaled version of an existing btBvhTriangleMeshShape.+///Note that each btBvhTriangleMeshShape still can have its own local scaling, independent from this btScaledBvhTriangleMeshShape 'localScaling'+ATTRIBUTE_ALIGNED16(class) btScaledBvhTriangleMeshShape : public btConcaveShape+{+	+	+	btVector3	m_localScaling;++	btBvhTriangleMeshShape*	m_bvhTriMeshShape;++public:+++	btScaledBvhTriangleMeshShape(btBvhTriangleMeshShape* childShape,const btVector3& localScaling);++	virtual ~btScaledBvhTriangleMeshShape();+++	virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const;+	virtual void	setLocalScaling(const btVector3& scaling);+	virtual const btVector3& getLocalScaling() const;+	virtual void	calculateLocalInertia(btScalar mass,btVector3& inertia) const;++	virtual void	processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const;++	btBvhTriangleMeshShape*	getChildShape()+	{+		return m_bvhTriMeshShape;+	}++	const btBvhTriangleMeshShape*	getChildShape() const+	{+		return m_bvhTriMeshShape;+	}++	//debugging+	virtual const char*	getName()const {return "SCALEDBVHTRIANGLEMESH";}++	virtual	int	calculateSerializeBufferSize() const;++	///fills the dataBuffer and returns the struct name (and 0 on failure)+	virtual	const char*	serialize(void* dataBuffer, btSerializer* serializer) const;++};++///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64+struct	btScaledTriangleMeshShapeData+{+	btTriangleMeshShapeData	m_trimeshShapeData;++	btVector3FloatData	m_localScaling;+};+++SIMD_FORCE_INLINE	int	btScaledBvhTriangleMeshShape::calculateSerializeBufferSize() const+{+	return sizeof(btScaledTriangleMeshShapeData);+}+++///fills the dataBuffer and returns the struct name (and 0 on failure)+SIMD_FORCE_INLINE	const char*	btScaledBvhTriangleMeshShape::serialize(void* dataBuffer, btSerializer* serializer) const+{+	btScaledTriangleMeshShapeData* scaledMeshData = (btScaledTriangleMeshShapeData*) dataBuffer;+	m_bvhTriMeshShape->serialize(&scaledMeshData->m_trimeshShapeData,serializer);+	scaledMeshData->m_trimeshShapeData.m_collisionShapeData.m_shapeType = SCALED_TRIANGLE_MESH_SHAPE_PROXYTYPE;+	m_localScaling.serializeFloat(scaledMeshData->m_localScaling);+	return "btScaledTriangleMeshShapeData";+}+++#endif //BT_SCALED_BVH_TRIANGLE_MESH_SHAPE_H
+ bullet/BulletCollision/CollisionShapes/btShapeHull.h view
@@ -0,0 +1,59 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++///btShapeHull implemented by John McCutchan.++#ifndef BT_SHAPE_HULL_H+#define BT_SHAPE_HULL_H++#include "LinearMath/btAlignedObjectArray.h"+#include "BulletCollision/CollisionShapes/btConvexShape.h"+++///The btShapeHull class takes a btConvexShape, builds a simplified convex hull using btConvexHull and provides triangle indices and vertices.+///It can be useful for to simplify a complex convex object and for visualization of a non-polyhedral convex object.+///It approximates the convex hull using the supporting vertex of 42 directions.+class btShapeHull+{+protected:++	btAlignedObjectArray<btVector3> m_vertices;+	btAlignedObjectArray<unsigned int> m_indices;+	unsigned int m_numIndices;+	const btConvexShape* m_shape;++	static btVector3* getUnitSpherePoints();++public:+	btShapeHull (const btConvexShape* shape);+	~btShapeHull ();++	bool buildHull (btScalar margin);++	int numTriangles () const;+	int numVertices () const;+	int numIndices () const;++	const btVector3* getVertexPointer() const+	{+		return &m_vertices[0];+	}+	const unsigned int* getIndexPointer() const+	{+		return &m_indices[0];+	}+};++#endif //BT_SHAPE_HULL_H
+ bullet/BulletCollision/CollisionShapes/btSphereShape.h view
@@ -0,0 +1,73 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+#ifndef BT_SPHERE_MINKOWSKI_H+#define BT_SPHERE_MINKOWSKI_H++#include "btConvexInternalShape.h"+#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" // for the types++///The btSphereShape implements an implicit sphere, centered around a local origin with radius.+ATTRIBUTE_ALIGNED16(class) btSphereShape : public btConvexInternalShape++{+	+public:+	BT_DECLARE_ALIGNED_ALLOCATOR();++	btSphereShape (btScalar radius) : btConvexInternalShape ()+	{+		m_shapeType = SPHERE_SHAPE_PROXYTYPE;+		m_implicitShapeDimensions.setX(radius);+		m_collisionMargin = radius;+	}+	+	virtual btVector3	localGetSupportingVertex(const btVector3& vec)const;+	virtual btVector3	localGetSupportingVertexWithoutMargin(const btVector3& vec)const;+	//notice that the vectors should be unit length+	virtual void	batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const;+++	virtual void	calculateLocalInertia(btScalar mass,btVector3& inertia) const;++	virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const;+++	btScalar	getRadius() const { return m_implicitShapeDimensions.getX() * m_localScaling.getX();}++	void	setUnscaledRadius(btScalar	radius)+	{+		m_implicitShapeDimensions.setX(radius);+		btConvexInternalShape::setMargin(radius);+	}++	//debugging+	virtual const char*	getName()const {return "SPHERE";}++	virtual void	setMargin(btScalar margin)+	{+		btConvexInternalShape::setMargin(margin);+	}+	virtual btScalar	getMargin() const+	{+		//to improve gjk behaviour, use radius+margin as the full margin, so never get into the penetration case+		//this means, non-uniform scaling is not supported anymore+		return getRadius();+	}+++};+++#endif //BT_SPHERE_MINKOWSKI_H
+ bullet/BulletCollision/CollisionShapes/btStaticPlaneShape.h view
@@ -0,0 +1,103 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_STATIC_PLANE_SHAPE_H+#define BT_STATIC_PLANE_SHAPE_H++#include "btConcaveShape.h"+++///The btStaticPlaneShape simulates an infinite non-moving (static) collision plane.+ATTRIBUTE_ALIGNED16(class) btStaticPlaneShape : public btConcaveShape+{+protected:+	btVector3	m_localAabbMin;+	btVector3	m_localAabbMax;+	+	btVector3	m_planeNormal;+	btScalar      m_planeConstant;+	btVector3	m_localScaling;++public:+	btStaticPlaneShape(const btVector3& planeNormal,btScalar planeConstant);++	virtual ~btStaticPlaneShape();+++	virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const;++	virtual void	processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const;++	virtual void	calculateLocalInertia(btScalar mass,btVector3& inertia) const;++	virtual void	setLocalScaling(const btVector3& scaling);+	virtual const btVector3& getLocalScaling() const;+	+	const btVector3&	getPlaneNormal() const+	{+		return	m_planeNormal;+	}++	const btScalar&	getPlaneConstant() const+	{+		return	m_planeConstant;+	}++	//debugging+	virtual const char*	getName()const {return "STATICPLANE";}++	virtual	int	calculateSerializeBufferSize() const;++	///fills the dataBuffer and returns the struct name (and 0 on failure)+	virtual	const char*	serialize(void* dataBuffer, btSerializer* serializer) const;+++};++///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64+struct	btStaticPlaneShapeData+{+	btCollisionShapeData	m_collisionShapeData;++	btVector3FloatData	m_localScaling;+	btVector3FloatData	m_planeNormal;+	float			m_planeConstant;+	char	m_pad[4];+};+++SIMD_FORCE_INLINE	int	btStaticPlaneShape::calculateSerializeBufferSize() const+{+	return sizeof(btStaticPlaneShapeData);+}++///fills the dataBuffer and returns the struct name (and 0 on failure)+SIMD_FORCE_INLINE	const char*	btStaticPlaneShape::serialize(void* dataBuffer, btSerializer* serializer) const+{+	btStaticPlaneShapeData* planeData = (btStaticPlaneShapeData*) dataBuffer;+	btCollisionShape::serialize(&planeData->m_collisionShapeData,serializer);++	m_localScaling.serializeFloat(planeData->m_localScaling);+	m_planeNormal.serializeFloat(planeData->m_planeNormal);+	planeData->m_planeConstant = float(m_planeConstant);+		+	return "btStaticPlaneShapeData";+}+++#endif //BT_STATIC_PLANE_SHAPE_H+++
+ bullet/BulletCollision/CollisionShapes/btStridingMeshInterface.h view
@@ -0,0 +1,162 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_STRIDING_MESHINTERFACE_H+#define BT_STRIDING_MESHINTERFACE_H++#include "LinearMath/btVector3.h"+#include "btTriangleCallback.h"+#include "btConcaveShape.h"++++++///	The btStridingMeshInterface is the interface class for high performance generic access to triangle meshes, used in combination with btBvhTriangleMeshShape and some other collision shapes.+/// Using index striding of 3*sizeof(integer) it can use triangle arrays, using index striding of 1*sizeof(integer) it can handle triangle strips.+/// It allows for sharing graphics and collision meshes. Also it provides locking/unlocking of graphics meshes that are in gpu memory.+class  btStridingMeshInterface+{+	protected:+	+		btVector3 m_scaling;++	public:+		btStridingMeshInterface() :m_scaling(btScalar(1.),btScalar(1.),btScalar(1.))+		{++		}++		virtual ~btStridingMeshInterface();++++		virtual void	InternalProcessAllTriangles(btInternalTriangleIndexCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const;++		///brute force method to calculate aabb+		void	calculateAabbBruteForce(btVector3& aabbMin,btVector3& aabbMax);++		/// get read and write access to a subpart of a triangle mesh+		/// this subpart has a continuous array of vertices and indices+		/// in this way the mesh can be handled as chunks of memory with striding+		/// very similar to OpenGL vertexarray support+		/// make a call to unLockVertexBase when the read and write access is finished	+		virtual void	getLockedVertexIndexBase(unsigned char **vertexbase, int& numverts,PHY_ScalarType& type, int& stride,unsigned char **indexbase,int & indexstride,int& numfaces,PHY_ScalarType& indicestype,int subpart=0)=0;+		+		virtual void	getLockedReadOnlyVertexIndexBase(const unsigned char **vertexbase, int& numverts,PHY_ScalarType& type, int& stride,const unsigned char **indexbase,int & indexstride,int& numfaces,PHY_ScalarType& indicestype,int subpart=0) const=0;+	+		/// unLockVertexBase finishes the access to a subpart of the triangle mesh+		/// make a call to unLockVertexBase when the read and write access (using getLockedVertexIndexBase) is finished+		virtual void	unLockVertexBase(int subpart)=0;++		virtual void	unLockReadOnlyVertexBase(int subpart) const=0;+++		/// getNumSubParts returns the number of seperate subparts+		/// each subpart has a continuous array of vertices and indices+		virtual int		getNumSubParts() const=0;++		virtual void	preallocateVertices(int numverts)=0;+		virtual void	preallocateIndices(int numindices)=0;++		virtual bool	hasPremadeAabb() const { return false; }+		virtual void	setPremadeAabb(const btVector3& aabbMin, const btVector3& aabbMax ) const+                {+                        (void) aabbMin;+                        (void) aabbMax;+                }+		virtual void	getPremadeAabb(btVector3* aabbMin, btVector3* aabbMax ) const+        {+            (void) aabbMin;+            (void) aabbMax;+        }++		const btVector3&	getScaling() const {+			return m_scaling;+		}+		void	setScaling(const btVector3& scaling)+		{+			m_scaling = scaling;+		}++		virtual	int	calculateSerializeBufferSize() const;++		///fills the dataBuffer and returns the struct name (and 0 on failure)+		virtual	const char*	serialize(void* dataBuffer, btSerializer* serializer) const;+++};++struct	btIntIndexData+{+	int	m_value;+};++struct	btShortIntIndexData+{+	short m_value;+	char m_pad[2];+};++struct	btShortIntIndexTripletData+{+	short	m_values[3];+	char	m_pad[2];+};++struct	btCharIndexTripletData+{+	unsigned char m_values[3];+	char	m_pad;+};+++///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64+struct	btMeshPartData+{+	btVector3FloatData			*m_vertices3f;+	btVector3DoubleData			*m_vertices3d;++	btIntIndexData				*m_indices32;+	btShortIntIndexTripletData	*m_3indices16;+	btCharIndexTripletData		*m_3indices8;++	btShortIntIndexData			*m_indices16;//backwards compatibility++	int                     m_numTriangles;//length of m_indices = m_numTriangles+	int                     m_numVertices;+};+++///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64+struct	btStridingMeshInterfaceData+{+	btMeshPartData	*m_meshPartsPtr;+	btVector3FloatData	m_scaling;+	int	m_numMeshParts;+	char m_padding[4];+};+++++SIMD_FORCE_INLINE	int	btStridingMeshInterface::calculateSerializeBufferSize() const+{+	return sizeof(btStridingMeshInterfaceData);+}++++#endif //BT_STRIDING_MESHINTERFACE_H
+ bullet/BulletCollision/CollisionShapes/btTetrahedronShape.h view
@@ -0,0 +1,74 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_SIMPLEX_1TO4_SHAPE+#define BT_SIMPLEX_1TO4_SHAPE+++#include "btPolyhedralConvexShape.h"+#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h"+++///The btBU_Simplex1to4 implements tetrahedron, triangle, line, vertex collision shapes. In most cases it is better to use btConvexHullShape instead.+class btBU_Simplex1to4 : public btPolyhedralConvexAabbCachingShape+{+protected:++	int	m_numVertices;+	btVector3	m_vertices[4];++public:+	btBU_Simplex1to4();++	btBU_Simplex1to4(const btVector3& pt0);+	btBU_Simplex1to4(const btVector3& pt0,const btVector3& pt1);+	btBU_Simplex1to4(const btVector3& pt0,const btVector3& pt1,const btVector3& pt2);+	btBU_Simplex1to4(const btVector3& pt0,const btVector3& pt1,const btVector3& pt2,const btVector3& pt3);++    +	void	reset()+	{+		m_numVertices = 0;+	}+	+	virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const;++	void addVertex(const btVector3& pt);++	//PolyhedralConvexShape interface++	virtual int	getNumVertices() const;++	virtual int getNumEdges() const;++	virtual void getEdge(int i,btVector3& pa,btVector3& pb) const;+	+	virtual void getVertex(int i,btVector3& vtx) const;++	virtual int	getNumPlanes() const;++	virtual void getPlane(btVector3& planeNormal,btVector3& planeSupport,int i) const;++	virtual int getIndex(int i) const;++	virtual	bool isInside(const btVector3& pt,btScalar tolerance) const;+++	///getName is for debugging+	virtual const char*	getName()const { return "btBU_Simplex1to4";}++};++#endif //BT_SIMPLEX_1TO4_SHAPE
+ bullet/BulletCollision/CollisionShapes/btTriangleBuffer.h view
@@ -0,0 +1,69 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_TRIANGLE_BUFFER_H+#define BT_TRIANGLE_BUFFER_H++#include "btTriangleCallback.h"+#include "LinearMath/btAlignedObjectArray.h"++struct	btTriangle+{+	btVector3	m_vertex0;+	btVector3	m_vertex1;+	btVector3	m_vertex2;+	int	m_partId;+	int	m_triangleIndex;+};++///The btTriangleBuffer callback can be useful to collect and store overlapping triangles between AABB and concave objects that support 'processAllTriangles'+///Example usage of this class:+///			btTriangleBuffer	triBuf;+///			concaveShape->processAllTriangles(&triBuf,aabbMin, aabbMax);+///			for (int i=0;i<triBuf.getNumTriangles();i++)+///			{+///				const btTriangle& tri = triBuf.getTriangle(i);+///				//do something useful here with the triangle+///			}+class btTriangleBuffer : public btTriangleCallback+{++	btAlignedObjectArray<btTriangle>	m_triangleBuffer;+	+public:+++	virtual void processTriangle(btVector3* triangle, int partId, int triangleIndex);+	+	int	getNumTriangles() const+	{+		return int(m_triangleBuffer.size());+	}+	+	const btTriangle&	getTriangle(int index) const+	{+		return m_triangleBuffer[index];+	}++	void	clearBuffer()+	{+		m_triangleBuffer.clear();+	}+	+};+++#endif //BT_TRIANGLE_BUFFER_H+
+ bullet/BulletCollision/CollisionShapes/btTriangleCallback.h view
@@ -0,0 +1,42 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_TRIANGLE_CALLBACK_H+#define BT_TRIANGLE_CALLBACK_H++#include "LinearMath/btVector3.h"+++///The btTriangleCallback provides a callback for each overlapping triangle when calling processAllTriangles.+///This callback is called by processAllTriangles for all btConcaveShape derived class, such as  btBvhTriangleMeshShape, btStaticPlaneShape and btHeightfieldTerrainShape.+class btTriangleCallback+{+public:++	virtual ~btTriangleCallback();+	virtual void processTriangle(btVector3* triangle, int partId, int triangleIndex) = 0;+};++class btInternalTriangleIndexCallback+{+public:++	virtual ~btInternalTriangleIndexCallback();+	virtual void internalProcessTriangleIndex(btVector3* triangle,int partId,int  triangleIndex) = 0;+};++++#endif //BT_TRIANGLE_CALLBACK_H
+ bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h view
@@ -0,0 +1,131 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_TRIANGLE_INDEX_VERTEX_ARRAY_H+#define BT_TRIANGLE_INDEX_VERTEX_ARRAY_H++#include "btStridingMeshInterface.h"+#include "LinearMath/btAlignedObjectArray.h"+#include "LinearMath/btScalar.h"+++///The btIndexedMesh indexes a single vertex and index array. Multiple btIndexedMesh objects can be passed into a btTriangleIndexVertexArray using addIndexedMesh.+///Instead of the number of indices, we pass the number of triangles.+ATTRIBUTE_ALIGNED16( struct)	btIndexedMesh+{+	BT_DECLARE_ALIGNED_ALLOCATOR();++   int                     m_numTriangles;+   const unsigned char *   m_triangleIndexBase;+   int                     m_triangleIndexStride;+   int                     m_numVertices;+   const unsigned char *   m_vertexBase;+   int                     m_vertexStride;++   // The index type is set when adding an indexed mesh to the+   // btTriangleIndexVertexArray, do not set it manually+   PHY_ScalarType m_indexType;++   // The vertex type has a default type similar to Bullet's precision mode (float or double)+   // but can be set manually if you for example run Bullet with double precision but have+   // mesh data in single precision..+   PHY_ScalarType m_vertexType;+++   btIndexedMesh()+	   :m_indexType(PHY_INTEGER),+#ifdef BT_USE_DOUBLE_PRECISION+      m_vertexType(PHY_DOUBLE)+#else // BT_USE_DOUBLE_PRECISION+      m_vertexType(PHY_FLOAT)+#endif // BT_USE_DOUBLE_PRECISION+      {+      }+}+;+++typedef btAlignedObjectArray<btIndexedMesh>	IndexedMeshArray;++///The btTriangleIndexVertexArray allows to access multiple triangle meshes, by indexing into existing triangle/index arrays.+///Additional meshes can be added using addIndexedMesh+///No duplcate is made of the vertex/index data, it only indexes into external vertex/index arrays.+///So keep those arrays around during the lifetime of this btTriangleIndexVertexArray.+ATTRIBUTE_ALIGNED16( class) btTriangleIndexVertexArray : public btStridingMeshInterface+{+protected:+	IndexedMeshArray	m_indexedMeshes;+	int m_pad[2];+	mutable int m_hasAabb; // using int instead of bool to maintain alignment+	mutable btVector3 m_aabbMin;+	mutable btVector3 m_aabbMax;++public:++	BT_DECLARE_ALIGNED_ALLOCATOR();++	btTriangleIndexVertexArray() : m_hasAabb(0)+	{+	}++	virtual ~btTriangleIndexVertexArray();++	//just to be backwards compatible+	btTriangleIndexVertexArray(int numTriangles,int* triangleIndexBase,int triangleIndexStride,int numVertices,btScalar* vertexBase,int vertexStride);+	+	void	addIndexedMesh(const btIndexedMesh& mesh, PHY_ScalarType indexType = PHY_INTEGER)+	{+		m_indexedMeshes.push_back(mesh);+		m_indexedMeshes[m_indexedMeshes.size()-1].m_indexType = indexType;+	}+	+	+	virtual void	getLockedVertexIndexBase(unsigned char **vertexbase, int& numverts,PHY_ScalarType& type, int& vertexStride,unsigned char **indexbase,int & indexstride,int& numfaces,PHY_ScalarType& indicestype,int subpart=0);++	virtual void	getLockedReadOnlyVertexIndexBase(const unsigned char **vertexbase, int& numverts,PHY_ScalarType& type, int& vertexStride,const unsigned char **indexbase,int & indexstride,int& numfaces,PHY_ScalarType& indicestype,int subpart=0) const;++	/// unLockVertexBase finishes the access to a subpart of the triangle mesh+	/// make a call to unLockVertexBase when the read and write access (using getLockedVertexIndexBase) is finished+	virtual void	unLockVertexBase(int subpart) {(void)subpart;}++	virtual void	unLockReadOnlyVertexBase(int subpart) const {(void)subpart;}++	/// getNumSubParts returns the number of seperate subparts+	/// each subpart has a continuous array of vertices and indices+	virtual int		getNumSubParts() const { +		return (int)m_indexedMeshes.size();+	}++	IndexedMeshArray&	getIndexedMeshArray()+	{+		return m_indexedMeshes;+	}++	const IndexedMeshArray&	getIndexedMeshArray() const+	{+		return m_indexedMeshes;+	}++	virtual void	preallocateVertices(int numverts){(void) numverts;}+	virtual void	preallocateIndices(int numindices){(void) numindices;}++	virtual bool	hasPremadeAabb() const;+	virtual void	setPremadeAabb(const btVector3& aabbMin, const btVector3& aabbMax ) const;+	virtual void	getPremadeAabb(btVector3* aabbMin, btVector3* aabbMax ) const;++}+;++#endif //BT_TRIANGLE_INDEX_VERTEX_ARRAY_H
+ bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.h view
@@ -0,0 +1,84 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++///This file was created by Alex Silverman++#ifndef BT_MULTIMATERIAL_TRIANGLE_INDEX_VERTEX_ARRAY_H+#define BT_MULTIMATERIAL_TRIANGLE_INDEX_VERTEX_ARRAY_H++#include "btTriangleIndexVertexArray.h"+++ATTRIBUTE_ALIGNED16( struct)	btMaterialProperties+{+    ///m_materialBase ==========> 2 btScalar values make up one material, friction then restitution+    int m_numMaterials;+    const unsigned char * m_materialBase;+    int m_materialStride;+    PHY_ScalarType m_materialType;+    ///m_numTriangles <=========== This exists in the btIndexedMesh object for the same subpart, but since we're+    ///                           padding the structure, it can be reproduced at no real cost+    ///m_triangleMaterials =====> 1 integer value makes up one entry+    ///                           eg: m_triangleMaterials[1] = 5; // This will set triangle 2 to use material 5+    int m_numTriangles; +    const unsigned char * m_triangleMaterialsBase;+    int m_triangleMaterialStride;+    ///m_triangleType <========== Automatically set in addMaterialProperties+    PHY_ScalarType m_triangleType;+};++typedef btAlignedObjectArray<btMaterialProperties>	MaterialArray;++///Teh btTriangleIndexVertexMaterialArray is built on TriangleIndexVertexArray+///The addition of a material array allows for the utilization of the partID and+///triangleIndex that are returned in the ContactAddedCallback.  As with+///TriangleIndexVertexArray, no duplicate is made of the material data, so it+///is the users responsibility to maintain the array during the lifetime of the+///TriangleIndexVertexMaterialArray.+ATTRIBUTE_ALIGNED16(class) btTriangleIndexVertexMaterialArray : public btTriangleIndexVertexArray+{+protected:+    MaterialArray       m_materials;+		+public:+	BT_DECLARE_ALIGNED_ALLOCATOR();++    btTriangleIndexVertexMaterialArray()+	{+	}++    btTriangleIndexVertexMaterialArray(int numTriangles,int* triangleIndexBase,int triangleIndexStride,+        int numVertices,btScalar* vertexBase,int vertexStride,+        int numMaterials, unsigned char* materialBase, int materialStride,+        int* triangleMaterialsBase, int materialIndexStride);++    virtual ~btTriangleIndexVertexMaterialArray() {}++    void	addMaterialProperties(const btMaterialProperties& mat, PHY_ScalarType triangleType = PHY_INTEGER)+    {+        m_materials.push_back(mat);+        m_materials[m_materials.size()-1].m_triangleType = triangleType;+    }++    virtual void getLockedMaterialBase(unsigned char **materialBase, int& numMaterials, PHY_ScalarType& materialType, int& materialStride,+        unsigned char ** triangleMaterialBase, int& numTriangles, int& triangleMaterialStride, PHY_ScalarType& triangleType ,int subpart = 0);++    virtual void getLockedReadOnlyMaterialBase(const unsigned char **materialBase, int& numMaterials, PHY_ScalarType& materialType, int& materialStride,+        const unsigned char ** triangleMaterialBase, int& numTriangles, int& triangleMaterialStride, PHY_ScalarType& triangleType, int subpart = 0);++}+;++#endif //BT_MULTIMATERIAL_TRIANGLE_INDEX_VERTEX_ARRAY_H
+ bullet/BulletCollision/CollisionShapes/btTriangleInfoMap.h view
@@ -0,0 +1,240 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2010 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef _BT_TRIANGLE_INFO_MAP_H+#define _BT_TRIANGLE_INFO_MAP_H+++#include "LinearMath/btHashMap.h"+#include "LinearMath/btSerializer.h"+++///for btTriangleInfo m_flags+#define TRI_INFO_V0V1_CONVEX 1+#define TRI_INFO_V1V2_CONVEX 2+#define TRI_INFO_V2V0_CONVEX 4++#define TRI_INFO_V0V1_SWAP_NORMALB 8+#define TRI_INFO_V1V2_SWAP_NORMALB 16+#define TRI_INFO_V2V0_SWAP_NORMALB 32+++///The btTriangleInfo structure stores information to adjust collision normals to avoid collisions against internal edges+///it can be generated using +struct	btTriangleInfo+{+	btTriangleInfo()+	{+		m_edgeV0V1Angle = SIMD_2_PI;+		m_edgeV1V2Angle = SIMD_2_PI;+		m_edgeV2V0Angle = SIMD_2_PI;+		m_flags=0;+	}++	int			m_flags;++	btScalar	m_edgeV0V1Angle;+	btScalar	m_edgeV1V2Angle;+	btScalar	m_edgeV2V0Angle;++};++typedef btHashMap<btHashInt,btTriangleInfo> btInternalTriangleInfoMap;+++///The btTriangleInfoMap stores edge angle information for some triangles. You can compute this information yourself or using btGenerateInternalEdgeInfo.+struct	btTriangleInfoMap : public btInternalTriangleInfoMap+{+	btScalar	m_convexEpsilon;///used to determine if an edge or contact normal is convex, using the dot product+	btScalar	m_planarEpsilon; ///used to determine if a triangle edge is planar with zero angle+	btScalar	m_equalVertexThreshold; ///used to compute connectivity: if the distance between two vertices is smaller than m_equalVertexThreshold, they are considered to be 'shared'+	btScalar	m_edgeDistanceThreshold; ///used to determine edge contacts: if the closest distance between a contact point and an edge is smaller than this distance threshold it is considered to "hit the edge"+	btScalar	m_maxEdgeAngleThreshold; //ignore edges that connect triangles at an angle larger than this m_maxEdgeAngleThreshold+	btScalar	m_zeroAreaThreshold; ///used to determine if a triangle is degenerate (length squared of cross product of 2 triangle edges < threshold)+	+	+	btTriangleInfoMap()+	{+		m_convexEpsilon = 0.00f;+		m_planarEpsilon = 0.0001f;+		m_equalVertexThreshold = btScalar(0.0001)*btScalar(0.0001);+		m_edgeDistanceThreshold = btScalar(0.1);+		m_zeroAreaThreshold = btScalar(0.0001)*btScalar(0.0001);+		m_maxEdgeAngleThreshold = SIMD_2_PI;+	}+	virtual ~btTriangleInfoMap() {}++	virtual	int	calculateSerializeBufferSize() const;++	///fills the dataBuffer and returns the struct name (and 0 on failure)+	virtual	const char*	serialize(void* dataBuffer, btSerializer* serializer) const;++	void	deSerialize(struct btTriangleInfoMapData& data);++};++struct	btTriangleInfoData+{+	int			m_flags;+	float	m_edgeV0V1Angle;+	float	m_edgeV1V2Angle;+	float	m_edgeV2V0Angle;+};++struct	btTriangleInfoMapData+{+	int					*m_hashTablePtr;+	int					*m_nextPtr;+	btTriangleInfoData	*m_valueArrayPtr;+	int					*m_keyArrayPtr;++	float	m_convexEpsilon;+	float	m_planarEpsilon;+	float	m_equalVertexThreshold; +	float	m_edgeDistanceThreshold;+	float	m_zeroAreaThreshold;++	int		m_nextSize;+	int		m_hashTableSize;+	int		m_numValues;+	int		m_numKeys;+	char	m_padding[4];+};++SIMD_FORCE_INLINE	int	btTriangleInfoMap::calculateSerializeBufferSize() const+{+	return sizeof(btTriangleInfoMapData);+}++///fills the dataBuffer and returns the struct name (and 0 on failure)+SIMD_FORCE_INLINE	const char*	btTriangleInfoMap::serialize(void* dataBuffer, btSerializer* serializer) const+{+	btTriangleInfoMapData* tmapData = (btTriangleInfoMapData*) dataBuffer;+	tmapData->m_convexEpsilon = m_convexEpsilon;+	tmapData->m_planarEpsilon = m_planarEpsilon;+	tmapData->m_equalVertexThreshold = m_equalVertexThreshold;+	tmapData->m_edgeDistanceThreshold = m_edgeDistanceThreshold;+	tmapData->m_zeroAreaThreshold = m_zeroAreaThreshold;+	+	tmapData->m_hashTableSize = m_hashTable.size();++	tmapData->m_hashTablePtr = tmapData->m_hashTableSize ? (int*)serializer->getUniquePointer((void*)&m_hashTable[0]) : 0;+	if (tmapData->m_hashTablePtr)+	{ +		//serialize an int buffer+		int sz = sizeof(int);+		int numElem = tmapData->m_hashTableSize;+		btChunk* chunk = serializer->allocate(sz,numElem);+		int* memPtr = (int*)chunk->m_oldPtr;+		for (int i=0;i<numElem;i++,memPtr++)+		{+			*memPtr = m_hashTable[i];+		}+		serializer->finalizeChunk(chunk,"int",BT_ARRAY_CODE,(void*)&m_hashTable[0]);++	}++	tmapData->m_nextSize = m_next.size();+	tmapData->m_nextPtr = tmapData->m_nextSize? (int*)serializer->getUniquePointer((void*)&m_next[0]): 0;+	if (tmapData->m_nextPtr)+	{+		int sz = sizeof(int);+		int numElem = tmapData->m_nextSize;+		btChunk* chunk = serializer->allocate(sz,numElem);+		int* memPtr = (int*)chunk->m_oldPtr;+		for (int i=0;i<numElem;i++,memPtr++)+		{+			*memPtr = m_next[i];+		}+		serializer->finalizeChunk(chunk,"int",BT_ARRAY_CODE,(void*)&m_next[0]);+	}+	+	tmapData->m_numValues = m_valueArray.size();+	tmapData->m_valueArrayPtr = tmapData->m_numValues ? (btTriangleInfoData*)serializer->getUniquePointer((void*)&m_valueArray[0]): 0;+	if (tmapData->m_valueArrayPtr)+	{+		int sz = sizeof(btTriangleInfoData);+		int numElem = tmapData->m_numValues;+		btChunk* chunk = serializer->allocate(sz,numElem);+		btTriangleInfoData* memPtr = (btTriangleInfoData*)chunk->m_oldPtr;+		for (int i=0;i<numElem;i++,memPtr++)+		{+			memPtr->m_edgeV0V1Angle = m_valueArray[i].m_edgeV0V1Angle;+			memPtr->m_edgeV1V2Angle = m_valueArray[i].m_edgeV1V2Angle;+			memPtr->m_edgeV2V0Angle = m_valueArray[i].m_edgeV2V0Angle;+			memPtr->m_flags = m_valueArray[i].m_flags;+		}+		serializer->finalizeChunk(chunk,"btTriangleInfoData",BT_ARRAY_CODE,(void*) &m_valueArray[0]);+	}+	+	tmapData->m_numKeys = m_keyArray.size();+	tmapData->m_keyArrayPtr = tmapData->m_numKeys ? (int*)serializer->getUniquePointer((void*)&m_keyArray[0]) : 0;+	if (tmapData->m_keyArrayPtr)+	{+		int sz = sizeof(int);+		int numElem = tmapData->m_numValues;+		btChunk* chunk = serializer->allocate(sz,numElem);+		int* memPtr = (int*)chunk->m_oldPtr;+		for (int i=0;i<numElem;i++,memPtr++)+		{+			*memPtr = m_keyArray[i].getUid1();+		}+		serializer->finalizeChunk(chunk,"int",BT_ARRAY_CODE,(void*) &m_keyArray[0]);++	}+	return "btTriangleInfoMapData";+}++++///fills the dataBuffer and returns the struct name (and 0 on failure)+SIMD_FORCE_INLINE	void	btTriangleInfoMap::deSerialize(btTriangleInfoMapData& tmapData )+{+++	m_convexEpsilon = tmapData.m_convexEpsilon;+	m_planarEpsilon = tmapData.m_planarEpsilon;+	m_equalVertexThreshold = tmapData.m_equalVertexThreshold;+	m_edgeDistanceThreshold = tmapData.m_edgeDistanceThreshold;+	m_zeroAreaThreshold = tmapData.m_zeroAreaThreshold;+	m_hashTable.resize(tmapData.m_hashTableSize);+	int i =0;+	for (i=0;i<tmapData.m_hashTableSize;i++)+	{+		m_hashTable[i] = tmapData.m_hashTablePtr[i];+	}+	m_next.resize(tmapData.m_nextSize);+	for (i=0;i<tmapData.m_nextSize;i++)+	{+		m_next[i] = tmapData.m_nextPtr[i];+	}+	m_valueArray.resize(tmapData.m_numValues);+	for (i=0;i<tmapData.m_numValues;i++)+	{+		m_valueArray[i].m_edgeV0V1Angle = tmapData.m_valueArrayPtr[i].m_edgeV0V1Angle;+		m_valueArray[i].m_edgeV1V2Angle = tmapData.m_valueArrayPtr[i].m_edgeV1V2Angle;+		m_valueArray[i].m_edgeV2V0Angle = tmapData.m_valueArrayPtr[i].m_edgeV2V0Angle;+		m_valueArray[i].m_flags = tmapData.m_valueArrayPtr[i].m_flags;+	}+	+	m_keyArray.resize(tmapData.m_numKeys,btHashInt(0));+	for (i=0;i<tmapData.m_numKeys;i++)+	{+		m_keyArray[i].setUid1(tmapData.m_keyArrayPtr[i]);+	}+}+++#endif //_BT_TRIANGLE_INFO_MAP_H
+ bullet/BulletCollision/CollisionShapes/btTriangleMesh.h view
@@ -0,0 +1,69 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_TRIANGLE_MESH_H+#define BT_TRIANGLE_MESH_H++#include "btTriangleIndexVertexArray.h"+#include "LinearMath/btVector3.h"+#include "LinearMath/btAlignedObjectArray.h"++///The btTriangleMesh class is a convenience class derived from btTriangleIndexVertexArray, that provides storage for a concave triangle mesh. It can be used as data for the btBvhTriangleMeshShape.+///It allows either 32bit or 16bit indices, and 4 (x-y-z-w) or 3 (x-y-z) component vertices.+///If you want to share triangle/index data between graphics mesh and collision mesh (btBvhTriangleMeshShape), you can directly use btTriangleIndexVertexArray or derive your own class from btStridingMeshInterface.+///Performance of btTriangleMesh and btTriangleIndexVertexArray used in a btBvhTriangleMeshShape is the same.+class btTriangleMesh : public btTriangleIndexVertexArray+{+	btAlignedObjectArray<btVector3>	m_4componentVertices;+	btAlignedObjectArray<float>		m_3componentVertices;++	btAlignedObjectArray<unsigned int>		m_32bitIndices;+	btAlignedObjectArray<unsigned short int>		m_16bitIndices;+	bool	m_use32bitIndices;+	bool	m_use4componentVertices;+	++	public:+		btScalar	m_weldingThreshold;++		btTriangleMesh (bool use32bitIndices=true,bool use4componentVertices=true);++		bool	getUse32bitIndices() const+		{+			return m_use32bitIndices;+		}++		bool	getUse4componentVertices() const+		{+			return m_use4componentVertices;+		}+		///By default addTriangle won't search for duplicate vertices, because the search is very slow for large triangle meshes.+		///In general it is better to directly use btTriangleIndexVertexArray instead.+		void	addTriangle(const btVector3& vertex0,const btVector3& vertex1,const btVector3& vertex2, bool removeDuplicateVertices=false);+		+		int getNumTriangles() const;++		virtual void	preallocateVertices(int numverts){(void) numverts;}+		virtual void	preallocateIndices(int numindices){(void) numindices;}++		///findOrAddVertex is an internal method, use addTriangle instead+		int		findOrAddVertex(const btVector3& vertex, bool removeDuplicateVertices);+		///addIndex is an internal method, use addTriangle instead+		void	addIndex(int index);+		+};++#endif //BT_TRIANGLE_MESH_H+
+ bullet/BulletCollision/CollisionShapes/btTriangleMeshShape.h view
@@ -0,0 +1,89 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_TRIANGLE_MESH_SHAPE_H+#define BT_TRIANGLE_MESH_SHAPE_H++#include "btConcaveShape.h"+#include "btStridingMeshInterface.h"+++///The btTriangleMeshShape is an internal concave triangle mesh interface. Don't use this class directly, use btBvhTriangleMeshShape instead.+class btTriangleMeshShape : public btConcaveShape+{+protected:+	btVector3	m_localAabbMin;+	btVector3	m_localAabbMax;+	btStridingMeshInterface* m_meshInterface;++	///btTriangleMeshShape constructor has been disabled/protected, so that users will not mistakenly use this class.+	///Don't use btTriangleMeshShape but use btBvhTriangleMeshShape instead!+	btTriangleMeshShape(btStridingMeshInterface* meshInterface);++public:++	virtual ~btTriangleMeshShape();++	virtual btVector3 localGetSupportingVertex(const btVector3& vec) const;++	virtual btVector3	localGetSupportingVertexWithoutMargin(const btVector3& vec)const+	{+		btAssert(0);+		return localGetSupportingVertex(vec);+	}++	void	recalcLocalAabb();++	virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const;++	virtual void	processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const;++	virtual void	calculateLocalInertia(btScalar mass,btVector3& inertia) const;++	virtual void	setLocalScaling(const btVector3& scaling);+	virtual const btVector3& getLocalScaling() const;+	+	btStridingMeshInterface* getMeshInterface()+	{+		return m_meshInterface;+	}++	const btStridingMeshInterface* getMeshInterface() const+	{+		return m_meshInterface;+	}++	const btVector3& getLocalAabbMin() const+	{+		return m_localAabbMin;+	}+	const btVector3& getLocalAabbMax() const+	{+		return m_localAabbMax;+	}++++	//debugging+	virtual const char*	getName()const {return "TRIANGLEMESH";}++	++};+++++#endif //BT_TRIANGLE_MESH_SHAPE_H
+ bullet/BulletCollision/CollisionShapes/btTriangleShape.h view
@@ -0,0 +1,182 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_OBB_TRIANGLE_MINKOWSKI_H+#define BT_OBB_TRIANGLE_MINKOWSKI_H++#include "btConvexShape.h"+#include "btBoxShape.h"++ATTRIBUTE_ALIGNED16(class) btTriangleShape : public btPolyhedralConvexShape+{+++public:++	btVector3	m_vertices1[3];++	virtual int getNumVertices() const+	{+		return 3;+	}++	btVector3& getVertexPtr(int index)+	{+		return m_vertices1[index];+	}++	const btVector3& getVertexPtr(int index) const+	{+		return m_vertices1[index];+	}+	virtual void getVertex(int index,btVector3& vert) const+	{+		vert = m_vertices1[index];+	}++	virtual int getNumEdges() const+	{+		return 3;+	}+	+	virtual void getEdge(int i,btVector3& pa,btVector3& pb) const+	{+		getVertex(i,pa);+		getVertex((i+1)%3,pb);+	}+++	virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax)const +	{+//		btAssert(0);+		getAabbSlow(t,aabbMin,aabbMax);+	}++	btVector3 localGetSupportingVertexWithoutMargin(const btVector3& dir)const +	{+		btVector3 dots(dir.dot(m_vertices1[0]), dir.dot(m_vertices1[1]), dir.dot(m_vertices1[2]));+	  	return m_vertices1[dots.maxAxis()];++	}++	virtual void	batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const+	{+		for (int i=0;i<numVectors;i++)+		{+			const btVector3& dir = vectors[i];+			btVector3 dots(dir.dot(m_vertices1[0]), dir.dot(m_vertices1[1]), dir.dot(m_vertices1[2]));+  			supportVerticesOut[i] = m_vertices1[dots.maxAxis()];+		}++	}++	btTriangleShape() : btPolyhedralConvexShape ()+    {+		m_shapeType = TRIANGLE_SHAPE_PROXYTYPE;+	}++	btTriangleShape(const btVector3& p0,const btVector3& p1,const btVector3& p2) : btPolyhedralConvexShape ()+    {+		m_shapeType = TRIANGLE_SHAPE_PROXYTYPE;+        m_vertices1[0] = p0;+        m_vertices1[1] = p1;+        m_vertices1[2] = p2;+    }+++	virtual void getPlane(btVector3& planeNormal,btVector3& planeSupport,int i) const+	{+		getPlaneEquation(i,planeNormal,planeSupport);+	}++	virtual int	getNumPlanes() const+	{+		return 1;+	}++	void calcNormal(btVector3& normal) const+	{+		normal = (m_vertices1[1]-m_vertices1[0]).cross(m_vertices1[2]-m_vertices1[0]);+		normal.normalize();+	}++	virtual void getPlaneEquation(int i, btVector3& planeNormal,btVector3& planeSupport) const+	{+		(void)i;+		calcNormal(planeNormal);+		planeSupport = m_vertices1[0];+	}++	virtual void	calculateLocalInertia(btScalar mass,btVector3& inertia) const+	{+		(void)mass;+		btAssert(0);+		inertia.setValue(btScalar(0.),btScalar(0.),btScalar(0.));+	}++		virtual	bool isInside(const btVector3& pt,btScalar tolerance) const+	{+		btVector3 normal;+		calcNormal(normal);+		//distance to plane+		btScalar dist = pt.dot(normal);+		btScalar planeconst = m_vertices1[0].dot(normal);+		dist -= planeconst;+		if (dist >= -tolerance && dist <= tolerance)+		{+			//inside check on edge-planes+			int i;+			for (i=0;i<3;i++)+			{+				btVector3 pa,pb;+				getEdge(i,pa,pb);+				btVector3 edge = pb-pa;+				btVector3 edgeNormal = edge.cross(normal);+				edgeNormal.normalize();+				btScalar dist = pt.dot( edgeNormal);+				btScalar edgeConst = pa.dot(edgeNormal);+				dist -= edgeConst;+				if (dist < -tolerance)+					return false;+			}+			+			return true;+		}++		return false;+	}+		//debugging+		virtual const char*	getName()const+		{+			return "Triangle";+		}++		virtual int		getNumPreferredPenetrationDirections() const+		{+			return 2;+		}+		+		virtual void	getPreferredPenetrationDirection(int index, btVector3& penetrationVector) const+		{+			calcNormal(penetrationVector);+			if (index)+				penetrationVector *= btScalar(-1.);+		}+++};++#endif //BT_OBB_TRIANGLE_MINKOWSKI_H+
+ bullet/BulletCollision/CollisionShapes/btUniformScalingShape.h view
@@ -0,0 +1,87 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_UNIFORM_SCALING_SHAPE_H+#define BT_UNIFORM_SCALING_SHAPE_H++#include "btConvexShape.h"+#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" // for the types++///The btUniformScalingShape allows to re-use uniform scaled instances of btConvexShape in a memory efficient way.+///Istead of using btUniformScalingShape, it is better to use the non-uniform setLocalScaling method on convex shapes that implement it.+class btUniformScalingShape : public btConvexShape+{+	btConvexShape*	m_childConvexShape;++	btScalar	m_uniformScalingFactor;+	+	public:+	+	btUniformScalingShape(	btConvexShape* convexChildShape, btScalar uniformScalingFactor);+	+	virtual ~btUniformScalingShape();+	+	virtual btVector3	localGetSupportingVertexWithoutMargin(const btVector3& vec)const;++	virtual btVector3	localGetSupportingVertex(const btVector3& vec)const;++	virtual void	batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const;++	virtual void	calculateLocalInertia(btScalar mass,btVector3& inertia) const;++	btScalar	getUniformScalingFactor() const+	{+		return m_uniformScalingFactor;+	}++	btConvexShape*	getChildShape() +	{+		return m_childConvexShape;+	}++	const btConvexShape*	getChildShape() const+	{+		return m_childConvexShape;+	}++	virtual const char*	getName()const +	{+		return "UniformScalingShape";+	}+	+++	///////////////////////////+++	///getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version+	void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const;++	virtual void getAabbSlow(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const;++	virtual void	setLocalScaling(const btVector3& scaling) ;+	virtual const btVector3& getLocalScaling() const ;++	virtual void	setMargin(btScalar margin);+	virtual btScalar	getMargin() const;++	virtual int		getNumPreferredPenetrationDirections() const;+	+	virtual void	getPreferredPenetrationDirection(int index, btVector3& penetrationVector) const;+++};++#endif //BT_UNIFORM_SCALING_SHAPE_H
+ bullet/BulletCollision/Gimpact/btBoxCollision.h view
@@ -0,0 +1,647 @@+#ifndef BT_BOX_COLLISION_H_INCLUDED+#define BT_BOX_COLLISION_H_INCLUDED++/*! \file gim_box_collision.h+\author Francisco Leon Najera+*/+/*+This source file is part of GIMPACT Library.++For the latest info, see http://gimpact.sourceforge.net/++Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371.+email: projectileman@yahoo.com+++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose,+including commercial applications, and to alter it and redistribute it freely,+subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#include "LinearMath/btTransform.h"+++///Swap numbers+#define BT_SWAP_NUMBERS(a,b){ \+    a = a+b; \+    b = a-b; \+    a = a-b; \+}\+++#define BT_MAX(a,b) (a<b?b:a)+#define BT_MIN(a,b) (a>b?b:a)++#define BT_GREATER(x, y)	btFabs(x) > (y)++#define BT_MAX3(a,b,c) BT_MAX(a,BT_MAX(b,c))+#define BT_MIN3(a,b,c) BT_MIN(a,BT_MIN(b,c))+++++++enum eBT_PLANE_INTERSECTION_TYPE+{+	BT_CONST_BACK_PLANE = 0,+	BT_CONST_COLLIDE_PLANE,+	BT_CONST_FRONT_PLANE+};++//SIMD_FORCE_INLINE bool test_cross_edge_box(+//	const btVector3 & edge,+//	const btVector3 & absolute_edge,+//	const btVector3 & pointa,+//	const btVector3 & pointb, const btVector3 & extend,+//	int dir_index0,+//	int dir_index1+//	int component_index0,+//	int component_index1)+//{+//	// dir coords are -z and y+//+//	const btScalar dir0 = -edge[dir_index0];+//	const btScalar dir1 = edge[dir_index1];+//	btScalar pmin = pointa[component_index0]*dir0 + pointa[component_index1]*dir1;+//	btScalar pmax = pointb[component_index0]*dir0 + pointb[component_index1]*dir1;+//	//find minmax+//	if(pmin>pmax)+//	{+//		BT_SWAP_NUMBERS(pmin,pmax);+//	}+//	//find extends+//	const btScalar rad = extend[component_index0] * absolute_edge[dir_index0] ++//					extend[component_index1] * absolute_edge[dir_index1];+//+//	if(pmin>rad || -rad>pmax) return false;+//	return true;+//}+//+//SIMD_FORCE_INLINE bool test_cross_edge_box_X_axis(+//	const btVector3 & edge,+//	const btVector3 & absolute_edge,+//	const btVector3 & pointa,+//	const btVector3 & pointb, btVector3 & extend)+//{+//+//	return test_cross_edge_box(edge,absolute_edge,pointa,pointb,extend,2,1,1,2);+//}+//+//+//SIMD_FORCE_INLINE bool test_cross_edge_box_Y_axis(+//	const btVector3 & edge,+//	const btVector3 & absolute_edge,+//	const btVector3 & pointa,+//	const btVector3 & pointb, btVector3 & extend)+//{+//+//	return test_cross_edge_box(edge,absolute_edge,pointa,pointb,extend,0,2,2,0);+//}+//+//SIMD_FORCE_INLINE bool test_cross_edge_box_Z_axis(+//	const btVector3 & edge,+//	const btVector3 & absolute_edge,+//	const btVector3 & pointa,+//	const btVector3 & pointb, btVector3 & extend)+//{+//+//	return test_cross_edge_box(edge,absolute_edge,pointa,pointb,extend,1,0,0,1);+//}+++#define TEST_CROSS_EDGE_BOX_MCR(edge,absolute_edge,pointa,pointb,_extend,i_dir_0,i_dir_1,i_comp_0,i_comp_1)\+{\+	const btScalar dir0 = -edge[i_dir_0];\+	const btScalar dir1 = edge[i_dir_1];\+	btScalar pmin = pointa[i_comp_0]*dir0 + pointa[i_comp_1]*dir1;\+	btScalar pmax = pointb[i_comp_0]*dir0 + pointb[i_comp_1]*dir1;\+	if(pmin>pmax)\+	{\+		BT_SWAP_NUMBERS(pmin,pmax); \+	}\+	const btScalar abs_dir0 = absolute_edge[i_dir_0];\+	const btScalar abs_dir1 = absolute_edge[i_dir_1];\+	const btScalar rad = _extend[i_comp_0] * abs_dir0 + _extend[i_comp_1] * abs_dir1;\+	if(pmin>rad || -rad>pmax) return false;\+}\+++#define TEST_CROSS_EDGE_BOX_X_AXIS_MCR(edge,absolute_edge,pointa,pointb,_extend)\+{\+	TEST_CROSS_EDGE_BOX_MCR(edge,absolute_edge,pointa,pointb,_extend,2,1,1,2);\+}\++#define TEST_CROSS_EDGE_BOX_Y_AXIS_MCR(edge,absolute_edge,pointa,pointb,_extend)\+{\+	TEST_CROSS_EDGE_BOX_MCR(edge,absolute_edge,pointa,pointb,_extend,0,2,2,0);\+}\++#define TEST_CROSS_EDGE_BOX_Z_AXIS_MCR(edge,absolute_edge,pointa,pointb,_extend)\+{\+	TEST_CROSS_EDGE_BOX_MCR(edge,absolute_edge,pointa,pointb,_extend,1,0,0,1);\+}\+++//! Returns the dot product between a vec3f and the col of a matrix+SIMD_FORCE_INLINE btScalar bt_mat3_dot_col(+const btMatrix3x3 & mat, const btVector3 & vec3, int colindex)+{+	return vec3[0]*mat[0][colindex] + vec3[1]*mat[1][colindex] + vec3[2]*mat[2][colindex];+}+++//!  Class for transforming a model1 to the space of model0+ATTRIBUTE_ALIGNED16	(class) BT_BOX_BOX_TRANSFORM_CACHE+{+public:+    btVector3  m_T1to0;//!< Transforms translation of model1 to model 0+	btMatrix3x3 m_R1to0;//!< Transforms Rotation of model1 to model 0, equal  to R0' * R1+	btMatrix3x3 m_AR;//!< Absolute value of m_R1to0++	SIMD_FORCE_INLINE void calc_absolute_matrix()+	{+//		static const btVector3 vepsi(1e-6f,1e-6f,1e-6f);+//		m_AR[0] = vepsi + m_R1to0[0].absolute();+//		m_AR[1] = vepsi + m_R1to0[1].absolute();+//		m_AR[2] = vepsi + m_R1to0[2].absolute();++		int i,j;++        for(i=0;i<3;i++)+        {+            for(j=0;j<3;j++ )+            {+            	m_AR[i][j] = 1e-6f + btFabs(m_R1to0[i][j]);+            }+        }++	}++	BT_BOX_BOX_TRANSFORM_CACHE()+	{+	}++++	//! Calc the transformation relative  1 to 0. Inverts matrics by transposing+	SIMD_FORCE_INLINE void calc_from_homogenic(const btTransform & trans0,const btTransform & trans1)+	{++		btTransform temp_trans = trans0.inverse();+		temp_trans = temp_trans * trans1;++		m_T1to0 = temp_trans.getOrigin();+		m_R1to0 = temp_trans.getBasis();+++		calc_absolute_matrix();+	}++	//! Calcs the full invertion of the matrices. Useful for scaling matrices+	SIMD_FORCE_INLINE void calc_from_full_invert(const btTransform & trans0,const btTransform & trans1)+	{+		m_R1to0 = trans0.getBasis().inverse();+		m_T1to0 = m_R1to0 * (-trans0.getOrigin());++		m_T1to0 += m_R1to0*trans1.getOrigin();+		m_R1to0 *= trans1.getBasis();++		calc_absolute_matrix();+	}++	SIMD_FORCE_INLINE btVector3 transform(const btVector3 & point) const+	{+		return btVector3(m_R1to0[0].dot(point) + m_T1to0.x(),+			m_R1to0[1].dot(point) + m_T1to0.y(),+			m_R1to0[2].dot(point) + m_T1to0.z());+	}+};+++#define BOX_PLANE_EPSILON 0.000001f++//! Axis aligned box+ATTRIBUTE_ALIGNED16	(class) btAABB+{+public:+	btVector3 m_min;+	btVector3 m_max;++	btAABB()+	{}+++	btAABB(const btVector3 & V1,+			 const btVector3 & V2,+			 const btVector3 & V3)+	{+		m_min[0] = BT_MIN3(V1[0],V2[0],V3[0]);+		m_min[1] = BT_MIN3(V1[1],V2[1],V3[1]);+		m_min[2] = BT_MIN3(V1[2],V2[2],V3[2]);++		m_max[0] = BT_MAX3(V1[0],V2[0],V3[0]);+		m_max[1] = BT_MAX3(V1[1],V2[1],V3[1]);+		m_max[2] = BT_MAX3(V1[2],V2[2],V3[2]);+	}++	btAABB(const btVector3 & V1,+			 const btVector3 & V2,+			 const btVector3 & V3,+			 btScalar margin)+	{+		m_min[0] = BT_MIN3(V1[0],V2[0],V3[0]);+		m_min[1] = BT_MIN3(V1[1],V2[1],V3[1]);+		m_min[2] = BT_MIN3(V1[2],V2[2],V3[2]);++		m_max[0] = BT_MAX3(V1[0],V2[0],V3[0]);+		m_max[1] = BT_MAX3(V1[1],V2[1],V3[1]);+		m_max[2] = BT_MAX3(V1[2],V2[2],V3[2]);++		m_min[0] -= margin;+		m_min[1] -= margin;+		m_min[2] -= margin;+		m_max[0] += margin;+		m_max[1] += margin;+		m_max[2] += margin;+	}++	btAABB(const btAABB &other):+		m_min(other.m_min),m_max(other.m_max)+	{+	}++	btAABB(const btAABB &other,btScalar margin ):+		m_min(other.m_min),m_max(other.m_max)+	{+		m_min[0] -= margin;+		m_min[1] -= margin;+		m_min[2] -= margin;+		m_max[0] += margin;+		m_max[1] += margin;+		m_max[2] += margin;+	}++	SIMD_FORCE_INLINE void invalidate()+	{+		m_min[0] = SIMD_INFINITY;+		m_min[1] = SIMD_INFINITY;+		m_min[2] = SIMD_INFINITY;+		m_max[0] = -SIMD_INFINITY;+		m_max[1] = -SIMD_INFINITY;+		m_max[2] = -SIMD_INFINITY;+	}++	SIMD_FORCE_INLINE void increment_margin(btScalar margin)+	{+		m_min[0] -= margin;+		m_min[1] -= margin;+		m_min[2] -= margin;+		m_max[0] += margin;+		m_max[1] += margin;+		m_max[2] += margin;+	}++	SIMD_FORCE_INLINE void copy_with_margin(const btAABB &other, btScalar margin)+	{+		m_min[0] = other.m_min[0] - margin;+		m_min[1] = other.m_min[1] - margin;+		m_min[2] = other.m_min[2] - margin;++		m_max[0] = other.m_max[0] + margin;+		m_max[1] = other.m_max[1] + margin;+		m_max[2] = other.m_max[2] + margin;+	}++	template<typename CLASS_POINT>+	SIMD_FORCE_INLINE void calc_from_triangle(+							const CLASS_POINT & V1,+							const CLASS_POINT & V2,+							const CLASS_POINT & V3)+	{+		m_min[0] = BT_MIN3(V1[0],V2[0],V3[0]);+		m_min[1] = BT_MIN3(V1[1],V2[1],V3[1]);+		m_min[2] = BT_MIN3(V1[2],V2[2],V3[2]);++		m_max[0] = BT_MAX3(V1[0],V2[0],V3[0]);+		m_max[1] = BT_MAX3(V1[1],V2[1],V3[1]);+		m_max[2] = BT_MAX3(V1[2],V2[2],V3[2]);+	}++	template<typename CLASS_POINT>+	SIMD_FORCE_INLINE void calc_from_triangle_margin(+							const CLASS_POINT & V1,+							const CLASS_POINT & V2,+							const CLASS_POINT & V3, btScalar margin)+	{+		m_min[0] = BT_MIN3(V1[0],V2[0],V3[0]);+		m_min[1] = BT_MIN3(V1[1],V2[1],V3[1]);+		m_min[2] = BT_MIN3(V1[2],V2[2],V3[2]);++		m_max[0] = BT_MAX3(V1[0],V2[0],V3[0]);+		m_max[1] = BT_MAX3(V1[1],V2[1],V3[1]);+		m_max[2] = BT_MAX3(V1[2],V2[2],V3[2]);++		m_min[0] -= margin;+		m_min[1] -= margin;+		m_min[2] -= margin;+		m_max[0] += margin;+		m_max[1] += margin;+		m_max[2] += margin;+	}++	//! Apply a transform to an AABB+	SIMD_FORCE_INLINE void appy_transform(const btTransform & trans)+	{+		btVector3 center = (m_max+m_min)*0.5f;+		btVector3 extends = m_max - center;+		// Compute new center+		center = trans(center);++		btVector3 textends(extends.dot(trans.getBasis().getRow(0).absolute()),+ 				 extends.dot(trans.getBasis().getRow(1).absolute()),+				 extends.dot(trans.getBasis().getRow(2).absolute()));++		m_min = center - textends;+		m_max = center + textends;+	}+++	//! Apply a transform to an AABB+	SIMD_FORCE_INLINE void appy_transform_trans_cache(const BT_BOX_BOX_TRANSFORM_CACHE & trans)+	{+		btVector3 center = (m_max+m_min)*0.5f;+		btVector3 extends = m_max - center;+		// Compute new center+		center = trans.transform(center);++		btVector3 textends(extends.dot(trans.m_R1to0.getRow(0).absolute()),+ 				 extends.dot(trans.m_R1to0.getRow(1).absolute()),+				 extends.dot(trans.m_R1to0.getRow(2).absolute()));++		m_min = center - textends;+		m_max = center + textends;+	}++	//! Merges a Box+	SIMD_FORCE_INLINE void merge(const btAABB & box)+	{+		m_min[0] = BT_MIN(m_min[0],box.m_min[0]);+		m_min[1] = BT_MIN(m_min[1],box.m_min[1]);+		m_min[2] = BT_MIN(m_min[2],box.m_min[2]);++		m_max[0] = BT_MAX(m_max[0],box.m_max[0]);+		m_max[1] = BT_MAX(m_max[1],box.m_max[1]);+		m_max[2] = BT_MAX(m_max[2],box.m_max[2]);+	}++	//! Merges a point+	template<typename CLASS_POINT>+	SIMD_FORCE_INLINE void merge_point(const CLASS_POINT & point)+	{+		m_min[0] = BT_MIN(m_min[0],point[0]);+		m_min[1] = BT_MIN(m_min[1],point[1]);+		m_min[2] = BT_MIN(m_min[2],point[2]);++		m_max[0] = BT_MAX(m_max[0],point[0]);+		m_max[1] = BT_MAX(m_max[1],point[1]);+		m_max[2] = BT_MAX(m_max[2],point[2]);+	}++	//! Gets the extend and center+	SIMD_FORCE_INLINE void get_center_extend(btVector3 & center,btVector3 & extend)  const+	{+		center = (m_max+m_min)*0.5f;+		extend = m_max - center;+	}++	//! Finds the intersecting box between this box and the other.+	SIMD_FORCE_INLINE void find_intersection(const btAABB & other, btAABB & intersection)  const+	{+		intersection.m_min[0] = BT_MAX(other.m_min[0],m_min[0]);+		intersection.m_min[1] = BT_MAX(other.m_min[1],m_min[1]);+		intersection.m_min[2] = BT_MAX(other.m_min[2],m_min[2]);++		intersection.m_max[0] = BT_MIN(other.m_max[0],m_max[0]);+		intersection.m_max[1] = BT_MIN(other.m_max[1],m_max[1]);+		intersection.m_max[2] = BT_MIN(other.m_max[2],m_max[2]);+	}+++	SIMD_FORCE_INLINE bool has_collision(const btAABB & other) const+	{+		if(m_min[0] > other.m_max[0] ||+		   m_max[0] < other.m_min[0] ||+		   m_min[1] > other.m_max[1] ||+		   m_max[1] < other.m_min[1] ||+		   m_min[2] > other.m_max[2] ||+		   m_max[2] < other.m_min[2])+		{+			return false;+		}+		return true;+	}++	/*! \brief Finds the Ray intersection parameter.+	\param aabb Aligned box+	\param vorigin A vec3f with the origin of the ray+	\param vdir A vec3f with the direction of the ray+	*/+	SIMD_FORCE_INLINE bool collide_ray(const btVector3 & vorigin,const btVector3 & vdir)  const+	{+		btVector3 extents,center;+		this->get_center_extend(center,extents);;++		btScalar Dx = vorigin[0] - center[0];+		if(BT_GREATER(Dx, extents[0]) && Dx*vdir[0]>=0.0f)	return false;+		btScalar Dy = vorigin[1] - center[1];+		if(BT_GREATER(Dy, extents[1]) && Dy*vdir[1]>=0.0f)	return false;+		btScalar Dz = vorigin[2] - center[2];+		if(BT_GREATER(Dz, extents[2]) && Dz*vdir[2]>=0.0f)	return false;+++		btScalar f = vdir[1] * Dz - vdir[2] * Dy;+		if(btFabs(f) > extents[1]*btFabs(vdir[2]) + extents[2]*btFabs(vdir[1])) return false;+		f = vdir[2] * Dx - vdir[0] * Dz;+		if(btFabs(f) > extents[0]*btFabs(vdir[2]) + extents[2]*btFabs(vdir[0]))return false;+		f = vdir[0] * Dy - vdir[1] * Dx;+		if(btFabs(f) > extents[0]*btFabs(vdir[1]) + extents[1]*btFabs(vdir[0]))return false;+		return true;+	}+++	SIMD_FORCE_INLINE void projection_interval(const btVector3 & direction, btScalar &vmin, btScalar &vmax) const+	{+		btVector3 center = (m_max+m_min)*0.5f;+		btVector3 extend = m_max-center;++		btScalar _fOrigin =  direction.dot(center);+		btScalar _fMaximumExtent = extend.dot(direction.absolute());+		vmin = _fOrigin - _fMaximumExtent;+		vmax = _fOrigin + _fMaximumExtent;+	}++	SIMD_FORCE_INLINE eBT_PLANE_INTERSECTION_TYPE plane_classify(const btVector4 &plane) const+	{+		btScalar _fmin,_fmax;+		this->projection_interval(plane,_fmin,_fmax);++		if(plane[3] > _fmax + BOX_PLANE_EPSILON)+		{+			return BT_CONST_BACK_PLANE; // 0+		}++		if(plane[3]+BOX_PLANE_EPSILON >=_fmin)+		{+			return BT_CONST_COLLIDE_PLANE; //1+		}+		return BT_CONST_FRONT_PLANE;//2+	}++	SIMD_FORCE_INLINE bool overlapping_trans_conservative(const btAABB & box, btTransform & trans1_to_0) const+	{+		btAABB tbox = box;+		tbox.appy_transform(trans1_to_0);+		return has_collision(tbox);+	}++	SIMD_FORCE_INLINE bool overlapping_trans_conservative2(const btAABB & box,+		const BT_BOX_BOX_TRANSFORM_CACHE & trans1_to_0) const+	{+		btAABB tbox = box;+		tbox.appy_transform_trans_cache(trans1_to_0);+		return has_collision(tbox);+	}++	//! transcache is the transformation cache from box to this AABB+	SIMD_FORCE_INLINE bool overlapping_trans_cache(+		const btAABB & box,const BT_BOX_BOX_TRANSFORM_CACHE & transcache, bool fulltest) const+	{++		//Taken from OPCODE+		btVector3 ea,eb;//extends+		btVector3 ca,cb;//extends+		get_center_extend(ca,ea);+		box.get_center_extend(cb,eb);+++		btVector3 T;+		btScalar t,t2;+		int i;++		// Class I : A's basis vectors+		for(i=0;i<3;i++)+		{+			T[i] =  transcache.m_R1to0[i].dot(cb) + transcache.m_T1to0[i] - ca[i];+			t = transcache.m_AR[i].dot(eb) + ea[i];+			if(BT_GREATER(T[i], t))	return false;+		}+		// Class II : B's basis vectors+		for(i=0;i<3;i++)+		{+			t = bt_mat3_dot_col(transcache.m_R1to0,T,i);+			t2 = bt_mat3_dot_col(transcache.m_AR,ea,i) + eb[i];+			if(BT_GREATER(t,t2))	return false;+		}+		// Class III : 9 cross products+		if(fulltest)+		{+			int j,m,n,o,p,q,r;+			for(i=0;i<3;i++)+			{+				m = (i+1)%3;+				n = (i+2)%3;+				o = i==0?1:0;+				p = i==2?1:2;+				for(j=0;j<3;j++)+				{+					q = j==2?1:2;+					r = j==0?1:0;+					t = T[n]*transcache.m_R1to0[m][j] - T[m]*transcache.m_R1to0[n][j];+					t2 = ea[o]*transcache.m_AR[p][j] + ea[p]*transcache.m_AR[o][j] ++						eb[r]*transcache.m_AR[i][q] + eb[q]*transcache.m_AR[i][r];+					if(BT_GREATER(t,t2))	return false;+				}+			}+		}+		return true;+	}++	//! Simple test for planes.+	SIMD_FORCE_INLINE bool collide_plane(+		const btVector4 & plane) const+	{+		eBT_PLANE_INTERSECTION_TYPE classify = plane_classify(plane);+		return (classify == BT_CONST_COLLIDE_PLANE);+	}++	//! test for a triangle, with edges+	SIMD_FORCE_INLINE bool collide_triangle_exact(+		const btVector3 & p1,+		const btVector3 & p2,+		const btVector3 & p3,+		const btVector4 & triangle_plane) const+	{+		if(!collide_plane(triangle_plane)) return false;++		btVector3 center,extends;+		this->get_center_extend(center,extends);++		const btVector3 v1(p1 - center);+		const btVector3 v2(p2 - center);+		const btVector3 v3(p3 - center);++		//First axis+		btVector3 diff(v2 - v1);+		btVector3 abs_diff = diff.absolute();+		//Test With X axis+		TEST_CROSS_EDGE_BOX_X_AXIS_MCR(diff,abs_diff,v1,v3,extends);+		//Test With Y axis+		TEST_CROSS_EDGE_BOX_Y_AXIS_MCR(diff,abs_diff,v1,v3,extends);+		//Test With Z axis+		TEST_CROSS_EDGE_BOX_Z_AXIS_MCR(diff,abs_diff,v1,v3,extends);+++		diff = v3 - v2;+		abs_diff = diff.absolute();+		//Test With X axis+		TEST_CROSS_EDGE_BOX_X_AXIS_MCR(diff,abs_diff,v2,v1,extends);+		//Test With Y axis+		TEST_CROSS_EDGE_BOX_Y_AXIS_MCR(diff,abs_diff,v2,v1,extends);+		//Test With Z axis+		TEST_CROSS_EDGE_BOX_Z_AXIS_MCR(diff,abs_diff,v2,v1,extends);++		diff = v1 - v3;+		abs_diff = diff.absolute();+		//Test With X axis+		TEST_CROSS_EDGE_BOX_X_AXIS_MCR(diff,abs_diff,v3,v2,extends);+		//Test With Y axis+		TEST_CROSS_EDGE_BOX_Y_AXIS_MCR(diff,abs_diff,v3,v2,extends);+		//Test With Z axis+		TEST_CROSS_EDGE_BOX_Z_AXIS_MCR(diff,abs_diff,v3,v2,extends);++		return true;+	}+};+++//! Compairison of transformation objects+SIMD_FORCE_INLINE bool btCompareTransformsEqual(const btTransform & t1,const btTransform & t2)+{+	if(!(t1.getOrigin() == t2.getOrigin()) ) return false;++	if(!(t1.getBasis().getRow(0) == t2.getBasis().getRow(0)) ) return false;+	if(!(t1.getBasis().getRow(1) == t2.getBasis().getRow(1)) ) return false;+	if(!(t1.getBasis().getRow(2) == t2.getBasis().getRow(2)) ) return false;+	return true;+}++++#endif // GIM_BOX_COLLISION_H_INCLUDED
+ bullet/BulletCollision/Gimpact/btClipPolygon.h view
@@ -0,0 +1,182 @@+#ifndef BT_CLIP_POLYGON_H_INCLUDED+#define BT_CLIP_POLYGON_H_INCLUDED++/*! \file btClipPolygon.h+\author Francisco Leon Najera+*/+/*+This source file is part of GIMPACT Library.++For the latest info, see http://gimpact.sourceforge.net/++Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371.+email: projectileman@yahoo.com+++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose,+including commercial applications, and to alter it and redistribute it freely,+subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#include "LinearMath/btTransform.h"+#include "LinearMath/btGeometryUtil.h"+++SIMD_FORCE_INLINE btScalar bt_distance_point_plane(const btVector4 & plane,const btVector3 &point)+{+	return point.dot(plane) - plane[3];+}++/*! Vector blending+Takes two vectors a, b, blends them together*/+SIMD_FORCE_INLINE void bt_vec_blend(btVector3 &vr, const btVector3 &va,const btVector3 &vb, btScalar blend_factor)+{+	vr = (1-blend_factor)*va + blend_factor*vb;+}++//! This function calcs the distance from a 3D plane+SIMD_FORCE_INLINE void bt_plane_clip_polygon_collect(+						const btVector3 & point0,+						const btVector3 & point1,+						btScalar dist0,+						btScalar dist1,+						btVector3 * clipped,+						int & clipped_count)+{+	bool _prevclassif = (dist0>SIMD_EPSILON);+	bool _classif = (dist1>SIMD_EPSILON);+	if(_classif!=_prevclassif)+	{+		btScalar blendfactor = -dist0/(dist1-dist0);+		bt_vec_blend(clipped[clipped_count],point0,point1,blendfactor);+		clipped_count++;+	}+	if(!_classif)+	{+		clipped[clipped_count] = point1;+		clipped_count++;+	}+}+++//! Clips a polygon by a plane+/*!+*\return The count of the clipped counts+*/+SIMD_FORCE_INLINE int bt_plane_clip_polygon(+						const btVector4 & plane,+						const btVector3 * polygon_points,+						int polygon_point_count,+						btVector3 * clipped)+{+    int clipped_count = 0;+++    //clip first point+	btScalar firstdist = bt_distance_point_plane(plane,polygon_points[0]);;+	if(!(firstdist>SIMD_EPSILON))+	{+		clipped[clipped_count] = polygon_points[0];+		clipped_count++;+	}++	btScalar olddist = firstdist;+	for(int i=1;i<polygon_point_count;i++)+	{+		btScalar dist = bt_distance_point_plane(plane,polygon_points[i]);++		bt_plane_clip_polygon_collect(+						polygon_points[i-1],polygon_points[i],+						olddist,+						dist,+						clipped,+						clipped_count);+++		olddist = dist;+	}++	//RETURN TO FIRST  point++	bt_plane_clip_polygon_collect(+					polygon_points[polygon_point_count-1],polygon_points[0],+					olddist,+					firstdist,+					clipped,+					clipped_count);++	return clipped_count;+}++//! Clips a polygon by a plane+/*!+*\param clipped must be an array of 16 points.+*\return The count of the clipped counts+*/+SIMD_FORCE_INLINE int bt_plane_clip_triangle(+						const btVector4 & plane,+						const btVector3 & point0,+						const btVector3 & point1,+						const btVector3& point2,+						btVector3 * clipped // an allocated array of 16 points at least+						)+{+    int clipped_count = 0;++    //clip first point0+	btScalar firstdist = bt_distance_point_plane(plane,point0);;+	if(!(firstdist>SIMD_EPSILON))+	{+		clipped[clipped_count] = point0;+		clipped_count++;+	}++	// point 1+	btScalar olddist = firstdist;+	btScalar dist = bt_distance_point_plane(plane,point1);++	bt_plane_clip_polygon_collect(+					point0,point1,+					olddist,+					dist,+					clipped,+					clipped_count);++	olddist = dist;+++	// point 2+	dist = bt_distance_point_plane(plane,point2);++	bt_plane_clip_polygon_collect(+					point1,point2,+					olddist,+					dist,+					clipped,+					clipped_count);+	olddist = dist;++++	//RETURN TO FIRST  point0+	bt_plane_clip_polygon_collect(+					point2,point0,+					olddist,+					firstdist,+					clipped,+					clipped_count);++	return clipped_count;+}++++++#endif // GIM_TRI_COLLISION_H_INCLUDED
+ bullet/BulletCollision/Gimpact/btContactProcessing.h view
@@ -0,0 +1,145 @@+#ifndef BT_CONTACT_H_INCLUDED+#define BT_CONTACT_H_INCLUDED++/*! \file gim_contact.h+\author Francisco Leon Najera+*/+/*+This source file is part of GIMPACT Library.++For the latest info, see http://gimpact.sourceforge.net/++Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371.+email: projectileman@yahoo.com+++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose,+including commercial applications, and to alter it and redistribute it freely,+subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#include "LinearMath/btTransform.h"+#include "LinearMath/btAlignedObjectArray.h"+#include "btTriangleShapeEx.h"++++/**+Configuration var for applying interpolation of  contact normals+*/+#define NORMAL_CONTACT_AVERAGE 1++#define CONTACT_DIFF_EPSILON 0.00001f++///The GIM_CONTACT is an internal GIMPACT structure, similar to btManifoldPoint.+///@todo: remove and replace GIM_CONTACT by btManifoldPoint.+class GIM_CONTACT+{+public:+    btVector3 m_point;+    btVector3 m_normal;+    btScalar m_depth;//Positive value indicates interpenetration+    btScalar m_distance;//Padding not for use+    int m_feature1;//Face number+    int m_feature2;//Face number+public:+    GIM_CONTACT()+    {+    }++    GIM_CONTACT(const GIM_CONTACT & contact):+				m_point(contact.m_point),+				m_normal(contact.m_normal),+				m_depth(contact.m_depth),+				m_feature1(contact.m_feature1),+				m_feature2(contact.m_feature2)+    {+    }++    GIM_CONTACT(const btVector3 &point,const btVector3 & normal,+    	 			btScalar depth, int feature1, int feature2):+				m_point(point),+				m_normal(normal),+				m_depth(depth),+				m_feature1(feature1),+				m_feature2(feature2)+    {+    }++	//! Calcs key for coord classification+    SIMD_FORCE_INLINE unsigned int calc_key_contact() const+    {+    	int _coords[] = {+    		(int)(m_point[0]*1000.0f+1.0f),+    		(int)(m_point[1]*1333.0f),+    		(int)(m_point[2]*2133.0f+3.0f)};+		unsigned int _hash=0;+		unsigned int *_uitmp = (unsigned int *)(&_coords[0]);+		_hash = *_uitmp;+		_uitmp++;+		_hash += (*_uitmp)<<4;+		_uitmp++;+		_hash += (*_uitmp)<<8;+		return _hash;+    }++    SIMD_FORCE_INLINE void interpolate_normals( btVector3 * normals,int normal_count)+    {+    	btVector3 vec_sum(m_normal);+		for(int i=0;i<normal_count;i++)+		{+			vec_sum += normals[i];+		}++		btScalar vec_sum_len = vec_sum.length2();+		if(vec_sum_len <CONTACT_DIFF_EPSILON) return;++		//GIM_INV_SQRT(vec_sum_len,vec_sum_len); // 1/sqrt(vec_sum_len)++		m_normal = vec_sum/btSqrt(vec_sum_len);+    }++};+++class btContactArray:public btAlignedObjectArray<GIM_CONTACT>+{+public:+	btContactArray()+	{+		reserve(64);+	}++	SIMD_FORCE_INLINE void push_contact(+		const btVector3 &point,const btVector3 & normal,+		btScalar depth, int feature1, int feature2)+	{+		push_back( GIM_CONTACT(point,normal,depth,feature1,feature2) );+	}++	SIMD_FORCE_INLINE void push_triangle_contacts(+		const GIM_TRIANGLE_CONTACT & tricontact,+		int feature1,int feature2)+	{+		for(int i = 0;i<tricontact.m_point_count ;i++ )+		{+			push_contact(+				tricontact.m_points[i],+				tricontact.m_separating_normal,+				tricontact.m_penetration_depth,feature1,feature2);+		}+	}++	void merge_contacts(const btContactArray & contacts, bool normal_contact_average = true);++	void merge_contacts_unique(const btContactArray & contacts);+};+++#endif // GIM_CONTACT_H_INCLUDED
+ bullet/BulletCollision/Gimpact/btGImpactBvh.h view
@@ -0,0 +1,396 @@+#ifndef GIM_BOX_SET_H_INCLUDED+#define GIM_BOX_SET_H_INCLUDED++/*! \file gim_box_set.h+\author Francisco Leon Najera+*/+/*+This source file is part of GIMPACT Library.++For the latest info, see http://gimpact.sourceforge.net/++Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371.+email: projectileman@yahoo.com+++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose,+including commercial applications, and to alter it and redistribute it freely,+subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+++#include "LinearMath/btAlignedObjectArray.h"++#include "btBoxCollision.h"+#include "btTriangleShapeEx.h"++++++//! Overlapping pair+struct GIM_PAIR+{+    int m_index1;+    int m_index2;+    GIM_PAIR()+    {}++    GIM_PAIR(const GIM_PAIR & p)+    {+    	m_index1 = p.m_index1;+    	m_index2 = p.m_index2;+	}++	GIM_PAIR(int index1, int index2)+    {+    	m_index1 = index1;+    	m_index2 = index2;+	}+};++//! A pairset array+class btPairSet: public btAlignedObjectArray<GIM_PAIR>+{+public:+	btPairSet()+	{+		reserve(32);+	}+	inline void push_pair(int index1,int index2)+	{+		push_back(GIM_PAIR(index1,index2));+	}++	inline void push_pair_inv(int index1,int index2)+	{+		push_back(GIM_PAIR(index2,index1));+	}+};+++///GIM_BVH_DATA is an internal GIMPACT collision structure to contain axis aligned bounding box+struct GIM_BVH_DATA+{+	btAABB m_bound;+	int m_data;+};++//! Node Structure for trees+class GIM_BVH_TREE_NODE+{+public:+	btAABB m_bound;+protected:+	int	m_escapeIndexOrDataIndex;+public:+	GIM_BVH_TREE_NODE()+	{+		m_escapeIndexOrDataIndex = 0;+	}++	SIMD_FORCE_INLINE bool isLeafNode() const+	{+		//skipindex is negative (internal node), triangleindex >=0 (leafnode)+		return (m_escapeIndexOrDataIndex>=0);+	}++	SIMD_FORCE_INLINE int getEscapeIndex() const+	{+		//btAssert(m_escapeIndexOrDataIndex < 0);+		return -m_escapeIndexOrDataIndex;+	}++	SIMD_FORCE_INLINE void setEscapeIndex(int index)+	{+		m_escapeIndexOrDataIndex = -index;+	}++	SIMD_FORCE_INLINE int getDataIndex() const+	{+		//btAssert(m_escapeIndexOrDataIndex >= 0);++		return m_escapeIndexOrDataIndex;+	}++	SIMD_FORCE_INLINE void setDataIndex(int index)+	{+		m_escapeIndexOrDataIndex = index;+	}++};+++class GIM_BVH_DATA_ARRAY:public btAlignedObjectArray<GIM_BVH_DATA>+{+};+++class GIM_BVH_TREE_NODE_ARRAY:public btAlignedObjectArray<GIM_BVH_TREE_NODE>+{+};+++++//! Basic Box tree structure+class btBvhTree+{+protected:+	int m_num_nodes;+	GIM_BVH_TREE_NODE_ARRAY m_node_array;+protected:+	int _sort_and_calc_splitting_index(+		GIM_BVH_DATA_ARRAY & primitive_boxes,+		 int startIndex,  int endIndex, int splitAxis);++	int _calc_splitting_axis(GIM_BVH_DATA_ARRAY & primitive_boxes, int startIndex,  int endIndex);++	void _build_sub_tree(GIM_BVH_DATA_ARRAY & primitive_boxes, int startIndex,  int endIndex);+public:+	btBvhTree()+	{+		m_num_nodes = 0;+	}++	//! prototype functions for box tree management+	//!@{+	void build_tree(GIM_BVH_DATA_ARRAY & primitive_boxes);++	SIMD_FORCE_INLINE void clearNodes()+	{+		m_node_array.clear();+		m_num_nodes = 0;+	}++	//! node count+	SIMD_FORCE_INLINE int getNodeCount() const+	{+		return m_num_nodes;+	}++	//! tells if the node is a leaf+	SIMD_FORCE_INLINE bool isLeafNode(int nodeindex) const+	{+		return m_node_array[nodeindex].isLeafNode();+	}++	SIMD_FORCE_INLINE int getNodeData(int nodeindex) const+	{+		return m_node_array[nodeindex].getDataIndex();+	}++	SIMD_FORCE_INLINE void getNodeBound(int nodeindex, btAABB & bound) const+	{+		bound = m_node_array[nodeindex].m_bound;+	}++	SIMD_FORCE_INLINE void setNodeBound(int nodeindex, const btAABB & bound)+	{+		m_node_array[nodeindex].m_bound = bound;+	}++	SIMD_FORCE_INLINE int getLeftNode(int nodeindex) const+	{+		return nodeindex+1;+	}++	SIMD_FORCE_INLINE int getRightNode(int nodeindex) const+	{+		if(m_node_array[nodeindex+1].isLeafNode()) return nodeindex+2;+		return nodeindex+1 + m_node_array[nodeindex+1].getEscapeIndex();+	}++	SIMD_FORCE_INLINE int getEscapeNodeIndex(int nodeindex) const+	{+		return m_node_array[nodeindex].getEscapeIndex();+	}++	SIMD_FORCE_INLINE const GIM_BVH_TREE_NODE * get_node_pointer(int index = 0) const+	{+		return &m_node_array[index];+	}++	//!@}+};+++//! Prototype Base class for primitive classification+/*!+This class is a wrapper for primitive collections.+This tells relevant info for the Bounding Box set classes, which take care of space classification.+This class can manage Compound shapes and trimeshes, and if it is managing trimesh then the  Hierarchy Bounding Box classes will take advantage of primitive Vs Box overlapping tests for getting optimal results and less Per Box compairisons.+*/+class btPrimitiveManagerBase+{+public:++	virtual ~btPrimitiveManagerBase() {}++	//! determines if this manager consist on only triangles, which special case will be optimized+	virtual bool is_trimesh() const = 0;+	virtual int get_primitive_count() const = 0;+	virtual void get_primitive_box(int prim_index ,btAABB & primbox) const = 0;+	//! retrieves only the points of the triangle, and the collision margin+	virtual void get_primitive_triangle(int prim_index,btPrimitiveTriangle & triangle) const= 0;+};+++//! Structure for containing Boxes+/*!+This class offers an structure for managing a box tree of primitives.+Requires a Primitive prototype (like btPrimitiveManagerBase )+*/+class btGImpactBvh+{+protected:+	btBvhTree m_box_tree;+	btPrimitiveManagerBase * m_primitive_manager;++protected:+	//stackless refit+	void refit();+public:++	//! this constructor doesn't build the tree. you must call	buildSet+	btGImpactBvh()+	{+		m_primitive_manager = NULL;+	}++	//! this constructor doesn't build the tree. you must call	buildSet+	btGImpactBvh(btPrimitiveManagerBase * primitive_manager)+	{+		m_primitive_manager = primitive_manager;+	}++	SIMD_FORCE_INLINE btAABB getGlobalBox()  const+	{+		btAABB totalbox;+		getNodeBound(0, totalbox);+		return totalbox;+	}++	SIMD_FORCE_INLINE void setPrimitiveManager(btPrimitiveManagerBase * primitive_manager)+	{+		m_primitive_manager = primitive_manager;+	}++	SIMD_FORCE_INLINE btPrimitiveManagerBase * getPrimitiveManager() const+	{+		return m_primitive_manager;+	}+++//! node manager prototype functions+///@{++	//! this attemps to refit the box set.+	SIMD_FORCE_INLINE void update()+	{+		refit();+	}++	//! this rebuild the entire set+	void buildSet();++	//! returns the indices of the primitives in the m_primitive_manager+	bool boxQuery(const btAABB & box, btAlignedObjectArray<int> & collided_results) const;++	//! returns the indices of the primitives in the m_primitive_manager+	SIMD_FORCE_INLINE bool boxQueryTrans(const btAABB & box,+		 const btTransform & transform, btAlignedObjectArray<int> & collided_results) const+	{+		btAABB transbox=box;+		transbox.appy_transform(transform);+		return boxQuery(transbox,collided_results);+	}++	//! returns the indices of the primitives in the m_primitive_manager+	bool rayQuery(+		const btVector3 & ray_dir,const btVector3 & ray_origin ,+		btAlignedObjectArray<int> & collided_results) const;++	//! tells if this set has hierarcht+	SIMD_FORCE_INLINE bool hasHierarchy() const+	{+		return true;+	}++	//! tells if this set is a trimesh+	SIMD_FORCE_INLINE bool isTrimesh()  const+	{+		return m_primitive_manager->is_trimesh();+	}++	//! node count+	SIMD_FORCE_INLINE int getNodeCount() const+	{+		return m_box_tree.getNodeCount();+	}++	//! tells if the node is a leaf+	SIMD_FORCE_INLINE bool isLeafNode(int nodeindex) const+	{+		return m_box_tree.isLeafNode(nodeindex);+	}++	SIMD_FORCE_INLINE int getNodeData(int nodeindex) const+	{+		return m_box_tree.getNodeData(nodeindex);+	}++	SIMD_FORCE_INLINE void getNodeBound(int nodeindex, btAABB & bound)  const+	{+		m_box_tree.getNodeBound(nodeindex, bound);+	}++	SIMD_FORCE_INLINE void setNodeBound(int nodeindex, const btAABB & bound)+	{+		m_box_tree.setNodeBound(nodeindex, bound);+	}+++	SIMD_FORCE_INLINE int getLeftNode(int nodeindex) const+	{+		return m_box_tree.getLeftNode(nodeindex);+	}++	SIMD_FORCE_INLINE int getRightNode(int nodeindex) const+	{+		return m_box_tree.getRightNode(nodeindex);+	}++	SIMD_FORCE_INLINE int getEscapeNodeIndex(int nodeindex) const+	{+		return m_box_tree.getEscapeNodeIndex(nodeindex);+	}++	SIMD_FORCE_INLINE void getNodeTriangle(int nodeindex,btPrimitiveTriangle & triangle) const+	{+		m_primitive_manager->get_primitive_triangle(getNodeData(nodeindex),triangle);+	}+++	SIMD_FORCE_INLINE const GIM_BVH_TREE_NODE * get_node_pointer(int index = 0) const+	{+		return m_box_tree.get_node_pointer(index);+	}++#ifdef TRI_COLLISION_PROFILING+	static float getAverageTreeCollisionTime();+#endif //TRI_COLLISION_PROFILING++	static void find_collision(btGImpactBvh * boxset1, const btTransform & trans1,+		btGImpactBvh * boxset2, const btTransform & trans2,+		btPairSet & collision_pairs);+};+++#endif // GIM_BOXPRUNING_H_INCLUDED
+ bullet/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h view
@@ -0,0 +1,306 @@+/*! \file btGImpactShape.h+\author Francisco Leon Najera+*/+/*+This source file is part of GIMPACT Library.++For the latest info, see http://gimpact.sourceforge.net/++Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371.+email: projectileman@yahoo.com+++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose,+including commercial applications, and to alter it and redistribute it freely,+subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_GIMPACT_BVH_CONCAVE_COLLISION_ALGORITHM_H+#define BT_GIMPACT_BVH_CONCAVE_COLLISION_ALGORITHM_H++#include "BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h"+#include "BulletCollision/BroadphaseCollision/btDispatcher.h"+#include "BulletCollision/BroadphaseCollision/btBroadphaseInterface.h"+#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h"+class btDispatcher;+#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h"+#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h"+#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h"++#include "LinearMath/btAlignedObjectArray.h"++#include "btGImpactShape.h"+#include "BulletCollision/CollisionShapes/btStaticPlaneShape.h"+#include "BulletCollision/CollisionShapes/btCompoundShape.h"+#include "BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h"+#include "LinearMath/btIDebugDraw.h"++++//! Collision Algorithm for GImpact Shapes+/*!+For register this algorithm in Bullet, proceed as following:+ \code+btCollisionDispatcher * dispatcher = static_cast<btCollisionDispatcher *>(m_dynamicsWorld ->getDispatcher());+btGImpactCollisionAlgorithm::registerAlgorithm(dispatcher);+ \endcode+*/+class btGImpactCollisionAlgorithm : public btActivatingCollisionAlgorithm+{+protected:+	btCollisionAlgorithm * m_convex_algorithm;+    btPersistentManifold * m_manifoldPtr;+	btManifoldResult* m_resultOut;+	const btDispatcherInfo * m_dispatchInfo;+	int m_triface0;+	int m_part0;+	int m_triface1;+	int m_part1;+++	//! Creates a new contact point+	SIMD_FORCE_INLINE btPersistentManifold* newContactManifold(btCollisionObject* body0,btCollisionObject* body1)+	{+		m_manifoldPtr = m_dispatcher->getNewManifold(body0,body1);+		return m_manifoldPtr;+	}++	SIMD_FORCE_INLINE void destroyConvexAlgorithm()+	{+		if(m_convex_algorithm)+		{+			m_convex_algorithm->~btCollisionAlgorithm();+			m_dispatcher->freeCollisionAlgorithm( m_convex_algorithm);+			m_convex_algorithm = NULL;+		}+	}++	SIMD_FORCE_INLINE void destroyContactManifolds()+	{+		if(m_manifoldPtr == NULL) return;+		m_dispatcher->releaseManifold(m_manifoldPtr);+		m_manifoldPtr = NULL;+	}++	SIMD_FORCE_INLINE void clearCache()+	{+		destroyContactManifolds();+		destroyConvexAlgorithm();++		m_triface0 = -1;+		m_part0 = -1;+		m_triface1 = -1;+		m_part1 = -1;+	}++	SIMD_FORCE_INLINE btPersistentManifold* getLastManifold()+	{+		return m_manifoldPtr;+	}+++	// Call before process collision+	SIMD_FORCE_INLINE void checkManifold(btCollisionObject* body0,btCollisionObject* body1)+	{+		if(getLastManifold() == 0)+		{+			newContactManifold(body0,body1);+		}++		m_resultOut->setPersistentManifold(getLastManifold());+	}++	// Call before process collision+	SIMD_FORCE_INLINE btCollisionAlgorithm * newAlgorithm(btCollisionObject* body0,btCollisionObject* body1)+	{+		checkManifold(body0,body1);++		btCollisionAlgorithm * convex_algorithm = m_dispatcher->findAlgorithm(+				body0,body1,getLastManifold());+		return convex_algorithm ;+	}++	// Call before process collision+	SIMD_FORCE_INLINE void checkConvexAlgorithm(btCollisionObject* body0,btCollisionObject* body1)+	{+		if(m_convex_algorithm) return;+		m_convex_algorithm = newAlgorithm(body0,body1);+	}+++++	void addContactPoint(btCollisionObject * body0,+					btCollisionObject * body1,+					const btVector3 & point,+					const btVector3 & normal,+					btScalar distance);++//! Collision routines+//!@{++	void collide_gjk_triangles(btCollisionObject * body0,+				  btCollisionObject * body1,+				  btGImpactMeshShapePart * shape0,+				  btGImpactMeshShapePart * shape1,+				  const int * pairs, int pair_count);++	void collide_sat_triangles(btCollisionObject * body0,+					  btCollisionObject * body1,+					  btGImpactMeshShapePart * shape0,+					  btGImpactMeshShapePart * shape1,+					  const int * pairs, int pair_count);+++++	void shape_vs_shape_collision(+					  btCollisionObject * body0,+					  btCollisionObject * body1,+					  btCollisionShape * shape0,+					  btCollisionShape * shape1);++	void convex_vs_convex_collision(btCollisionObject * body0,+					  btCollisionObject * body1,+					  btCollisionShape * shape0,+					  btCollisionShape * shape1);++++	void gimpact_vs_gimpact_find_pairs(+					  const btTransform & trans0,+					  const btTransform & trans1,+					  btGImpactShapeInterface * shape0,+					  btGImpactShapeInterface * shape1,btPairSet & pairset);++	void gimpact_vs_shape_find_pairs(+					  const btTransform & trans0,+					  const btTransform & trans1,+					  btGImpactShapeInterface * shape0,+					  btCollisionShape * shape1,+					  btAlignedObjectArray<int> & collided_primitives);+++	void gimpacttrimeshpart_vs_plane_collision(+					  btCollisionObject * body0,+					  btCollisionObject * body1,+					  btGImpactMeshShapePart * shape0,+					  btStaticPlaneShape * shape1,bool swapped);+++public:++	btGImpactCollisionAlgorithm( const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1);++	virtual ~btGImpactCollisionAlgorithm();++	virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);++	btScalar	calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);++	virtual	void	getAllContactManifolds(btManifoldArray&	manifoldArray)+	{+		if (m_manifoldPtr)+			manifoldArray.push_back(m_manifoldPtr);+	}+++	struct CreateFunc :public 	btCollisionAlgorithmCreateFunc+	{+		virtual	btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1)+		{+			void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btGImpactCollisionAlgorithm));+			return new(mem) btGImpactCollisionAlgorithm(ci,body0,body1);+		}+	};++	//! Use this function for register the algorithm externally+	static void registerAlgorithm(btCollisionDispatcher * dispatcher);+#ifdef TRI_COLLISION_PROFILING+	//! Gets the average time in miliseconds of tree collisions+	static float getAverageTreeCollisionTime();++	//! Gets the average time in miliseconds of triangle collisions+	static float getAverageTriangleCollisionTime();+#endif //TRI_COLLISION_PROFILING++	//! Collides two gimpact shapes+	/*!+	\pre shape0 and shape1 couldn't be btGImpactMeshShape objects+	*/+++	void gimpact_vs_gimpact(btCollisionObject * body0,+					  btCollisionObject * body1,+					  btGImpactShapeInterface * shape0,+					  btGImpactShapeInterface * shape1);++	void gimpact_vs_shape(btCollisionObject * body0,+					  btCollisionObject * body1,+					  btGImpactShapeInterface * shape0,+					  btCollisionShape * shape1,bool swapped);++	void gimpact_vs_compoundshape(btCollisionObject * body0,+					  btCollisionObject * body1,+					  btGImpactShapeInterface * shape0,+					  btCompoundShape * shape1,bool swapped);++	void gimpact_vs_concave(+					  btCollisionObject * body0,+					  btCollisionObject * body1,+					  btGImpactShapeInterface * shape0,+					  btConcaveShape * shape1,bool swapped);+++++		/// Accessor/Mutator pairs for Part and triangleID+    void 	setFace0(int value) +    { +    	m_triface0 = value; +    }+    int getFace0() +    { +    	return m_triface0; +    }+    void setFace1(int value) +    { +    	m_triface1 = value; +    }+    int getFace1() +    { +    	return m_triface1; +    }+    void setPart0(int value) +    { +    	m_part0 = value; +    }+    int getPart0() +    { +    	return m_part0; +    }+    void setPart1(int value) +    { +    	m_part1 = value; +		}+    int getPart1() +    { +    	return m_part1; +    }++};+++//algorithm details+//#define BULLET_TRIANGLE_COLLISION 1+#define GIMPACT_VS_PLANE_COLLISION 1++++#endif //BT_GIMPACT_BVH_CONCAVE_COLLISION_ALGORITHM_H
+ bullet/BulletCollision/Gimpact/btGImpactMassUtil.h view
@@ -0,0 +1,60 @@+/*! \file btGImpactMassUtil.h+\author Francisco Leon Najera+*/+/*+This source file is part of GIMPACT Library.++For the latest info, see http://gimpact.sourceforge.net/++Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371.+email: projectileman@yahoo.com+++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose,+including commercial applications, and to alter it and redistribute it freely,+subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+++#ifndef GIMPACT_MASS_UTIL_H+#define GIMPACT_MASS_UTIL_H++#include "LinearMath/btTransform.h"++++SIMD_FORCE_INLINE btVector3 gim_inertia_add_transformed(+	const btVector3 & source_inertia, const btVector3 & added_inertia, const btTransform & transform)+{+	btMatrix3x3  rotatedTensor = transform.getBasis().scaled(added_inertia) * transform.getBasis().transpose();++	btScalar x2 = transform.getOrigin()[0];+	x2*= x2;+	btScalar y2 = transform.getOrigin()[1];+	y2*= y2;+	btScalar z2 = transform.getOrigin()[2];+	z2*= z2;++	btScalar ix = rotatedTensor[0][0]*(y2+z2);+	btScalar iy = rotatedTensor[1][1]*(x2+z2);+	btScalar iz = rotatedTensor[2][2]*(x2+y2);++	return btVector3(source_inertia[0]+ix,source_inertia[1]+iy,source_inertia[2] + iz);+}++SIMD_FORCE_INLINE btVector3 gim_get_point_inertia(const btVector3 & point, btScalar mass)+{+	btScalar x2 = point[0]*point[0];+	btScalar y2 = point[1]*point[1];+	btScalar z2 = point[2]*point[2];+	return btVector3(mass*(y2+z2),mass*(x2+z2),mass*(x2+y2));+}+++#endif //GIMPACT_MESH_SHAPE_H
+ bullet/BulletCollision/Gimpact/btGImpactQuantizedBvh.h view
@@ -0,0 +1,372 @@+#ifndef GIM_QUANTIZED_SET_H_INCLUDED+#define GIM_QUANTIZED_SET_H_INCLUDED++/*! \file btGImpactQuantizedBvh.h+\author Francisco Leon Najera+*/+/*+This source file is part of GIMPACT Library.++For the latest info, see http://gimpact.sourceforge.net/++Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371.+email: projectileman@yahoo.com+++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose,+including commercial applications, and to alter it and redistribute it freely,+subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#include "btGImpactBvh.h"+#include "btQuantization.h"++++++///btQuantizedBvhNode is a compressed aabb node, 16 bytes.+///Node can be used for leafnode or internal node. Leafnodes can point to 32-bit triangle index (non-negative range).+ATTRIBUTE_ALIGNED16	(struct) BT_QUANTIZED_BVH_NODE+{+	//12 bytes+	unsigned short int	m_quantizedAabbMin[3];+	unsigned short int	m_quantizedAabbMax[3];+	//4 bytes+	int	m_escapeIndexOrDataIndex;++	BT_QUANTIZED_BVH_NODE()+	{+		m_escapeIndexOrDataIndex = 0;+	}++	SIMD_FORCE_INLINE bool isLeafNode() const+	{+		//skipindex is negative (internal node), triangleindex >=0 (leafnode)+		return (m_escapeIndexOrDataIndex>=0);+	}++	SIMD_FORCE_INLINE int getEscapeIndex() const+	{+		//btAssert(m_escapeIndexOrDataIndex < 0);+		return -m_escapeIndexOrDataIndex;+	}++	SIMD_FORCE_INLINE void setEscapeIndex(int index)+	{+		m_escapeIndexOrDataIndex = -index;+	}++	SIMD_FORCE_INLINE int getDataIndex() const+	{+		//btAssert(m_escapeIndexOrDataIndex >= 0);++		return m_escapeIndexOrDataIndex;+	}++	SIMD_FORCE_INLINE void setDataIndex(int index)+	{+		m_escapeIndexOrDataIndex = index;+	}++	SIMD_FORCE_INLINE bool testQuantizedBoxOverlapp(+		unsigned short * quantizedMin,unsigned short * quantizedMax) const+	{+		if(m_quantizedAabbMin[0] > quantizedMax[0] ||+		   m_quantizedAabbMax[0] < quantizedMin[0] ||+		   m_quantizedAabbMin[1] > quantizedMax[1] ||+		   m_quantizedAabbMax[1] < quantizedMin[1] ||+		   m_quantizedAabbMin[2] > quantizedMax[2] ||+		   m_quantizedAabbMax[2] < quantizedMin[2])+		{+			return false;+		}+		return true;+	}++};++++class GIM_QUANTIZED_BVH_NODE_ARRAY:public btAlignedObjectArray<BT_QUANTIZED_BVH_NODE>+{+};+++++//! Basic Box tree structure+class btQuantizedBvhTree+{+protected:+	int m_num_nodes;+	GIM_QUANTIZED_BVH_NODE_ARRAY m_node_array;+	btAABB m_global_bound;+	btVector3 m_bvhQuantization;+protected:+	void calc_quantization(GIM_BVH_DATA_ARRAY & primitive_boxes, btScalar boundMargin = btScalar(1.0) );++	int _sort_and_calc_splitting_index(+		GIM_BVH_DATA_ARRAY & primitive_boxes,+		 int startIndex,  int endIndex, int splitAxis);++	int _calc_splitting_axis(GIM_BVH_DATA_ARRAY & primitive_boxes, int startIndex,  int endIndex);++	void _build_sub_tree(GIM_BVH_DATA_ARRAY & primitive_boxes, int startIndex,  int endIndex);+public:+	btQuantizedBvhTree()+	{+		m_num_nodes = 0;+	}++	//! prototype functions for box tree management+	//!@{+	void build_tree(GIM_BVH_DATA_ARRAY & primitive_boxes);++	SIMD_FORCE_INLINE void quantizePoint(+		unsigned short * quantizedpoint, const btVector3 & point) const+	{+		bt_quantize_clamp(quantizedpoint,point,m_global_bound.m_min,m_global_bound.m_max,m_bvhQuantization);+	}+++	SIMD_FORCE_INLINE bool testQuantizedBoxOverlapp(+		int node_index,+		unsigned short * quantizedMin,unsigned short * quantizedMax) const+	{+		return m_node_array[node_index].testQuantizedBoxOverlapp(quantizedMin,quantizedMax);+	}++	SIMD_FORCE_INLINE void clearNodes()+	{+		m_node_array.clear();+		m_num_nodes = 0;+	}++	//! node count+	SIMD_FORCE_INLINE int getNodeCount() const+	{+		return m_num_nodes;+	}++	//! tells if the node is a leaf+	SIMD_FORCE_INLINE bool isLeafNode(int nodeindex) const+	{+		return m_node_array[nodeindex].isLeafNode();+	}++	SIMD_FORCE_INLINE int getNodeData(int nodeindex) const+	{+		return m_node_array[nodeindex].getDataIndex();+	}++	SIMD_FORCE_INLINE void getNodeBound(int nodeindex, btAABB & bound) const+	{+		bound.m_min = bt_unquantize(+			m_node_array[nodeindex].m_quantizedAabbMin,+			m_global_bound.m_min,m_bvhQuantization);++		bound.m_max = bt_unquantize(+			m_node_array[nodeindex].m_quantizedAabbMax,+			m_global_bound.m_min,m_bvhQuantization);+	}++	SIMD_FORCE_INLINE void setNodeBound(int nodeindex, const btAABB & bound)+	{+		bt_quantize_clamp(	m_node_array[nodeindex].m_quantizedAabbMin,+							bound.m_min,+							m_global_bound.m_min,+							m_global_bound.m_max,+							m_bvhQuantization);++		bt_quantize_clamp(	m_node_array[nodeindex].m_quantizedAabbMax,+							bound.m_max,+							m_global_bound.m_min,+							m_global_bound.m_max,+							m_bvhQuantization);+	}++	SIMD_FORCE_INLINE int getLeftNode(int nodeindex) const+	{+		return nodeindex+1;+	}++	SIMD_FORCE_INLINE int getRightNode(int nodeindex) const+	{+		if(m_node_array[nodeindex+1].isLeafNode()) return nodeindex+2;+		return nodeindex+1 + m_node_array[nodeindex+1].getEscapeIndex();+	}++	SIMD_FORCE_INLINE int getEscapeNodeIndex(int nodeindex) const+	{+		return m_node_array[nodeindex].getEscapeIndex();+	}++	SIMD_FORCE_INLINE const BT_QUANTIZED_BVH_NODE * get_node_pointer(int index = 0) const+	{+		return &m_node_array[index];+	}++	//!@}+};++++//! Structure for containing Boxes+/*!+This class offers an structure for managing a box tree of primitives.+Requires a Primitive prototype (like btPrimitiveManagerBase )+*/+class btGImpactQuantizedBvh+{+protected:+	btQuantizedBvhTree m_box_tree;+	btPrimitiveManagerBase * m_primitive_manager;++protected:+	//stackless refit+	void refit();+public:++	//! this constructor doesn't build the tree. you must call	buildSet+	btGImpactQuantizedBvh()+	{+		m_primitive_manager = NULL;+	}++	//! this constructor doesn't build the tree. you must call	buildSet+	btGImpactQuantizedBvh(btPrimitiveManagerBase * primitive_manager)+	{+		m_primitive_manager = primitive_manager;+	}++	SIMD_FORCE_INLINE btAABB getGlobalBox()  const+	{+		btAABB totalbox;+		getNodeBound(0, totalbox);+		return totalbox;+	}++	SIMD_FORCE_INLINE void setPrimitiveManager(btPrimitiveManagerBase * primitive_manager)+	{+		m_primitive_manager = primitive_manager;+	}++	SIMD_FORCE_INLINE btPrimitiveManagerBase * getPrimitiveManager() const+	{+		return m_primitive_manager;+	}+++//! node manager prototype functions+///@{++	//! this attemps to refit the box set.+	SIMD_FORCE_INLINE void update()+	{+		refit();+	}++	//! this rebuild the entire set+	void buildSet();++	//! returns the indices of the primitives in the m_primitive_manager+	bool boxQuery(const btAABB & box, btAlignedObjectArray<int> & collided_results) const;++	//! returns the indices of the primitives in the m_primitive_manager+	SIMD_FORCE_INLINE bool boxQueryTrans(const btAABB & box,+		 const btTransform & transform, btAlignedObjectArray<int> & collided_results) const+	{+		btAABB transbox=box;+		transbox.appy_transform(transform);+		return boxQuery(transbox,collided_results);+	}++	//! returns the indices of the primitives in the m_primitive_manager+	bool rayQuery(+		const btVector3 & ray_dir,const btVector3 & ray_origin ,+		btAlignedObjectArray<int> & collided_results) const;++	//! tells if this set has hierarcht+	SIMD_FORCE_INLINE bool hasHierarchy() const+	{+		return true;+	}++	//! tells if this set is a trimesh+	SIMD_FORCE_INLINE bool isTrimesh()  const+	{+		return m_primitive_manager->is_trimesh();+	}++	//! node count+	SIMD_FORCE_INLINE int getNodeCount() const+	{+		return m_box_tree.getNodeCount();+	}++	//! tells if the node is a leaf+	SIMD_FORCE_INLINE bool isLeafNode(int nodeindex) const+	{+		return m_box_tree.isLeafNode(nodeindex);+	}++	SIMD_FORCE_INLINE int getNodeData(int nodeindex) const+	{+		return m_box_tree.getNodeData(nodeindex);+	}++	SIMD_FORCE_INLINE void getNodeBound(int nodeindex, btAABB & bound)  const+	{+		m_box_tree.getNodeBound(nodeindex, bound);+	}++	SIMD_FORCE_INLINE void setNodeBound(int nodeindex, const btAABB & bound)+	{+		m_box_tree.setNodeBound(nodeindex, bound);+	}+++	SIMD_FORCE_INLINE int getLeftNode(int nodeindex) const+	{+		return m_box_tree.getLeftNode(nodeindex);+	}++	SIMD_FORCE_INLINE int getRightNode(int nodeindex) const+	{+		return m_box_tree.getRightNode(nodeindex);+	}++	SIMD_FORCE_INLINE int getEscapeNodeIndex(int nodeindex) const+	{+		return m_box_tree.getEscapeNodeIndex(nodeindex);+	}++	SIMD_FORCE_INLINE void getNodeTriangle(int nodeindex,btPrimitiveTriangle & triangle) const+	{+		m_primitive_manager->get_primitive_triangle(getNodeData(nodeindex),triangle);+	}+++	SIMD_FORCE_INLINE const BT_QUANTIZED_BVH_NODE * get_node_pointer(int index = 0) const+	{+		return m_box_tree.get_node_pointer(index);+	}++#ifdef TRI_COLLISION_PROFILING+	static float getAverageTreeCollisionTime();+#endif //TRI_COLLISION_PROFILING++	static void find_collision(btGImpactQuantizedBvh * boxset1, const btTransform & trans1,+		btGImpactQuantizedBvh * boxset2, const btTransform & trans2,+		btPairSet & collision_pairs);+};+++#endif // GIM_BOXPRUNING_H_INCLUDED
+ bullet/BulletCollision/Gimpact/btGImpactShape.h view
@@ -0,0 +1,1171 @@+/*! \file btGImpactShape.h+\author Francisco Len Nßjera+*/+/*+This source file is part of GIMPACT Library.++For the latest info, see http://gimpact.sourceforge.net/++Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371.+email: projectileman@yahoo.com+++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose,+including commercial applications, and to alter it and redistribute it freely,+subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+++#ifndef GIMPACT_SHAPE_H+#define GIMPACT_SHAPE_H++#include "BulletCollision/CollisionShapes/btCollisionShape.h"+#include "BulletCollision/CollisionShapes/btTriangleShape.h"+#include "BulletCollision/CollisionShapes/btStridingMeshInterface.h"+#include "BulletCollision/CollisionShapes/btCollisionMargin.h"+#include "BulletCollision/CollisionDispatch/btCollisionWorld.h"+#include "BulletCollision/CollisionShapes/btConcaveShape.h"+#include "BulletCollision/CollisionShapes/btTetrahedronShape.h"+#include "LinearMath/btVector3.h"+#include "LinearMath/btTransform.h"+#include "LinearMath/btMatrix3x3.h"+#include "LinearMath/btAlignedObjectArray.h"++#include "btGImpactQuantizedBvh.h" // box tree class+++//! declare Quantized trees, (you can change to float based trees)+typedef btGImpactQuantizedBvh btGImpactBoxSet;++enum eGIMPACT_SHAPE_TYPE+{+	CONST_GIMPACT_COMPOUND_SHAPE = 0,+	CONST_GIMPACT_TRIMESH_SHAPE_PART,+	CONST_GIMPACT_TRIMESH_SHAPE+};+++//! Helper class for tetrahedrons+class btTetrahedronShapeEx:public btBU_Simplex1to4+{+public:+	btTetrahedronShapeEx()+	{+		m_numVertices = 4;+	}+++	SIMD_FORCE_INLINE void setVertices(+		const btVector3 & v0,const btVector3 & v1,+		const btVector3 & v2,const btVector3 & v3)+	{+		m_vertices[0] = v0;+		m_vertices[1] = v1;+		m_vertices[2] = v2;+		m_vertices[3] = v3;+		recalcLocalAabb();+	}+};+++//! Base class for gimpact shapes+class btGImpactShapeInterface : public btConcaveShape+{+protected:+    btAABB m_localAABB;+    bool m_needs_update;+    btVector3  localScaling;+    btGImpactBoxSet m_box_set;// optionally boxset++	//! use this function for perfofm refit in bounding boxes+    //! use this function for perfofm refit in bounding boxes+    virtual void calcLocalAABB()+    {+		lockChildShapes();+    	if(m_box_set.getNodeCount() == 0)+    	{+    		m_box_set.buildSet();+    	}+    	else+    	{+    		m_box_set.update();+    	}+    	unlockChildShapes();++    	m_localAABB = m_box_set.getGlobalBox();+    }+++public:+	btGImpactShapeInterface()+	{+		m_shapeType=GIMPACT_SHAPE_PROXYTYPE;+		m_localAABB.invalidate();+		m_needs_update = true;+		localScaling.setValue(1.f,1.f,1.f);+	}+++	//! performs refit operation+	/*!+	Updates the entire Box set of this shape.+	\pre postUpdate() must be called for attemps to calculating the box set, else this function+		will does nothing.+	\post if m_needs_update == true, then it calls calcLocalAABB();+	*/+    SIMD_FORCE_INLINE void updateBound()+    {+    	if(!m_needs_update) return;+    	calcLocalAABB();+    	m_needs_update  = false;+    }++    //! If the Bounding box is not updated, then this class attemps to calculate it.+    /*!+    \post Calls updateBound() for update the box set.+    */+    void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const+    {+        btAABB transformedbox = m_localAABB;+        transformedbox.appy_transform(t);+        aabbMin = transformedbox.m_min;+        aabbMax = transformedbox.m_max;+    }++    //! Tells to this object that is needed to refit the box set+    virtual void postUpdate()+    {+    	m_needs_update = true;+    }++	//! Obtains the local box, which is the global calculated box of the total of subshapes+	SIMD_FORCE_INLINE const btAABB & getLocalBox()+	{+		return m_localAABB;+	}+++    virtual int	getShapeType() const+    {+        return GIMPACT_SHAPE_PROXYTYPE;+    }++    /*!+	\post You must call updateBound() for update the box set.+	*/+	virtual void	setLocalScaling(const btVector3& scaling)+	{+		localScaling = scaling;+		postUpdate();+	}++	virtual const btVector3& getLocalScaling() const+	{+		return localScaling;+	}+++	virtual void setMargin(btScalar margin)+    {+    	m_collisionMargin = margin;+    	int i = getNumChildShapes();+    	while(i--)+    	{+			btCollisionShape* child = getChildShape(i);+			child->setMargin(margin);+    	}++		m_needs_update = true;+    }+++	//! Subshape member functions+	//!@{++	//! Base method for determinig which kind of GIMPACT shape we get+	virtual eGIMPACT_SHAPE_TYPE getGImpactShapeType() const = 0 ;++	//! gets boxset+	SIMD_FORCE_INLINE btGImpactBoxSet * getBoxSet()+	{+		return &m_box_set;+	}++	//! Determines if this class has a hierarchy structure for sorting its primitives+	SIMD_FORCE_INLINE bool hasBoxSet()  const+	{+		if(m_box_set.getNodeCount() == 0) return false;+		return true;+	}++	//! Obtains the primitive manager+	virtual const btPrimitiveManagerBase * getPrimitiveManager()  const = 0;+++	//! Gets the number of children+	virtual int	getNumChildShapes() const  = 0;++	//! if true, then its children must get transforms.+	virtual bool childrenHasTransform() const = 0;++	//! Determines if this shape has triangles+	virtual bool needsRetrieveTriangles() const = 0;++	//! Determines if this shape has tetrahedrons+	virtual bool needsRetrieveTetrahedrons() const = 0;++	virtual void getBulletTriangle(int prim_index,btTriangleShapeEx & triangle) const = 0;++	virtual void getBulletTetrahedron(int prim_index,btTetrahedronShapeEx & tetrahedron) const = 0;++++	//! call when reading child shapes+	virtual void lockChildShapes() const+	{+	}++	virtual void unlockChildShapes() const+	{+	}++	//! if this trimesh+	SIMD_FORCE_INLINE void getPrimitiveTriangle(int index,btPrimitiveTriangle & triangle) const+	{+		getPrimitiveManager()->get_primitive_triangle(index,triangle);+	}+++	//! Retrieves the bound from a child+    /*!+    */+    virtual void getChildAabb(int child_index,const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const+    {+        btAABB child_aabb;+        getPrimitiveManager()->get_primitive_box(child_index,child_aabb);+        child_aabb.appy_transform(t);+        aabbMin = child_aabb.m_min;+        aabbMax = child_aabb.m_max;+    }++	//! Gets the children+	virtual btCollisionShape* getChildShape(int index) = 0;+++	//! Gets the child+	virtual const btCollisionShape* getChildShape(int index) const = 0;++	//! Gets the children transform+	virtual btTransform	getChildTransform(int index) const = 0;++	//! Sets the children transform+	/*!+	\post You must call updateBound() for update the box set.+	*/+	virtual void setChildTransform(int index, const btTransform & transform) = 0;++	//!@}+++	//! virtual method for ray collision+	virtual void rayTest(const btVector3& rayFrom, const btVector3& rayTo, btCollisionWorld::RayResultCallback& resultCallback)  const+	{+        (void) rayFrom; (void) rayTo; (void) resultCallback;+	}++	//! Function for retrieve triangles.+	/*!+	It gives the triangles in local space+	*/+	virtual void	processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const+	{+        (void) callback; (void) aabbMin; (void) aabbMax;+	}++	//!@}++};+++//! btGImpactCompoundShape allows to handle multiple btCollisionShape objects at once+/*!+This class only can manage Convex subshapes+*/+class btGImpactCompoundShape	: public btGImpactShapeInterface+{+public:+	//! compound primitive manager+	class CompoundPrimitiveManager:public btPrimitiveManagerBase+	{+	public:+		virtual ~CompoundPrimitiveManager() {}+		btGImpactCompoundShape * m_compoundShape;+++		CompoundPrimitiveManager(const CompoundPrimitiveManager& compound)+            : btPrimitiveManagerBase()+		{+			m_compoundShape = compound.m_compoundShape;+		}++		CompoundPrimitiveManager(btGImpactCompoundShape * compoundShape)+		{+			m_compoundShape = compoundShape;+		}++		CompoundPrimitiveManager()+		{+			m_compoundShape = NULL;+		}++		virtual bool is_trimesh() const+		{+			return false;+		}++		virtual int get_primitive_count() const+		{+			return (int )m_compoundShape->getNumChildShapes();+		}++		virtual void get_primitive_box(int prim_index ,btAABB & primbox) const+		{+			btTransform prim_trans;+			if(m_compoundShape->childrenHasTransform())+			{+				prim_trans = m_compoundShape->getChildTransform(prim_index);+			}+			else+			{+				prim_trans.setIdentity();+			}+			const btCollisionShape* shape = m_compoundShape->getChildShape(prim_index);+			shape->getAabb(prim_trans,primbox.m_min,primbox.m_max);+		}++		virtual void get_primitive_triangle(int prim_index,btPrimitiveTriangle & triangle) const+		{+			btAssert(0);+            (void) prim_index; (void) triangle;+		}++	};++++protected:+	CompoundPrimitiveManager m_primitive_manager;+	btAlignedObjectArray<btTransform>		m_childTransforms;+	btAlignedObjectArray<btCollisionShape*>	m_childShapes;+++public:++	btGImpactCompoundShape(bool children_has_transform = true)+	{+        (void) children_has_transform;+		m_primitive_manager.m_compoundShape = this;+		m_box_set.setPrimitiveManager(&m_primitive_manager);+	}++	virtual ~btGImpactCompoundShape()+	{+	}+++	//! if true, then its children must get transforms.+	virtual bool childrenHasTransform() const+	{+		if(m_childTransforms.size()==0) return false;+		return true;+	}+++	//! Obtains the primitive manager+	virtual const btPrimitiveManagerBase * getPrimitiveManager()  const+	{+		return &m_primitive_manager;+	}++	//! Obtains the compopund primitive manager+	SIMD_FORCE_INLINE CompoundPrimitiveManager * getCompoundPrimitiveManager()+	{+		return &m_primitive_manager;+	}++	//! Gets the number of children+	virtual int	getNumChildShapes() const+	{+		return m_childShapes.size();+	}+++	//! Use this method for adding children. Only Convex shapes are allowed.+	void addChildShape(const btTransform& localTransform,btCollisionShape* shape)+	{+		btAssert(shape->isConvex());+		m_childTransforms.push_back(localTransform);+		m_childShapes.push_back(shape);+	}++	//! Use this method for adding children. Only Convex shapes are allowed.+	void addChildShape(btCollisionShape* shape)+	{+		btAssert(shape->isConvex());+		m_childShapes.push_back(shape);+	}++	//! Gets the children+	virtual btCollisionShape* getChildShape(int index)+	{+		return m_childShapes[index];+	}++	//! Gets the children+	virtual const btCollisionShape* getChildShape(int index) const+	{+		return m_childShapes[index];+	}++	//! Retrieves the bound from a child+    /*!+    */+    virtual void getChildAabb(int child_index,const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const+    {++    	if(childrenHasTransform())+    	{+    		m_childShapes[child_index]->getAabb(t*m_childTransforms[child_index],aabbMin,aabbMax);+    	}+    	else+    	{+    		m_childShapes[child_index]->getAabb(t,aabbMin,aabbMax);+    	}+    }+++	//! Gets the children transform+	virtual btTransform	getChildTransform(int index) const+	{+		btAssert(m_childTransforms.size() == m_childShapes.size());+		return m_childTransforms[index];+	}++	//! Sets the children transform+	/*!+	\post You must call updateBound() for update the box set.+	*/+	virtual void setChildTransform(int index, const btTransform & transform)+	{+		btAssert(m_childTransforms.size() == m_childShapes.size());+		m_childTransforms[index] = transform;+		postUpdate();+	}++	//! Determines if this shape has triangles+	virtual bool needsRetrieveTriangles() const+	{+		return false;+	}++	//! Determines if this shape has tetrahedrons+	virtual bool needsRetrieveTetrahedrons() const+	{+		return false;+	}+++	virtual void getBulletTriangle(int prim_index,btTriangleShapeEx & triangle) const+	{+        (void) prim_index; (void) triangle;+		btAssert(0);+	}++	virtual void getBulletTetrahedron(int prim_index,btTetrahedronShapeEx & tetrahedron) const+	{+        (void) prim_index; (void) tetrahedron;+		btAssert(0);+	}+++	//! Calculates the exact inertia tensor for this shape+	virtual void	calculateLocalInertia(btScalar mass,btVector3& inertia) const;++	virtual const char*	getName()const+	{+		return "GImpactCompound";+	}++	virtual eGIMPACT_SHAPE_TYPE getGImpactShapeType() const+	{+		return CONST_GIMPACT_COMPOUND_SHAPE;+	}++};++++//! This class manages a sub part of a mesh supplied by the btStridingMeshInterface interface.+/*!+- Simply create this shape by passing the btStridingMeshInterface to the constructor btGImpactMeshShapePart, then you must call updateBound() after creating the mesh+- When making operations with this shape, you must call <b>lock</b> before accessing to the trimesh primitives, and then call <b>unlock</b>+- You can handle deformable meshes with this shape, by calling postUpdate() every time when changing the mesh vertices.++*/+class btGImpactMeshShapePart : public btGImpactShapeInterface+{+public:+	//! Trimesh primitive manager+	/*!+	Manages the info from btStridingMeshInterface object and controls the Lock/Unlock mechanism+	*/+	class TrimeshPrimitiveManager:public btPrimitiveManagerBase+	{+	public:+		btScalar m_margin;+		btStridingMeshInterface * m_meshInterface;+		btVector3 m_scale;+		int m_part;+		int m_lock_count;+		const unsigned char *vertexbase;+		int numverts;+		PHY_ScalarType type;+		int stride;+		const unsigned char *indexbase;+		int indexstride;+		int  numfaces;+		PHY_ScalarType indicestype;++		TrimeshPrimitiveManager()+		{+			m_meshInterface = NULL;+			m_part = 0;+			m_margin = 0.01f;+			m_scale = btVector3(1.f,1.f,1.f);+			m_lock_count = 0;+			vertexbase = 0;+			numverts = 0;+			stride = 0;+			indexbase = 0;+			indexstride = 0;+			numfaces = 0;+		}++ 		TrimeshPrimitiveManager(const TrimeshPrimitiveManager & manager)+            : btPrimitiveManagerBase()+		{+			m_meshInterface = manager.m_meshInterface;+			m_part = manager.m_part;+			m_margin = manager.m_margin;+			m_scale = manager.m_scale;+			m_lock_count = 0;+			vertexbase = 0;+			numverts = 0;+			stride = 0;+			indexbase = 0;+			indexstride = 0;+			numfaces = 0;++		}++		TrimeshPrimitiveManager(+			btStridingMeshInterface * meshInterface,	int part)+		{+			m_meshInterface = meshInterface;+			m_part = part;+			m_scale = m_meshInterface->getScaling();+			m_margin = 0.1f;+			m_lock_count = 0;+			vertexbase = 0;+			numverts = 0;+			stride = 0;+			indexbase = 0;+			indexstride = 0;+			numfaces = 0;++		}++		virtual ~TrimeshPrimitiveManager() {}++		void lock()+		{+			if(m_lock_count>0)+			{+				m_lock_count++;+				return;+			}+			m_meshInterface->getLockedReadOnlyVertexIndexBase(+				&vertexbase,numverts,+				type, stride,&indexbase, indexstride, numfaces,indicestype,m_part);++			m_lock_count = 1;+		}++		void unlock()+		{+			if(m_lock_count == 0) return;+			if(m_lock_count>1)+			{+				--m_lock_count;+				return;+			}+			m_meshInterface->unLockReadOnlyVertexBase(m_part);+			vertexbase = NULL;+			m_lock_count = 0;+		}++		virtual bool is_trimesh() const+		{+			return true;+		}++		virtual int get_primitive_count() const+		{+			return (int )numfaces;+		}++		SIMD_FORCE_INLINE int get_vertex_count() const+		{+			return (int )numverts;+		}++		SIMD_FORCE_INLINE void get_indices(int face_index,int &i0,int &i1,int &i2) const+		{+			if(indicestype == PHY_SHORT)+			{+				short * s_indices = (short *)(indexbase + face_index*indexstride);+				i0 = s_indices[0];+				i1 = s_indices[1];+				i2 = s_indices[2];+			}+			else+			{+				int * i_indices = (int *)(indexbase + face_index*indexstride);+				i0 = i_indices[0];+				i1 = i_indices[1];+				i2 = i_indices[2];+			}+		}++		SIMD_FORCE_INLINE void get_vertex(int vertex_index, btVector3 & vertex) const+		{+			if(type == PHY_DOUBLE)+			{+				double * dvertices = (double *)(vertexbase + vertex_index*stride);+				vertex[0] = btScalar(dvertices[0]*m_scale[0]);+				vertex[1] = btScalar(dvertices[1]*m_scale[1]);+				vertex[2] = btScalar(dvertices[2]*m_scale[2]);+			}+			else+			{+				float * svertices = (float *)(vertexbase + vertex_index*stride);+				vertex[0] = svertices[0]*m_scale[0];+				vertex[1] = svertices[1]*m_scale[1];+				vertex[2] = svertices[2]*m_scale[2];+			}+		}++		virtual void get_primitive_box(int prim_index ,btAABB & primbox) const+		{+			btPrimitiveTriangle  triangle;+			get_primitive_triangle(prim_index,triangle);+			primbox.calc_from_triangle_margin(+				triangle.m_vertices[0],+				triangle.m_vertices[1],triangle.m_vertices[2],triangle.m_margin);+		}++		virtual void get_primitive_triangle(int prim_index,btPrimitiveTriangle & triangle) const+		{+			int indices[3];+			get_indices(prim_index,indices[0],indices[1],indices[2]);+			get_vertex(indices[0],triangle.m_vertices[0]);+			get_vertex(indices[1],triangle.m_vertices[1]);+			get_vertex(indices[2],triangle.m_vertices[2]);+			triangle.m_margin = m_margin;+		}++		SIMD_FORCE_INLINE void get_bullet_triangle(int prim_index,btTriangleShapeEx & triangle) const+		{+			int indices[3];+			get_indices(prim_index,indices[0],indices[1],indices[2]);+			get_vertex(indices[0],triangle.m_vertices1[0]);+			get_vertex(indices[1],triangle.m_vertices1[1]);+			get_vertex(indices[2],triangle.m_vertices1[2]);+			triangle.setMargin(m_margin);+		}++	};+++protected:+	TrimeshPrimitiveManager m_primitive_manager;+public:++	btGImpactMeshShapePart()+	{+		m_box_set.setPrimitiveManager(&m_primitive_manager);+	}+++	btGImpactMeshShapePart(btStridingMeshInterface * meshInterface,	int part)+	{+		m_primitive_manager.m_meshInterface = meshInterface;+		m_primitive_manager.m_part = part;+		m_box_set.setPrimitiveManager(&m_primitive_manager);+	}++	virtual ~btGImpactMeshShapePart()+	{+	}++	//! if true, then its children must get transforms.+	virtual bool childrenHasTransform() const+	{+		return false;+	}+++	//! call when reading child shapes+	virtual void lockChildShapes() const+	{+		void * dummy = (void*)(m_box_set.getPrimitiveManager());+		TrimeshPrimitiveManager * dummymanager = static_cast<TrimeshPrimitiveManager *>(dummy);+		dummymanager->lock();+	}++	virtual void unlockChildShapes()  const+	{+		void * dummy = (void*)(m_box_set.getPrimitiveManager());+		TrimeshPrimitiveManager * dummymanager = static_cast<TrimeshPrimitiveManager *>(dummy);+		dummymanager->unlock();+	}++	//! Gets the number of children+	virtual int	getNumChildShapes() const+	{+		return m_primitive_manager.get_primitive_count();+	}+++	//! Gets the children+	virtual btCollisionShape* getChildShape(int index)+	{+        (void) index;+		btAssert(0);+		return NULL;+	}++++	//! Gets the child+	virtual const btCollisionShape* getChildShape(int index) const+	{+        (void) index;+		btAssert(0);+		return NULL;+	}++	//! Gets the children transform+	virtual btTransform	getChildTransform(int index) const+	{+        (void) index;+		btAssert(0);+		return btTransform();+	}++	//! Sets the children transform+	/*!+	\post You must call updateBound() for update the box set.+	*/+	virtual void setChildTransform(int index, const btTransform & transform)+	{+        (void) index;+        (void) transform;+		btAssert(0);+	}+++	//! Obtains the primitive manager+	virtual const btPrimitiveManagerBase * getPrimitiveManager()  const+	{+		return &m_primitive_manager;+	}++	SIMD_FORCE_INLINE TrimeshPrimitiveManager * getTrimeshPrimitiveManager()+	{+		return &m_primitive_manager;+	}++++++	virtual void	calculateLocalInertia(btScalar mass,btVector3& inertia) const;+++++	virtual const char*	getName()const+	{+		return "GImpactMeshShapePart";+	}++	virtual eGIMPACT_SHAPE_TYPE getGImpactShapeType() const+	{+		return CONST_GIMPACT_TRIMESH_SHAPE_PART;+	}++	//! Determines if this shape has triangles+	virtual bool needsRetrieveTriangles() const+	{+		return true;+	}++	//! Determines if this shape has tetrahedrons+	virtual bool needsRetrieveTetrahedrons() const+	{+		return false;+	}++	virtual void getBulletTriangle(int prim_index,btTriangleShapeEx & triangle) const+	{+		m_primitive_manager.get_bullet_triangle(prim_index,triangle);+	}++	virtual void getBulletTetrahedron(int prim_index,btTetrahedronShapeEx & tetrahedron) const+	{+        (void) prim_index;+        (void) tetrahedron;+		btAssert(0);+	}++++	SIMD_FORCE_INLINE int getVertexCount() const+	{+		return m_primitive_manager.get_vertex_count();+	}++	SIMD_FORCE_INLINE void getVertex(int vertex_index, btVector3 & vertex) const+	{+		m_primitive_manager.get_vertex(vertex_index,vertex);+	}++	SIMD_FORCE_INLINE void setMargin(btScalar margin)+    {+    	m_primitive_manager.m_margin = margin;+    	postUpdate();+    }++    SIMD_FORCE_INLINE btScalar getMargin() const+    {+    	return m_primitive_manager.m_margin;+    }++    virtual void	setLocalScaling(const btVector3& scaling)+    {+    	m_primitive_manager.m_scale = scaling;+    	postUpdate();+    }++    virtual const btVector3& getLocalScaling() const+    {+    	return m_primitive_manager.m_scale;+    }++    SIMD_FORCE_INLINE int getPart() const+    {+    	return (int)m_primitive_manager.m_part;+    }++	virtual void	processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const;+};+++//! This class manages a mesh supplied by the btStridingMeshInterface interface.+/*!+Set of btGImpactMeshShapePart parts+- Simply create this shape by passing the btStridingMeshInterface to the constructor btGImpactMeshShape, then you must call updateBound() after creating the mesh++- You can handle deformable meshes with this shape, by calling postUpdate() every time when changing the mesh vertices.++*/+class btGImpactMeshShape : public btGImpactShapeInterface+{+	btStridingMeshInterface* m_meshInterface;++protected:+	btAlignedObjectArray<btGImpactMeshShapePart*> m_mesh_parts;+	void buildMeshParts(btStridingMeshInterface * meshInterface)+	{+		for (int i=0;i<meshInterface->getNumSubParts() ;++i )+		{+			btGImpactMeshShapePart * newpart = new btGImpactMeshShapePart(meshInterface,i);+			m_mesh_parts.push_back(newpart);+		}+	}++	//! use this function for perfofm refit in bounding boxes+    virtual void calcLocalAABB()+    {+    	m_localAABB.invalidate();+    	int i = m_mesh_parts.size();+    	while(i--)+    	{+    		m_mesh_parts[i]->updateBound();+    		m_localAABB.merge(m_mesh_parts[i]->getLocalBox());+    	}+    }++public:+	btGImpactMeshShape(btStridingMeshInterface * meshInterface)+	{+		m_meshInterface = meshInterface;+		buildMeshParts(meshInterface);+	}++	virtual ~btGImpactMeshShape()+	{+		int i = m_mesh_parts.size();+    	while(i--)+    	{+			btGImpactMeshShapePart * part = m_mesh_parts[i];+			delete part;+    	}+		m_mesh_parts.clear();+	}+++	btStridingMeshInterface* getMeshInterface()+	{+		return m_meshInterface;+	}++	const btStridingMeshInterface* getMeshInterface() const+	{+		return m_meshInterface;+	}++	int getMeshPartCount() const+	{+		return m_mesh_parts.size();+	}++	btGImpactMeshShapePart * getMeshPart(int index)+	{+		return m_mesh_parts[index];+	}++++	const btGImpactMeshShapePart * getMeshPart(int index) const+	{+		return m_mesh_parts[index];+	}+++	virtual void	setLocalScaling(const btVector3& scaling)+	{+		localScaling = scaling;++		int i = m_mesh_parts.size();+    	while(i--)+    	{+			btGImpactMeshShapePart * part = m_mesh_parts[i];+			part->setLocalScaling(scaling);+    	}++		m_needs_update = true;+	}++	virtual void setMargin(btScalar margin)+    {+    	m_collisionMargin = margin;++		int i = m_mesh_parts.size();+    	while(i--)+    	{+			btGImpactMeshShapePart * part = m_mesh_parts[i];+			part->setMargin(margin);+    	}++		m_needs_update = true;+    }++	//! Tells to this object that is needed to refit all the meshes+    virtual void postUpdate()+    {+		int i = m_mesh_parts.size();+    	while(i--)+    	{+			btGImpactMeshShapePart * part = m_mesh_parts[i];+			part->postUpdate();+    	}++    	m_needs_update = true;+    }++	virtual void	calculateLocalInertia(btScalar mass,btVector3& inertia) const;+++	//! Obtains the primitive manager+	virtual const btPrimitiveManagerBase * getPrimitiveManager()  const+	{+		btAssert(0);+		return NULL;+	}+++	//! Gets the number of children+	virtual int	getNumChildShapes() const+	{+		btAssert(0);+		return 0;+	}+++	//! if true, then its children must get transforms.+	virtual bool childrenHasTransform() const+	{+		btAssert(0);+		return false;+	}++	//! Determines if this shape has triangles+	virtual bool needsRetrieveTriangles() const+	{+		btAssert(0);+		return false;+	}++	//! Determines if this shape has tetrahedrons+	virtual bool needsRetrieveTetrahedrons() const+	{+		btAssert(0);+		return false;+	}++	virtual void getBulletTriangle(int prim_index,btTriangleShapeEx & triangle) const+	{+        (void) prim_index; (void) triangle;+		btAssert(0);+	}++	virtual void getBulletTetrahedron(int prim_index,btTetrahedronShapeEx & tetrahedron) const+	{+        (void) prim_index; (void) tetrahedron;+		btAssert(0);+	}++	//! call when reading child shapes+	virtual void lockChildShapes() const+	{+		btAssert(0);+	}++	virtual void unlockChildShapes() const+	{+		btAssert(0);+	}+++++	//! Retrieves the bound from a child+    /*!+    */+    virtual void getChildAabb(int child_index,const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const+    {+        (void) child_index; (void) t; (void) aabbMin; (void) aabbMax;+        btAssert(0);+    }++	//! Gets the children+	virtual btCollisionShape* getChildShape(int index)+	{+        (void) index;+		btAssert(0);+		return NULL;+	}+++	//! Gets the child+	virtual const btCollisionShape* getChildShape(int index) const+	{+        (void) index;+		btAssert(0);+		return NULL;+	}++	//! Gets the children transform+	virtual btTransform	getChildTransform(int index) const+	{+        (void) index;+		btAssert(0);+		return btTransform();+	}++	//! Sets the children transform+	/*!+	\post You must call updateBound() for update the box set.+	*/+	virtual void setChildTransform(int index, const btTransform & transform)+	{+        (void) index; (void) transform;+		btAssert(0);+	}+++	virtual eGIMPACT_SHAPE_TYPE getGImpactShapeType() const+	{+		return CONST_GIMPACT_TRIMESH_SHAPE;+	}+++	virtual const char*	getName()const+	{+		return "GImpactMesh";+	}++	virtual void rayTest(const btVector3& rayFrom, const btVector3& rayTo, btCollisionWorld::RayResultCallback& resultCallback)  const;++	//! Function for retrieve triangles.+	/*!+	It gives the triangles in local space+	*/+	virtual void	processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const;++	virtual	int	calculateSerializeBufferSize() const;++	///fills the dataBuffer and returns the struct name (and 0 on failure)+	virtual	const char*	serialize(void* dataBuffer, btSerializer* serializer) const;++};++///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64+struct	btGImpactMeshShapeData+{+	btCollisionShapeData	m_collisionShapeData;++	btStridingMeshInterfaceData m_meshInterface;++	btVector3FloatData	m_localScaling;++	float	m_collisionMargin;++	int		m_gimpactSubType;+};++SIMD_FORCE_INLINE	int	btGImpactMeshShape::calculateSerializeBufferSize() const+{+	return sizeof(btGImpactMeshShapeData);+}+++#endif //GIMPACT_MESH_SHAPE_H
+ bullet/BulletCollision/Gimpact/btGenericPoolAllocator.h view
@@ -0,0 +1,163 @@+/*! \file btGenericPoolAllocator.h+\author Francisco Leon Najera. email projectileman@yahoo.com++General purpose allocator class+*/+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose,+including commercial applications, and to alter it and redistribute it freely,+subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_GENERIC_POOL_ALLOCATOR_H+#define BT_GENERIC_POOL_ALLOCATOR_H++#include <limits.h>+#include <stdio.h>+#include <string.h>+#include "LinearMath/btAlignedAllocator.h"++#define BT_UINT_MAX UINT_MAX+#define BT_DEFAULT_MAX_POOLS 16+++//! Generic Pool class+class btGenericMemoryPool+{+public:+	unsigned char * m_pool; //[m_element_size*m_max_element_count];+	size_t * m_free_nodes; //[m_max_element_count];//! free nodes+	size_t * m_allocated_sizes;//[m_max_element_count];//! Number of elements allocated per node+	size_t m_allocated_count;+	size_t m_free_nodes_count;+protected:+	size_t m_element_size;+	size_t m_max_element_count;++	size_t allocate_from_free_nodes(size_t num_elements);+	size_t allocate_from_pool(size_t num_elements);++public:++	void init_pool(size_t element_size, size_t element_count);++	void end_pool();+++	btGenericMemoryPool(size_t element_size, size_t element_count)+	{+		init_pool(element_size, element_count);+	}++	~btGenericMemoryPool()+	{+		end_pool();+	}+++	inline size_t get_pool_capacity()+	{+		return m_element_size*m_max_element_count;+	}++	inline size_t gem_element_size()+	{+		return m_element_size;+	}++	inline size_t get_max_element_count()+	{+		return m_max_element_count;+	}++	inline size_t get_allocated_count()+	{+		return m_allocated_count;+	}++	inline size_t get_free_positions_count()+	{+		return m_free_nodes_count;+	}++	inline void * get_element_data(size_t element_index)+	{+		return &m_pool[element_index*m_element_size];+	}++	//! Allocates memory in pool+	/*!+	\param size_bytes size in bytes of the buffer+	*/+	void * allocate(size_t size_bytes);++	bool freeMemory(void * pointer);+};+++++//! Generic Allocator with pools+/*!+General purpose Allocator which can create Memory Pools dynamiacally as needed.+*/+class btGenericPoolAllocator+{+protected:+	size_t m_pool_element_size;+	size_t m_pool_element_count;+public:+	btGenericMemoryPool * m_pools[BT_DEFAULT_MAX_POOLS];+	size_t m_pool_count;+++	inline size_t get_pool_capacity()+	{+		return m_pool_element_size*m_pool_element_count;+	}+++protected:+	// creates a pool+	btGenericMemoryPool * push_new_pool();++	void * failback_alloc(size_t size_bytes);++	bool failback_free(void * pointer);+public:++	btGenericPoolAllocator(size_t pool_element_size, size_t pool_element_count)+	{+		m_pool_count = 0;+		m_pool_element_size = pool_element_size;+		m_pool_element_count = pool_element_count;+	}++	virtual ~btGenericPoolAllocator();++	//! Allocates memory in pool+	/*!+	\param size_bytes size in bytes of the buffer+	*/+	void * allocate(size_t size_bytes);++	bool freeMemory(void * pointer);+};++++void * btPoolAlloc(size_t size);+void * btPoolRealloc(void *ptr, size_t oldsize, size_t newsize);+void btPoolFree(void *ptr);+++#endif
+ bullet/BulletCollision/Gimpact/btGeometryOperations.h view
@@ -0,0 +1,212 @@+#ifndef BT_BASIC_GEOMETRY_OPERATIONS_H_INCLUDED+#define BT_BASIC_GEOMETRY_OPERATIONS_H_INCLUDED++/*! \file btGeometryOperations.h+*\author Francisco Leon Najera++*/+/*+This source file is part of GIMPACT Library.++For the latest info, see http://gimpact.sourceforge.net/++Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371.+email: projectileman@yahoo.com+++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose,+including commercial applications, and to alter it and redistribute it freely,+subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#include "btBoxCollision.h"++++++#define PLANEDIREPSILON 0.0000001f+#define PARALELENORMALS 0.000001f+++#define BT_CLAMP(number,minval,maxval) (number<minval?minval:(number>maxval?maxval:number))++/// Calc a plane from a triangle edge an a normal. plane is a vec4f+SIMD_FORCE_INLINE void bt_edge_plane(const btVector3 & e1,const btVector3 &  e2, const btVector3 & normal,btVector4 & plane)+{+	btVector3 planenormal = (e2-e1).cross(normal);+	planenormal.normalize();+	plane.setValue(planenormal[0],planenormal[1],planenormal[2],e2.dot(planenormal));+}++++//***************** SEGMENT and LINE FUNCTIONS **********************************///++/*! Finds the closest point(cp) to (v) on a segment (e1,e2)+ */+SIMD_FORCE_INLINE void bt_closest_point_on_segment(+	btVector3 & cp, const btVector3 & v,+	const btVector3  &e1,const btVector3 &e2)+{+    btVector3 n = e2-e1;+    cp = v - e1;+	btScalar _scalar = cp.dot(n)/n.dot(n);+	if(_scalar <0.0f)+	{+	    cp = e1;+	}+	else if(_scalar >1.0f)+	{+	    cp = e2;+	}+	else+	{+		cp = _scalar*n + e1;+	}+}+++//! line plane collision+/*!+*\return+	-0  if the ray never intersects+	-1 if the ray collides in front+	-2 if the ray collides in back+*/++SIMD_FORCE_INLINE int bt_line_plane_collision(+	const btVector4 & plane,+	const btVector3 & vDir,+	const btVector3 & vPoint,+	btVector3 & pout,+	btScalar &tparam,+	btScalar tmin, btScalar tmax)+{++	btScalar _dotdir = vDir.dot(plane);++	if(btFabs(_dotdir)<PLANEDIREPSILON)+	{+		tparam = tmax;+	    return 0;+	}++	btScalar _dis = bt_distance_point_plane(plane,vPoint);+	char returnvalue = _dis<0.0f? 2:1;+	tparam = -_dis/_dotdir;++	if(tparam<tmin)+	{+		returnvalue = 0;+		tparam = tmin;+	}+	else if(tparam>tmax)+	{+		returnvalue = 0;+		tparam = tmax;+	}+	pout = tparam*vDir + vPoint;+	return returnvalue;+}+++//! Find closest points on segments+SIMD_FORCE_INLINE void bt_segment_collision(+	const btVector3 & vA1,+	const btVector3 & vA2,+	const btVector3 & vB1,+	const btVector3 & vB2,+	btVector3 & vPointA,+	btVector3 & vPointB)+{+    btVector3 AD = vA2 - vA1;+    btVector3 BD = vB2 - vB1;+    btVector3 N = AD.cross(BD);+    btScalar tp = N.length2();++    btVector4 _M;//plane++    if(tp<SIMD_EPSILON)//ARE PARALELE+    {+    	//project B over A+    	bool invert_b_order = false;+    	_M[0] = vB1.dot(AD);+    	_M[1] = vB2.dot(AD);++    	if(_M[0]>_M[1])+    	{+    		invert_b_order  = true;+    		BT_SWAP_NUMBERS(_M[0],_M[1]);+    	}+    	_M[2] = vA1.dot(AD);+    	_M[3] = vA2.dot(AD);+    	//mid points+    	N[0] = (_M[0]+_M[1])*0.5f;+    	N[1] = (_M[2]+_M[3])*0.5f;++    	if(N[0]<N[1])+    	{+    		if(_M[1]<_M[2])+    		{+    			vPointB = invert_b_order?vB1:vB2;+    			vPointA = vA1;+    		}+    		else if(_M[1]<_M[3])+    		{+    			vPointB = invert_b_order?vB1:vB2;+    			bt_closest_point_on_segment(vPointA,vPointB,vA1,vA2);+    		}+    		else+    		{+    			vPointA = vA2;+    			bt_closest_point_on_segment(vPointB,vPointA,vB1,vB2);+    		}+    	}+    	else+    	{+    		if(_M[3]<_M[0])+    		{+    			vPointB = invert_b_order?vB2:vB1;+    			vPointA = vA2;+    		}+    		else if(_M[3]<_M[1])+    		{+    			vPointA = vA2;+    			bt_closest_point_on_segment(vPointB,vPointA,vB1,vB2);+    		}+    		else+    		{+    			vPointB = invert_b_order?vB1:vB2;+    			bt_closest_point_on_segment(vPointA,vPointB,vA1,vA2);+    		}+    	}+    	return;+    }++    N = N.cross(BD);+    _M.setValue(N[0],N[1],N[2],vB1.dot(N));++	// get point A as the plane collision point+    bt_line_plane_collision(_M,AD,vA1,vPointA,tp,btScalar(0), btScalar(1));++    /*Closest point on segment*/+    vPointB = vPointA - vB1;+	tp = vPointB.dot(BD);+	tp/= BD.dot(BD);+	tp = BT_CLAMP(tp,0.0f,1.0f);++	vPointB = tp*BD + vB1;+}++++++#endif // GIM_VECTOR_H_INCLUDED
+ bullet/BulletCollision/Gimpact/btQuantization.h view
@@ -0,0 +1,88 @@+#ifndef BT_GIMPACT_QUANTIZATION_H_INCLUDED+#define BT_GIMPACT_QUANTIZATION_H_INCLUDED++/*! \file btQuantization.h+*\author Francisco Leon Najera++*/+/*+This source file is part of GIMPACT Library.++For the latest info, see http://gimpact.sourceforge.net/++Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371.+email: projectileman@yahoo.com+++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose,+including commercial applications, and to alter it and redistribute it freely,+subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#include "LinearMath/btTransform.h"+++++++SIMD_FORCE_INLINE void bt_calc_quantization_parameters(+	btVector3 & outMinBound,+	btVector3 & outMaxBound,+	btVector3 & bvhQuantization,+	const btVector3& srcMinBound,const btVector3& srcMaxBound,+	btScalar quantizationMargin)+{+	//enlarge the AABB to avoid division by zero when initializing the quantization values+	btVector3 clampValue(quantizationMargin,quantizationMargin,quantizationMargin);+	outMinBound = srcMinBound - clampValue;+	outMaxBound = srcMaxBound + clampValue;+	btVector3 aabbSize = outMaxBound - outMinBound;+	bvhQuantization = btVector3(btScalar(65535.0),+								btScalar(65535.0),+								btScalar(65535.0)) / aabbSize;+}+++SIMD_FORCE_INLINE void bt_quantize_clamp(+	unsigned short* out,+	const btVector3& point,+	const btVector3 & min_bound,+	const btVector3 & max_bound,+	const btVector3 & bvhQuantization)+{++	btVector3 clampedPoint(point);+	clampedPoint.setMax(min_bound);+	clampedPoint.setMin(max_bound);++	btVector3 v = (clampedPoint - min_bound) * bvhQuantization;+	out[0] = (unsigned short)(v.getX()+0.5f);+	out[1] = (unsigned short)(v.getY()+0.5f);+	out[2] = (unsigned short)(v.getZ()+0.5f);+}+++SIMD_FORCE_INLINE btVector3 bt_unquantize(+	const unsigned short* vecIn,+	const btVector3 & offset,+	const btVector3 & bvhQuantization)+{+	btVector3	vecOut;+	vecOut.setValue(+		(btScalar)(vecIn[0]) / (bvhQuantization.getX()),+		(btScalar)(vecIn[1]) / (bvhQuantization.getY()),+		(btScalar)(vecIn[2]) / (bvhQuantization.getZ()));+	vecOut += offset;+	return vecOut;+}++++#endif // BT_GIMPACT_QUANTIZATION_H_INCLUDED
+ bullet/BulletCollision/Gimpact/btTriangleShapeEx.h view
@@ -0,0 +1,180 @@+/*! \file btGImpactShape.h+\author Francisco Leon Najera+*/+/*+This source file is part of GIMPACT Library.++For the latest info, see http://gimpact.sourceforge.net/++Copyright (c) 2007 Francisco Leon Najera. C.C. 80087371.+email: projectileman@yahoo.com+++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose,+including commercial applications, and to alter it and redistribute it freely,+subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+++#ifndef GIMPACT_TRIANGLE_SHAPE_EX_H+#define GIMPACT_TRIANGLE_SHAPE_EX_H++#include "BulletCollision/CollisionShapes/btCollisionShape.h"+#include "BulletCollision/CollisionShapes/btTriangleShape.h"+#include "btBoxCollision.h"+#include "btClipPolygon.h"+#include "btGeometryOperations.h"+++#define MAX_TRI_CLIPPING 16++//! Structure for collision+struct GIM_TRIANGLE_CONTACT+{+    btScalar m_penetration_depth;+    int m_point_count;+    btVector4 m_separating_normal;+    btVector3 m_points[MAX_TRI_CLIPPING];++	SIMD_FORCE_INLINE void copy_from(const GIM_TRIANGLE_CONTACT& other)+	{+		m_penetration_depth = other.m_penetration_depth;+		m_separating_normal = other.m_separating_normal;+		m_point_count = other.m_point_count;+		int i = m_point_count;+		while(i--)+		{+			m_points[i] = other.m_points[i];+		}+	}++	GIM_TRIANGLE_CONTACT()+	{+	}++	GIM_TRIANGLE_CONTACT(const GIM_TRIANGLE_CONTACT& other)+	{+		copy_from(other);+	}++    //! classify points that are closer+    void merge_points(const btVector4 & plane,+    				btScalar margin, const btVector3 * points, int point_count);++};++++class btPrimitiveTriangle+{+public:+	btVector3 m_vertices[3];+	btVector4 m_plane;+	btScalar m_margin;+	btScalar m_dummy;+	btPrimitiveTriangle():m_margin(0.01f)+	{++	}+++	SIMD_FORCE_INLINE void buildTriPlane()+	{+		btVector3 normal = (m_vertices[1]-m_vertices[0]).cross(m_vertices[2]-m_vertices[0]);+		normal.normalize();+		m_plane.setValue(normal[0],normal[1],normal[2],m_vertices[0].dot(normal));+	}++	//! Test if triangles could collide+	bool overlap_test_conservative(const btPrimitiveTriangle& other);++	//! Calcs the plane which is paralele to the edge and perpendicular to the triangle plane+	/*!+	\pre this triangle must have its plane calculated.+	*/+	SIMD_FORCE_INLINE void get_edge_plane(int edge_index, btVector4 &plane)  const+    {+		const btVector3 & e0 = m_vertices[edge_index];+		const btVector3 & e1 = m_vertices[(edge_index+1)%3];+		bt_edge_plane(e0,e1,m_plane,plane);+    }++    void applyTransform(const btTransform& t)+	{+		m_vertices[0] = t(m_vertices[0]);+		m_vertices[1] = t(m_vertices[1]);+		m_vertices[2] = t(m_vertices[2]);+	}++	//! Clips the triangle against this+	/*!+	\pre clipped_points must have MAX_TRI_CLIPPING size, and this triangle must have its plane calculated.+	\return the number of clipped points+	*/+    int clip_triangle(btPrimitiveTriangle & other, btVector3 * clipped_points );++	//! Find collision using the clipping method+	/*!+	\pre this triangle and other must have their triangles calculated+	*/+    bool find_triangle_collision_clip_method(btPrimitiveTriangle & other, GIM_TRIANGLE_CONTACT & contacts);+};++++//! Helper class for colliding Bullet Triangle Shapes+/*!+This class implements a better getAabb method than the previous btTriangleShape class+*/+class btTriangleShapeEx: public btTriangleShape+{+public:++	btTriangleShapeEx():btTriangleShape(btVector3(0,0,0),btVector3(0,0,0),btVector3(0,0,0))+	{+	}++	btTriangleShapeEx(const btVector3& p0,const btVector3& p1,const btVector3& p2):	btTriangleShape(p0,p1,p2)+	{+	}++	btTriangleShapeEx(const btTriangleShapeEx & other):	btTriangleShape(other.m_vertices1[0],other.m_vertices1[1],other.m_vertices1[2])+	{+	}++	virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax)const+	{+		btVector3 tv0 = t(m_vertices1[0]);+		btVector3 tv1 = t(m_vertices1[1]);+		btVector3 tv2 = t(m_vertices1[2]);++		btAABB trianglebox(tv0,tv1,tv2,m_collisionMargin);+		aabbMin = trianglebox.m_min;+		aabbMax = trianglebox.m_max;+	}++	void applyTransform(const btTransform& t)+	{+		m_vertices1[0] = t(m_vertices1[0]);+		m_vertices1[1] = t(m_vertices1[1]);+		m_vertices1[2] = t(m_vertices1[2]);+	}++	SIMD_FORCE_INLINE void buildTriPlane(btVector4 & plane) const+	{+		btVector3 normal = (m_vertices1[1]-m_vertices1[0]).cross(m_vertices1[2]-m_vertices1[0]);+		normal.normalize();+		plane.setValue(normal[0],normal[1],normal[2],m_vertices1[0].dot(normal));+	}++	bool overlap_test_conservative(const btTriangleShapeEx& other);+};+++#endif //GIMPACT_TRIANGLE_MESH_SHAPE_H
+ bullet/BulletCollision/Gimpact/gim_array.h view
@@ -0,0 +1,326 @@+#ifndef GIM_ARRAY_H_INCLUDED+#define GIM_ARRAY_H_INCLUDED+/*! \file gim_array.h+\author Francisco Leon Najera+*/+/*+-----------------------------------------------------------------------------+This source file is part of GIMPACT Library.++For the latest info, see http://gimpact.sourceforge.net/++Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371.+email: projectileman@yahoo.com++ This library is free software; you can redistribute it and/or+ modify it under the terms of EITHER:+   (1) The GNU Lesser General Public License as published by the Free+       Software Foundation; either version 2.1 of the License, or (at+       your option) any later version. The text of the GNU Lesser+       General Public License is included with this library in the+       file GIMPACT-LICENSE-LGPL.TXT.+   (2) The BSD-style license that is included with this library in+       the file GIMPACT-LICENSE-BSD.TXT.+   (3) The zlib/libpng license that is included with this library in+       the file GIMPACT-LICENSE-ZLIB.TXT.++ This library is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files+ GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details.++-----------------------------------------------------------------------------+*/++#include "gim_memory.h"+++#define GIM_ARRAY_GROW_INCREMENT 2+#define GIM_ARRAY_GROW_FACTOR 2++//!	Very simple array container with fast access and simd memory+template<typename T>+class gim_array+{+public:+//! properties+//!@{+    T *m_data;+    GUINT m_size;+    GUINT m_allocated_size;+//!@}+//! protected operations+//!@{++    inline void destroyData()+	{+	    m_allocated_size = 0;+		if(m_data==NULL) return;+		gim_free(m_data);+		m_data = NULL;+	}++	inline bool resizeData(GUINT newsize)+	{+		if(newsize==0)+		{+			destroyData();+			return true;+		}++		if(m_size>0)+		{+            m_data = (T*)gim_realloc(m_data,m_size*sizeof(T),newsize*sizeof(T));+		}+		else+		{+		    m_data = (T*)gim_alloc(newsize*sizeof(T));+		}+		m_allocated_size = newsize;+		return true;+	}++	inline bool growingCheck()+	{+		if(m_allocated_size<=m_size)+		{+		    GUINT requestsize = m_size;+		    m_size = m_allocated_size;+			if(resizeData((requestsize+GIM_ARRAY_GROW_INCREMENT)*GIM_ARRAY_GROW_FACTOR)==false) return false;+		}+		return true;+	}++//!@}+//! public operations+//!@{+    inline  bool reserve(GUINT size)+    {+        if(m_allocated_size>=size) return false;+        return resizeData(size);+    }++    inline void clear_range(GUINT start_range)+    {+        while(m_size>start_range)+        {+            m_data[--m_size].~T();+        }+    }++    inline void clear()+    {+        if(m_size==0)return;+        clear_range(0);+    }++    inline void clear_memory()+    {+        clear();+        destroyData();+    }++    gim_array()+    {+        m_data = 0;+        m_size = 0;+        m_allocated_size = 0;+    }++    gim_array(GUINT reservesize)+    {+        m_data = 0;+        m_size = 0;++        m_allocated_size = 0;+        reserve(reservesize);+    }++    ~gim_array()+    {+        clear_memory();+    }++    inline GUINT size() const+    {+        return m_size;+    }++    inline GUINT max_size() const+    {+        return m_allocated_size;+    }++    inline T & operator[](size_t i)+	{+		return m_data[i];+	}+	inline  const T & operator[](size_t i) const+	{+		return m_data[i];+	}++    inline T * pointer(){ return m_data;}+    inline const T * pointer() const+    { return m_data;}+++    inline T * get_pointer_at(GUINT i)+	{+		return m_data + i;+	}++	inline const T * get_pointer_at(GUINT i) const+	{+		return m_data + i;+	}++	inline T & at(GUINT i)+	{+		return m_data[i];+	}++	inline const T & at(GUINT i) const+	{+		return m_data[i];+	}++	inline T & front()+	{+		return *m_data;+	}++	inline const T & front() const+	{+		return *m_data;+	}++	inline T & back()+	{+		return m_data[m_size-1];+	}++	inline const T & back() const+	{+		return m_data[m_size-1];+	}+++	inline void swap(GUINT i, GUINT j)+	{+	    gim_swap_elements(m_data,i,j);+	}++	inline void push_back(const T & obj)+	{+	    this->growingCheck();+	    m_data[m_size] = obj;+	    m_size++;+	}++	//!Simply increase the m_size, doesn't call the new element constructor+	inline void push_back_mem()+	{+	    this->growingCheck();+	    m_size++;+	}++	inline void push_back_memcpy(const T & obj)+	{+	    this->growingCheck();+	    irr_simd_memcpy(&m_data[m_size],&obj,sizeof(T));+	    m_size++;+	}++	inline void pop_back()+	{+	    m_size--;+        m_data[m_size].~T();+	}++	//!Simply decrease the m_size, doesn't call the deleted element destructor+	inline void pop_back_mem()+	{+	    m_size--;+	}++    //! fast erase+	inline void erase(GUINT index)+	{+	    if(index<m_size-1)+	    {+	        swap(index,m_size-1);+	    }+	    pop_back();+	}++	inline void erase_sorted_mem(GUINT index)+	{+	    m_size--;+	    for(GUINT i = index;i<m_size;i++)+	    {+	        gim_simd_memcpy(m_data+i,m_data+i+1,sizeof(T));+	    }+	}++	inline void erase_sorted(GUINT index)+	{+	    m_data[index].~T();+	    erase_sorted_mem(index);+	}++	inline void insert_mem(GUINT index)+	{+	    this->growingCheck();+	    for(GUINT i = m_size;i>index;i--)+	    {+	        gim_simd_memcpy(m_data+i,m_data+i-1,sizeof(T));+	    }+	    m_size++;+	}++	inline void insert(const T & obj,GUINT index)+	{+	    insert_mem(index);+	    m_data[index] = obj;+	}++	inline void resize(GUINT size, bool call_constructor = true)+	{++	    if(size>m_size)+	    {+            reserve(size);+            if(call_constructor)+            {+            	T obj;+                while(m_size<size)+                {+                    m_data[m_size] = obj;+                    m_size++;+                }+            }+            else+            {+            	m_size = size;+            }+	    }+	    else if(size<m_size)+	    {+	        if(call_constructor) clear_range(size);+	        m_size = size;+	    }+	}++	inline void refit()+	{+	    resizeData(m_size);+	}++};++++++#endif // GIM_CONTAINERS_H_INCLUDED
+ bullet/BulletCollision/Gimpact/gim_basic_geometry_operations.h view
@@ -0,0 +1,543 @@+#ifndef GIM_BASIC_GEOMETRY_OPERATIONS_H_INCLUDED+#define GIM_BASIC_GEOMETRY_OPERATIONS_H_INCLUDED++/*! \file gim_basic_geometry_operations.h+*\author Francisco Leon Najera+type independant geometry routines++*/+/*+-----------------------------------------------------------------------------+This source file is part of GIMPACT Library.++For the latest info, see http://gimpact.sourceforge.net/++Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371.+email: projectileman@yahoo.com++ This library is free software; you can redistribute it and/or+ modify it under the terms of EITHER:+   (1) The GNU Lesser General Public License as published by the Free+       Software Foundation; either version 2.1 of the License, or (at+       your option) any later version. The text of the GNU Lesser+       General Public License is included with this library in the+       file GIMPACT-LICENSE-LGPL.TXT.+   (2) The BSD-style license that is included with this library in+       the file GIMPACT-LICENSE-BSD.TXT.+   (3) The zlib/libpng license that is included with this library in+       the file GIMPACT-LICENSE-ZLIB.TXT.++ This library is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files+ GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details.++-----------------------------------------------------------------------------+*/+++#include "gim_linear_math.h"++++++#define PLANEDIREPSILON 0.0000001f+#define PARALELENORMALS 0.000001f+++#define TRIANGLE_NORMAL(v1,v2,v3,n)\+{\+	vec3f _dif1,_dif2;\+    VEC_DIFF(_dif1,v2,v1);\+    VEC_DIFF(_dif2,v3,v1);\+    VEC_CROSS(n,_dif1,_dif2);\+    VEC_NORMALIZE(n);\+}\++#define TRIANGLE_NORMAL_FAST(v1,v2,v3,n){\+    vec3f _dif1,_dif2; \+    VEC_DIFF(_dif1,v2,v1); \+    VEC_DIFF(_dif2,v3,v1); \+    VEC_CROSS(n,_dif1,_dif2); \+}\++/// plane is a vec4f+#define TRIANGLE_PLANE(v1,v2,v3,plane) {\+    TRIANGLE_NORMAL(v1,v2,v3,plane);\+    plane[3] = VEC_DOT(v1,plane);\+}\++/// plane is a vec4f+#define TRIANGLE_PLANE_FAST(v1,v2,v3,plane) {\+    TRIANGLE_NORMAL_FAST(v1,v2,v3,plane);\+    plane[3] = VEC_DOT(v1,plane);\+}\++/// Calc a plane from an edge an a normal. plane is a vec4f+#define EDGE_PLANE(e1,e2,n,plane) {\+    vec3f _dif; \+    VEC_DIFF(_dif,e2,e1); \+    VEC_CROSS(plane,_dif,n); \+    VEC_NORMALIZE(plane); \+    plane[3] = VEC_DOT(e1,plane);\+}\++#define DISTANCE_PLANE_POINT(plane,point) (VEC_DOT(plane,point) - plane[3])++#define PROJECT_POINT_PLANE(point,plane,projected) {\+	GREAL _dis;\+	_dis = DISTANCE_PLANE_POINT(plane,point);\+	VEC_SCALE(projected,-_dis,plane);\+	VEC_SUM(projected,projected,point);	\+}\++//! Verifies if a point is in the plane hull+template<typename CLASS_POINT,typename CLASS_PLANE>+SIMD_FORCE_INLINE bool POINT_IN_HULL(+	const CLASS_POINT& point,const CLASS_PLANE * planes,GUINT plane_count)+{+	GREAL _dis;+	for (GUINT _i = 0;_i< plane_count;++_i)+	{+		_dis = DISTANCE_PLANE_POINT(planes[_i],point);+	    if(_dis>0.0f) return false;+	}+	return true;+}++template<typename CLASS_POINT,typename CLASS_PLANE>+SIMD_FORCE_INLINE void PLANE_CLIP_SEGMENT(+	const CLASS_POINT& s1,+	const CLASS_POINT &s2,const CLASS_PLANE &plane,CLASS_POINT &clipped)+{+	GREAL _dis1,_dis2;+	_dis1 = DISTANCE_PLANE_POINT(plane,s1);+	VEC_DIFF(clipped,s2,s1);+	_dis2 = VEC_DOT(clipped,plane);+	VEC_SCALE(clipped,-_dis1/_dis2,clipped);+	VEC_SUM(clipped,clipped,s1);+}++enum ePLANE_INTERSECTION_TYPE+{+	G_BACK_PLANE = 0,+	G_COLLIDE_PLANE,+	G_FRONT_PLANE+};++enum eLINE_PLANE_INTERSECTION_TYPE+{+	G_FRONT_PLANE_S1 = 0,+	G_FRONT_PLANE_S2,+	G_BACK_PLANE_S1,+	G_BACK_PLANE_S2,+	G_COLLIDE_PLANE_S1,+	G_COLLIDE_PLANE_S2+};++//! Confirms if the plane intersect the edge or nor+/*!+intersection type must have the following values+<ul>+<li> 0 : Segment in front of plane, s1 closest+<li> 1 : Segment in front of plane, s2 closest+<li> 2 : Segment in back of plane, s1 closest+<li> 3 : Segment in back of plane, s2 closest+<li> 4 : Segment collides plane, s1 in back+<li> 5 : Segment collides plane, s2 in back+</ul>+*/++template<typename CLASS_POINT,typename CLASS_PLANE>+SIMD_FORCE_INLINE eLINE_PLANE_INTERSECTION_TYPE PLANE_CLIP_SEGMENT2(+	const CLASS_POINT& s1,+	const CLASS_POINT &s2,+	const CLASS_PLANE &plane,CLASS_POINT &clipped)+{+	GREAL _dis1 = DISTANCE_PLANE_POINT(plane,s1);+	GREAL _dis2 = DISTANCE_PLANE_POINT(plane,s2);+	if(_dis1 >-G_EPSILON && _dis2 >-G_EPSILON)+	{+	    if(_dis1<_dis2) return G_FRONT_PLANE_S1;+	    return G_FRONT_PLANE_S2;+	}+	else if(_dis1 <G_EPSILON && _dis2 <G_EPSILON)+	{+	    if(_dis1>_dis2) return G_BACK_PLANE_S1;+	    return G_BACK_PLANE_S2;+	}++	VEC_DIFF(clipped,s2,s1);+	_dis2 = VEC_DOT(clipped,plane);+	VEC_SCALE(clipped,-_dis1/_dis2,clipped);+	VEC_SUM(clipped,clipped,s1);+	if(_dis1<_dis2) return G_COLLIDE_PLANE_S1;+	return G_COLLIDE_PLANE_S2;+}++//! Confirms if the plane intersect the edge or not+/*!+clipped1 and clipped2 are the vertices behind the plane.+clipped1 is the closest++intersection_type must have the following values+<ul>+<li> 0 : Segment in front of plane, s1 closest+<li> 1 : Segment in front of plane, s2 closest+<li> 2 : Segment in back of plane, s1 closest+<li> 3 : Segment in back of plane, s2 closest+<li> 4 : Segment collides plane, s1 in back+<li> 5 : Segment collides plane, s2 in back+</ul>+*/+template<typename CLASS_POINT,typename CLASS_PLANE>+SIMD_FORCE_INLINE eLINE_PLANE_INTERSECTION_TYPE PLANE_CLIP_SEGMENT_CLOSEST(+	const CLASS_POINT& s1,+	const CLASS_POINT &s2,+	const CLASS_PLANE &plane,+	CLASS_POINT &clipped1,CLASS_POINT &clipped2)+{+	eLINE_PLANE_INTERSECTION_TYPE intersection_type = PLANE_CLIP_SEGMENT2(s1,s2,plane,clipped1);+	switch(intersection_type)+	{+	case G_FRONT_PLANE_S1:+		VEC_COPY(clipped1,s1);+	    VEC_COPY(clipped2,s2);+		break;+	case G_FRONT_PLANE_S2:+		VEC_COPY(clipped1,s2);+	    VEC_COPY(clipped2,s1);+		break;+	case G_BACK_PLANE_S1:+		VEC_COPY(clipped1,s1);+	    VEC_COPY(clipped2,s2);+		break;+	case G_BACK_PLANE_S2:+		VEC_COPY(clipped1,s2);+	    VEC_COPY(clipped2,s1);+		break;+	case G_COLLIDE_PLANE_S1:+		VEC_COPY(clipped2,s1);+		break;+	case G_COLLIDE_PLANE_S2:+		VEC_COPY(clipped2,s2);+		break;+	}+	return intersection_type;+}+++//! Finds the 2 smallest cartesian coordinates of a plane normal+#define PLANE_MINOR_AXES(plane, i0, i1) VEC_MINOR_AXES(plane, i0, i1)++//! Ray plane collision in one way+/*!+Intersects plane in one way only. The ray must face the plane (normals must be in opossite directions).<br/>+It uses the PLANEDIREPSILON constant.+*/+template<typename T,typename CLASS_POINT,typename CLASS_PLANE>+SIMD_FORCE_INLINE bool RAY_PLANE_COLLISION(+	const CLASS_PLANE & plane,+	const CLASS_POINT & vDir,+	const CLASS_POINT & vPoint,+	CLASS_POINT & pout,T &tparam)+{+	GREAL _dis,_dotdir;+	_dotdir = VEC_DOT(plane,vDir);+	if(_dotdir<PLANEDIREPSILON)+	{+	    return false;+	}+	_dis = DISTANCE_PLANE_POINT(plane,vPoint);+	tparam = -_dis/_dotdir;+	VEC_SCALE(pout,tparam,vDir);+	VEC_SUM(pout,vPoint,pout);+	return true;+}++//! line collision+/*!+*\return+	-0  if the ray never intersects+	-1 if the ray collides in front+	-2 if the ray collides in back+*/+template<typename T,typename CLASS_POINT,typename CLASS_PLANE>+SIMD_FORCE_INLINE GUINT LINE_PLANE_COLLISION(+	const CLASS_PLANE & plane,+	const CLASS_POINT & vDir,+	const CLASS_POINT & vPoint,+	CLASS_POINT & pout,+	T &tparam,+	T tmin, T tmax)+{+	GREAL _dis,_dotdir;+	_dotdir = VEC_DOT(plane,vDir);+	if(btFabs(_dotdir)<PLANEDIREPSILON)+	{+		tparam = tmax;+	    return 0;+	}+	_dis = DISTANCE_PLANE_POINT(plane,vPoint);+	char returnvalue = _dis<0.0f?2:1;+	tparam = -_dis/_dotdir;++	if(tparam<tmin)+	{+		returnvalue = 0;+		tparam = tmin;+	}+	else if(tparam>tmax)+	{+		returnvalue = 0;+		tparam = tmax;+	}++	VEC_SCALE(pout,tparam,vDir);+	VEC_SUM(pout,vPoint,pout);+	return returnvalue;+}++/*! \brief Returns the Ray on which 2 planes intersect if they do.+    Written by Rodrigo Hernandez on ODE convex collision++  \param p1 Plane 1+  \param p2 Plane 2+  \param p Contains the origin of the ray upon returning if planes intersect+  \param d Contains the direction of the ray upon returning if planes intersect+  \return true if the planes intersect, 0 if paralell.++*/+template<typename CLASS_POINT,typename CLASS_PLANE>+SIMD_FORCE_INLINE bool INTERSECT_PLANES(+		const CLASS_PLANE &p1,+		const CLASS_PLANE &p2,+		CLASS_POINT &p,+		CLASS_POINT &d)+{+	VEC_CROSS(d,p1,p2);+  	GREAL denom = VEC_DOT(d, d);+  	if(GIM_IS_ZERO(denom)) return false;+	vec3f _n;+	_n[0]=p1[3]*p2[0] - p2[3]*p1[0];+	_n[1]=p1[3]*p2[1] - p2[3]*p1[1];+	_n[2]=p1[3]*p2[2] - p2[3]*p1[2];+	VEC_CROSS(p,_n,d);+	p[0]/=denom;+	p[1]/=denom;+	p[2]/=denom;+	return true;+}++//***************** SEGMENT and LINE FUNCTIONS **********************************///++/*! Finds the closest point(cp) to (v) on a segment (e1,e2)+ */+template<typename CLASS_POINT>+SIMD_FORCE_INLINE void CLOSEST_POINT_ON_SEGMENT(+	CLASS_POINT & cp, const CLASS_POINT & v,+	const CLASS_POINT &e1,const CLASS_POINT &e2)+{+    vec3f _n;+    VEC_DIFF(_n,e2,e1);+    VEC_DIFF(cp,v,e1);+	GREAL _scalar = VEC_DOT(cp, _n);+	_scalar/= VEC_DOT(_n, _n);+	if(_scalar <0.0f)+	{+	    VEC_COPY(cp,e1);+	}+	else if(_scalar >1.0f)+	{+	    VEC_COPY(cp,e2);+	}+	else+	{+        VEC_SCALE(cp,_scalar,_n);+        VEC_SUM(cp,cp,e1);+	}+}+++/*! \brief Finds the line params where these lines intersect.++\param dir1 Direction of line 1+\param point1 Point of line 1+\param dir2 Direction of line 2+\param point2 Point of line 2+\param t1 Result Parameter for line 1+\param t2 Result Parameter for line 2+\param dointersect  0  if the lines won't intersect, else 1++*/+template<typename T,typename CLASS_POINT>+SIMD_FORCE_INLINE bool LINE_INTERSECTION_PARAMS(+	const CLASS_POINT & dir1,+	CLASS_POINT & point1,+	const CLASS_POINT & dir2,+	CLASS_POINT &  point2,+	T& t1,T& t2)+{+    GREAL det;+	GREAL e1e1 = VEC_DOT(dir1,dir1);+	GREAL e1e2 = VEC_DOT(dir1,dir2);+	GREAL e2e2 = VEC_DOT(dir2,dir2);+	vec3f p1p2;+    VEC_DIFF(p1p2,point1,point2);+    GREAL p1p2e1 = VEC_DOT(p1p2,dir1);+	GREAL p1p2e2 = VEC_DOT(p1p2,dir2);+	det = e1e2*e1e2 - e1e1*e2e2;+	if(GIM_IS_ZERO(det)) return false;+	t1 = (e1e2*p1p2e2 - e2e2*p1p2e1)/det;+	t2 = (e1e1*p1p2e2 - e1e2*p1p2e1)/det;+	return true;+}++//! Find closest points on segments+template<typename CLASS_POINT>+SIMD_FORCE_INLINE void SEGMENT_COLLISION(+	const CLASS_POINT & vA1,+	const CLASS_POINT & vA2,+	const CLASS_POINT & vB1,+	const CLASS_POINT & vB2,+	CLASS_POINT & vPointA,+	CLASS_POINT & vPointB)+{+    CLASS_POINT _AD,_BD,_N;+    vec4f _M;//plane+    VEC_DIFF(_AD,vA2,vA1);+    VEC_DIFF(_BD,vB2,vB1);+    VEC_CROSS(_N,_AD,_BD);+    GREAL _tp = VEC_DOT(_N,_N);+    if(_tp<G_EPSILON)//ARE PARALELE+    {+    	//project B over A+    	bool invert_b_order = false;+    	_M[0] = VEC_DOT(vB1,_AD);+    	_M[1] = VEC_DOT(vB2,_AD);+    	if(_M[0]>_M[1])+    	{+    		invert_b_order  = true;+    		GIM_SWAP_NUMBERS(_M[0],_M[1]);+    	}+    	_M[2] = VEC_DOT(vA1,_AD);+    	_M[3] = VEC_DOT(vA2,_AD);+    	//mid points+    	_N[0] = (_M[0]+_M[1])*0.5f;+    	_N[1] = (_M[2]+_M[3])*0.5f;++    	if(_N[0]<_N[1])+    	{+    		if(_M[1]<_M[2])+    		{+    			vPointB = invert_b_order?vB1:vB2;+    			vPointA = vA1;+    		}+    		else if(_M[1]<_M[3])+    		{+    			vPointB = invert_b_order?vB1:vB2;+    			CLOSEST_POINT_ON_SEGMENT(vPointA,vPointB,vA1,vA2);+    		}+    		else+    		{+    			vPointA = vA2;+    			CLOSEST_POINT_ON_SEGMENT(vPointB,vPointA,vB1,vB2);+    		}+    	}+    	else+    	{+    		if(_M[3]<_M[0])+    		{+    			vPointB = invert_b_order?vB2:vB1;+    			vPointA = vA2;+    		}+    		else if(_M[3]<_M[1])+    		{+    			vPointA = vA2;+    			CLOSEST_POINT_ON_SEGMENT(vPointB,vPointA,vB1,vB2);+    		}+    		else+    		{+    			vPointB = invert_b_order?vB1:vB2;+    			CLOSEST_POINT_ON_SEGMENT(vPointA,vPointB,vA1,vA2);+    		}+    	}+    	return;+    }+++    VEC_CROSS(_M,_N,_BD);+    _M[3] = VEC_DOT(_M,vB1);++    LINE_PLANE_COLLISION(_M,_AD,vA1,vPointA,_tp,btScalar(0), btScalar(1));+    /*Closest point on segment*/+    VEC_DIFF(vPointB,vPointA,vB1);+	_tp = VEC_DOT(vPointB, _BD);+	_tp/= VEC_DOT(_BD, _BD);+	_tp = GIM_CLAMP(_tp,0.0f,1.0f);+    VEC_SCALE(vPointB,_tp,_BD);+    VEC_SUM(vPointB,vPointB,vB1);+}+++++//! Line box intersection in one dimension+/*!++*\param pos Position of the ray+*\param dir Projection of the Direction of the ray+*\param bmin Minimum bound of the box+*\param bmax Maximum bound of the box+*\param tfirst the minimum projection. Assign to 0 at first.+*\param tlast the maximum projection. Assign to INFINITY at first.+*\return true if there is an intersection.+*/+template<typename T>+SIMD_FORCE_INLINE bool BOX_AXIS_INTERSECT(T pos, T dir,T bmin, T bmax, T & tfirst, T & tlast)+{+	if(GIM_IS_ZERO(dir))+	{+        return !(pos < bmin || pos > bmax);+	}+	GREAL a0 = (bmin - pos) / dir;+	GREAL a1 = (bmax - pos) / dir;+	if(a0 > a1)   GIM_SWAP_NUMBERS(a0, a1);+	tfirst = GIM_MAX(a0, tfirst);+	tlast = GIM_MIN(a1, tlast);+	if (tlast < tfirst) return false;+	return true;+}+++//! Sorts 3 componets+template<typename T>+SIMD_FORCE_INLINE void SORT_3_INDICES(+		const T * values,+		GUINT * order_indices)+{+	//get minimum+	order_indices[0] = values[0] < values[1] ? (values[0] < values[2] ? 0 : 2) : (values[1] < values[2] ? 1 : 2);++	//get second and third+	GUINT i0 = (order_indices[0] + 1)%3;+	GUINT i1 = (i0 + 1)%3;++	if(values[i0] < values[i1])+	{+		order_indices[1] = i0;+		order_indices[2] = i1;+	}+	else+	{+		order_indices[1] = i1;+		order_indices[2] = i0;+	}+}++++++#endif // GIM_VECTOR_H_INCLUDED
+ bullet/BulletCollision/Gimpact/gim_bitset.h view
@@ -0,0 +1,123 @@+#ifndef GIM_BITSET_H_INCLUDED+#define GIM_BITSET_H_INCLUDED+/*! \file gim_bitset.h+\author Francisco Leon Najera+*/+/*+-----------------------------------------------------------------------------+This source file is part of GIMPACT Library.++For the latest info, see http://gimpact.sourceforge.net/++Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371.+email: projectileman@yahoo.com++ This library is free software; you can redistribute it and/or+ modify it under the terms of EITHER:+   (1) The GNU Lesser General Public License as published by the Free+       Software Foundation; either version 2.1 of the License, or (at+       your option) any later version. The text of the GNU Lesser+       General Public License is included with this library in the+       file GIMPACT-LICENSE-LGPL.TXT.+   (2) The BSD-style license that is included with this library in+       the file GIMPACT-LICENSE-BSD.TXT.+   (3) The zlib/libpng license that is included with this library in+       the file GIMPACT-LICENSE-ZLIB.TXT.++ This library is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files+ GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details.++-----------------------------------------------------------------------------+*/++#include "gim_array.h"+++#define GUINT_BIT_COUNT 32+#define GUINT_EXPONENT 5++class gim_bitset+{+public:+    gim_array<GUINT> m_container;++    gim_bitset()+    {++    }++    gim_bitset(GUINT bits_count)+    {+        resize(bits_count);+    }++    ~gim_bitset()+    {+    }++	inline bool resize(GUINT newsize)+	{+		GUINT oldsize = m_container.size();+		m_container.resize(newsize/GUINT_BIT_COUNT + 1,false);+		while(oldsize<m_container.size())+		{+			m_container[oldsize] = 0;+		}+		return true;+	}++	inline GUINT size()+	{+		return m_container.size()*GUINT_BIT_COUNT;+	}++	inline void set_all()+	{+		for(GUINT i = 0;i<m_container.size();++i)+		{+			m_container[i] = 0xffffffff;+		}+	}++	inline void clear_all()+	{+	    for(GUINT i = 0;i<m_container.size();++i)+		{+			m_container[i] = 0;+		}+	}++	inline void set(GUINT bit_index)+	{+		if(bit_index>=size())+		{+			resize(bit_index);+		}+		m_container[bit_index >> GUINT_EXPONENT] |= (1 << (bit_index & (GUINT_BIT_COUNT-1)));+	}++	///Return 0 or 1+	inline char get(GUINT bit_index)+	{+		if(bit_index>=size())+		{+			return 0;+		}+		char value = m_container[bit_index >> GUINT_EXPONENT] &+					 (1 << (bit_index & (GUINT_BIT_COUNT-1)));+		return value;+	}++	inline void clear(GUINT bit_index)+	{+	    m_container[bit_index >> GUINT_EXPONENT] &= ~(1 << (bit_index & (GUINT_BIT_COUNT-1)));+	}+};++++++#endif // GIM_CONTAINERS_H_INCLUDED
+ bullet/BulletCollision/Gimpact/gim_box_collision.h view
@@ -0,0 +1,590 @@+#ifndef GIM_BOX_COLLISION_H_INCLUDED+#define GIM_BOX_COLLISION_H_INCLUDED++/*! \file gim_box_collision.h+\author Francisco Leon Najera+*/+/*+-----------------------------------------------------------------------------+This source file is part of GIMPACT Library.++For the latest info, see http://gimpact.sourceforge.net/++Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371.+email: projectileman@yahoo.com++ This library is free software; you can redistribute it and/or+ modify it under the terms of EITHER:+   (1) The GNU Lesser General Public License as published by the Free+       Software Foundation; either version 2.1 of the License, or (at+       your option) any later version. The text of the GNU Lesser+       General Public License is included with this library in the+       file GIMPACT-LICENSE-LGPL.TXT.+   (2) The BSD-style license that is included with this library in+       the file GIMPACT-LICENSE-BSD.TXT.+   (3) The zlib/libpng license that is included with this library in+       the file GIMPACT-LICENSE-ZLIB.TXT.++ This library is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files+ GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details.++-----------------------------------------------------------------------------+*/+#include "gim_basic_geometry_operations.h"+#include "LinearMath/btTransform.h"++++//SIMD_FORCE_INLINE bool test_cross_edge_box(+//	const btVector3 & edge,+//	const btVector3 & absolute_edge,+//	const btVector3 & pointa,+//	const btVector3 & pointb, const btVector3 & extend,+//	int dir_index0,+//	int dir_index1+//	int component_index0,+//	int component_index1)+//{+//	// dir coords are -z and y+//+//	const btScalar dir0 = -edge[dir_index0];+//	const btScalar dir1 = edge[dir_index1];+//	btScalar pmin = pointa[component_index0]*dir0 + pointa[component_index1]*dir1;+//	btScalar pmax = pointb[component_index0]*dir0 + pointb[component_index1]*dir1;+//	//find minmax+//	if(pmin>pmax)+//	{+//		GIM_SWAP_NUMBERS(pmin,pmax);+//	}+//	//find extends+//	const btScalar rad = extend[component_index0] * absolute_edge[dir_index0] ++//					extend[component_index1] * absolute_edge[dir_index1];+//+//	if(pmin>rad || -rad>pmax) return false;+//	return true;+//}+//+//SIMD_FORCE_INLINE bool test_cross_edge_box_X_axis(+//	const btVector3 & edge,+//	const btVector3 & absolute_edge,+//	const btVector3 & pointa,+//	const btVector3 & pointb, btVector3 & extend)+//{+//+//	return test_cross_edge_box(edge,absolute_edge,pointa,pointb,extend,2,1,1,2);+//}+//+//+//SIMD_FORCE_INLINE bool test_cross_edge_box_Y_axis(+//	const btVector3 & edge,+//	const btVector3 & absolute_edge,+//	const btVector3 & pointa,+//	const btVector3 & pointb, btVector3 & extend)+//{+//+//	return test_cross_edge_box(edge,absolute_edge,pointa,pointb,extend,0,2,2,0);+//}+//+//SIMD_FORCE_INLINE bool test_cross_edge_box_Z_axis(+//	const btVector3 & edge,+//	const btVector3 & absolute_edge,+//	const btVector3 & pointa,+//	const btVector3 & pointb, btVector3 & extend)+//{+//+//	return test_cross_edge_box(edge,absolute_edge,pointa,pointb,extend,1,0,0,1);+//}++#define TEST_CROSS_EDGE_BOX_MCR(edge,absolute_edge,pointa,pointb,_extend,i_dir_0,i_dir_1,i_comp_0,i_comp_1)\+{\+	const btScalar dir0 = -edge[i_dir_0];\+	const btScalar dir1 = edge[i_dir_1];\+	btScalar pmin = pointa[i_comp_0]*dir0 + pointa[i_comp_1]*dir1;\+	btScalar pmax = pointb[i_comp_0]*dir0 + pointb[i_comp_1]*dir1;\+	if(pmin>pmax)\+	{\+		GIM_SWAP_NUMBERS(pmin,pmax); \+	}\+	const btScalar abs_dir0 = absolute_edge[i_dir_0];\+	const btScalar abs_dir1 = absolute_edge[i_dir_1];\+	const btScalar rad = _extend[i_comp_0] * abs_dir0 + _extend[i_comp_1] * abs_dir1;\+	if(pmin>rad || -rad>pmax) return false;\+}\+++#define TEST_CROSS_EDGE_BOX_X_AXIS_MCR(edge,absolute_edge,pointa,pointb,_extend)\+{\+	TEST_CROSS_EDGE_BOX_MCR(edge,absolute_edge,pointa,pointb,_extend,2,1,1,2);\+}\++#define TEST_CROSS_EDGE_BOX_Y_AXIS_MCR(edge,absolute_edge,pointa,pointb,_extend)\+{\+	TEST_CROSS_EDGE_BOX_MCR(edge,absolute_edge,pointa,pointb,_extend,0,2,2,0);\+}\++#define TEST_CROSS_EDGE_BOX_Z_AXIS_MCR(edge,absolute_edge,pointa,pointb,_extend)\+{\+	TEST_CROSS_EDGE_BOX_MCR(edge,absolute_edge,pointa,pointb,_extend,1,0,0,1);\+}\++++//!  Class for transforming a model1 to the space of model0+class GIM_BOX_BOX_TRANSFORM_CACHE+{+public:+    btVector3  m_T1to0;//!< Transforms translation of model1 to model 0+	btMatrix3x3 m_R1to0;//!< Transforms Rotation of model1 to model 0, equal  to R0' * R1+	btMatrix3x3 m_AR;//!< Absolute value of m_R1to0++	SIMD_FORCE_INLINE void calc_absolute_matrix()+	{+		static const btVector3 vepsi(1e-6f,1e-6f,1e-6f);+		m_AR[0] = vepsi + m_R1to0[0].absolute();+		m_AR[1] = vepsi + m_R1to0[1].absolute();+		m_AR[2] = vepsi + m_R1to0[2].absolute();+	}++	GIM_BOX_BOX_TRANSFORM_CACHE()+	{+	}+++	GIM_BOX_BOX_TRANSFORM_CACHE(mat4f  trans1_to_0)+	{+		COPY_MATRIX_3X3(m_R1to0,trans1_to_0)+        MAT_GET_TRANSLATION(trans1_to_0,m_T1to0)+		calc_absolute_matrix();+	}++	//! Calc the transformation relative  1 to 0. Inverts matrics by transposing+	SIMD_FORCE_INLINE void calc_from_homogenic(const btTransform & trans0,const btTransform & trans1)+	{++		m_R1to0 = trans0.getBasis().transpose();+		m_T1to0 = m_R1to0 * (-trans0.getOrigin());++		m_T1to0 += m_R1to0*trans1.getOrigin();+		m_R1to0 *= trans1.getBasis();++		calc_absolute_matrix();+	}++	//! Calcs the full invertion of the matrices. Useful for scaling matrices+	SIMD_FORCE_INLINE void calc_from_full_invert(const btTransform & trans0,const btTransform & trans1)+	{+		m_R1to0 = trans0.getBasis().inverse();+		m_T1to0 = m_R1to0 * (-trans0.getOrigin());++		m_T1to0 += m_R1to0*trans1.getOrigin();+		m_R1to0 *= trans1.getBasis();++		calc_absolute_matrix();+	}++	SIMD_FORCE_INLINE btVector3 transform(const btVector3 & point)+	{+		return btVector3(m_R1to0[0].dot(point) + m_T1to0.x(),+			m_R1to0[1].dot(point) + m_T1to0.y(),+			m_R1to0[2].dot(point) + m_T1to0.z());+	}+};+++#define BOX_PLANE_EPSILON 0.000001f++//! Axis aligned box+class GIM_AABB+{+public:+	btVector3 m_min;+	btVector3 m_max;++	GIM_AABB()+	{}+++	GIM_AABB(const btVector3 & V1,+			 const btVector3 & V2,+			 const btVector3 & V3)+	{+		m_min[0] = GIM_MIN3(V1[0],V2[0],V3[0]);+		m_min[1] = GIM_MIN3(V1[1],V2[1],V3[1]);+		m_min[2] = GIM_MIN3(V1[2],V2[2],V3[2]);++		m_max[0] = GIM_MAX3(V1[0],V2[0],V3[0]);+		m_max[1] = GIM_MAX3(V1[1],V2[1],V3[1]);+		m_max[2] = GIM_MAX3(V1[2],V2[2],V3[2]);+	}++	GIM_AABB(const btVector3 & V1,+			 const btVector3 & V2,+			 const btVector3 & V3,+			 GREAL margin)+	{+		m_min[0] = GIM_MIN3(V1[0],V2[0],V3[0]);+		m_min[1] = GIM_MIN3(V1[1],V2[1],V3[1]);+		m_min[2] = GIM_MIN3(V1[2],V2[2],V3[2]);++		m_max[0] = GIM_MAX3(V1[0],V2[0],V3[0]);+		m_max[1] = GIM_MAX3(V1[1],V2[1],V3[1]);+		m_max[2] = GIM_MAX3(V1[2],V2[2],V3[2]);++		m_min[0] -= margin;+		m_min[1] -= margin;+		m_min[2] -= margin;+		m_max[0] += margin;+		m_max[1] += margin;+		m_max[2] += margin;+	}++	GIM_AABB(const GIM_AABB &other):+		m_min(other.m_min),m_max(other.m_max)+	{+	}++	GIM_AABB(const GIM_AABB &other,btScalar margin ):+		m_min(other.m_min),m_max(other.m_max)+	{+		m_min[0] -= margin;+		m_min[1] -= margin;+		m_min[2] -= margin;+		m_max[0] += margin;+		m_max[1] += margin;+		m_max[2] += margin;+	}++	SIMD_FORCE_INLINE void invalidate()+	{+		m_min[0] = G_REAL_INFINITY;+		m_min[1] = G_REAL_INFINITY;+		m_min[2] = G_REAL_INFINITY;+		m_max[0] = -G_REAL_INFINITY;+		m_max[1] = -G_REAL_INFINITY;+		m_max[2] = -G_REAL_INFINITY;+	}++	SIMD_FORCE_INLINE void increment_margin(btScalar margin)+	{+		m_min[0] -= margin;+		m_min[1] -= margin;+		m_min[2] -= margin;+		m_max[0] += margin;+		m_max[1] += margin;+		m_max[2] += margin;+	}++	SIMD_FORCE_INLINE void copy_with_margin(const GIM_AABB &other, btScalar margin)+	{+		m_min[0] = other.m_min[0] - margin;+		m_min[1] = other.m_min[1] - margin;+		m_min[2] = other.m_min[2] - margin;++		m_max[0] = other.m_max[0] + margin;+		m_max[1] = other.m_max[1] + margin;+		m_max[2] = other.m_max[2] + margin;+	}++	template<typename CLASS_POINT>+	SIMD_FORCE_INLINE void calc_from_triangle(+							const CLASS_POINT & V1,+							const CLASS_POINT & V2,+							const CLASS_POINT & V3)+	{+		m_min[0] = GIM_MIN3(V1[0],V2[0],V3[0]);+		m_min[1] = GIM_MIN3(V1[1],V2[1],V3[1]);+		m_min[2] = GIM_MIN3(V1[2],V2[2],V3[2]);++		m_max[0] = GIM_MAX3(V1[0],V2[0],V3[0]);+		m_max[1] = GIM_MAX3(V1[1],V2[1],V3[1]);+		m_max[2] = GIM_MAX3(V1[2],V2[2],V3[2]);+	}++	template<typename CLASS_POINT>+	SIMD_FORCE_INLINE void calc_from_triangle_margin(+							const CLASS_POINT & V1,+							const CLASS_POINT & V2,+							const CLASS_POINT & V3, btScalar margin)+	{+		m_min[0] = GIM_MIN3(V1[0],V2[0],V3[0]);+		m_min[1] = GIM_MIN3(V1[1],V2[1],V3[1]);+		m_min[2] = GIM_MIN3(V1[2],V2[2],V3[2]);++		m_max[0] = GIM_MAX3(V1[0],V2[0],V3[0]);+		m_max[1] = GIM_MAX3(V1[1],V2[1],V3[1]);+		m_max[2] = GIM_MAX3(V1[2],V2[2],V3[2]);++		m_min[0] -= margin;+		m_min[1] -= margin;+		m_min[2] -= margin;+		m_max[0] += margin;+		m_max[1] += margin;+		m_max[2] += margin;+	}++	//! Apply a transform to an AABB+	SIMD_FORCE_INLINE void appy_transform(const btTransform & trans)+	{+		btVector3 center = (m_max+m_min)*0.5f;+		btVector3 extends = m_max - center;+		// Compute new center+		center = trans(center);++		btVector3 textends(extends.dot(trans.getBasis().getRow(0).absolute()),+ 				 extends.dot(trans.getBasis().getRow(1).absolute()),+				 extends.dot(trans.getBasis().getRow(2).absolute()));++		m_min = center - textends;+		m_max = center + textends;+	}++	//! Merges a Box+	SIMD_FORCE_INLINE void merge(const GIM_AABB & box)+	{+		m_min[0] = GIM_MIN(m_min[0],box.m_min[0]);+		m_min[1] = GIM_MIN(m_min[1],box.m_min[1]);+		m_min[2] = GIM_MIN(m_min[2],box.m_min[2]);++		m_max[0] = GIM_MAX(m_max[0],box.m_max[0]);+		m_max[1] = GIM_MAX(m_max[1],box.m_max[1]);+		m_max[2] = GIM_MAX(m_max[2],box.m_max[2]);+	}++	//! Merges a point+	template<typename CLASS_POINT>+	SIMD_FORCE_INLINE void merge_point(const CLASS_POINT & point)+	{+		m_min[0] = GIM_MIN(m_min[0],point[0]);+		m_min[1] = GIM_MIN(m_min[1],point[1]);+		m_min[2] = GIM_MIN(m_min[2],point[2]);++		m_max[0] = GIM_MAX(m_max[0],point[0]);+		m_max[1] = GIM_MAX(m_max[1],point[1]);+		m_max[2] = GIM_MAX(m_max[2],point[2]);+	}++	//! Gets the extend and center+	SIMD_FORCE_INLINE void get_center_extend(btVector3 & center,btVector3 & extend)  const+	{+		center = (m_max+m_min)*0.5f;+		extend = m_max - center;+	}++	//! Finds the intersecting box between this box and the other.+	SIMD_FORCE_INLINE void find_intersection(const GIM_AABB & other, GIM_AABB & intersection)  const+	{+		intersection.m_min[0] = GIM_MAX(other.m_min[0],m_min[0]);+		intersection.m_min[1] = GIM_MAX(other.m_min[1],m_min[1]);+		intersection.m_min[2] = GIM_MAX(other.m_min[2],m_min[2]);++		intersection.m_max[0] = GIM_MIN(other.m_max[0],m_max[0]);+		intersection.m_max[1] = GIM_MIN(other.m_max[1],m_max[1]);+		intersection.m_max[2] = GIM_MIN(other.m_max[2],m_max[2]);+	}+++	SIMD_FORCE_INLINE bool has_collision(const GIM_AABB & other) const+	{+		if(m_min[0] > other.m_max[0] ||+		   m_max[0] < other.m_min[0] ||+		   m_min[1] > other.m_max[1] ||+		   m_max[1] < other.m_min[1] ||+		   m_min[2] > other.m_max[2] ||+		   m_max[2] < other.m_min[2])+		{+			return false;+		}+		return true;+	}++	/*! \brief Finds the Ray intersection parameter.+	\param aabb Aligned box+	\param vorigin A vec3f with the origin of the ray+	\param vdir A vec3f with the direction of the ray+	*/+	SIMD_FORCE_INLINE bool collide_ray(const btVector3 & vorigin,const btVector3 & vdir)+	{+		btVector3 extents,center;+		this->get_center_extend(center,extents);;++		btScalar Dx = vorigin[0] - center[0];+		if(GIM_GREATER(Dx, extents[0]) && Dx*vdir[0]>=0.0f)	return false;+		btScalar Dy = vorigin[1] - center[1];+		if(GIM_GREATER(Dy, extents[1]) && Dy*vdir[1]>=0.0f)	return false;+		btScalar Dz = vorigin[2] - center[2];+		if(GIM_GREATER(Dz, extents[2]) && Dz*vdir[2]>=0.0f)	return false;+++		btScalar f = vdir[1] * Dz - vdir[2] * Dy;+		if(btFabs(f) > extents[1]*btFabs(vdir[2]) + extents[2]*btFabs(vdir[1])) return false;+		f = vdir[2] * Dx - vdir[0] * Dz;+		if(btFabs(f) > extents[0]*btFabs(vdir[2]) + extents[2]*btFabs(vdir[0]))return false;+		f = vdir[0] * Dy - vdir[1] * Dx;+		if(btFabs(f) > extents[0]*btFabs(vdir[1]) + extents[1]*btFabs(vdir[0]))return false;+		return true;+	}+++	SIMD_FORCE_INLINE void projection_interval(const btVector3 & direction, btScalar &vmin, btScalar &vmax) const+	{+		btVector3 center = (m_max+m_min)*0.5f;+		btVector3 extend = m_max-center;++		btScalar _fOrigin =  direction.dot(center);+		btScalar _fMaximumExtent = extend.dot(direction.absolute());+		vmin = _fOrigin - _fMaximumExtent;+		vmax = _fOrigin + _fMaximumExtent;+	}++	SIMD_FORCE_INLINE ePLANE_INTERSECTION_TYPE plane_classify(const btVector4 &plane) const+	{+		btScalar _fmin,_fmax;+		this->projection_interval(plane,_fmin,_fmax);++		if(plane[3] > _fmax + BOX_PLANE_EPSILON)+		{+			return G_BACK_PLANE; // 0+		}++		if(plane[3]+BOX_PLANE_EPSILON >=_fmin)+		{+			return G_COLLIDE_PLANE; //1+		}+		return G_FRONT_PLANE;//2+	}++	SIMD_FORCE_INLINE bool overlapping_trans_conservative(const GIM_AABB & box, btTransform & trans1_to_0)+	{+		GIM_AABB tbox = box;+		tbox.appy_transform(trans1_to_0);+		return has_collision(tbox);+	}++	//! transcache is the transformation cache from box to this AABB+	SIMD_FORCE_INLINE bool overlapping_trans_cache(+		const GIM_AABB & box,const GIM_BOX_BOX_TRANSFORM_CACHE & transcache, bool fulltest)+	{++		//Taken from OPCODE+		btVector3 ea,eb;//extends+		btVector3 ca,cb;//extends+		get_center_extend(ca,ea);+		box.get_center_extend(cb,eb);+++		btVector3 T;+		btScalar t,t2;+		int i;++		// Class I : A's basis vectors+		for(i=0;i<3;i++)+		{+			T[i] =  transcache.m_R1to0[i].dot(cb) + transcache.m_T1to0[i] - ca[i];+			t = transcache.m_AR[i].dot(eb) + ea[i];+			if(GIM_GREATER(T[i], t))	return false;+		}+		// Class II : B's basis vectors+		for(i=0;i<3;i++)+		{+			t = MAT_DOT_COL(transcache.m_R1to0,T,i);+			t2 = MAT_DOT_COL(transcache.m_AR,ea,i) + eb[i];+			if(GIM_GREATER(t,t2))	return false;+		}+		// Class III : 9 cross products+		if(fulltest)+		{+			int j,m,n,o,p,q,r;+			for(i=0;i<3;i++)+			{+				m = (i+1)%3;+				n = (i+2)%3;+				o = i==0?1:0;+				p = i==2?1:2;+				for(j=0;j<3;j++)+				{+					q = j==2?1:2;+					r = j==0?1:0;+					t = T[n]*transcache.m_R1to0[m][j] - T[m]*transcache.m_R1to0[n][j];+					t2 = ea[o]*transcache.m_AR[p][j] + ea[p]*transcache.m_AR[o][j] ++						eb[r]*transcache.m_AR[i][q] + eb[q]*transcache.m_AR[i][r];+					if(GIM_GREATER(t,t2))	return false;+				}+			}+		}+		return true;+	}++	//! Simple test for planes.+	SIMD_FORCE_INLINE bool collide_plane(+		const btVector4 & plane)+	{+		ePLANE_INTERSECTION_TYPE classify = plane_classify(plane);+		return (classify == G_COLLIDE_PLANE);+	}++	//! test for a triangle, with edges+	SIMD_FORCE_INLINE bool collide_triangle_exact(+		const btVector3 & p1,+		const btVector3 & p2,+		const btVector3 & p3,+		const btVector4 & triangle_plane)+	{+		if(!collide_plane(triangle_plane)) return false;++		btVector3 center,extends;+		this->get_center_extend(center,extends);++		const btVector3 v1(p1 - center);+		const btVector3 v2(p2 - center);+		const btVector3 v3(p3 - center);++		//First axis+		btVector3 diff(v2 - v1);+		btVector3 abs_diff = diff.absolute();+		//Test With X axis+		TEST_CROSS_EDGE_BOX_X_AXIS_MCR(diff,abs_diff,v1,v3,extends);+		//Test With Y axis+		TEST_CROSS_EDGE_BOX_Y_AXIS_MCR(diff,abs_diff,v1,v3,extends);+		//Test With Z axis+		TEST_CROSS_EDGE_BOX_Z_AXIS_MCR(diff,abs_diff,v1,v3,extends);+++		diff = v3 - v2;+		abs_diff = diff.absolute();+		//Test With X axis+		TEST_CROSS_EDGE_BOX_X_AXIS_MCR(diff,abs_diff,v2,v1,extends);+		//Test With Y axis+		TEST_CROSS_EDGE_BOX_Y_AXIS_MCR(diff,abs_diff,v2,v1,extends);+		//Test With Z axis+		TEST_CROSS_EDGE_BOX_Z_AXIS_MCR(diff,abs_diff,v2,v1,extends);++		diff = v1 - v3;+		abs_diff = diff.absolute();+		//Test With X axis+		TEST_CROSS_EDGE_BOX_X_AXIS_MCR(diff,abs_diff,v3,v2,extends);+		//Test With Y axis+		TEST_CROSS_EDGE_BOX_Y_AXIS_MCR(diff,abs_diff,v3,v2,extends);+		//Test With Z axis+		TEST_CROSS_EDGE_BOX_Z_AXIS_MCR(diff,abs_diff,v3,v2,extends);++		return true;+	}+};+++//! Compairison of transformation objects+SIMD_FORCE_INLINE bool btCompareTransformsEqual(const btTransform & t1,const btTransform & t2)+{+	if(!(t1.getOrigin() == t2.getOrigin()) ) return false;++	if(!(t1.getBasis().getRow(0) == t2.getBasis().getRow(0)) ) return false;+	if(!(t1.getBasis().getRow(1) == t2.getBasis().getRow(1)) ) return false;+	if(!(t1.getBasis().getRow(2) == t2.getBasis().getRow(2)) ) return false;+	return true;+}++++#endif // GIM_BOX_COLLISION_H_INCLUDED
+ bullet/BulletCollision/Gimpact/gim_box_set.h view
@@ -0,0 +1,674 @@+#ifndef GIM_BOX_SET_H_INCLUDED+#define GIM_BOX_SET_H_INCLUDED++/*! \file gim_box_set.h+\author Francisco Leon Najera+*/+/*+-----------------------------------------------------------------------------+This source file is part of GIMPACT Library.++For the latest info, see http://gimpact.sourceforge.net/++Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371.+email: projectileman@yahoo.com++ This library is free software; you can redistribute it and/or+ modify it under the terms of EITHER:+   (1) The GNU Lesser General Public License as published by the Free+       Software Foundation; either version 2.1 of the License, or (at+       your option) any later version. The text of the GNU Lesser+       General Public License is included with this library in the+       file GIMPACT-LICENSE-LGPL.TXT.+   (2) The BSD-style license that is included with this library in+       the file GIMPACT-LICENSE-BSD.TXT.+   (3) The zlib/libpng license that is included with this library in+       the file GIMPACT-LICENSE-ZLIB.TXT.++ This library is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files+ GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details.++-----------------------------------------------------------------------------+*/+++#include "gim_array.h"+#include "gim_radixsort.h"+#include "gim_box_collision.h"+#include "gim_tri_collision.h"++++//! Overlapping pair+struct GIM_PAIR+{+    GUINT m_index1;+    GUINT m_index2;+    GIM_PAIR()+    {}++    GIM_PAIR(const GIM_PAIR & p)+    {+    	m_index1 = p.m_index1;+    	m_index2 = p.m_index2;+	}++	GIM_PAIR(GUINT index1, GUINT index2)+    {+    	m_index1 = index1;+    	m_index2 = index2;+	}+};++//! A pairset array+class gim_pair_set: public gim_array<GIM_PAIR>+{+public:+	gim_pair_set():gim_array<GIM_PAIR>(32)+	{+	}+	inline void push_pair(GUINT index1,GUINT index2)+	{+		push_back(GIM_PAIR(index1,index2));+	}++	inline void push_pair_inv(GUINT index1,GUINT index2)+	{+		push_back(GIM_PAIR(index2,index1));+	}+};+++//! Prototype Base class for primitive classification+/*!+This class is a wrapper for primitive collections.+This tells relevant info for the Bounding Box set classes, which take care of space classification.+This class can manage Compound shapes and trimeshes, and if it is managing trimesh then the  Hierarchy Bounding Box classes will take advantage of primitive Vs Box overlapping tests for getting optimal results and less Per Box compairisons.+*/+class GIM_PRIMITIVE_MANAGER_PROTOTYPE+{+public:++	virtual ~GIM_PRIMITIVE_MANAGER_PROTOTYPE() {}+	//! determines if this manager consist on only triangles, which special case will be optimized+	virtual bool is_trimesh() = 0;+	virtual GUINT get_primitive_count() = 0;+	virtual void get_primitive_box(GUINT prim_index ,GIM_AABB & primbox) = 0;+	virtual void get_primitive_triangle(GUINT prim_index,GIM_TRIANGLE & triangle) = 0;+};+++struct GIM_AABB_DATA+{+	GIM_AABB m_bound;+	GUINT m_data;+};++//! Node Structure for trees+struct GIM_BOX_TREE_NODE+{+	GIM_AABB m_bound;+	GUINT m_left;//!< Left subtree+	GUINT m_right;//!< Right subtree+	GUINT m_escapeIndex;//!< Scape index for traversing+	GUINT m_data;//!< primitive index if apply++	GIM_BOX_TREE_NODE()+	{+	    m_left = 0;+	    m_right = 0;+	    m_escapeIndex = 0;+	    m_data = 0;+	}++	SIMD_FORCE_INLINE bool is_leaf_node() const+	{+	    return  (!m_left && !m_right);+	}+};++//! Basic Box tree structure+class GIM_BOX_TREE+{+protected:+	GUINT m_num_nodes;+	gim_array<GIM_BOX_TREE_NODE> m_node_array;+protected:+	GUINT _sort_and_calc_splitting_index(+		gim_array<GIM_AABB_DATA> & primitive_boxes,+		 GUINT startIndex,  GUINT endIndex, GUINT splitAxis);++	GUINT _calc_splitting_axis(gim_array<GIM_AABB_DATA> & primitive_boxes, GUINT startIndex,  GUINT endIndex);++	void _build_sub_tree(gim_array<GIM_AABB_DATA> & primitive_boxes, GUINT startIndex,  GUINT endIndex);+public:+	GIM_BOX_TREE()+	{+		m_num_nodes = 0;+	}++	//! prototype functions for box tree management+	//!@{+	void build_tree(gim_array<GIM_AABB_DATA> & primitive_boxes);++	SIMD_FORCE_INLINE void clearNodes()+	{+		m_node_array.clear();+		m_num_nodes = 0;+	}++	//! node count+	SIMD_FORCE_INLINE GUINT getNodeCount() const+	{+		return m_num_nodes;+	}++	//! tells if the node is a leaf+	SIMD_FORCE_INLINE bool isLeafNode(GUINT nodeindex) const+	{+		return m_node_array[nodeindex].is_leaf_node();+	}++	SIMD_FORCE_INLINE GUINT getNodeData(GUINT nodeindex) const+	{+		return m_node_array[nodeindex].m_data;+	}++	SIMD_FORCE_INLINE void getNodeBound(GUINT nodeindex, GIM_AABB & bound) const+	{+		bound = m_node_array[nodeindex].m_bound;+	}++	SIMD_FORCE_INLINE void setNodeBound(GUINT nodeindex, const GIM_AABB & bound)+	{+		m_node_array[nodeindex].m_bound = bound;+	}++	SIMD_FORCE_INLINE GUINT getLeftNodeIndex(GUINT nodeindex)  const+	{+		return m_node_array[nodeindex].m_left;+	}++	SIMD_FORCE_INLINE GUINT getRightNodeIndex(GUINT nodeindex)  const+	{+		return m_node_array[nodeindex].m_right;+	}++	SIMD_FORCE_INLINE GUINT getScapeNodeIndex(GUINT nodeindex) const+	{+		return m_node_array[nodeindex].m_escapeIndex;+	}++	//!@}+};+++//! Generic Box Tree Template+/*!+This class offers an structure for managing a box tree of primitives.+Requires a Primitive prototype (like GIM_PRIMITIVE_MANAGER_PROTOTYPE ) and+a Box tree structure ( like GIM_BOX_TREE).+*/+template<typename _GIM_PRIMITIVE_MANAGER_PROTOTYPE, typename _GIM_BOX_TREE_PROTOTYPE>+class GIM_BOX_TREE_TEMPLATE_SET+{+protected:+	_GIM_PRIMITIVE_MANAGER_PROTOTYPE m_primitive_manager;+	_GIM_BOX_TREE_PROTOTYPE m_box_tree;+protected:+	//stackless refit+	SIMD_FORCE_INLINE void refit()+	{+		GUINT nodecount = getNodeCount();+		while(nodecount--)+		{+			if(isLeafNode(nodecount))+			{+				GIM_AABB leafbox;+				m_primitive_manager.get_primitive_box(getNodeData(nodecount),leafbox);+				setNodeBound(nodecount,leafbox);+			}+			else+			{+				//get left bound+				GUINT childindex = getLeftNodeIndex(nodecount);+				GIM_AABB bound;+				getNodeBound(childindex,bound);+				//get right bound+				childindex = getRightNodeIndex(nodecount);+				GIM_AABB bound2;+				getNodeBound(childindex,bound2);+				bound.merge(bound2);++				setNodeBound(nodecount,bound);+			}+		}+	}+public:++	GIM_BOX_TREE_TEMPLATE_SET()+	{+	}++	SIMD_FORCE_INLINE GIM_AABB getGlobalBox()  const+	{+		GIM_AABB totalbox;+		getNodeBound(0, totalbox);+		return totalbox;+	}++	SIMD_FORCE_INLINE void setPrimitiveManager(const _GIM_PRIMITIVE_MANAGER_PROTOTYPE & primitive_manager)+	{+		m_primitive_manager = primitive_manager;+	}++	const _GIM_PRIMITIVE_MANAGER_PROTOTYPE & getPrimitiveManager() const+	{+		return m_primitive_manager;+	}++	_GIM_PRIMITIVE_MANAGER_PROTOTYPE & getPrimitiveManager()+	{+		return m_primitive_manager;+	}++//! node manager prototype functions+///@{++	//! this attemps to refit the box set.+	SIMD_FORCE_INLINE void update()+	{+		refit();+	}++	//! this rebuild the entire set+	SIMD_FORCE_INLINE void buildSet()+	{+		//obtain primitive boxes+		gim_array<GIM_AABB_DATA> primitive_boxes;+		primitive_boxes.resize(m_primitive_manager.get_primitive_count(),false);++		for (GUINT i = 0;i<primitive_boxes.size() ;i++ )+		{+			 m_primitive_manager.get_primitive_box(i,primitive_boxes[i].m_bound);+			 primitive_boxes[i].m_data = i;+		}++		m_box_tree.build_tree(primitive_boxes);+	}++	//! returns the indices of the primitives in the m_primitive_manager+	SIMD_FORCE_INLINE bool boxQuery(const GIM_AABB & box, gim_array<GUINT> & collided_results) const+	{+		GUINT curIndex = 0;+		GUINT numNodes = getNodeCount();++		while (curIndex < numNodes)+		{+			GIM_AABB bound;+			getNodeBound(curIndex,bound);++			//catch bugs in tree data++			bool aabbOverlap = bound.has_collision(box);+			bool isleafnode = isLeafNode(curIndex);++			if (isleafnode && aabbOverlap)+			{+				collided_results.push_back(getNodeData(curIndex));+			}++			if (aabbOverlap || isleafnode)+			{+				//next subnode+				curIndex++;+			}+			else+			{+				//skip node+				curIndex+= getScapeNodeIndex(curIndex);+			}+		}+		if(collided_results.size()>0) return true;+		return false;+	}++	//! returns the indices of the primitives in the m_primitive_manager+	SIMD_FORCE_INLINE bool boxQueryTrans(const GIM_AABB & box,+		 const btTransform & transform, gim_array<GUINT> & collided_results) const+	{+		GIM_AABB transbox=box;+		transbox.appy_transform(transform);+		return boxQuery(transbox,collided_results);+	}++	//! returns the indices of the primitives in the m_primitive_manager+	SIMD_FORCE_INLINE bool rayQuery(+		const btVector3 & ray_dir,const btVector3 & ray_origin ,+		gim_array<GUINT> & collided_results) const+	{+		GUINT curIndex = 0;+		GUINT numNodes = getNodeCount();++		while (curIndex < numNodes)+		{+			GIM_AABB bound;+			getNodeBound(curIndex,bound);++			//catch bugs in tree data++			bool aabbOverlap = bound.collide_ray(ray_origin,ray_dir);+			bool isleafnode = isLeafNode(curIndex);++			if (isleafnode && aabbOverlap)+			{+				collided_results.push_back(getNodeData( curIndex));+			}++			if (aabbOverlap || isleafnode)+			{+				//next subnode+				curIndex++;+			}+			else+			{+				//skip node+				curIndex+= getScapeNodeIndex(curIndex);+			}+		}+		if(collided_results.size()>0) return true;+		return false;+	}++	//! tells if this set has hierarcht+	SIMD_FORCE_INLINE bool hasHierarchy() const+	{+		return true;+	}++	//! tells if this set is a trimesh+	SIMD_FORCE_INLINE bool isTrimesh()  const+	{+		return m_primitive_manager.is_trimesh();+	}++	//! node count+	SIMD_FORCE_INLINE GUINT getNodeCount() const+	{+		return m_box_tree.getNodeCount();+	}++	//! tells if the node is a leaf+	SIMD_FORCE_INLINE bool isLeafNode(GUINT nodeindex) const+	{+		return m_box_tree.isLeafNode(nodeindex);+	}++	SIMD_FORCE_INLINE GUINT getNodeData(GUINT nodeindex) const+	{+		return m_box_tree.getNodeData(nodeindex);+	}++	SIMD_FORCE_INLINE void getNodeBound(GUINT nodeindex, GIM_AABB & bound)  const+	{+		m_box_tree.getNodeBound(nodeindex, bound);+	}++	SIMD_FORCE_INLINE void setNodeBound(GUINT nodeindex, const GIM_AABB & bound)+	{+		m_box_tree.setNodeBound(nodeindex, bound);+	}++	SIMD_FORCE_INLINE GUINT getLeftNodeIndex(GUINT nodeindex) const+	{+		return m_box_tree.getLeftNodeIndex(nodeindex);+	}++	SIMD_FORCE_INLINE GUINT getRightNodeIndex(GUINT nodeindex) const+	{+		return m_box_tree.getRightNodeIndex(nodeindex);+	}++	SIMD_FORCE_INLINE GUINT getScapeNodeIndex(GUINT nodeindex) const+	{+		return m_box_tree.getScapeNodeIndex(nodeindex);+	}++	SIMD_FORCE_INLINE void getNodeTriangle(GUINT nodeindex,GIM_TRIANGLE & triangle) const+	{+		m_primitive_manager.get_primitive_triangle(getNodeData(nodeindex),triangle);+	}++};++//! Class for Box Tree Sets+/*!+this has the GIM_BOX_TREE implementation for bounding boxes.+*/+template<typename _GIM_PRIMITIVE_MANAGER_PROTOTYPE>+class GIM_BOX_TREE_SET: public GIM_BOX_TREE_TEMPLATE_SET< _GIM_PRIMITIVE_MANAGER_PROTOTYPE, GIM_BOX_TREE>+{+public:++};++++++/// GIM_BOX_SET collision methods+template<typename BOX_SET_CLASS0,typename BOX_SET_CLASS1>+class GIM_TREE_TREE_COLLIDER+{+public:+	gim_pair_set * m_collision_pairs;+	BOX_SET_CLASS0 * m_boxset0;+	BOX_SET_CLASS1 * m_boxset1;+	GUINT current_node0;+	GUINT current_node1;+	bool node0_is_leaf;+	bool node1_is_leaf;+	bool t0_is_trimesh;+	bool t1_is_trimesh;+	bool node0_has_triangle;+	bool node1_has_triangle;+	GIM_AABB m_box0;+	GIM_AABB m_box1;+	GIM_BOX_BOX_TRANSFORM_CACHE trans_cache_1to0;+	btTransform trans_cache_0to1;+	GIM_TRIANGLE m_tri0;+	btVector4 m_tri0_plane;+	GIM_TRIANGLE m_tri1;+	btVector4 m_tri1_plane;+++public:+	GIM_TREE_TREE_COLLIDER()+	{+		current_node0 = G_UINT_INFINITY;+		current_node1 = G_UINT_INFINITY;+	}+protected:+	SIMD_FORCE_INLINE void retrieve_node0_triangle(GUINT node0)+	{+		if(node0_has_triangle) return;+		m_boxset0->getNodeTriangle(node0,m_tri0);+		//transform triangle+		m_tri0.m_vertices[0] = trans_cache_0to1(m_tri0.m_vertices[0]);+		m_tri0.m_vertices[1] = trans_cache_0to1(m_tri0.m_vertices[1]);+		m_tri0.m_vertices[2] = trans_cache_0to1(m_tri0.m_vertices[2]);+		m_tri0.get_plane(m_tri0_plane);++		node0_has_triangle = true;+	}++	SIMD_FORCE_INLINE void retrieve_node1_triangle(GUINT node1)+	{+		if(node1_has_triangle) return;+		m_boxset1->getNodeTriangle(node1,m_tri1);+		//transform triangle+		m_tri1.m_vertices[0] = trans_cache_1to0.transform(m_tri1.m_vertices[0]);+		m_tri1.m_vertices[1] = trans_cache_1to0.transform(m_tri1.m_vertices[1]);+		m_tri1.m_vertices[2] = trans_cache_1to0.transform(m_tri1.m_vertices[2]);+		m_tri1.get_plane(m_tri1_plane);++		node1_has_triangle = true;+	}++	SIMD_FORCE_INLINE void retrieve_node0_info(GUINT node0)+	{+		if(node0 == current_node0) return;+		m_boxset0->getNodeBound(node0,m_box0);+		node0_is_leaf = m_boxset0->isLeafNode(node0);+		node0_has_triangle = false;+		current_node0 = node0;+	}++	SIMD_FORCE_INLINE void retrieve_node1_info(GUINT node1)+	{+		if(node1 == current_node1) return;+		m_boxset1->getNodeBound(node1,m_box1);+		node1_is_leaf = m_boxset1->isLeafNode(node1);+		node1_has_triangle = false;+		current_node1 = node1;+	}++	SIMD_FORCE_INLINE bool node_collision(GUINT node0 ,GUINT node1)+	{+		retrieve_node0_info(node0);+		retrieve_node1_info(node1);+		bool result = m_box0.overlapping_trans_cache(m_box1,trans_cache_1to0,true);+		if(!result) return false;++		if(t0_is_trimesh && node0_is_leaf)+		{+			//perform primitive vs box collision+			retrieve_node0_triangle(node0);+			//do triangle vs box collision+			m_box1.increment_margin(m_tri0.m_margin);++			result = m_box1.collide_triangle_exact(+				m_tri0.m_vertices[0],m_tri0.m_vertices[1],m_tri0.m_vertices[2],m_tri0_plane);++			m_box1.increment_margin(-m_tri0.m_margin);++			if(!result) return false;+			return true;+		}+		else if(t1_is_trimesh && node1_is_leaf)+		{+			//perform primitive vs box collision+			retrieve_node1_triangle(node1);+			//do triangle vs box collision+			m_box0.increment_margin(m_tri1.m_margin);++			result = m_box0.collide_triangle_exact(+				m_tri1.m_vertices[0],m_tri1.m_vertices[1],m_tri1.m_vertices[2],m_tri1_plane);++			m_box0.increment_margin(-m_tri1.m_margin);++			if(!result) return false;+			return true;+		}+		return true;+	}++	//stackless collision routine+	void find_collision_pairs()+	{+		gim_pair_set stack_collisions;+		stack_collisions.reserve(32);++		//add the first pair+		stack_collisions.push_pair(0,0);+++		while(stack_collisions.size())+		{+			//retrieve the last pair and pop+			GUINT node0 = stack_collisions.back().m_index1;+			GUINT node1 = stack_collisions.back().m_index2;+			stack_collisions.pop_back();+			if(node_collision(node0,node1)) // a collision is found+			{+				if(node0_is_leaf)+				{+					if(node1_is_leaf)+					{+						m_collision_pairs->push_pair(m_boxset0->getNodeData(node0),m_boxset1->getNodeData(node1));+					}+					else+					{+						//collide left+						stack_collisions.push_pair(node0,m_boxset1->getLeftNodeIndex(node1));++						//collide right+						stack_collisions.push_pair(node0,m_boxset1->getRightNodeIndex(node1));+					}+				}+				else+				{+					if(node1_is_leaf)+					{+						//collide left+						stack_collisions.push_pair(m_boxset0->getLeftNodeIndex(node0),node1);+						//collide right+						stack_collisions.push_pair(m_boxset0->getRightNodeIndex(node0),node1);+					}+					else+					{+						GUINT left0 = m_boxset0->getLeftNodeIndex(node0);+						GUINT right0 = m_boxset0->getRightNodeIndex(node0);+						GUINT left1 = m_boxset1->getLeftNodeIndex(node1);+						GUINT right1 = m_boxset1->getRightNodeIndex(node1);+						//collide left+						stack_collisions.push_pair(left0,left1);+						//collide right+						stack_collisions.push_pair(left0,right1);+						//collide left+						stack_collisions.push_pair(right0,left1);+						//collide right+						stack_collisions.push_pair(right0,right1);++					}// else if node1 is not a leaf+				}// else if node0 is not a leaf++			}// if(node_collision(node0,node1))+		}//while(stack_collisions.size())+	}+public:+	void find_collision(BOX_SET_CLASS0 * boxset1, const btTransform & trans1,+		BOX_SET_CLASS1 * boxset2, const btTransform & trans2,+		gim_pair_set & collision_pairs, bool complete_primitive_tests = true)+	{+		m_collision_pairs = &collision_pairs;+		m_boxset0 = boxset1;+		m_boxset1 = boxset2;++		trans_cache_1to0.calc_from_homogenic(trans1,trans2);++		trans_cache_0to1 =  trans2.inverse();+		trans_cache_0to1 *= trans1;+++		if(complete_primitive_tests)+		{+			t0_is_trimesh = boxset1->getPrimitiveManager().is_trimesh();+			t1_is_trimesh = boxset2->getPrimitiveManager().is_trimesh();+		}+		else+		{+			t0_is_trimesh = false;+			t1_is_trimesh = false;+		}++		find_collision_pairs();+	}+};+++#endif // GIM_BOXPRUNING_H_INCLUDED++
+ bullet/BulletCollision/Gimpact/gim_clip_polygon.h view
@@ -0,0 +1,210 @@+#ifndef GIM_CLIP_POLYGON_H_INCLUDED+#define GIM_CLIP_POLYGON_H_INCLUDED++/*! \file gim_tri_collision.h+\author Francisco Leon Najera+*/+/*+-----------------------------------------------------------------------------+This source file is part of GIMPACT Library.++For the latest info, see http://gimpact.sourceforge.net/++Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371.+email: projectileman@yahoo.com++ This library is free software; you can redistribute it and/or+ modify it under the terms of EITHER:+   (1) The GNU Lesser General Public License as published by the Free+       Software Foundation; either version 2.1 of the License, or (at+       your option) any later version. The text of the GNU Lesser+       General Public License is included with this library in the+       file GIMPACT-LICENSE-LGPL.TXT.+   (2) The BSD-style license that is included with this library in+       the file GIMPACT-LICENSE-BSD.TXT.+   (3) The zlib/libpng license that is included with this library in+       the file GIMPACT-LICENSE-ZLIB.TXT.++ This library is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files+ GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details.++-----------------------------------------------------------------------------+*/+++//! This function calcs the distance from a 3D plane+class DISTANCE_PLANE_3D_FUNC+{+public:+	template<typename CLASS_POINT,typename CLASS_PLANE>+	inline GREAL operator()(const CLASS_PLANE & plane, const CLASS_POINT & point)+	{+		return DISTANCE_PLANE_POINT(plane, point);+	}+};++++template<typename CLASS_POINT>+SIMD_FORCE_INLINE void PLANE_CLIP_POLYGON_COLLECT(+						const CLASS_POINT & point0,+						const CLASS_POINT & point1,+						GREAL dist0,+						GREAL dist1,+						CLASS_POINT * clipped,+						GUINT & clipped_count)+{+	GUINT _prevclassif = (dist0>G_EPSILON);+	GUINT _classif = (dist1>G_EPSILON);+	if(_classif!=_prevclassif)+	{+		GREAL blendfactor = -dist0/(dist1-dist0);+		VEC_BLEND(clipped[clipped_count],point0,point1,blendfactor);+		clipped_count++;+	}+	if(!_classif)+	{+		VEC_COPY(clipped[clipped_count],point1);+		clipped_count++;+	}+}+++//! Clips a polygon by a plane+/*!+*\return The count of the clipped counts+*/+template<typename CLASS_POINT,typename CLASS_PLANE, typename DISTANCE_PLANE_FUNC>+SIMD_FORCE_INLINE GUINT PLANE_CLIP_POLYGON_GENERIC(+						const CLASS_PLANE & plane,+						const CLASS_POINT * polygon_points,+						GUINT polygon_point_count,+						CLASS_POINT * clipped,DISTANCE_PLANE_FUNC distance_func)+{+    GUINT clipped_count = 0;+++    //clip first point+	GREAL firstdist = distance_func(plane,polygon_points[0]);;+	if(!(firstdist>G_EPSILON))+	{+		VEC_COPY(clipped[clipped_count],polygon_points[0]);+		clipped_count++;+	}++	GREAL olddist = firstdist;+	for(GUINT _i=1;_i<polygon_point_count;_i++)+	{		+		GREAL dist = distance_func(plane,polygon_points[_i]);++		PLANE_CLIP_POLYGON_COLLECT(+						polygon_points[_i-1],polygon_points[_i],+						olddist,+						dist,+						clipped,+						clipped_count);+++		olddist = dist;		+	}++	//RETURN TO FIRST  point	++	PLANE_CLIP_POLYGON_COLLECT(+					polygon_points[polygon_point_count-1],polygon_points[0],+					olddist,+					firstdist,+					clipped,+					clipped_count);++	return clipped_count;+}++//! Clips a polygon by a plane+/*!+*\return The count of the clipped counts+*/+template<typename CLASS_POINT,typename CLASS_PLANE, typename DISTANCE_PLANE_FUNC>+SIMD_FORCE_INLINE GUINT PLANE_CLIP_TRIANGLE_GENERIC(+						const CLASS_PLANE & plane,+						const CLASS_POINT & point0,+						const CLASS_POINT & point1,+						const CLASS_POINT & point2,+						CLASS_POINT * clipped,DISTANCE_PLANE_FUNC distance_func)+{+    GUINT clipped_count = 0;++    //clip first point+	GREAL firstdist = distance_func(plane,point0);;+	if(!(firstdist>G_EPSILON))+	{+		VEC_COPY(clipped[clipped_count],point0);+		clipped_count++;+	}++	// point 1+	GREAL olddist = firstdist;+	GREAL dist = distance_func(plane,point1);++	PLANE_CLIP_POLYGON_COLLECT(+					point0,point1,+					olddist,+					dist,+					clipped,+					clipped_count);++	olddist = dist;+++	// point 2+	dist = distance_func(plane,point2);++	PLANE_CLIP_POLYGON_COLLECT(+					point1,point2,+					olddist,+					dist,+					clipped,+					clipped_count);+	olddist = dist;++++	//RETURN TO FIRST  point+	PLANE_CLIP_POLYGON_COLLECT(+					point2,point0,+					olddist,+					firstdist,+					clipped,+					clipped_count);++	return clipped_count;+}+++template<typename CLASS_POINT,typename CLASS_PLANE>+SIMD_FORCE_INLINE GUINT PLANE_CLIP_POLYGON3D(+						const CLASS_PLANE & plane,+						const CLASS_POINT * polygon_points,+						GUINT polygon_point_count,+						CLASS_POINT * clipped)+{+	return PLANE_CLIP_POLYGON_GENERIC<CLASS_POINT,CLASS_PLANE>(plane,polygon_points,polygon_point_count,clipped,DISTANCE_PLANE_3D_FUNC());+}+++template<typename CLASS_POINT,typename CLASS_PLANE>+SIMD_FORCE_INLINE GUINT PLANE_CLIP_TRIANGLE3D(+						const CLASS_PLANE & plane,+						const CLASS_POINT & point0,+						const CLASS_POINT & point1,+						const CLASS_POINT & point2,+						CLASS_POINT * clipped)+{+	return PLANE_CLIP_TRIANGLE_GENERIC<CLASS_POINT,CLASS_PLANE>(plane,point0,point1,point2,clipped,DISTANCE_PLANE_3D_FUNC());+}++++#endif // GIM_TRI_COLLISION_H_INCLUDED
+ bullet/BulletCollision/Gimpact/gim_contact.h view
@@ -0,0 +1,164 @@+#ifndef GIM_CONTACT_H_INCLUDED+#define GIM_CONTACT_H_INCLUDED++/*! \file gim_contact.h+\author Francisco Leon Najera+*/+/*+-----------------------------------------------------------------------------+This source file is part of GIMPACT Library.++For the latest info, see http://gimpact.sourceforge.net/++Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371.+email: projectileman@yahoo.com++ This library is free software; you can redistribute it and/or+ modify it under the terms of EITHER:+   (1) The GNU Lesser General Public License as published by the Free+       Software Foundation; either version 2.1 of the License, or (at+       your option) any later version. The text of the GNU Lesser+       General Public License is included with this library in the+       file GIMPACT-LICENSE-LGPL.TXT.+   (2) The BSD-style license that is included with this library in+       the file GIMPACT-LICENSE-BSD.TXT.+   (3) The zlib/libpng license that is included with this library in+       the file GIMPACT-LICENSE-ZLIB.TXT.++ This library is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files+ GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details.++-----------------------------------------------------------------------------+*/+#include "gim_geometry.h"+#include "gim_radixsort.h"+#include "gim_array.h"+++/**+Configuration var for applying interpolation of  contact normals+*/+#define NORMAL_CONTACT_AVERAGE 1+#define CONTACT_DIFF_EPSILON 0.00001f++/// Structure for collision results+///Functions for managing and sorting contacts resulting from a collision query.+///Contact lists must be create by calling \ref GIM_CREATE_CONTACT_LIST+///After querys, contact lists must be destroy by calling \ref GIM_DYNARRAY_DESTROY+///Contacts can be merge for avoid duplicate results by calling \ref gim_merge_contacts+class GIM_CONTACT+{+public:+    btVector3 m_point;+    btVector3 m_normal;+    GREAL m_depth;//Positive value indicates interpenetration+    GREAL m_distance;//Padding not for use+    GUINT m_feature1;//Face number+    GUINT m_feature2;//Face number+public:+    GIM_CONTACT()+    {+    }++    GIM_CONTACT(const GIM_CONTACT & contact):+				m_point(contact.m_point),+				m_normal(contact.m_normal),+				m_depth(contact.m_depth),+				m_feature1(contact.m_feature1),+				m_feature2(contact.m_feature2)+    {+    	m_point = contact.m_point;+    	m_normal = contact.m_normal;+    	m_depth = contact.m_depth;+    	m_feature1 = contact.m_feature1;+    	m_feature2 = contact.m_feature2;+    }++    GIM_CONTACT(const btVector3 &point,const btVector3 & normal,+    	 			GREAL depth, GUINT feature1, GUINT feature2):+				m_point(point),+				m_normal(normal),+				m_depth(depth),+				m_feature1(feature1),+				m_feature2(feature2)+    {+    }++	//! Calcs key for coord classification+    SIMD_FORCE_INLINE GUINT calc_key_contact() const+    {+    	GINT _coords[] = {+    		(GINT)(m_point[0]*1000.0f+1.0f),+    		(GINT)(m_point[1]*1333.0f),+    		(GINT)(m_point[2]*2133.0f+3.0f)};+		GUINT _hash=0;+		GUINT *_uitmp = (GUINT *)(&_coords[0]);+		_hash = *_uitmp;+		_uitmp++;+		_hash += (*_uitmp)<<4;+		_uitmp++;+		_hash += (*_uitmp)<<8;+		return _hash;+    }++    SIMD_FORCE_INLINE void interpolate_normals( btVector3 * normals,GUINT normal_count)+    {+    	btVector3 vec_sum(m_normal);+		for(GUINT i=0;i<normal_count;i++)+		{+			vec_sum += normals[i];+		}++		GREAL vec_sum_len = vec_sum.length2();+		if(vec_sum_len <CONTACT_DIFF_EPSILON) return;++		GIM_INV_SQRT(vec_sum_len,vec_sum_len); // 1/sqrt(vec_sum_len)++		m_normal = vec_sum*vec_sum_len;+    }++};+++class gim_contact_array:public gim_array<GIM_CONTACT>+{+public:+	gim_contact_array():gim_array<GIM_CONTACT>(64)+	{+	}++	SIMD_FORCE_INLINE void push_contact(const btVector3 &point,const btVector3 & normal,+    	 			GREAL depth, GUINT feature1, GUINT feature2)+	{+		push_back_mem();+		GIM_CONTACT & newele = back();+		newele.m_point = point;+		newele.m_normal = normal;+		newele.m_depth = depth;+		newele.m_feature1 = feature1;+		newele.m_feature2 = feature2;+	}++	SIMD_FORCE_INLINE void push_triangle_contacts(+		const GIM_TRIANGLE_CONTACT_DATA & tricontact,+		GUINT feature1,GUINT feature2)+	{+		for(GUINT i = 0;i<tricontact.m_point_count ;i++ )+		{+			push_back_mem();+			GIM_CONTACT & newele = back();+			newele.m_point = tricontact.m_points[i];+			newele.m_normal = tricontact.m_separating_normal;+			newele.m_depth = tricontact.m_penetration_depth;+			newele.m_feature1 = feature1;+			newele.m_feature2 = feature2;+		}+	}++	void merge_contacts(const gim_contact_array & contacts, bool normal_contact_average = true);+	void merge_contacts_unique(const gim_contact_array & contacts);+};++#endif // GIM_CONTACT_H_INCLUDED
+ bullet/BulletCollision/Gimpact/gim_geom_types.h view
@@ -0,0 +1,97 @@+#ifndef GIM_GEOM_TYPES_H_INCLUDED+#define GIM_GEOM_TYPES_H_INCLUDED++/*! \file gim_geom_types.h+\author Francisco Leon Najera+*/+/*+-----------------------------------------------------------------------------+This source file is part of GIMPACT Library.++For the latest info, see http://gimpact.sourceforge.net/++Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371.+email: projectileman@yahoo.com++ This library is free software; you can redistribute it and/or+ modify it under the terms of EITHER:+   (1) The GNU Lesser General Public License as published by the Free+       Software Foundation; either version 2.1 of the License, or (at+       your option) any later version. The text of the GNU Lesser+       General Public License is included with this library in the+       file GIMPACT-LICENSE-LGPL.TXT.+   (2) The BSD-style license that is included with this library in+       the file GIMPACT-LICENSE-BSD.TXT.+   (3) The zlib/libpng license that is included with this library in+       the file GIMPACT-LICENSE-ZLIB.TXT.++ This library is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files+ GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details.++-----------------------------------------------------------------------------+*/+++#include "gim_math.h"++++//! Short Integer vector 2D+typedef GSHORT vec2s[2];+//! Integer vector 3D+typedef GSHORT vec3s[3];+//! Integer vector 4D+typedef GSHORT vec4s[4];++//! Short Integer vector 2D+typedef GUSHORT vec2us[2];+//! Integer vector 3D+typedef GUSHORT vec3us[3];+//! Integer vector 4D+typedef GUSHORT vec4us[4];++//! Integer vector 2D+typedef GINT vec2i[2];+//! Integer vector 3D+typedef GINT vec3i[3];+//! Integer vector 4D+typedef GINT vec4i[4];++//! Unsigned Integer vector 2D+typedef GUINT vec2ui[2];+//! Unsigned Integer vector 3D+typedef GUINT vec3ui[3];+//! Unsigned Integer vector 4D+typedef GUINT vec4ui[4];++//! Float vector 2D+typedef GREAL vec2f[2];+//! Float vector 3D+typedef GREAL vec3f[3];+//! Float vector 4D+typedef GREAL vec4f[4];++//! Double vector 2D+typedef GREAL2 vec2d[2];+//! Float vector 3D+typedef GREAL2 vec3d[3];+//! Float vector 4D+typedef GREAL2 vec4d[4];++//! Matrix 2D, row ordered+typedef GREAL mat2f[2][2];+//! Matrix 3D, row ordered+typedef GREAL mat3f[3][3];+//! Matrix 4D, row ordered+typedef GREAL mat4f[4][4];++//! Quaternion+typedef GREAL quatf[4];++//typedef struct _aabb3f aabb3f;++++#endif // GIM_GEOM_TYPES_H_INCLUDED
+ bullet/BulletCollision/Gimpact/gim_geometry.h view
@@ -0,0 +1,42 @@+#ifndef GIM_GEOMETRY_H_INCLUDED+#define GIM_GEOMETRY_H_INCLUDED++/*! \file gim_geometry.h+\author Francisco Leon Najera+*/+/*+-----------------------------------------------------------------------------+This source file is part of GIMPACT Library.++For the latest info, see http://gimpact.sourceforge.net/++Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371.+email: projectileman@yahoo.com++ This library is free software; you can redistribute it and/or+ modify it under the terms of EITHER:+   (1) The GNU Lesser General Public License as published by the Free+       Software Foundation; either version 2.1 of the License, or (at+       your option) any later version. The text of the GNU Lesser+       General Public License is included with this library in the+       file GIMPACT-LICENSE-LGPL.TXT.+   (2) The BSD-style license that is included with this library in+       the file GIMPACT-LICENSE-BSD.TXT.+   (3) The zlib/libpng license that is included with this library in+       the file GIMPACT-LICENSE-ZLIB.TXT.++ This library is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files+ GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details.++-----------------------------------------------------------------------------+*/++///Additional Headers for Collision+#include "gim_basic_geometry_operations.h"+#include "gim_clip_polygon.h"+#include "gim_box_collision.h"+#include "gim_tri_collision.h"++#endif // GIM_VECTOR_H_INCLUDED
+ bullet/BulletCollision/Gimpact/gim_hash_table.h view
@@ -0,0 +1,902 @@+#ifndef GIM_HASH_TABLE_H_INCLUDED+#define GIM_HASH_TABLE_H_INCLUDED+/*! \file gim_trimesh_data.h+\author Francisco Leon Najera+*/+/*+-----------------------------------------------------------------------------+This source file is part of GIMPACT Library.++For the latest info, see http://gimpact.sourceforge.net/++Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371.+email: projectileman@yahoo.com++ This library is free software; you can redistribute it and/or+ modify it under the terms of EITHER:+   (1) The GNU Lesser General Public License as published by the Free+       Software Foundation; either version 2.1 of the License, or (at+       your option) any later version. The text of the GNU Lesser+       General Public License is included with this library in the+       file GIMPACT-LICENSE-LGPL.TXT.+   (2) The BSD-style license that is included with this library in+       the file GIMPACT-LICENSE-BSD.TXT.+   (3) The zlib/libpng license that is included with this library in+       the file GIMPACT-LICENSE-ZLIB.TXT.++ This library is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files+ GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details.++-----------------------------------------------------------------------------+*/++#include "gim_radixsort.h"+++#define GIM_INVALID_HASH 0xffffffff //!< A very very high value+#define GIM_DEFAULT_HASH_TABLE_SIZE 380+#define GIM_DEFAULT_HASH_TABLE_NODE_SIZE 4+#define GIM_HASH_TABLE_GROW_FACTOR 2++#define GIM_MIN_RADIX_SORT_SIZE 860 //!< calibrated on a PIII++template<typename T>+struct GIM_HASH_TABLE_NODE+{+    GUINT m_key;+    T m_data;+    GIM_HASH_TABLE_NODE()+    {+    }++    GIM_HASH_TABLE_NODE(const GIM_HASH_TABLE_NODE & value)+    {+        m_key = value.m_key;+        m_data = value.m_data;+    }++    GIM_HASH_TABLE_NODE(GUINT key, const T & data)+    {+        m_key = key;+        m_data = data;+    }++    bool operator <(const GIM_HASH_TABLE_NODE<T> & other) const+	{+		///inverse order, further objects are first+		if(m_key <  other.m_key) return true;+		return false;+	}++	bool operator >(const GIM_HASH_TABLE_NODE<T> & other) const+	{+		///inverse order, further objects are first+		if(m_key >  other.m_key) return true;+		return false;+	}++	bool operator ==(const GIM_HASH_TABLE_NODE<T> & other) const+	{+		///inverse order, further objects are first+		if(m_key ==  other.m_key) return true;+		return false;+	}+};++///Macro for getting the key+class GIM_HASH_NODE_GET_KEY+{+public:+	template<class T>+	inline GUINT operator()( const T& a)+	{+		return a.m_key;+	}+};++++///Macro for comparing the key and the element+class GIM_HASH_NODE_CMP_KEY_MACRO+{+public:+	template<class T>+	inline int operator() ( const T& a, GUINT key)+	{+		return ((int)(a.m_key - key));+	}+};++///Macro for comparing Hash nodes+class GIM_HASH_NODE_CMP_MACRO+{+public:+	template<class T>+	inline int operator() ( const T& a, const T& b )+	{+		return ((int)(a.m_key - b.m_key));+	}+};++++++//! Sorting for hash table+/*!+switch automatically between quicksort and radixsort+*/+template<typename T>+void gim_sort_hash_node_array(T * array, GUINT array_count)+{+    if(array_count<GIM_MIN_RADIX_SORT_SIZE)+    {+    	gim_heap_sort(array,array_count,GIM_HASH_NODE_CMP_MACRO());+    }+    else+    {+    	memcopy_elements_func cmpfunc;+    	gim_radix_sort(array,array_count,GIM_HASH_NODE_GET_KEY(),cmpfunc);+    }+}+++++++// Note: assumes long is at least 32 bits.+#define GIM_NUM_PRIME 28++static const GUINT gim_prime_list[GIM_NUM_PRIME] =+{+  53ul,         97ul,         193ul,       389ul,       769ul,+  1543ul,       3079ul,       6151ul,      12289ul,     24593ul,+  49157ul,      98317ul,      196613ul,    393241ul,    786433ul,+  1572869ul,    3145739ul,    6291469ul,   12582917ul,  25165843ul,+  50331653ul,   100663319ul,  201326611ul, 402653189ul, 805306457ul,+  1610612741ul, 3221225473ul, 4294967291ul+};++inline GUINT gim_next_prime(GUINT number)+{+    //Find nearest upper prime+    GUINT result_ind = 0;+    gim_binary_search(gim_prime_list,0,(GIM_NUM_PRIME-2),number,result_ind);++    // inv: result_ind < 28+    return gim_prime_list[result_ind];+}++++//! A compact hash table implementation+/*!+A memory aligned compact hash table that coud be treated as an array.+It could be a simple sorted array without the overhead of the hash key bucked, or could+be a formely hash table with an array of keys.+You can use switch_to_hashtable() and switch_to_sorted_array for saving space or increase speed.+</br>++<ul>+<li> if node_size = 0, then this container becomes a simple sorted array allocator. reserve_size is used for reserve memory in m_nodes.+When the array size reaches the size equivalent to 'min_hash_table_size', then it becomes a hash table by calling check_for_switching_to_hashtable.+<li> If node_size != 0, then this container becomes a hash table for ever+</ul>++*/+template<class T>+class gim_hash_table+{+protected:+    typedef GIM_HASH_TABLE_NODE<T> _node_type;++    //!The nodes+    //array< _node_type, SuperAllocator<_node_type> > m_nodes;+    gim_array< _node_type > m_nodes;+    //SuperBufferedArray< _node_type > m_nodes;+    bool m_sorted;++    ///Hash table data management. The hash table has the indices to the corresponding m_nodes array+    GUINT * m_hash_table;//!<+    GUINT m_table_size;//!<+    GUINT m_node_size;//!<+    GUINT m_min_hash_table_size;++++    //! Returns the cell index+    inline GUINT _find_cell(GUINT hashkey)+    {+        _node_type * nodesptr = m_nodes.pointer();+        GUINT start_index = (hashkey%m_table_size)*m_node_size;+        GUINT end_index = start_index + m_node_size;++        while(start_index<end_index)+        {+            GUINT value = m_hash_table[start_index];+            if(value != GIM_INVALID_HASH)+            {+                if(nodesptr[value].m_key == hashkey) return start_index;+            }+            start_index++;+        }+        return GIM_INVALID_HASH;+    }++    //! Find the avaliable cell for the hashkey, and return an existing cell if it has the same hash key+    inline GUINT _find_avaliable_cell(GUINT hashkey)+    {+        _node_type * nodesptr = m_nodes.pointer();+        GUINT avaliable_index = GIM_INVALID_HASH;+        GUINT start_index = (hashkey%m_table_size)*m_node_size;+        GUINT end_index = start_index + m_node_size;++        while(start_index<end_index)+        {+            GUINT value = m_hash_table[start_index];+            if(value == GIM_INVALID_HASH)+            {+                if(avaliable_index==GIM_INVALID_HASH)+                {+                    avaliable_index = start_index;+                }+            }+            else if(nodesptr[value].m_key == hashkey)+            {+                return start_index;+            }+            start_index++;+        }+        return avaliable_index;+    }++++    //! reserves the memory for the hash table.+    /*!+    \pre hash table must be empty+    \post reserves the memory for the hash table, an initializes all elements to GIM_INVALID_HASH.+    */+    inline void _reserve_table_memory(GUINT newtablesize)+    {+        if(newtablesize==0) return;+        if(m_node_size==0) return;++        //Get a Prime size++        m_table_size = gim_next_prime(newtablesize);++        GUINT datasize = m_table_size*m_node_size;+        //Alloc the data buffer+        m_hash_table =  (GUINT *)gim_alloc(datasize*sizeof(GUINT));+    }++    inline void _invalidate_keys()+    {+        GUINT datasize = m_table_size*m_node_size;+        for(GUINT i=0;i<datasize;i++)+        {+            m_hash_table[i] = GIM_INVALID_HASH;// invalidate keys+        }+    }++    //! Clear all memory for the hash table+    inline void _clear_table_memory()+    {+        if(m_hash_table==NULL) return;+        gim_free(m_hash_table);+        m_hash_table = NULL;+        m_table_size = 0;+    }++    //! Invalidates the keys (Assigning GIM_INVALID_HASH to all) Reorders the hash keys+    inline void _rehash()+    {+        _invalidate_keys();++        _node_type * nodesptr = m_nodes.pointer();+        for(GUINT i=0;i<(GUINT)m_nodes.size();i++)+        {+            GUINT nodekey = nodesptr[i].m_key;+            if(nodekey != GIM_INVALID_HASH)+            {+                //Search for the avaliable cell in buffer+                GUINT index = _find_avaliable_cell(nodekey);+++				if(m_hash_table[index]!=GIM_INVALID_HASH)+				{//The new index is alreade used... discard this new incomming object, repeated key+				    btAssert(m_hash_table[index]==nodekey);+					nodesptr[i].m_key = GIM_INVALID_HASH;+				}+				else+				{+					//;+					//Assign the value for alloc+					m_hash_table[index] = i;+				}+            }+        }+    }++    //! Resize hash table indices+    inline void _resize_table(GUINT newsize)+    {+        //Clear memory+        _clear_table_memory();+        //Alloc the data+        _reserve_table_memory(newsize);+        //Invalidate keys and rehash+        _rehash();+    }++    //! Destroy hash table memory+    inline void _destroy()+    {+        if(m_hash_table==NULL) return;+        _clear_table_memory();+    }++    //! Finds an avaliable hash table cell, and resizes the table if there isn't space+    inline GUINT _assign_hash_table_cell(GUINT hashkey)+    {+        GUINT cell_index = _find_avaliable_cell(hashkey);++        if(cell_index==GIM_INVALID_HASH)+        {+            //rehashing+            _resize_table(m_table_size+1);+            GUINT cell_index = _find_avaliable_cell(hashkey);+            btAssert(cell_index!=GIM_INVALID_HASH);+        }+        return cell_index;+    }++    //! erase by index in hash table+    inline bool _erase_by_index_hash_table(GUINT index)+    {+        if(index >= m_nodes.size()) return false;+        if(m_nodes[index].m_key != GIM_INVALID_HASH)+        {+            //Search for the avaliable cell in buffer+            GUINT cell_index = _find_cell(m_nodes[index].m_key);++            btAssert(cell_index!=GIM_INVALID_HASH);+            btAssert(m_hash_table[cell_index]==index);++            m_hash_table[cell_index] = GIM_INVALID_HASH;+        }++        return this->_erase_unsorted(index);+    }++    //! erase by key in hash table+    inline bool _erase_hash_table(GUINT hashkey)+    {+        if(hashkey == GIM_INVALID_HASH) return false;++        //Search for the avaliable cell in buffer+        GUINT cell_index = _find_cell(hashkey);+        if(cell_index ==GIM_INVALID_HASH) return false;++        GUINT index = m_hash_table[cell_index];+        m_hash_table[cell_index] = GIM_INVALID_HASH;++        return this->_erase_unsorted(index);+    }++++    //! insert an element in hash table+    /*!+    If the element exists, this won't insert the element+    \return the index in the array of the existing element,or GIM_INVALID_HASH if the element has been inserted+    If so, the element has been inserted at the last position of the array.+    */+    inline GUINT _insert_hash_table(GUINT hashkey, const T & value)+    {+        if(hashkey==GIM_INVALID_HASH)+        {+            //Insert anyway+            _insert_unsorted(hashkey,value);+            return GIM_INVALID_HASH;+        }++        GUINT cell_index = _assign_hash_table_cell(hashkey);++        GUINT value_key = m_hash_table[cell_index];++        if(value_key!= GIM_INVALID_HASH) return value_key;// Not overrited++        m_hash_table[cell_index] = m_nodes.size();++        _insert_unsorted(hashkey,value);+        return GIM_INVALID_HASH;+    }++    //! insert an element in hash table.+    /*!+    If the element exists, this replaces the element.+    \return the index in the array of the existing element,or GIM_INVALID_HASH if the element has been inserted+    If so, the element has been inserted at the last position of the array.+    */+    inline GUINT _insert_hash_table_replace(GUINT hashkey, const T & value)+    {+        if(hashkey==GIM_INVALID_HASH)+        {+            //Insert anyway+            _insert_unsorted(hashkey,value);+            return GIM_INVALID_HASH;+        }++        GUINT cell_index = _assign_hash_table_cell(hashkey);++        GUINT value_key = m_hash_table[cell_index];++        if(value_key!= GIM_INVALID_HASH)+        {//replaces the existing+            m_nodes[value_key] = _node_type(hashkey,value);+            return value_key;// index of the replaced element+        }++        m_hash_table[cell_index] = m_nodes.size();++        _insert_unsorted(hashkey,value);+        return GIM_INVALID_HASH;++    }++    +    ///Sorted array data management. The hash table has the indices to the corresponding m_nodes array+    inline bool _erase_sorted(GUINT index)+    {+        if(index>=(GUINT)m_nodes.size()) return false;+        m_nodes.erase_sorted(index);+		if(m_nodes.size()<2) m_sorted = false;+        return true;+    }++    //! faster, but unsorted+    inline bool _erase_unsorted(GUINT index)+    {+        if(index>=m_nodes.size()) return false;++        GUINT lastindex = m_nodes.size()-1;+        if(index<lastindex && m_hash_table!=0)+        {+			GUINT hashkey =  m_nodes[lastindex].m_key;+			if(hashkey!=GIM_INVALID_HASH)+			{+				//update the new position of the last element+				GUINT cell_index = _find_cell(hashkey);+				btAssert(cell_index!=GIM_INVALID_HASH);+				//new position of the last element which will be swaped+				m_hash_table[cell_index] = index;+			}+        }+        m_nodes.erase(index);+        m_sorted = false;+        return true;+    }++    //! Insert in position ordered+    /*!+    Also checks if it is needed to transform this container to a hash table, by calling check_for_switching_to_hashtable+    */+    inline void _insert_in_pos(GUINT hashkey, const T & value, GUINT pos)+    {+        m_nodes.insert(_node_type(hashkey,value),pos);+        this->check_for_switching_to_hashtable();+    }++    //! Insert an element in an ordered array+    inline GUINT _insert_sorted(GUINT hashkey, const T & value)+    {+        if(hashkey==GIM_INVALID_HASH || size()==0)+        {+            m_nodes.push_back(_node_type(hashkey,value));+            return GIM_INVALID_HASH;+        }+        //Insert at last position+        //Sort element+++        GUINT result_ind=0;+        GUINT last_index = m_nodes.size()-1;+        _node_type * ptr = m_nodes.pointer();++        bool found = gim_binary_search_ex(+        	ptr,0,last_index,result_ind,hashkey,GIM_HASH_NODE_CMP_KEY_MACRO());+++        //Insert before found index+        if(found)+        {+            return result_ind;+        }+        else+        {+            _insert_in_pos(hashkey, value, result_ind);+        }+        return GIM_INVALID_HASH;+    }++    inline GUINT _insert_sorted_replace(GUINT hashkey, const T & value)+    {+        if(hashkey==GIM_INVALID_HASH || size()==0)+        {+            m_nodes.push_back(_node_type(hashkey,value));+            return GIM_INVALID_HASH;+        }+        //Insert at last position+        //Sort element+        GUINT result_ind;+        GUINT last_index = m_nodes.size()-1;+        _node_type * ptr = m_nodes.pointer();++        bool found = gim_binary_search_ex(+        	ptr,0,last_index,result_ind,hashkey,GIM_HASH_NODE_CMP_KEY_MACRO());++        //Insert before found index+        if(found)+        {+            m_nodes[result_ind] = _node_type(hashkey,value);+        }+        else+        {+            _insert_in_pos(hashkey, value, result_ind);+        }+        return result_ind;+    }++    //! Fast insertion in m_nodes array+    inline GUINT  _insert_unsorted(GUINT hashkey, const T & value)+    {+        m_nodes.push_back(_node_type(hashkey,value));+        m_sorted = false;+        return GIM_INVALID_HASH;+    }++    ++public:++    /*!+        <li> if node_size = 0, then this container becomes a simple sorted array allocator. reserve_size is used for reserve memory in m_nodes.+        When the array size reaches the size equivalent to 'min_hash_table_size', then it becomes a hash table by calling check_for_switching_to_hashtable.+        <li> If node_size != 0, then this container becomes a hash table for ever+        </ul>+    */+    gim_hash_table(GUINT reserve_size = GIM_DEFAULT_HASH_TABLE_SIZE,+                     GUINT node_size = GIM_DEFAULT_HASH_TABLE_NODE_SIZE,+                     GUINT min_hash_table_size = GIM_INVALID_HASH)+    {+        m_hash_table = NULL;+        m_table_size = 0;+        m_sorted = false;+        m_node_size = node_size;+        m_min_hash_table_size = min_hash_table_size;++        if(m_node_size!=0)+        {+            if(reserve_size!=0)+            {+                m_nodes.reserve(reserve_size);+                _reserve_table_memory(reserve_size);+                _invalidate_keys();+            }+            else+            {+                m_nodes.reserve(GIM_DEFAULT_HASH_TABLE_SIZE);+                _reserve_table_memory(GIM_DEFAULT_HASH_TABLE_SIZE);+                _invalidate_keys();+            }+        }+        else if(reserve_size!=0)+        {+            m_nodes.reserve(reserve_size);+        }++    }++    ~gim_hash_table()+    {+        _destroy();+    }++    inline bool is_hash_table()+    {+        if(m_hash_table) return true;+        return false;+    }++    inline bool is_sorted()+    {+        if(size()<2) return true;+        return m_sorted;+    }++    bool sort()+    {+        if(is_sorted()) return true;+        if(m_nodes.size()<2) return false;+++        _node_type * ptr = m_nodes.pointer();+        GUINT siz = m_nodes.size();+        gim_sort_hash_node_array(ptr,siz);+        m_sorted=true;++++        if(m_hash_table)+        {+            _rehash();+        }+        return true;+    }++    bool switch_to_hashtable()+    {+        if(m_hash_table) return false;+        if(m_node_size==0) m_node_size = GIM_DEFAULT_HASH_TABLE_NODE_SIZE;+        if(m_nodes.size()<GIM_DEFAULT_HASH_TABLE_SIZE)+        {+            _resize_table(GIM_DEFAULT_HASH_TABLE_SIZE);+        }+        else+        {+            _resize_table(m_nodes.size()+1);+        }++        return true;+    }++    bool switch_to_sorted_array()+    {+        if(m_hash_table==NULL) return true;+        _clear_table_memory();+        return sort();+    }++    //!If the container reaches the+    bool check_for_switching_to_hashtable()+    {+        if(this->m_hash_table) return true;++        if(!(m_nodes.size()< m_min_hash_table_size))+        {+            if(m_node_size == 0)+            {+                m_node_size = GIM_DEFAULT_HASH_TABLE_NODE_SIZE;+            }++            _resize_table(m_nodes.size()+1);+            return true;+        }+        return false;+    }++    inline void set_sorted(bool value)+    {+    	m_sorted = value;+    }++    //! Retrieves the amount of keys.+    inline GUINT size() const+    {+        return m_nodes.size();+    }++    //! Retrieves the hash key.+    inline GUINT get_key(GUINT index) const+    {+        return m_nodes[index].m_key;+    }++    //! Retrieves the value by index+    /*!+    */+    inline T * get_value_by_index(GUINT index)+    {+        return &m_nodes[index].m_data;+    }++    inline const T& operator[](GUINT index) const+    {+        return m_nodes[index].m_data;+    }++    inline T& operator[](GUINT index)+    {+        return m_nodes[index].m_data;+    }++    //! Finds the index of the element with the key+    /*!+    \return the index in the array of the existing element,or GIM_INVALID_HASH if the element has been inserted+    If so, the element has been inserted at the last position of the array.+    */+    inline GUINT find(GUINT hashkey)+    {+        if(m_hash_table)+        {+            GUINT cell_index = _find_cell(hashkey);+            if(cell_index==GIM_INVALID_HASH) return GIM_INVALID_HASH;+            return m_hash_table[cell_index];+        }+		GUINT last_index = m_nodes.size();+        if(last_index<2)+        {+			if(last_index==0) return GIM_INVALID_HASH;+            if(m_nodes[0].m_key == hashkey) return 0;+            return GIM_INVALID_HASH;+        }+        else if(m_sorted)+        {+            //Binary search+            GUINT result_ind = 0;+			last_index--;+            _node_type *  ptr =  m_nodes.pointer();++            bool found = gim_binary_search_ex(ptr,0,last_index,result_ind,hashkey,GIM_HASH_NODE_CMP_KEY_MACRO());+++            if(found) return result_ind;+        }+        return GIM_INVALID_HASH;+    }++    //! Retrieves the value associated with the index+    /*!+    \return the found element, or null+    */+    inline T * get_value(GUINT hashkey)+    {+        GUINT index = find(hashkey);+        if(index == GIM_INVALID_HASH) return NULL;+        return &m_nodes[index].m_data;+    }+++    /*!+    */+    inline bool erase_by_index(GUINT index)+    {+        if(index > m_nodes.size()) return false;++        if(m_hash_table == NULL)+        {+            if(is_sorted())+            {+                return this->_erase_sorted(index);+            }+            else+            {+                return this->_erase_unsorted(index);+            }+        }+        else+        {+            return this->_erase_by_index_hash_table(index);+        }+        return false;+    }++++    inline bool erase_by_index_unsorted(GUINT index)+    {+        if(index > m_nodes.size()) return false;++        if(m_hash_table == NULL)+        {+            return this->_erase_unsorted(index);+        }+        else+        {+            return this->_erase_by_index_hash_table(index);+        }+        return false;+    }++++    /*!++    */+    inline bool erase_by_key(GUINT hashkey)+    {+        if(size()==0) return false;++        if(m_hash_table)+        {+            return this->_erase_hash_table(hashkey);+        }+        //Binary search++        if(is_sorted()==false) return false;++        GUINT result_ind = find(hashkey);+        if(result_ind!= GIM_INVALID_HASH)+        {+            return this->_erase_sorted(result_ind);+        }+        return false;+    }++    void clear()+    {+        m_nodes.clear();++        if(m_hash_table==NULL) return;+        GUINT datasize = m_table_size*m_node_size;+        //Initialize the hashkeys.+        GUINT i;+        for(i=0;i<datasize;i++)+        {+            m_hash_table[i] = GIM_INVALID_HASH;// invalidate keys+        }+		m_sorted = false;+    }++    //! Insert an element into the hash+    /*!+    \return If GIM_INVALID_HASH, the object has been inserted succesfully. Else it returns the position+    of the existing element.+    */+    inline GUINT insert(GUINT hashkey, const T & element)+    {+        if(m_hash_table)+        {+            return this->_insert_hash_table(hashkey,element);+        }+        if(this->is_sorted())+        {+            return this->_insert_sorted(hashkey,element);+        }+        return this->_insert_unsorted(hashkey,element);+    }++    //! Insert an element into the hash, and could overrite an existing object with the same hash.+    /*!+    \return If GIM_INVALID_HASH, the object has been inserted succesfully. Else it returns the position+    of the replaced element.+    */+    inline GUINT insert_override(GUINT hashkey, const T & element)+    {+        if(m_hash_table)+        {+            return this->_insert_hash_table_replace(hashkey,element);+        }+        if(this->is_sorted())+        {+            return this->_insert_sorted_replace(hashkey,element);+        }+        this->_insert_unsorted(hashkey,element);+        return m_nodes.size();+    }++++    //! Insert an element into the hash,But if this container is a sorted array, this inserts it unsorted+    /*!+    */+    inline GUINT insert_unsorted(GUINT hashkey,const T & element)+    {+        if(m_hash_table)+        {+            return this->_insert_hash_table(hashkey,element);+        }+        return this->_insert_unsorted(hashkey,element);+    }+++};++++#endif // GIM_CONTAINERS_H_INCLUDED
+ bullet/BulletCollision/Gimpact/gim_linear_math.h view
@@ -0,0 +1,1573 @@+#ifndef GIM_LINEAR_H_INCLUDED+#define GIM_LINEAR_H_INCLUDED++/*! \file gim_linear_math.h+*\author Francisco Leon Najera+Type Independant Vector and matrix operations.+*/+/*+-----------------------------------------------------------------------------+This source file is part of GIMPACT Library.++For the latest info, see http://gimpact.sourceforge.net/++Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371.+email: projectileman@yahoo.com++ This library is free software; you can redistribute it and/or+ modify it under the terms of EITHER:+   (1) The GNU Lesser General Public License as published by the Free+       Software Foundation; either version 2.1 of the License, or (at+       your option) any later version. The text of the GNU Lesser+       General Public License is included with this library in the+       file GIMPACT-LICENSE-LGPL.TXT.+   (2) The BSD-style license that is included with this library in+       the file GIMPACT-LICENSE-BSD.TXT.+   (3) The zlib/libpng license that is included with this library in+       the file GIMPACT-LICENSE-ZLIB.TXT.++ This library is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files+ GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details.++-----------------------------------------------------------------------------+*/+++#include "gim_math.h"+#include "gim_geom_types.h"+++++//! Zero out a 2D vector+#define VEC_ZERO_2(a)				\+{						\+   (a)[0] = (a)[1] = 0.0f;			\+}\+++//! Zero out a 3D vector+#define VEC_ZERO(a)				\+{						\+   (a)[0] = (a)[1] = (a)[2] = 0.0f;		\+}\+++/// Zero out a 4D vector+#define VEC_ZERO_4(a)				\+{						\+   (a)[0] = (a)[1] = (a)[2] = (a)[3] = 0.0f;	\+}\+++/// Vector copy+#define VEC_COPY_2(b,a)				\+{						\+   (b)[0] = (a)[0];				\+   (b)[1] = (a)[1];				\+}\+++/// Copy 3D vector+#define VEC_COPY(b,a)				\+{						\+   (b)[0] = (a)[0];				\+   (b)[1] = (a)[1];				\+   (b)[2] = (a)[2];				\+}\+++/// Copy 4D vector+#define VEC_COPY_4(b,a)				\+{						\+   (b)[0] = (a)[0];				\+   (b)[1] = (a)[1];				\+   (b)[2] = (a)[2];				\+   (b)[3] = (a)[3];				\+}\++/// VECTOR SWAP+#define VEC_SWAP(b,a)				\+{  \+    GIM_SWAP_NUMBERS((b)[0],(a)[0]);\+    GIM_SWAP_NUMBERS((b)[1],(a)[1]);\+    GIM_SWAP_NUMBERS((b)[2],(a)[2]);\+}\++/// Vector difference+#define VEC_DIFF_2(v21,v2,v1)			\+{						\+   (v21)[0] = (v2)[0] - (v1)[0];		\+   (v21)[1] = (v2)[1] - (v1)[1];		\+}\+++/// Vector difference+#define VEC_DIFF(v21,v2,v1)			\+{						\+   (v21)[0] = (v2)[0] - (v1)[0];		\+   (v21)[1] = (v2)[1] - (v1)[1];		\+   (v21)[2] = (v2)[2] - (v1)[2];		\+}\+++/// Vector difference+#define VEC_DIFF_4(v21,v2,v1)			\+{						\+   (v21)[0] = (v2)[0] - (v1)[0];		\+   (v21)[1] = (v2)[1] - (v1)[1];		\+   (v21)[2] = (v2)[2] - (v1)[2];		\+   (v21)[3] = (v2)[3] - (v1)[3];		\+}\+++/// Vector sum+#define VEC_SUM_2(v21,v2,v1)			\+{						\+   (v21)[0] = (v2)[0] + (v1)[0];		\+   (v21)[1] = (v2)[1] + (v1)[1];		\+}\+++/// Vector sum+#define VEC_SUM(v21,v2,v1)			\+{						\+   (v21)[0] = (v2)[0] + (v1)[0];		\+   (v21)[1] = (v2)[1] + (v1)[1];		\+   (v21)[2] = (v2)[2] + (v1)[2];		\+}\+++/// Vector sum+#define VEC_SUM_4(v21,v2,v1)			\+{						\+   (v21)[0] = (v2)[0] + (v1)[0];		\+   (v21)[1] = (v2)[1] + (v1)[1];		\+   (v21)[2] = (v2)[2] + (v1)[2];		\+   (v21)[3] = (v2)[3] + (v1)[3];		\+}\+++/// scalar times vector+#define VEC_SCALE_2(c,a,b)			\+{						\+   (c)[0] = (a)*(b)[0];				\+   (c)[1] = (a)*(b)[1];				\+}\+++/// scalar times vector+#define VEC_SCALE(c,a,b)			\+{						\+   (c)[0] = (a)*(b)[0];				\+   (c)[1] = (a)*(b)[1];				\+   (c)[2] = (a)*(b)[2];				\+}\+++/// scalar times vector+#define VEC_SCALE_4(c,a,b)			\+{						\+   (c)[0] = (a)*(b)[0];				\+   (c)[1] = (a)*(b)[1];				\+   (c)[2] = (a)*(b)[2];				\+   (c)[3] = (a)*(b)[3];				\+}\+++/// accumulate scaled vector+#define VEC_ACCUM_2(c,a,b)			\+{						\+   (c)[0] += (a)*(b)[0];			\+   (c)[1] += (a)*(b)[1];			\+}\+++/// accumulate scaled vector+#define VEC_ACCUM(c,a,b)			\+{						\+   (c)[0] += (a)*(b)[0];			\+   (c)[1] += (a)*(b)[1];			\+   (c)[2] += (a)*(b)[2];			\+}\+++/// accumulate scaled vector+#define VEC_ACCUM_4(c,a,b)			\+{						\+   (c)[0] += (a)*(b)[0];			\+   (c)[1] += (a)*(b)[1];			\+   (c)[2] += (a)*(b)[2];			\+   (c)[3] += (a)*(b)[3];			\+}\+++/// Vector dot product+#define VEC_DOT_2(a,b) ((a)[0]*(b)[0] + (a)[1]*(b)[1])+++/// Vector dot product+#define VEC_DOT(a,b) ((a)[0]*(b)[0] + (a)[1]*(b)[1] + (a)[2]*(b)[2])++/// Vector dot product+#define VEC_DOT_4(a,b)	((a)[0]*(b)[0] + (a)[1]*(b)[1] + (a)[2]*(b)[2] + (a)[3]*(b)[3])++/// vector impact parameter (squared)+#define VEC_IMPACT_SQ(bsq,direction,position) {\+   GREAL _llel_ = VEC_DOT(direction, position);\+   bsq = VEC_DOT(position, position) - _llel_*_llel_;\+}\+++/// vector impact parameter+#define VEC_IMPACT(bsq,direction,position)	{\+   VEC_IMPACT_SQ(bsq,direction,position);		\+   GIM_SQRT(bsq,bsq);					\+}\++/// Vector length+#define VEC_LENGTH_2(a,l)\+{\+    GREAL _pp = VEC_DOT_2(a,a);\+    GIM_SQRT(_pp,l);\+}\+++/// Vector length+#define VEC_LENGTH(a,l)\+{\+    GREAL _pp = VEC_DOT(a,a);\+    GIM_SQRT(_pp,l);\+}\+++/// Vector length+#define VEC_LENGTH_4(a,l)\+{\+    GREAL _pp = VEC_DOT_4(a,a);\+    GIM_SQRT(_pp,l);\+}\++/// Vector inv length+#define VEC_INV_LENGTH_2(a,l)\+{\+    GREAL _pp = VEC_DOT_2(a,a);\+    GIM_INV_SQRT(_pp,l);\+}\+++/// Vector inv length+#define VEC_INV_LENGTH(a,l)\+{\+    GREAL _pp = VEC_DOT(a,a);\+    GIM_INV_SQRT(_pp,l);\+}\+++/// Vector inv length+#define VEC_INV_LENGTH_4(a,l)\+{\+    GREAL _pp = VEC_DOT_4(a,a);\+    GIM_INV_SQRT(_pp,l);\+}\++++/// distance between two points+#define VEC_DISTANCE(_len,_va,_vb) {\+    vec3f _tmp_;				\+    VEC_DIFF(_tmp_, _vb, _va);			\+    VEC_LENGTH(_tmp_,_len);			\+}\+++/// Vector length+#define VEC_CONJUGATE_LENGTH(a,l)\+{\+    GREAL _pp = 1.0 - a[0]*a[0] - a[1]*a[1] - a[2]*a[2];\+    GIM_SQRT(_pp,l);\+}\+++/// Vector length+#define VEC_NORMALIZE(a) {	\+    GREAL len;\+    VEC_INV_LENGTH(a,len); \+    if(len<G_REAL_INFINITY)\+    {\+        a[0] *= len;				\+        a[1] *= len;				\+        a[2] *= len;				\+    }						\+}\++/// Set Vector size+#define VEC_RENORMALIZE(a,newlen) {	\+    GREAL len;\+    VEC_INV_LENGTH(a,len); \+    if(len<G_REAL_INFINITY)\+    {\+        len *= newlen;\+        a[0] *= len;				\+        a[1] *= len;				\+        a[2] *= len;				\+    }						\+}\++/// Vector cross+#define VEC_CROSS(c,a,b)		\+{						\+   c[0] = (a)[1] * (b)[2] - (a)[2] * (b)[1];	\+   c[1] = (a)[2] * (b)[0] - (a)[0] * (b)[2];	\+   c[2] = (a)[0] * (b)[1] - (a)[1] * (b)[0];	\+}\+++/*! Vector perp -- assumes that n is of unit length+ * accepts vector v, subtracts out any component parallel to n */+#define VEC_PERPENDICULAR(vp,v,n)			\+{						\+   GREAL dot = VEC_DOT(v, n);			\+   vp[0] = (v)[0] - dot*(n)[0];		\+   vp[1] = (v)[1] - dot*(n)[1];		\+   vp[2] = (v)[2] - dot*(n)[2];		\+}\+++/*! Vector parallel -- assumes that n is of unit length */+#define VEC_PARALLEL(vp,v,n)			\+{						\+   GREAL dot = VEC_DOT(v, n);			\+   vp[0] = (dot) * (n)[0];			\+   vp[1] = (dot) * (n)[1];			\+   vp[2] = (dot) * (n)[2];			\+}\++/*! Same as Vector parallel --  n can have any length+ * accepts vector v, subtracts out any component perpendicular to n */+#define VEC_PROJECT(vp,v,n)			\+{ \+	GREAL scalar = VEC_DOT(v, n);			\+	scalar/= VEC_DOT(n, n); \+	vp[0] = (scalar) * (n)[0];			\+    vp[1] = (scalar) * (n)[1];			\+    vp[2] = (scalar) * (n)[2];			\+}\+++/*! accepts vector v*/+#define VEC_UNPROJECT(vp,v,n)			\+{ \+	GREAL scalar = VEC_DOT(v, n);			\+	scalar = VEC_DOT(n, n)/scalar; \+	vp[0] = (scalar) * (n)[0];			\+    vp[1] = (scalar) * (n)[1];			\+    vp[2] = (scalar) * (n)[2];			\+}\+++/*! Vector reflection -- assumes n is of unit length+ Takes vector v, reflects it against reflector n, and returns vr */+#define VEC_REFLECT(vr,v,n)			\+{						\+   GREAL dot = VEC_DOT(v, n);			\+   vr[0] = (v)[0] - 2.0 * (dot) * (n)[0];	\+   vr[1] = (v)[1] - 2.0 * (dot) * (n)[1];	\+   vr[2] = (v)[2] - 2.0 * (dot) * (n)[2];	\+}\+++/*! Vector blending+Takes two vectors a, b, blends them together with two scalars */+#define VEC_BLEND_AB(vr,sa,a,sb,b)			\+{						\+   vr[0] = (sa) * (a)[0] + (sb) * (b)[0];	\+   vr[1] = (sa) * (a)[1] + (sb) * (b)[1];	\+   vr[2] = (sa) * (a)[2] + (sb) * (b)[2];	\+}\++/*! Vector blending+Takes two vectors a, b, blends them together with s <=1 */+#define VEC_BLEND(vr,a,b,s) VEC_BLEND_AB(vr,(1-s),a,s,b)++#define VEC_SET3(a,b,op,c) a[0]=b[0] op c[0]; a[1]=b[1] op c[1]; a[2]=b[2] op c[2];++//! Finds the bigger cartesian coordinate from a vector+#define VEC_MAYOR_COORD(vec, maxc)\+{\+	GREAL A[] = {fabs(vec[0]),fabs(vec[1]),fabs(vec[2])};\+    maxc =  A[0]>A[1]?(A[0]>A[2]?0:2):(A[1]>A[2]?1:2);\+}\++//! Finds the 2 smallest cartesian coordinates from a vector+#define VEC_MINOR_AXES(vec, i0, i1)\+{\+	VEC_MAYOR_COORD(vec,i0);\+	i0 = (i0+1)%3;\+	i1 = (i0+1)%3;\+}\+++++#define VEC_EQUAL(v1,v2) (v1[0]==v2[0]&&v1[1]==v2[1]&&v1[2]==v2[2])++#define VEC_NEAR_EQUAL(v1,v2) (GIM_NEAR_EQUAL(v1[0],v2[0])&&GIM_NEAR_EQUAL(v1[1],v2[1])&&GIM_NEAR_EQUAL(v1[2],v2[2]))+++/// Vector cross+#define X_AXIS_CROSS_VEC(dst,src)\+{					   \+	dst[0] = 0.0f;     \+	dst[1] = -src[2];  \+	dst[2] = src[1];  \+}\++#define Y_AXIS_CROSS_VEC(dst,src)\+{					   \+	dst[0] = src[2];     \+	dst[1] = 0.0f;  \+	dst[2] = -src[0];  \+}\++#define Z_AXIS_CROSS_VEC(dst,src)\+{					   \+	dst[0] = -src[1];     \+	dst[1] = src[0];  \+	dst[2] = 0.0f;  \+}\+++++++/// initialize matrix+#define IDENTIFY_MATRIX_3X3(m)			\+{						\+   m[0][0] = 1.0;				\+   m[0][1] = 0.0;				\+   m[0][2] = 0.0;				\+						\+   m[1][0] = 0.0;				\+   m[1][1] = 1.0;				\+   m[1][2] = 0.0;				\+						\+   m[2][0] = 0.0;				\+   m[2][1] = 0.0;				\+   m[2][2] = 1.0;				\+}\++/*! initialize matrix */+#define IDENTIFY_MATRIX_4X4(m)			\+{						\+   m[0][0] = 1.0;				\+   m[0][1] = 0.0;				\+   m[0][2] = 0.0;				\+   m[0][3] = 0.0;				\+						\+   m[1][0] = 0.0;				\+   m[1][1] = 1.0;				\+   m[1][2] = 0.0;				\+   m[1][3] = 0.0;				\+						\+   m[2][0] = 0.0;				\+   m[2][1] = 0.0;				\+   m[2][2] = 1.0;				\+   m[2][3] = 0.0;				\+						\+   m[3][0] = 0.0;				\+   m[3][1] = 0.0;				\+   m[3][2] = 0.0;				\+   m[3][3] = 1.0;				\+}\++/*! initialize matrix */+#define ZERO_MATRIX_4X4(m)			\+{						\+   m[0][0] = 0.0;				\+   m[0][1] = 0.0;				\+   m[0][2] = 0.0;				\+   m[0][3] = 0.0;				\+						\+   m[1][0] = 0.0;				\+   m[1][1] = 0.0;				\+   m[1][2] = 0.0;				\+   m[1][3] = 0.0;				\+						\+   m[2][0] = 0.0;				\+   m[2][1] = 0.0;				\+   m[2][2] = 0.0;				\+   m[2][3] = 0.0;				\+						\+   m[3][0] = 0.0;				\+   m[3][1] = 0.0;				\+   m[3][2] = 0.0;				\+   m[3][3] = 0.0;				\+}\++/*! matrix rotation  X */+#define ROTX_CS(m,cosine,sine)		\+{					\+   /* rotation about the x-axis */	\+					\+   m[0][0] = 1.0;			\+   m[0][1] = 0.0;			\+   m[0][2] = 0.0;			\+   m[0][3] = 0.0;			\+					\+   m[1][0] = 0.0;			\+   m[1][1] = (cosine);			\+   m[1][2] = (sine);			\+   m[1][3] = 0.0;			\+					\+   m[2][0] = 0.0;			\+   m[2][1] = -(sine);			\+   m[2][2] = (cosine);			\+   m[2][3] = 0.0;			\+					\+   m[3][0] = 0.0;			\+   m[3][1] = 0.0;			\+   m[3][2] = 0.0;			\+   m[3][3] = 1.0;			\+}\++/*! matrix rotation  Y */+#define ROTY_CS(m,cosine,sine)		\+{					\+   /* rotation about the y-axis */	\+					\+   m[0][0] = (cosine);			\+   m[0][1] = 0.0;			\+   m[0][2] = -(sine);			\+   m[0][3] = 0.0;			\+					\+   m[1][0] = 0.0;			\+   m[1][1] = 1.0;			\+   m[1][2] = 0.0;			\+   m[1][3] = 0.0;			\+					\+   m[2][0] = (sine);			\+   m[2][1] = 0.0;			\+   m[2][2] = (cosine);			\+   m[2][3] = 0.0;			\+					\+   m[3][0] = 0.0;			\+   m[3][1] = 0.0;			\+   m[3][2] = 0.0;			\+   m[3][3] = 1.0;			\+}\++/*! matrix rotation  Z */+#define ROTZ_CS(m,cosine,sine)		\+{					\+   /* rotation about the z-axis */	\+					\+   m[0][0] = (cosine);			\+   m[0][1] = (sine);			\+   m[0][2] = 0.0;			\+   m[0][3] = 0.0;			\+					\+   m[1][0] = -(sine);			\+   m[1][1] = (cosine);			\+   m[1][2] = 0.0;			\+   m[1][3] = 0.0;			\+					\+   m[2][0] = 0.0;			\+   m[2][1] = 0.0;			\+   m[2][2] = 1.0;			\+   m[2][3] = 0.0;			\+					\+   m[3][0] = 0.0;			\+   m[3][1] = 0.0;			\+   m[3][2] = 0.0;			\+   m[3][3] = 1.0;			\+}\++/*! matrix copy */+#define COPY_MATRIX_2X2(b,a)	\+{				\+   b[0][0] = a[0][0];		\+   b[0][1] = a[0][1];		\+				\+   b[1][0] = a[1][0];		\+   b[1][1] = a[1][1];		\+				\+}\+++/*! matrix copy */+#define COPY_MATRIX_2X3(b,a)	\+{				\+   b[0][0] = a[0][0];		\+   b[0][1] = a[0][1];		\+   b[0][2] = a[0][2];		\+				\+   b[1][0] = a[1][0];		\+   b[1][1] = a[1][1];		\+   b[1][2] = a[1][2];		\+}\+++/*! matrix copy */+#define COPY_MATRIX_3X3(b,a)	\+{				\+   b[0][0] = a[0][0];		\+   b[0][1] = a[0][1];		\+   b[0][2] = a[0][2];		\+				\+   b[1][0] = a[1][0];		\+   b[1][1] = a[1][1];		\+   b[1][2] = a[1][2];		\+				\+   b[2][0] = a[2][0];		\+   b[2][1] = a[2][1];		\+   b[2][2] = a[2][2];		\+}\+++/*! matrix copy */+#define COPY_MATRIX_4X4(b,a)	\+{				\+   b[0][0] = a[0][0];		\+   b[0][1] = a[0][1];		\+   b[0][2] = a[0][2];		\+   b[0][3] = a[0][3];		\+				\+   b[1][0] = a[1][0];		\+   b[1][1] = a[1][1];		\+   b[1][2] = a[1][2];		\+   b[1][3] = a[1][3];		\+				\+   b[2][0] = a[2][0];		\+   b[2][1] = a[2][1];		\+   b[2][2] = a[2][2];		\+   b[2][3] = a[2][3];		\+				\+   b[3][0] = a[3][0];		\+   b[3][1] = a[3][1];		\+   b[3][2] = a[3][2];		\+   b[3][3] = a[3][3];		\+}\+++/*! matrix transpose */+#define TRANSPOSE_MATRIX_2X2(b,a)	\+{				\+   b[0][0] = a[0][0];		\+   b[0][1] = a[1][0];		\+				\+   b[1][0] = a[0][1];		\+   b[1][1] = a[1][1];		\+}\+++/*! matrix transpose */+#define TRANSPOSE_MATRIX_3X3(b,a)	\+{				\+   b[0][0] = a[0][0];		\+   b[0][1] = a[1][0];		\+   b[0][2] = a[2][0];		\+				\+   b[1][0] = a[0][1];		\+   b[1][1] = a[1][1];		\+   b[1][2] = a[2][1];		\+				\+   b[2][0] = a[0][2];		\+   b[2][1] = a[1][2];		\+   b[2][2] = a[2][2];		\+}\+++/*! matrix transpose */+#define TRANSPOSE_MATRIX_4X4(b,a)	\+{				\+   b[0][0] = a[0][0];		\+   b[0][1] = a[1][0];		\+   b[0][2] = a[2][0];		\+   b[0][3] = a[3][0];		\+				\+   b[1][0] = a[0][1];		\+   b[1][1] = a[1][1];		\+   b[1][2] = a[2][1];		\+   b[1][3] = a[3][1];		\+				\+   b[2][0] = a[0][2];		\+   b[2][1] = a[1][2];		\+   b[2][2] = a[2][2];		\+   b[2][3] = a[3][2];		\+				\+   b[3][0] = a[0][3];		\+   b[3][1] = a[1][3];		\+   b[3][2] = a[2][3];		\+   b[3][3] = a[3][3];		\+}\+++/*! multiply matrix by scalar */+#define SCALE_MATRIX_2X2(b,s,a)		\+{					\+   b[0][0] = (s) * a[0][0];		\+   b[0][1] = (s) * a[0][1];		\+					\+   b[1][0] = (s) * a[1][0];		\+   b[1][1] = (s) * a[1][1];		\+}\+++/*! multiply matrix by scalar */+#define SCALE_MATRIX_3X3(b,s,a)		\+{					\+   b[0][0] = (s) * a[0][0];		\+   b[0][1] = (s) * a[0][1];		\+   b[0][2] = (s) * a[0][2];		\+					\+   b[1][0] = (s) * a[1][0];		\+   b[1][1] = (s) * a[1][1];		\+   b[1][2] = (s) * a[1][2];		\+					\+   b[2][0] = (s) * a[2][0];		\+   b[2][1] = (s) * a[2][1];		\+   b[2][2] = (s) * a[2][2];		\+}\+++/*! multiply matrix by scalar */+#define SCALE_MATRIX_4X4(b,s,a)		\+{					\+   b[0][0] = (s) * a[0][0];		\+   b[0][1] = (s) * a[0][1];		\+   b[0][2] = (s) * a[0][2];		\+   b[0][3] = (s) * a[0][3];		\+					\+   b[1][0] = (s) * a[1][0];		\+   b[1][1] = (s) * a[1][1];		\+   b[1][2] = (s) * a[1][2];		\+   b[1][3] = (s) * a[1][3];		\+					\+   b[2][0] = (s) * a[2][0];		\+   b[2][1] = (s) * a[2][1];		\+   b[2][2] = (s) * a[2][2];		\+   b[2][3] = (s) * a[2][3];		\+					\+   b[3][0] = s * a[3][0];		\+   b[3][1] = s * a[3][1];		\+   b[3][2] = s * a[3][2];		\+   b[3][3] = s * a[3][3];		\+}\+++/*! multiply matrix by scalar */+#define SCALE_VEC_MATRIX_2X2(b,svec,a)		\+{					\+   b[0][0] = svec[0] * a[0][0];		\+   b[1][0] = svec[0] * a[1][0];		\+					\+   b[0][1] = svec[1] * a[0][1];		\+   b[1][1] = svec[1] * a[1][1];		\+}\+++/*! multiply matrix by scalar. Each columns is scaled by each scalar vector component */+#define SCALE_VEC_MATRIX_3X3(b,svec,a)		\+{					\+   b[0][0] = svec[0] * a[0][0];		\+   b[1][0] = svec[0] * a[1][0];		\+   b[2][0] = svec[0] * a[2][0];		\+					\+   b[0][1] = svec[1] * a[0][1];		\+   b[1][1] = svec[1] * a[1][1];		\+   b[2][1] = svec[1] * a[2][1];		\+					\+   b[0][2] = svec[2] * a[0][2];		\+   b[1][2] = svec[2] * a[1][2];		\+   b[2][2] = svec[2] * a[2][2];		\+}\+++/*! multiply matrix by scalar */+#define SCALE_VEC_MATRIX_4X4(b,svec,a)		\+{					\+   b[0][0] = svec[0] * a[0][0];		\+   b[1][0] = svec[0] * a[1][0];		\+   b[2][0] = svec[0] * a[2][0];		\+   b[3][0] = svec[0] * a[3][0];		\+					\+   b[0][1] = svec[1] * a[0][1];		\+   b[1][1] = svec[1] * a[1][1];		\+   b[2][1] = svec[1] * a[2][1];		\+   b[3][1] = svec[1] * a[3][1];		\+					\+   b[0][2] = svec[2] * a[0][2];		\+   b[1][2] = svec[2] * a[1][2];		\+   b[2][2] = svec[2] * a[2][2];		\+   b[3][2] = svec[2] * a[3][2];		\+   \+   b[0][3] = svec[3] * a[0][3];		\+   b[1][3] = svec[3] * a[1][3];		\+   b[2][3] = svec[3] * a[2][3];		\+   b[3][3] = svec[3] * a[3][3];		\+}\+++/*! multiply matrix by scalar */+#define ACCUM_SCALE_MATRIX_2X2(b,s,a)		\+{					\+   b[0][0] += (s) * a[0][0];		\+   b[0][1] += (s) * a[0][1];		\+					\+   b[1][0] += (s) * a[1][0];		\+   b[1][1] += (s) * a[1][1];		\+}\+++/*! multiply matrix by scalar */+#define ACCUM_SCALE_MATRIX_3X3(b,s,a)		\+{					\+   b[0][0] += (s) * a[0][0];		\+   b[0][1] += (s) * a[0][1];		\+   b[0][2] += (s) * a[0][2];		\+					\+   b[1][0] += (s) * a[1][0];		\+   b[1][1] += (s) * a[1][1];		\+   b[1][2] += (s) * a[1][2];		\+					\+   b[2][0] += (s) * a[2][0];		\+   b[2][1] += (s) * a[2][1];		\+   b[2][2] += (s) * a[2][2];		\+}\+++/*! multiply matrix by scalar */+#define ACCUM_SCALE_MATRIX_4X4(b,s,a)		\+{					\+   b[0][0] += (s) * a[0][0];		\+   b[0][1] += (s) * a[0][1];		\+   b[0][2] += (s) * a[0][2];		\+   b[0][3] += (s) * a[0][3];		\+					\+   b[1][0] += (s) * a[1][0];		\+   b[1][1] += (s) * a[1][1];		\+   b[1][2] += (s) * a[1][2];		\+   b[1][3] += (s) * a[1][3];		\+					\+   b[2][0] += (s) * a[2][0];		\+   b[2][1] += (s) * a[2][1];		\+   b[2][2] += (s) * a[2][2];		\+   b[2][3] += (s) * a[2][3];		\+					\+   b[3][0] += (s) * a[3][0];		\+   b[3][1] += (s) * a[3][1];		\+   b[3][2] += (s) * a[3][2];		\+   b[3][3] += (s) * a[3][3];		\+}\++/*! matrix product */+/*! c[x][y] = a[x][0]*b[0][y]+a[x][1]*b[1][y]+a[x][2]*b[2][y]+a[x][3]*b[3][y];*/+#define MATRIX_PRODUCT_2X2(c,a,b)		\+{						\+   c[0][0] = a[0][0]*b[0][0]+a[0][1]*b[1][0];	\+   c[0][1] = a[0][0]*b[0][1]+a[0][1]*b[1][1];	\+						\+   c[1][0] = a[1][0]*b[0][0]+a[1][1]*b[1][0];	\+   c[1][1] = a[1][0]*b[0][1]+a[1][1]*b[1][1];	\+						\+}\++/*! matrix product */+/*! c[x][y] = a[x][0]*b[0][y]+a[x][1]*b[1][y]+a[x][2]*b[2][y]+a[x][3]*b[3][y];*/+#define MATRIX_PRODUCT_3X3(c,a,b)				\+{								\+   c[0][0] = a[0][0]*b[0][0]+a[0][1]*b[1][0]+a[0][2]*b[2][0];	\+   c[0][1] = a[0][0]*b[0][1]+a[0][1]*b[1][1]+a[0][2]*b[2][1];	\+   c[0][2] = a[0][0]*b[0][2]+a[0][1]*b[1][2]+a[0][2]*b[2][2];	\+								\+   c[1][0] = a[1][0]*b[0][0]+a[1][1]*b[1][0]+a[1][2]*b[2][0];	\+   c[1][1] = a[1][0]*b[0][1]+a[1][1]*b[1][1]+a[1][2]*b[2][1];	\+   c[1][2] = a[1][0]*b[0][2]+a[1][1]*b[1][2]+a[1][2]*b[2][2];	\+								\+   c[2][0] = a[2][0]*b[0][0]+a[2][1]*b[1][0]+a[2][2]*b[2][0];	\+   c[2][1] = a[2][0]*b[0][1]+a[2][1]*b[1][1]+a[2][2]*b[2][1];	\+   c[2][2] = a[2][0]*b[0][2]+a[2][1]*b[1][2]+a[2][2]*b[2][2];	\+}\+++/*! matrix product */+/*! c[x][y] = a[x][0]*b[0][y]+a[x][1]*b[1][y]+a[x][2]*b[2][y]+a[x][3]*b[3][y];*/+#define MATRIX_PRODUCT_4X4(c,a,b)		\+{						\+   c[0][0] = a[0][0]*b[0][0]+a[0][1]*b[1][0]+a[0][2]*b[2][0]+a[0][3]*b[3][0];\+   c[0][1] = a[0][0]*b[0][1]+a[0][1]*b[1][1]+a[0][2]*b[2][1]+a[0][3]*b[3][1];\+   c[0][2] = a[0][0]*b[0][2]+a[0][1]*b[1][2]+a[0][2]*b[2][2]+a[0][3]*b[3][2];\+   c[0][3] = a[0][0]*b[0][3]+a[0][1]*b[1][3]+a[0][2]*b[2][3]+a[0][3]*b[3][3];\+						\+   c[1][0] = a[1][0]*b[0][0]+a[1][1]*b[1][0]+a[1][2]*b[2][0]+a[1][3]*b[3][0];\+   c[1][1] = a[1][0]*b[0][1]+a[1][1]*b[1][1]+a[1][2]*b[2][1]+a[1][3]*b[3][1];\+   c[1][2] = a[1][0]*b[0][2]+a[1][1]*b[1][2]+a[1][2]*b[2][2]+a[1][3]*b[3][2];\+   c[1][3] = a[1][0]*b[0][3]+a[1][1]*b[1][3]+a[1][2]*b[2][3]+a[1][3]*b[3][3];\+						\+   c[2][0] = a[2][0]*b[0][0]+a[2][1]*b[1][0]+a[2][2]*b[2][0]+a[2][3]*b[3][0];\+   c[2][1] = a[2][0]*b[0][1]+a[2][1]*b[1][1]+a[2][2]*b[2][1]+a[2][3]*b[3][1];\+   c[2][2] = a[2][0]*b[0][2]+a[2][1]*b[1][2]+a[2][2]*b[2][2]+a[2][3]*b[3][2];\+   c[2][3] = a[2][0]*b[0][3]+a[2][1]*b[1][3]+a[2][2]*b[2][3]+a[2][3]*b[3][3];\+						\+   c[3][0] = a[3][0]*b[0][0]+a[3][1]*b[1][0]+a[3][2]*b[2][0]+a[3][3]*b[3][0];\+   c[3][1] = a[3][0]*b[0][1]+a[3][1]*b[1][1]+a[3][2]*b[2][1]+a[3][3]*b[3][1];\+   c[3][2] = a[3][0]*b[0][2]+a[3][1]*b[1][2]+a[3][2]*b[2][2]+a[3][3]*b[3][2];\+   c[3][3] = a[3][0]*b[0][3]+a[3][1]*b[1][3]+a[3][2]*b[2][3]+a[3][3]*b[3][3];\+}\+++/*! matrix times vector */+#define MAT_DOT_VEC_2X2(p,m,v)					\+{								\+   p[0] = m[0][0]*v[0] + m[0][1]*v[1];				\+   p[1] = m[1][0]*v[0] + m[1][1]*v[1];				\+}\+++/*! matrix times vector */+#define MAT_DOT_VEC_3X3(p,m,v)					\+{								\+   p[0] = m[0][0]*v[0] + m[0][1]*v[1] + m[0][2]*v[2];		\+   p[1] = m[1][0]*v[0] + m[1][1]*v[1] + m[1][2]*v[2];		\+   p[2] = m[2][0]*v[0] + m[2][1]*v[1] + m[2][2]*v[2];		\+}\+++/*! matrix times vector+v is a vec4f+*/+#define MAT_DOT_VEC_4X4(p,m,v)					\+{								\+   p[0] = m[0][0]*v[0] + m[0][1]*v[1] + m[0][2]*v[2] + m[0][3]*v[3];	\+   p[1] = m[1][0]*v[0] + m[1][1]*v[1] + m[1][2]*v[2] + m[1][3]*v[3];	\+   p[2] = m[2][0]*v[0] + m[2][1]*v[1] + m[2][2]*v[2] + m[2][3]*v[3];	\+   p[3] = m[3][0]*v[0] + m[3][1]*v[1] + m[3][2]*v[2] + m[3][3]*v[3];	\+}\++/*! matrix times vector+v is a vec3f+and m is a mat4f<br>+Last column is added as the position+*/+#define MAT_DOT_VEC_3X4(p,m,v)					\+{								\+   p[0] = m[0][0]*v[0] + m[0][1]*v[1] + m[0][2]*v[2] + m[0][3];	\+   p[1] = m[1][0]*v[0] + m[1][1]*v[1] + m[1][2]*v[2] + m[1][3];	\+   p[2] = m[2][0]*v[0] + m[2][1]*v[1] + m[2][2]*v[2] + m[2][3];	\+}\+++/*! vector transpose times matrix */+/*! p[j] = v[0]*m[0][j] + v[1]*m[1][j] + v[2]*m[2][j]; */+#define VEC_DOT_MAT_3X3(p,v,m)					\+{								\+   p[0] = v[0]*m[0][0] + v[1]*m[1][0] + v[2]*m[2][0];		\+   p[1] = v[0]*m[0][1] + v[1]*m[1][1] + v[2]*m[2][1];		\+   p[2] = v[0]*m[0][2] + v[1]*m[1][2] + v[2]*m[2][2];		\+}\+++/*! affine matrix times vector */+/** The matrix is assumed to be an affine matrix, with last two+ * entries representing a translation */+#define MAT_DOT_VEC_2X3(p,m,v)					\+{								\+   p[0] = m[0][0]*v[0] + m[0][1]*v[1] + m[0][2];		\+   p[1] = m[1][0]*v[0] + m[1][1]*v[1] + m[1][2];		\+}\++//! Transform a plane+#define MAT_TRANSFORM_PLANE_4X4(pout,m,plane)\+{								\+   pout[0] = m[0][0]*plane[0] + m[0][1]*plane[1]  + m[0][2]*plane[2];\+   pout[1] = m[1][0]*plane[0] + m[1][1]*plane[1]  + m[1][2]*plane[2];\+   pout[2] = m[2][0]*plane[0] + m[2][1]*plane[1]  + m[2][2]*plane[2];\+   pout[3] = m[0][3]*pout[0] + m[1][3]*pout[1]  + m[2][3]*pout[2] + plane[3];\+}\++++/** inverse transpose of matrix times vector+ *+ * This macro computes inverse transpose of matrix m,+ * and multiplies vector v into it, to yeild vector p+ *+ * DANGER !!! Do Not use this on normal vectors!!!+ * It will leave normals the wrong length !!!+ * See macro below for use on normals.+ */+#define INV_TRANSP_MAT_DOT_VEC_2X2(p,m,v)			\+{								\+   GREAL det;						\+								\+   det = m[0][0]*m[1][1] - m[0][1]*m[1][0];			\+   p[0] = m[1][1]*v[0] - m[1][0]*v[1];				\+   p[1] = - m[0][1]*v[0] + m[0][0]*v[1];			\+								\+   /* if matrix not singular, and not orthonormal, then renormalize */ \+   if ((det!=1.0f) && (det != 0.0f)) {				\+      det = 1.0f / det;						\+      p[0] *= det;						\+      p[1] *= det;						\+   }								\+}\+++/** transform normal vector by inverse transpose of matrix+ * and then renormalize the vector+ *+ * This macro computes inverse transpose of matrix m,+ * and multiplies vector v into it, to yeild vector p+ * Vector p is then normalized.+ */+#define NORM_XFORM_2X2(p,m,v)					\+{								\+   GREAL len;							\+								\+   /* do nothing if off-diagonals are zero and diagonals are 	\+    * equal */							\+   if ((m[0][1] != 0.0) || (m[1][0] != 0.0) || (m[0][0] != m[1][1])) { \+      p[0] = m[1][1]*v[0] - m[1][0]*v[1];			\+      p[1] = - m[0][1]*v[0] + m[0][0]*v[1];			\+								\+      len = p[0]*p[0] + p[1]*p[1];				\+      GIM_INV_SQRT(len,len);					\+      p[0] *= len;						\+      p[1] *= len;						\+   } else {							\+      VEC_COPY_2 (p, v);					\+   }								\+}\+++/** outer product of vector times vector transpose+ *+ * The outer product of vector v and vector transpose t yeilds+ * dyadic matrix m.+ */+#define OUTER_PRODUCT_2X2(m,v,t)				\+{								\+   m[0][0] = v[0] * t[0];					\+   m[0][1] = v[0] * t[1];					\+								\+   m[1][0] = v[1] * t[0];					\+   m[1][1] = v[1] * t[1];					\+}\+++/** outer product of vector times vector transpose+ *+ * The outer product of vector v and vector transpose t yeilds+ * dyadic matrix m.+ */+#define OUTER_PRODUCT_3X3(m,v,t)				\+{								\+   m[0][0] = v[0] * t[0];					\+   m[0][1] = v[0] * t[1];					\+   m[0][2] = v[0] * t[2];					\+								\+   m[1][0] = v[1] * t[0];					\+   m[1][1] = v[1] * t[1];					\+   m[1][2] = v[1] * t[2];					\+								\+   m[2][0] = v[2] * t[0];					\+   m[2][1] = v[2] * t[1];					\+   m[2][2] = v[2] * t[2];					\+}\+++/** outer product of vector times vector transpose+ *+ * The outer product of vector v and vector transpose t yeilds+ * dyadic matrix m.+ */+#define OUTER_PRODUCT_4X4(m,v,t)				\+{								\+   m[0][0] = v[0] * t[0];					\+   m[0][1] = v[0] * t[1];					\+   m[0][2] = v[0] * t[2];					\+   m[0][3] = v[0] * t[3];					\+								\+   m[1][0] = v[1] * t[0];					\+   m[1][1] = v[1] * t[1];					\+   m[1][2] = v[1] * t[2];					\+   m[1][3] = v[1] * t[3];					\+								\+   m[2][0] = v[2] * t[0];					\+   m[2][1] = v[2] * t[1];					\+   m[2][2] = v[2] * t[2];					\+   m[2][3] = v[2] * t[3];					\+								\+   m[3][0] = v[3] * t[0];					\+   m[3][1] = v[3] * t[1];					\+   m[3][2] = v[3] * t[2];					\+   m[3][3] = v[3] * t[3];					\+}\+++/** outer product of vector times vector transpose+ *+ * The outer product of vector v and vector transpose t yeilds+ * dyadic matrix m.+ */+#define ACCUM_OUTER_PRODUCT_2X2(m,v,t)				\+{								\+   m[0][0] += v[0] * t[0];					\+   m[0][1] += v[0] * t[1];					\+								\+   m[1][0] += v[1] * t[0];					\+   m[1][1] += v[1] * t[1];					\+}\+++/** outer product of vector times vector transpose+ *+ * The outer product of vector v and vector transpose t yeilds+ * dyadic matrix m.+ */+#define ACCUM_OUTER_PRODUCT_3X3(m,v,t)				\+{								\+   m[0][0] += v[0] * t[0];					\+   m[0][1] += v[0] * t[1];					\+   m[0][2] += v[0] * t[2];					\+								\+   m[1][0] += v[1] * t[0];					\+   m[1][1] += v[1] * t[1];					\+   m[1][2] += v[1] * t[2];					\+								\+   m[2][0] += v[2] * t[0];					\+   m[2][1] += v[2] * t[1];					\+   m[2][2] += v[2] * t[2];					\+}\+++/** outer product of vector times vector transpose+ *+ * The outer product of vector v and vector transpose t yeilds+ * dyadic matrix m.+ */+#define ACCUM_OUTER_PRODUCT_4X4(m,v,t)				\+{								\+   m[0][0] += v[0] * t[0];					\+   m[0][1] += v[0] * t[1];					\+   m[0][2] += v[0] * t[2];					\+   m[0][3] += v[0] * t[3];					\+								\+   m[1][0] += v[1] * t[0];					\+   m[1][1] += v[1] * t[1];					\+   m[1][2] += v[1] * t[2];					\+   m[1][3] += v[1] * t[3];					\+								\+   m[2][0] += v[2] * t[0];					\+   m[2][1] += v[2] * t[1];					\+   m[2][2] += v[2] * t[2];					\+   m[2][3] += v[2] * t[3];					\+								\+   m[3][0] += v[3] * t[0];					\+   m[3][1] += v[3] * t[1];					\+   m[3][2] += v[3] * t[2];					\+   m[3][3] += v[3] * t[3];					\+}\+++/** determinant of matrix+ *+ * Computes determinant of matrix m, returning d+ */+#define DETERMINANT_2X2(d,m)					\+{								\+   d = m[0][0] * m[1][1] - m[0][1] * m[1][0];			\+}\+++/** determinant of matrix+ *+ * Computes determinant of matrix m, returning d+ */+#define DETERMINANT_3X3(d,m)					\+{								\+   d = m[0][0] * (m[1][1]*m[2][2] - m[1][2] * m[2][1]);		\+   d -= m[0][1] * (m[1][0]*m[2][2] - m[1][2] * m[2][0]);	\+   d += m[0][2] * (m[1][0]*m[2][1] - m[1][1] * m[2][0]);	\+}\+++/** i,j,th cofactor of a 4x4 matrix+ *+ */+#define COFACTOR_4X4_IJ(fac,m,i,j) 				\+{								\+   GUINT __ii[4], __jj[4], __k;						\+								\+   for (__k=0; __k<i; __k++) __ii[__k] = __k;				\+   for (__k=i; __k<3; __k++) __ii[__k] = __k+1;				\+   for (__k=0; __k<j; __k++) __jj[__k] = __k;				\+   for (__k=j; __k<3; __k++) __jj[__k] = __k+1;				\+								\+   (fac) = m[__ii[0]][__jj[0]] * (m[__ii[1]][__jj[1]]*m[__ii[2]][__jj[2]] 	\+                            - m[__ii[1]][__jj[2]]*m[__ii[2]][__jj[1]]); \+   (fac) -= m[__ii[0]][__jj[1]] * (m[__ii[1]][__jj[0]]*m[__ii[2]][__jj[2]]	\+                             - m[__ii[1]][__jj[2]]*m[__ii[2]][__jj[0]]);\+   (fac) += m[__ii[0]][__jj[2]] * (m[__ii[1]][__jj[0]]*m[__ii[2]][__jj[1]]	\+                             - m[__ii[1]][__jj[1]]*m[__ii[2]][__jj[0]]);\+								\+   __k = i+j;							\+   if ( __k != (__k/2)*2) {						\+      (fac) = -(fac);						\+   }								\+}\+++/** determinant of matrix+ *+ * Computes determinant of matrix m, returning d+ */+#define DETERMINANT_4X4(d,m)					\+{								\+   GREAL cofac;						\+   COFACTOR_4X4_IJ (cofac, m, 0, 0);				\+   d = m[0][0] * cofac;						\+   COFACTOR_4X4_IJ (cofac, m, 0, 1);				\+   d += m[0][1] * cofac;					\+   COFACTOR_4X4_IJ (cofac, m, 0, 2);				\+   d += m[0][2] * cofac;					\+   COFACTOR_4X4_IJ (cofac, m, 0, 3);				\+   d += m[0][3] * cofac;					\+}\+++/** cofactor of matrix+ *+ * Computes cofactor of matrix m, returning a+ */+#define COFACTOR_2X2(a,m)					\+{								\+   a[0][0] = (m)[1][1];						\+   a[0][1] = - (m)[1][0];						\+   a[1][0] = - (m)[0][1];						\+   a[1][1] = (m)[0][0];						\+}\+++/** cofactor of matrix+ *+ * Computes cofactor of matrix m, returning a+ */+#define COFACTOR_3X3(a,m)					\+{								\+   a[0][0] = m[1][1]*m[2][2] - m[1][2]*m[2][1];			\+   a[0][1] = - (m[1][0]*m[2][2] - m[2][0]*m[1][2]);		\+   a[0][2] = m[1][0]*m[2][1] - m[1][1]*m[2][0];			\+   a[1][0] = - (m[0][1]*m[2][2] - m[0][2]*m[2][1]);		\+   a[1][1] = m[0][0]*m[2][2] - m[0][2]*m[2][0];			\+   a[1][2] = - (m[0][0]*m[2][1] - m[0][1]*m[2][0]);		\+   a[2][0] = m[0][1]*m[1][2] - m[0][2]*m[1][1];			\+   a[2][1] = - (m[0][0]*m[1][2] - m[0][2]*m[1][0]);		\+   a[2][2] = m[0][0]*m[1][1] - m[0][1]*m[1][0]);		\+}\+++/** cofactor of matrix+ *+ * Computes cofactor of matrix m, returning a+ */+#define COFACTOR_4X4(a,m)					\+{								\+   int i,j;							\+								\+   for (i=0; i<4; i++) {					\+      for (j=0; j<4; j++) {					\+         COFACTOR_4X4_IJ (a[i][j], m, i, j);			\+      }								\+   }								\+}\+++/** adjoint of matrix+ *+ * Computes adjoint of matrix m, returning a+ * (Note that adjoint is just the transpose of the cofactor matrix)+ */+#define ADJOINT_2X2(a,m)					\+{								\+   a[0][0] = (m)[1][1];						\+   a[1][0] = - (m)[1][0];						\+   a[0][1] = - (m)[0][1];						\+   a[1][1] = (m)[0][0];						\+}\+++/** adjoint of matrix+ *+ * Computes adjoint of matrix m, returning a+ * (Note that adjoint is just the transpose of the cofactor matrix)+ */+#define ADJOINT_3X3(a,m)					\+{								\+   a[0][0] = m[1][1]*m[2][2] - m[1][2]*m[2][1];			\+   a[1][0] = - (m[1][0]*m[2][2] - m[2][0]*m[1][2]);		\+   a[2][0] = m[1][0]*m[2][1] - m[1][1]*m[2][0];			\+   a[0][1] = - (m[0][1]*m[2][2] - m[0][2]*m[2][1]);		\+   a[1][1] = m[0][0]*m[2][2] - m[0][2]*m[2][0];			\+   a[2][1] = - (m[0][0]*m[2][1] - m[0][1]*m[2][0]);		\+   a[0][2] = m[0][1]*m[1][2] - m[0][2]*m[1][1];			\+   a[1][2] = - (m[0][0]*m[1][2] - m[0][2]*m[1][0]);		\+   a[2][2] = m[0][0]*m[1][1] - m[0][1]*m[1][0]);		\+}\+++/** adjoint of matrix+ *+ * Computes adjoint of matrix m, returning a+ * (Note that adjoint is just the transpose of the cofactor matrix)+ */+#define ADJOINT_4X4(a,m)					\+{								\+   char _i_,_j_;							\+								\+   for (_i_=0; _i_<4; _i_++) {					\+      for (_j_=0; _j_<4; _j_++) {					\+         COFACTOR_4X4_IJ (a[_j_][_i_], m, _i_, _j_);			\+      }								\+   }								\+}\+++/** compute adjoint of matrix and scale+ *+ * Computes adjoint of matrix m, scales it by s, returning a+ */+#define SCALE_ADJOINT_2X2(a,s,m)				\+{								\+   a[0][0] = (s) * m[1][1];					\+   a[1][0] = - (s) * m[1][0];					\+   a[0][1] = - (s) * m[0][1];					\+   a[1][1] = (s) * m[0][0];					\+}\+++/** compute adjoint of matrix and scale+ *+ * Computes adjoint of matrix m, scales it by s, returning a+ */+#define SCALE_ADJOINT_3X3(a,s,m)				\+{								\+   a[0][0] = (s) * (m[1][1] * m[2][2] - m[1][2] * m[2][1]);	\+   a[1][0] = (s) * (m[1][2] * m[2][0] - m[1][0] * m[2][2]);	\+   a[2][0] = (s) * (m[1][0] * m[2][1] - m[1][1] * m[2][0]);	\+								\+   a[0][1] = (s) * (m[0][2] * m[2][1] - m[0][1] * m[2][2]);	\+   a[1][1] = (s) * (m[0][0] * m[2][2] - m[0][2] * m[2][0]);	\+   a[2][1] = (s) * (m[0][1] * m[2][0] - m[0][0] * m[2][1]);	\+								\+   a[0][2] = (s) * (m[0][1] * m[1][2] - m[0][2] * m[1][1]);	\+   a[1][2] = (s) * (m[0][2] * m[1][0] - m[0][0] * m[1][2]);	\+   a[2][2] = (s) * (m[0][0] * m[1][1] - m[0][1] * m[1][0]);	\+}\+++/** compute adjoint of matrix and scale+ *+ * Computes adjoint of matrix m, scales it by s, returning a+ */+#define SCALE_ADJOINT_4X4(a,s,m)				\+{								\+   char _i_,_j_; \+   for (_i_=0; _i_<4; _i_++) {					\+      for (_j_=0; _j_<4; _j_++) {					\+         COFACTOR_4X4_IJ (a[_j_][_i_], m, _i_, _j_);			\+         a[_j_][_i_] *= s;						\+      }								\+   }								\+}\++/** inverse of matrix+ *+ * Compute inverse of matrix a, returning determinant m and+ * inverse b+ */+#define INVERT_2X2(b,det,a)			\+{						\+   GREAL _tmp_;					\+   DETERMINANT_2X2 (det, a);			\+   _tmp_ = 1.0 / (det);				\+   SCALE_ADJOINT_2X2 (b, _tmp_, a);		\+}\+++/** inverse of matrix+ *+ * Compute inverse of matrix a, returning determinant m and+ * inverse b+ */+#define INVERT_3X3(b,det,a)			\+{						\+   GREAL _tmp_;					\+   DETERMINANT_3X3 (det, a);			\+   _tmp_ = 1.0 / (det);				\+   SCALE_ADJOINT_3X3 (b, _tmp_, a);		\+}\+++/** inverse of matrix+ *+ * Compute inverse of matrix a, returning determinant m and+ * inverse b+ */+#define INVERT_4X4(b,det,a)			\+{						\+   GREAL _tmp_;					\+   DETERMINANT_4X4 (det, a);			\+   _tmp_ = 1.0 / (det);				\+   SCALE_ADJOINT_4X4 (b, _tmp_, a);		\+}\++//! Get the triple(3) row of a transform matrix+#define MAT_GET_ROW(mat,vec3,rowindex)\+{\+    vec3[0] = mat[rowindex][0];\+    vec3[1] = mat[rowindex][1];\+    vec3[2] = mat[rowindex][2]; \+}\++//! Get the tuple(2) row of a transform matrix+#define MAT_GET_ROW2(mat,vec2,rowindex)\+{\+    vec2[0] = mat[rowindex][0];\+    vec2[1] = mat[rowindex][1];\+}\+++//! Get the quad (4) row of a transform matrix+#define MAT_GET_ROW4(mat,vec4,rowindex)\+{\+    vec4[0] = mat[rowindex][0];\+    vec4[1] = mat[rowindex][1];\+    vec4[2] = mat[rowindex][2];\+    vec4[3] = mat[rowindex][3];\+}\++//! Get the triple(3) col of a transform matrix+#define MAT_GET_COL(mat,vec3,colindex)\+{\+    vec3[0] = mat[0][colindex];\+    vec3[1] = mat[1][colindex];\+    vec3[2] = mat[2][colindex]; \+}\++//! Get the tuple(2) col of a transform matrix+#define MAT_GET_COL2(mat,vec2,colindex)\+{\+    vec2[0] = mat[0][colindex];\+    vec2[1] = mat[1][colindex];\+}\+++//! Get the quad (4) col of a transform matrix+#define MAT_GET_COL4(mat,vec4,colindex)\+{\+    vec4[0] = mat[0][colindex];\+    vec4[1] = mat[1][colindex];\+    vec4[2] = mat[2][colindex];\+    vec4[3] = mat[3][colindex];\+}\++//! Get the triple(3) col of a transform matrix+#define MAT_GET_X(mat,vec3)\+{\+    MAT_GET_COL(mat,vec3,0);\+}\++//! Get the triple(3) col of a transform matrix+#define MAT_GET_Y(mat,vec3)\+{\+    MAT_GET_COL(mat,vec3,1);\+}\++//! Get the triple(3) col of a transform matrix+#define MAT_GET_Z(mat,vec3)\+{\+    MAT_GET_COL(mat,vec3,2);\+}\+++//! Get the triple(3) col of a transform matrix+#define MAT_SET_X(mat,vec3)\+{\+    mat[0][0] = vec3[0];\+    mat[1][0] = vec3[1];\+    mat[2][0] = vec3[2];\+}\++//! Get the triple(3) col of a transform matrix+#define MAT_SET_Y(mat,vec3)\+{\+    mat[0][1] = vec3[0];\+    mat[1][1] = vec3[1];\+    mat[2][1] = vec3[2];\+}\++//! Get the triple(3) col of a transform matrix+#define MAT_SET_Z(mat,vec3)\+{\+    mat[0][2] = vec3[0];\+    mat[1][2] = vec3[1];\+    mat[2][2] = vec3[2];\+}\+++//! Get the triple(3) col of a transform matrix+#define MAT_GET_TRANSLATION(mat,vec3)\+{\+    vec3[0] = mat[0][3];\+    vec3[1] = mat[1][3];\+    vec3[2] = mat[2][3]; \+}\++//! Set the triple(3) col of a transform matrix+#define MAT_SET_TRANSLATION(mat,vec3)\+{\+    mat[0][3] = vec3[0];\+    mat[1][3] = vec3[1];\+    mat[2][3] = vec3[2]; \+}\++++//! Returns the dot product between a vec3f and the row of a matrix+#define MAT_DOT_ROW(mat,vec3,rowindex) (vec3[0]*mat[rowindex][0] + vec3[1]*mat[rowindex][1] + vec3[2]*mat[rowindex][2])++//! Returns the dot product between a vec2f and the row of a matrix+#define MAT_DOT_ROW2(mat,vec2,rowindex) (vec2[0]*mat[rowindex][0] + vec2[1]*mat[rowindex][1])++//! Returns the dot product between a vec4f and the row of a matrix+#define MAT_DOT_ROW4(mat,vec4,rowindex) (vec4[0]*mat[rowindex][0] + vec4[1]*mat[rowindex][1] + vec4[2]*mat[rowindex][2] + vec4[3]*mat[rowindex][3])+++//! Returns the dot product between a vec3f and the col of a matrix+#define MAT_DOT_COL(mat,vec3,colindex) (vec3[0]*mat[0][colindex] + vec3[1]*mat[1][colindex] + vec3[2]*mat[2][colindex])++//! Returns the dot product between a vec2f and the col of a matrix+#define MAT_DOT_COL2(mat,vec2,colindex) (vec2[0]*mat[0][colindex] + vec2[1]*mat[1][colindex])++//! Returns the dot product between a vec4f and the col of a matrix+#define MAT_DOT_COL4(mat,vec4,colindex) (vec4[0]*mat[0][colindex] + vec4[1]*mat[1][colindex] + vec4[2]*mat[2][colindex] + vec4[3]*mat[3][colindex])++/*!Transpose matrix times vector+v is a vec3f+and m is a mat4f<br>+*/+#define INV_MAT_DOT_VEC_3X3(p,m,v)					\+{								\+   p[0] = MAT_DOT_COL(m,v,0); \+   p[1] = MAT_DOT_COL(m,v,1);	\+   p[2] = MAT_DOT_COL(m,v,2);	\+}\++++#endif // GIM_VECTOR_H_INCLUDED
+ bullet/BulletCollision/Gimpact/gim_math.h view
@@ -0,0 +1,157 @@+#ifndef GIM_MATH_H_INCLUDED+#define GIM_MATH_H_INCLUDED+/*! \file gim_math.h+\author Francisco Leon Najera+*/+/*+-----------------------------------------------------------------------------+This source file is part of GIMPACT Library.++For the latest info, see http://gimpact.sourceforge.net/++Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371.+email: projectileman@yahoo.com++ This library is free software; you can redistribute it and/or+ modify it under the terms of EITHER:+   (1) The GNU Lesser General Public License as published by the Free+       Software Foundation; either version 2.1 of the License, or (at+       your option) any later version. The text of the GNU Lesser+       General Public License is included with this library in the+       file GIMPACT-LICENSE-LGPL.TXT.+   (2) The BSD-style license that is included with this library in+       the file GIMPACT-LICENSE-BSD.TXT.+   (3) The zlib/libpng license that is included with this library in+       the file GIMPACT-LICENSE-ZLIB.TXT.++ This library is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files+ GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details.++-----------------------------------------------------------------------------+*/++#include "LinearMath/btScalar.h"++++#define GREAL btScalar+#define GREAL2 double+#define GINT int+#define GUINT unsigned int+#define GSHORT short+#define GUSHORT unsigned short+#define GINT64 long long+#define GUINT64 unsigned long long++++#define G_PI 3.14159265358979f+#define G_HALF_PI 1.5707963f+//267948966+#define G_TWO_PI 6.28318530f+//71795864+#define G_ROOT3 1.73205f+#define G_ROOT2 1.41421f+#define G_UINT_INFINITY 0xffffffff //!< A very very high value+#define G_REAL_INFINITY FLT_MAX+#define	G_SIGN_BITMASK			0x80000000+#define G_EPSILON SIMD_EPSILON++++enum GIM_SCALAR_TYPES+{+	G_STYPE_REAL =0,+	G_STYPE_REAL2,+	G_STYPE_SHORT,+	G_STYPE_USHORT,+	G_STYPE_INT,+	G_STYPE_UINT,+	G_STYPE_INT64,+	G_STYPE_UINT64+};++++#define G_DEGTORAD(X) ((X)*3.1415926f/180.0f)+#define G_RADTODEG(X) ((X)*180.0f/3.1415926f)++//! Integer representation of a floating-point value.+#define GIM_IR(x)					((GUINT&)(x))++//! Signed integer representation of a floating-point value.+#define GIM_SIR(x)					((GINT&)(x))++//! Absolute integer representation of a floating-point value+#define GIM_AIR(x)					(GIM_IR(x)&0x7fffffff)++//! Floating-point representation of an integer value.+#define GIM_FR(x)					((GREAL&)(x))++#define GIM_MAX(a,b) (a<b?b:a)+#define GIM_MIN(a,b) (a>b?b:a)++#define GIM_MAX3(a,b,c) GIM_MAX(a,GIM_MAX(b,c))+#define GIM_MIN3(a,b,c) GIM_MIN(a,GIM_MIN(b,c))++#define GIM_IS_ZERO(value) (value < G_EPSILON &&  value > -G_EPSILON)++#define GIM_IS_NEGATIVE(value) (value <= -G_EPSILON)++#define GIM_IS_POSISITVE(value) (value >= G_EPSILON)++#define GIM_NEAR_EQUAL(v1,v2) GIM_IS_ZERO((v1-v2))++///returns a clamped number+#define GIM_CLAMP(number,minval,maxval) (number<minval?minval:(number>maxval?maxval:number))++#define GIM_GREATER(x, y)	btFabs(x) > (y)++///Swap numbers+#define GIM_SWAP_NUMBERS(a,b){ \+    a = a+b; \+    b = a-b; \+    a = a-b; \+}\++#define GIM_INV_SQRT(va,isva)\+{\+    if(va<=0.0000001f)\+    {\+        isva = G_REAL_INFINITY;\+    }\+    else\+    {\+        GREAL _x = va * 0.5f;\+        GUINT _y = 0x5f3759df - ( GIM_IR(va) >> 1);\+        isva = GIM_FR(_y);\+        isva  = isva * ( 1.5f - ( _x * isva * isva ) );\+    }\+}\++#define GIM_SQRT(va,sva)\+{\+    GIM_INV_SQRT(va,sva);\+    sva = 1.0f/sva;\+}\++//! Computes 1.0f / sqrtf(x). Comes from Quake3. See http://www.magic-software.com/3DGEDInvSqrt.html+inline GREAL gim_inv_sqrt(GREAL f)+{+    GREAL r;+    GIM_INV_SQRT(f,r);+    return r;+}++inline GREAL gim_sqrt(GREAL f)+{+    GREAL r;+    GIM_SQRT(f,r);+    return r;+}++++#endif // GIM_MATH_H_INCLUDED
+ bullet/BulletCollision/Gimpact/gim_memory.h view
@@ -0,0 +1,190 @@+#ifndef GIM_MEMORY_H_INCLUDED+#define GIM_MEMORY_H_INCLUDED+/*! \file gim_memory.h+\author Francisco Leon Najera+*/+/*+-----------------------------------------------------------------------------+This source file is part of GIMPACT Library.++For the latest info, see http://gimpact.sourceforge.net/++Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371.+email: projectileman@yahoo.com++ This library is free software; you can redistribute it and/or+ modify it under the terms of EITHER:+   (1) The GNU Lesser General Public License as published by the Free+       Software Foundation; either version 2.1 of the License, or (at+       your option) any later version. The text of the GNU Lesser+       General Public License is included with this library in the+       file GIMPACT-LICENSE-LGPL.TXT.+   (2) The BSD-style license that is included with this library in+       the file GIMPACT-LICENSE-BSD.TXT.+   (3) The zlib/libpng license that is included with this library in+       the file GIMPACT-LICENSE-ZLIB.TXT.++ This library is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files+ GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details.++-----------------------------------------------------------------------------+*/+++#include "gim_math.h"+#include <string.h>++#ifdef PREFETCH+#include <xmmintrin.h>	// for prefetch+#define pfval	64+#define pfval2	128+//! Prefetch 64+#define pf(_x,_i)	_mm_prefetch((void *)(_x + _i + pfval), 0)+//! Prefetch 128+#define pf2(_x,_i)	_mm_prefetch((void *)(_x + _i + pfval2), 0)+#else+//! Prefetch 64+#define pf(_x,_i)+//! Prefetch 128+#define pf2(_x,_i)+#endif+++///Functions for manip packed arrays of numbers+#define GIM_COPY_ARRAYS(dest_array,source_array,element_count)\+{\+    for (GUINT _i_=0;_i_<element_count ;++_i_)\+    {\+    	dest_array[_i_] = source_array[_i_];\+    }\+}\++#define GIM_COPY_ARRAYS_1(dest_array,source_array,element_count,copy_macro)\+{\+    for (GUINT _i_=0;_i_<element_count ;++_i_)\+    {\+    	copy_macro(dest_array[_i_],source_array[_i_]);\+    }\+}\+++#define GIM_ZERO_ARRAY(array,element_count)\+{\+    for (GUINT _i_=0;_i_<element_count ;++_i_)\+    {\+    	array[_i_] = 0;\+    }\+}\++#define GIM_CONSTANT_ARRAY(array,element_count,constant)\+{\+    for (GUINT _i_=0;_i_<element_count ;++_i_)\+    {\+    	array[_i_] = constant;\+    }\+}\+++///Function prototypes to allocate and free memory.+typedef void * gim_alloc_function (size_t size);+typedef void * gim_alloca_function (size_t size);//Allocs on the heap+typedef void * gim_realloc_function (void *ptr, size_t oldsize, size_t newsize);+typedef void gim_free_function (void *ptr);+++///Memory Function Handlers+///set new memory management functions. if fn is 0, the default handlers are used.+void gim_set_alloc_handler (gim_alloc_function *fn);+void gim_set_alloca_handler (gim_alloca_function *fn);+void gim_set_realloc_handler (gim_realloc_function *fn);+void gim_set_free_handler (gim_free_function *fn);+++///get current memory management functions.+gim_alloc_function *gim_get_alloc_handler (void);+gim_alloca_function *gim_get_alloca_handler(void);+gim_realloc_function *gim_get_realloc_handler (void);+gim_free_function  *gim_get_free_handler (void);+++///Standar Memory functions+void * gim_alloc(size_t size);+void * gim_alloca(size_t size);+void * gim_realloc(void *ptr, size_t oldsize, size_t newsize);+void gim_free(void *ptr);++++#if defined (_WIN32) && !defined(__MINGW32__) && !defined(__CYGWIN__)+    #define GIM_SIMD_MEMORY 1+#endif++//! SIMD POINTER INTEGER+#define SIMD_T GUINT64+//! SIMD INTEGER SIZE+#define SIMD_T_SIZE sizeof(SIMD_T)+++inline void gim_simd_memcpy(void * dst, const void * src, size_t copysize)+{+#ifdef GIM_SIMD_MEMORY+/*+//'long long int' is incompatible with visual studio 6...+    //copy words+    SIMD_T * ui_src_ptr = (SIMD_T *)src;+    SIMD_T * ui_dst_ptr = (SIMD_T *)dst;+    while(copysize>=SIMD_T_SIZE)+    {+        *(ui_dst_ptr++) = *(ui_src_ptr++);+        copysize-=SIMD_T_SIZE;+    }+    if(copysize==0) return;+*/++    char * c_src_ptr = (char *)src;+    char * c_dst_ptr = (char *)dst;+    while(copysize>0)+    {+        *(c_dst_ptr++) = *(c_src_ptr++);+        copysize--;+    }+    return;+#else+    memcpy(dst,src,copysize);+#endif+}++++template<class T>+inline void gim_swap_elements(T* _array,size_t _i,size_t _j)+{+	T _e_tmp_ = _array[_i];+	_array[_i] = _array[_j];+	_array[_j] = _e_tmp_;+}+++template<class T>+inline void gim_swap_elements_memcpy(T* _array,size_t _i,size_t _j)+{+	char _e_tmp_[sizeof(T)];+	gim_simd_memcpy(_e_tmp_,&_array[_i],sizeof(T));+	gim_simd_memcpy(&_array[_i],&_array[_j],sizeof(T));+	gim_simd_memcpy(&_array[_j],_e_tmp_,sizeof(T));+}++template <int SIZE>+inline void gim_swap_elements_ptr(char * _array,size_t _i,size_t _j)+{+	char _e_tmp_[SIZE];+	_i*=SIZE;+	_j*=SIZE;+	gim_simd_memcpy(_e_tmp_,_array+_i,SIZE);+	gim_simd_memcpy(_array+_i,_array+_j,SIZE);+	gim_simd_memcpy(_array+_j,_e_tmp_,SIZE);+}++#endif // GIM_MEMORY_H_INCLUDED
+ bullet/BulletCollision/Gimpact/gim_radixsort.h view
@@ -0,0 +1,406 @@+#ifndef GIM_RADIXSORT_H_INCLUDED+#define GIM_RADIXSORT_H_INCLUDED+/*! \file gim_radixsort.h+\author Francisco Leon Najera.+Based on the work of Michael Herf : "fast floating-point radix sort"+Avaliable on http://www.stereopsis.com/radix.html+*/+/*+-----------------------------------------------------------------------------+This source file is part of GIMPACT Library.++For the latest info, see http://gimpact.sourceforge.net/++Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371.+email: projectileman@yahoo.com++ This library is free software; you can redistribute it and/or+ modify it under the terms of EITHER:+   (1) The GNU Lesser General Public License as published by the Free+       Software Foundation; either version 2.1 of the License, or (at+       your option) any later version. The text of the GNU Lesser+       General Public License is included with this library in the+       file GIMPACT-LICENSE-LGPL.TXT.+   (2) The BSD-style license that is included with this library in+       the file GIMPACT-LICENSE-BSD.TXT.+   (3) The zlib/libpng license that is included with this library in+       the file GIMPACT-LICENSE-ZLIB.TXT.++ This library is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files+ GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details.++-----------------------------------------------------------------------------+*/++#include "gim_memory.h"++///Macros for sorting.+//! Prototype for comparators+class less_comparator+{+	public:++	template<class T,class Z>+	inline int operator() ( const T& a, const Z& b )+	{+		return ( a<b?-1:(a>b?1:0));+	}+};++//! Prototype for comparators+class integer_comparator+{+	public:++	template<class T>+	inline int operator() ( const T& a, const T& b )+	{+		return (int)(a-b);+	}+};++//!Prototype for getting the integer representation of an object+class uint_key_func+{+public:+	template<class T>+	inline GUINT operator()( const T& a)+	{+		return (GUINT)a;+	}+};+++//!Prototype for copying elements+class copy_elements_func+{+public:+	template<class T>+	inline void operator()(T& a,T& b)+	{+		a = b;+	}+};++//!Prototype for copying elements+class memcopy_elements_func+{+public:+	template<class T>+	inline void operator()(T& a,T& b)+	{+		gim_simd_memcpy(&a,&b,sizeof(T));+	}+};+++//! @{+struct GIM_RSORT_TOKEN+{+    GUINT m_key;+    GUINT m_value;+    GIM_RSORT_TOKEN()+    {+    }+    GIM_RSORT_TOKEN(const GIM_RSORT_TOKEN& rtoken)+    {+    	m_key = rtoken.m_key;+    	m_value = rtoken.m_value;+    }++    inline bool operator <(const GIM_RSORT_TOKEN& other) const+	{+		return (m_key < other.m_key);+	}++	inline bool operator >(const GIM_RSORT_TOKEN& other) const+	{+		return (m_key > other.m_key);+	}+};++//! Prototype for comparators+class GIM_RSORT_TOKEN_COMPARATOR+{+	public:++	inline int operator()( const GIM_RSORT_TOKEN& a, const GIM_RSORT_TOKEN& b )+	{+		return (int)((a.m_key) - (b.m_key));+	}+};++++#define kHist 2048+// ---- utils for accessing 11-bit quantities+#define D11_0(x)	(x & 0x7FF)+#define D11_1(x)	(x >> 11 & 0x7FF)+#define D11_2(x)	(x >> 22 )++++///Radix sort for unsigned integer keys+inline void gim_radix_sort_rtokens(+				GIM_RSORT_TOKEN * array,+				GIM_RSORT_TOKEN * sorted, GUINT element_count)+{+	GUINT i;+	GUINT b0[kHist * 3];+	GUINT *b1 = b0 + kHist;+	GUINT *b2 = b1 + kHist;+	for (i = 0; i < kHist * 3; ++i)+	{+		b0[i] = 0;+	}+	GUINT fi;+	GUINT pos;+	for (i = 0; i < element_count; ++i)+	{+	    fi = array[i].m_key;+		b0[D11_0(fi)] ++;+		b1[D11_1(fi)] ++;+		b2[D11_2(fi)] ++;+	}+	{+		GUINT sum0 = 0, sum1 = 0, sum2 = 0;+		GUINT tsum;+		for (i = 0; i < kHist; ++i)+		{+			tsum = b0[i] + sum0;+			b0[i] = sum0 - 1;+			sum0 = tsum;+			tsum = b1[i] + sum1;+			b1[i] = sum1 - 1;+			sum1 = tsum;+			tsum = b2[i] + sum2;+			b2[i] = sum2 - 1;+			sum2 = tsum;+		}+	}+	for (i = 0; i < element_count; ++i)+	{+        fi = array[i].m_key;+		pos = D11_0(fi);+		pos = ++b0[pos];+		sorted[pos].m_key = array[i].m_key;+		sorted[pos].m_value = array[i].m_value;+	}+	for (i = 0; i < element_count; ++i)+	{+        fi = sorted[i].m_key;+		pos = D11_1(fi);+		pos = ++b1[pos];+		array[pos].m_key = sorted[i].m_key;+		array[pos].m_value = sorted[i].m_value;+	}+	for (i = 0; i < element_count; ++i)+	{+        fi = array[i].m_key;+		pos = D11_2(fi);+		pos = ++b2[pos];+		sorted[pos].m_key = array[i].m_key;+		sorted[pos].m_value = array[i].m_value;+	}+}+++++/// Get the sorted tokens from an array. For generic use. Tokens are IRR_RSORT_TOKEN+/*!+*\param array Array of elements to sort+*\param sorted_tokens Tokens of sorted elements+*\param element_count element count+*\param uintkey_macro Functor which retrieves the integer representation of an array element+*/+template<typename T, class GETKEY_CLASS>+void gim_radix_sort_array_tokens(+			T* array ,+			GIM_RSORT_TOKEN * sorted_tokens,+			GUINT element_count,GETKEY_CLASS uintkey_macro)+{+	GIM_RSORT_TOKEN * _unsorted = (GIM_RSORT_TOKEN *) gim_alloc(sizeof(GIM_RSORT_TOKEN)*element_count);+    for (GUINT _i=0;_i<element_count;++_i)+    {+        _unsorted[_i].m_key = uintkey_macro(array[_i]);+        _unsorted[_i].m_value = _i;+    }+    gim_radix_sort_rtokens(_unsorted,sorted_tokens,element_count);+    gim_free(_unsorted);+    gim_free(_unsorted);+}++/// Sorts array in place. For generic use+/*!+\param type Type of the array+\param array+\param element_count+\param get_uintkey_macro Macro for extract the Integer value of the element. Similar to SIMPLE_GET_UINTKEY+\param copy_elements_macro Macro for copy elements, similar to SIMPLE_COPY_ELEMENTS+*/+template<typename T, class GETKEY_CLASS, class COPY_CLASS>+void gim_radix_sort(+	T * array, GUINT element_count,+	GETKEY_CLASS get_uintkey_macro, COPY_CLASS copy_elements_macro)+{+	GIM_RSORT_TOKEN * _sorted = (GIM_RSORT_TOKEN  *) gim_alloc(sizeof(GIM_RSORT_TOKEN)*element_count);+    gim_radix_sort_array_tokens(array,_sorted,element_count,get_uintkey_macro);+    T * _original_array = (T *) gim_alloc(sizeof(T)*element_count);+    gim_simd_memcpy(_original_array,array,sizeof(T)*element_count);+    for (GUINT _i=0;_i<element_count;++_i)+    {+        copy_elements_macro(array[_i],_original_array[_sorted[_i].m_value]);+    }+    gim_free(_original_array);+    gim_free(_sorted);+}++//! Failsafe Iterative binary search,+/*!+If the element is not found, it returns the nearest upper element position, may be the further position after the last element.+\param _array+\param _start_i the beginning of the array+\param _end_i the ending  index of the array+\param _search_key Value to find+\param _comp_macro macro for comparing elements+\param _found If true the value has found. Boolean+\param _result_index the index of the found element, or if not found then it will get the index of the  closest bigger value+*/+template<class T, typename KEYCLASS, typename COMP_CLASS>+bool  gim_binary_search_ex(+		const T* _array, GUINT _start_i,+		GUINT _end_i,GUINT & _result_index,+		const KEYCLASS & _search_key,+		COMP_CLASS _comp_macro)+{+	GUINT _k;+	int _comp_result;+	GUINT _i = _start_i;+	GUINT _j = _end_i+1;+	while (_i < _j)+	{+		_k = (_j+_i-1)/2;+		_comp_result = _comp_macro(_array[_k], _search_key);+		if (_comp_result == 0)+		{+			_result_index = _k;+			return true;+		}+		else if (_comp_result < 0)+		{+			_i = _k+1;+		}+		else+		{+			_j = _k;+		}+	}+	_result_index = _i;+	return false;+}++++//! Failsafe Iterative binary search,Template version+/*!+If the element is not found, it returns the nearest upper element position, may be the further position after the last element.+\param _array+\param _start_i the beginning of the array+\param _end_i the ending  index of the array+\param _search_key Value to find+\param _result_index the index of the found element, or if not found then it will get the index of the  closest bigger value+\return true if found, else false+*/+template<class T>+bool gim_binary_search(+	const T*_array,GUINT _start_i,+	GUINT _end_i,const T & _search_key,+	GUINT & _result_index)+{+	GUINT _i = _start_i;+	GUINT _j = _end_i+1;+	GUINT _k;+	while(_i < _j)+	{+		_k = (_j+_i-1)/2;+		if(_array[_k]==_search_key)+		{+			_result_index = _k;+			return true;+		}+		else if (_array[_k]<_search_key)+		{+			_i = _k+1;+		}+		else+		{+			_j = _k;+		}+	}+	_result_index = _i;+	return false;+}++++///heap sort from http://www.csse.monash.edu.au/~lloyd/tildeAlgDS/Sort/Heap/+template <typename T, typename COMP_CLASS>+void gim_down_heap(T *pArr, GUINT k, GUINT n,COMP_CLASS CompareFunc)+{+	/*  PRE: a[k+1..N] is a heap */+	/* POST:  a[k..N]  is a heap */++	T temp = pArr[k - 1];+	/* k has child(s) */+	while (k <= n/2)+	{+		int child = 2*k;++		if ((child < (int)n) && CompareFunc(pArr[child - 1] , pArr[child])<0)+		{+			child++;+		}+		/* pick larger child */+		if (CompareFunc(temp , pArr[child - 1])<0)+		{+			/* move child up */+			pArr[k - 1] = pArr[child - 1];+			k = child;+		}+		else+		{+			break;+		}+	}+	pArr[k - 1] = temp;+} /*downHeap*/+++template <typename T, typename COMP_CLASS>+void gim_heap_sort(T *pArr, GUINT element_count, COMP_CLASS CompareFunc)+{+	/* sort a[0..N-1],  N.B. 0 to N-1 */+	GUINT k;+	GUINT n = element_count;+	for (k = n/2; k > 0; k--)+	{+		gim_down_heap(pArr, k, n, CompareFunc);+	}++	/* a[1..N] is now a heap */+	while ( n>=2 )+	{+		gim_swap_elements(pArr,0,n-1); /* largest of a[0..n-1] */+		--n;+		/* restore a[1..i-1] heap */+		gim_down_heap(pArr, 1, n, CompareFunc);+	}+}+++++#endif // GIM_RADIXSORT_H_INCLUDED
+ bullet/BulletCollision/Gimpact/gim_tri_collision.h view
@@ -0,0 +1,379 @@+#ifndef GIM_TRI_COLLISION_H_INCLUDED+#define GIM_TRI_COLLISION_H_INCLUDED++/*! \file gim_tri_collision.h+\author Francisco Leon Najera+*/+/*+-----------------------------------------------------------------------------+This source file is part of GIMPACT Library.++For the latest info, see http://gimpact.sourceforge.net/++Copyright (c) 2006 Francisco Leon Najera. C.C. 80087371.+email: projectileman@yahoo.com++ This library is free software; you can redistribute it and/or+ modify it under the terms of EITHER:+   (1) The GNU Lesser General Public License as published by the Free+       Software Foundation; either version 2.1 of the License, or (at+       your option) any later version. The text of the GNU Lesser+       General Public License is included with this library in the+       file GIMPACT-LICENSE-LGPL.TXT.+   (2) The BSD-style license that is included with this library in+       the file GIMPACT-LICENSE-BSD.TXT.+   (3) The zlib/libpng license that is included with this library in+       the file GIMPACT-LICENSE-ZLIB.TXT.++ This library is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files+ GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details.++-----------------------------------------------------------------------------+*/++#include "gim_box_collision.h"+#include "gim_clip_polygon.h"+++++#define MAX_TRI_CLIPPING 16++//! Structure for collision+struct GIM_TRIANGLE_CONTACT_DATA+{+    GREAL m_penetration_depth;+    GUINT m_point_count;+    btVector4 m_separating_normal;+    btVector3 m_points[MAX_TRI_CLIPPING];++	SIMD_FORCE_INLINE void copy_from(const GIM_TRIANGLE_CONTACT_DATA& other)+	{+		m_penetration_depth = other.m_penetration_depth;+		m_separating_normal = other.m_separating_normal;+		m_point_count = other.m_point_count;+		GUINT i = m_point_count;+		while(i--)+		{+			m_points[i] = other.m_points[i];+		}+	}++	GIM_TRIANGLE_CONTACT_DATA()+	{+	}++	GIM_TRIANGLE_CONTACT_DATA(const GIM_TRIANGLE_CONTACT_DATA& other)+	{+		copy_from(other);+	}++	+	++    //! classify points that are closer+    template<typename DISTANCE_FUNC,typename CLASS_PLANE>+    SIMD_FORCE_INLINE void mergepoints_generic(const CLASS_PLANE & plane,+    				GREAL margin, const btVector3 * points, GUINT point_count, DISTANCE_FUNC distance_func)+    {	+    	m_point_count = 0;+    	m_penetration_depth= -1000.0f;++		GUINT point_indices[MAX_TRI_CLIPPING];++		GUINT _k;++		for(_k=0;_k<point_count;_k++)+		{+			GREAL _dist = -distance_func(plane,points[_k]) + margin;++			if(_dist>=0.0f)+			{+				if(_dist>m_penetration_depth)+				{+					m_penetration_depth = _dist;+					point_indices[0] = _k;+					m_point_count=1;+				}+				else if((_dist+G_EPSILON)>=m_penetration_depth)+				{+					point_indices[m_point_count] = _k;+					m_point_count++;+				}+			}+		}++		for( _k=0;_k<m_point_count;_k++)+		{+			m_points[_k] = points[point_indices[_k]];+		}+	}++	//! classify points that are closer+	SIMD_FORCE_INLINE void merge_points(const btVector4 & plane, GREAL margin,+										 const btVector3 * points, GUINT point_count)+	{+		m_separating_normal = plane;+		mergepoints_generic(plane, margin, points, point_count, DISTANCE_PLANE_3D_FUNC());+	}+};+++//! Class for colliding triangles+class GIM_TRIANGLE+{+public:+	btScalar m_margin;+    btVector3 m_vertices[3];++    GIM_TRIANGLE():m_margin(0.1f)+    {+    }++    SIMD_FORCE_INLINE GIM_AABB get_box()  const+    {+    	return GIM_AABB(m_vertices[0],m_vertices[1],m_vertices[2],m_margin);+    }++    SIMD_FORCE_INLINE void get_normal(btVector3 &normal)  const+    {+    	TRIANGLE_NORMAL(m_vertices[0],m_vertices[1],m_vertices[2],normal);+    }++    SIMD_FORCE_INLINE void get_plane(btVector4 &plane)  const+    {+    	TRIANGLE_PLANE(m_vertices[0],m_vertices[1],m_vertices[2],plane);;+    }++    SIMD_FORCE_INLINE void apply_transform(const btTransform & trans)+    {+    	m_vertices[0] = trans(m_vertices[0]);+    	m_vertices[1] = trans(m_vertices[1]);+    	m_vertices[2] = trans(m_vertices[2]);+    }++    SIMD_FORCE_INLINE void get_edge_plane(GUINT edge_index,const btVector3 &triangle_normal,btVector4 &plane)  const+    {+		const btVector3 & e0 = m_vertices[edge_index];+		const btVector3 & e1 = m_vertices[(edge_index+1)%3];+		EDGE_PLANE(e0,e1,triangle_normal,plane);+    }++    //! Gets the relative transformation of this triangle+    /*!+    The transformation is oriented to the triangle normal , and aligned to the 1st edge of this triangle. The position corresponds to vertice 0:+    - triangle normal corresponds to Z axis.+    - 1st normalized edge corresponds to X axis,++    */+    SIMD_FORCE_INLINE void get_triangle_transform(btTransform & triangle_transform)  const+    {+    	btMatrix3x3 & matrix = triangle_transform.getBasis();++    	btVector3 zaxis;+    	get_normal(zaxis);+    	MAT_SET_Z(matrix,zaxis);++    	btVector3 xaxis = m_vertices[1] - m_vertices[0];+    	VEC_NORMALIZE(xaxis);+    	MAT_SET_X(matrix,xaxis);++    	//y axis+    	xaxis = zaxis.cross(xaxis);+    	MAT_SET_Y(matrix,xaxis);++    	triangle_transform.setOrigin(m_vertices[0]);+    }+++	//! Test triangles by finding separating axis+	/*!+	\param other Triangle for collide+	\param contact_data Structure for holding contact points, normal and penetration depth; The normal is pointing toward this triangle from the other triangle+	*/+	bool collide_triangle_hard_test(+		const GIM_TRIANGLE & other,+		GIM_TRIANGLE_CONTACT_DATA & contact_data) const;++	//! Test boxes before doing hard test+	/*!+	\param other Triangle for collide+	\param contact_data Structure for holding contact points, normal and penetration depth; The normal is pointing toward this triangle from the other triangle+	\+	*/+	SIMD_FORCE_INLINE bool collide_triangle(+		const GIM_TRIANGLE & other,+		GIM_TRIANGLE_CONTACT_DATA & contact_data) const+	{+		//test box collisioin+		GIM_AABB boxu(m_vertices[0],m_vertices[1],m_vertices[2],m_margin);+		GIM_AABB boxv(other.m_vertices[0],other.m_vertices[1],other.m_vertices[2],other.m_margin);+		if(!boxu.has_collision(boxv)) return false;++		//do hard test+		return collide_triangle_hard_test(other,contact_data);+	}++	/*!++	Solve the System for u,v parameters:++	u*axe1[i1] + v*axe2[i1] = vecproj[i1]+	u*axe1[i2] + v*axe2[i2] = vecproj[i2]++	sustitute:+	v = (vecproj[i2] - u*axe1[i2])/axe2[i2]++	then the first equation in terms of 'u':++	--> u*axe1[i1] + ((vecproj[i2] - u*axe1[i2])/axe2[i2])*axe2[i1] = vecproj[i1]++	--> u*axe1[i1] + vecproj[i2]*axe2[i1]/axe2[i2] - u*axe1[i2]*axe2[i1]/axe2[i2] = vecproj[i1]++	--> u*(axe1[i1]  - axe1[i2]*axe2[i1]/axe2[i2]) = vecproj[i1] - vecproj[i2]*axe2[i1]/axe2[i2]++	--> u*((axe1[i1]*axe2[i2]  - axe1[i2]*axe2[i1])/axe2[i2]) = (vecproj[i1]*axe2[i2] - vecproj[i2]*axe2[i1])/axe2[i2]++	--> u*(axe1[i1]*axe2[i2]  - axe1[i2]*axe2[i1]) = vecproj[i1]*axe2[i2] - vecproj[i2]*axe2[i1]++	--> u = (vecproj[i1]*axe2[i2] - vecproj[i2]*axe2[i1]) /(axe1[i1]*axe2[i2]  - axe1[i2]*axe2[i1])++if 0.0<= u+v <=1.0 then they are inside of triangle++	\return false if the point is outside of triangle.This function  doesn't take the margin+	*/+	SIMD_FORCE_INLINE bool get_uv_parameters(+			const btVector3 & point,+			const btVector3 & tri_plane,+			GREAL & u, GREAL & v) const+	{+		btVector3 _axe1 = m_vertices[1]-m_vertices[0];+		btVector3 _axe2 = m_vertices[2]-m_vertices[0];+		btVector3 _vecproj = point - m_vertices[0];+		GUINT _i1 = (tri_plane.closestAxis()+1)%3;+		GUINT _i2 = (_i1+1)%3;+		if(btFabs(_axe2[_i2])<G_EPSILON)+		{+			u = (_vecproj[_i2]*_axe2[_i1] - _vecproj[_i1]*_axe2[_i2]) /(_axe1[_i2]*_axe2[_i1]  - _axe1[_i1]*_axe2[_i2]);+			v = (_vecproj[_i1] - u*_axe1[_i1])/_axe2[_i1];+		}+		else+		{+			u = (_vecproj[_i1]*_axe2[_i2] - _vecproj[_i2]*_axe2[_i1]) /(_axe1[_i1]*_axe2[_i2]  - _axe1[_i2]*_axe2[_i1]);+			v = (_vecproj[_i2] - u*_axe1[_i2])/_axe2[_i2];+		}++		if(u<-G_EPSILON)+		{+			return false;+		}+		else if(v<-G_EPSILON)+		{+			return false;+		}+		else+		{+			btScalar sumuv;+			sumuv = u+v;+			if(sumuv<-G_EPSILON)+			{+				return false;+			}+			else if(sumuv-1.0f>G_EPSILON)+			{+				return false;+			}+		}+		return true;+	}++	//! is point in triangle beam?+	/*!+	Test if point is in triangle, with m_margin tolerance+	*/+	SIMD_FORCE_INLINE bool is_point_inside(const btVector3 & point, const btVector3 & tri_normal) const+	{+		//Test with edge 0+		btVector4 edge_plane;+		this->get_edge_plane(0,tri_normal,edge_plane);+		GREAL dist = DISTANCE_PLANE_POINT(edge_plane,point);+		if(dist-m_margin>0.0f) return false; // outside plane++		this->get_edge_plane(1,tri_normal,edge_plane);+		dist = DISTANCE_PLANE_POINT(edge_plane,point);+		if(dist-m_margin>0.0f) return false; // outside plane++		this->get_edge_plane(2,tri_normal,edge_plane);+		dist = DISTANCE_PLANE_POINT(edge_plane,point);+		if(dist-m_margin>0.0f) return false; // outside plane+		return true;+	}+++	//! Bidireccional ray collision+	SIMD_FORCE_INLINE bool ray_collision(+		const btVector3 & vPoint,+		const btVector3 & vDir, btVector3 & pout, btVector3 & triangle_normal,+		GREAL & tparam, GREAL tmax = G_REAL_INFINITY)+	{+		btVector4 faceplane;+		{+			btVector3 dif1 = m_vertices[1] - m_vertices[0];+			btVector3 dif2 = m_vertices[2] - m_vertices[0];+    		VEC_CROSS(faceplane,dif1,dif2);+    		faceplane[3] = m_vertices[0].dot(faceplane);+		}++		GUINT res = LINE_PLANE_COLLISION(faceplane,vDir,vPoint,pout,tparam, btScalar(0), tmax);+		if(res == 0) return false;+		if(! is_point_inside(pout,faceplane)) return false;++		if(res==2) //invert normal+		{+			triangle_normal.setValue(-faceplane[0],-faceplane[1],-faceplane[2]);+		}+		else+		{+			triangle_normal.setValue(faceplane[0],faceplane[1],faceplane[2]);+		}++		VEC_NORMALIZE(triangle_normal);++		return true;+	}+++	//! one direccion ray collision+	SIMD_FORCE_INLINE bool ray_collision_front_side(+		const btVector3 & vPoint,+		const btVector3 & vDir, btVector3 & pout, btVector3 & triangle_normal,+		GREAL & tparam, GREAL tmax = G_REAL_INFINITY)+	{+		btVector4 faceplane;+		{+			btVector3 dif1 = m_vertices[1] - m_vertices[0];+			btVector3 dif2 = m_vertices[2] - m_vertices[0];+    		VEC_CROSS(faceplane,dif1,dif2);+    		faceplane[3] = m_vertices[0].dot(faceplane);+		}++		GUINT res = LINE_PLANE_COLLISION(faceplane,vDir,vPoint,pout,tparam, btScalar(0), tmax);+		if(res != 1) return false;++		if(!is_point_inside(pout,faceplane)) return false;++		triangle_normal.setValue(faceplane[0],faceplane[1],faceplane[2]);++		VEC_NORMALIZE(triangle_normal);++		return true;+	}++};+++++#endif // GIM_TRI_COLLISION_H_INCLUDED
+ bullet/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h view
@@ -0,0 +1,59 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+++#ifndef BT_CONTINUOUS_COLLISION_CONVEX_CAST_H+#define BT_CONTINUOUS_COLLISION_CONVEX_CAST_H++#include "btConvexCast.h"+#include "btSimplexSolverInterface.h"+class btConvexPenetrationDepthSolver;+class btConvexShape;+class btStaticPlaneShape;++/// btContinuousConvexCollision implements angular and linear time of impact for convex objects.+/// Based on Brian Mirtich's Conservative Advancement idea (PhD thesis).+/// Algorithm operates in worldspace, in order to keep inbetween motion globally consistent.+/// It uses GJK at the moment. Future improvement would use minkowski sum / supporting vertex, merging innerloops+class btContinuousConvexCollision : public btConvexCast+{+	btSimplexSolverInterface* m_simplexSolver;+	btConvexPenetrationDepthSolver*	m_penetrationDepthSolver;+	const btConvexShape*	m_convexA;+	//second object is either a convex or a plane (code sharing)+	const btConvexShape*	m_convexB1;+	const btStaticPlaneShape*	m_planeShape;++	void computeClosestPoints( const btTransform& transA, const btTransform& transB,struct btPointCollector& pointCollector);++public:++	btContinuousConvexCollision (const btConvexShape*	shapeA,const btConvexShape*	shapeB ,btSimplexSolverInterface* simplexSolver,btConvexPenetrationDepthSolver* penetrationDepthSolver);++	btContinuousConvexCollision(const btConvexShape*	shapeA,const btStaticPlaneShape*	plane );++	virtual bool	calcTimeOfImpact(+				const btTransform& fromA,+				const btTransform& toA,+				const btTransform& fromB,+				const btTransform& toB,+				CastResult& result);+++};+++#endif //BT_CONTINUOUS_COLLISION_CONVEX_CAST_H+
+ bullet/BulletCollision/NarrowPhaseCollision/btConvexCast.h view
@@ -0,0 +1,73 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+++#ifndef BT_CONVEX_CAST_H+#define BT_CONVEX_CAST_H++#include "LinearMath/btTransform.h"+#include "LinearMath/btVector3.h"+#include "LinearMath/btScalar.h"+class btMinkowskiSumShape;+#include "LinearMath/btIDebugDraw.h"++/// btConvexCast is an interface for Casting+class btConvexCast+{+public:+++	virtual ~btConvexCast();++	///RayResult stores the closest result+	/// alternatively, add a callback method to decide about closest/all results+	struct	CastResult+	{+		//virtual bool	addRayResult(const btVector3& normal,btScalar	fraction) = 0;+				+		virtual void	DebugDraw(btScalar	fraction) {(void)fraction;}+		virtual void	drawCoordSystem(const btTransform& trans) {(void)trans;}+		virtual void	reportFailure(int errNo, int numIterations) {(void)errNo;(void)numIterations;}+		CastResult()+			:m_fraction(btScalar(BT_LARGE_FLOAT)),+			m_debugDrawer(0),+			m_allowedPenetration(btScalar(0))+		{+		}+++		virtual ~CastResult() {};++		btTransform	m_hitTransformA;+		btTransform	m_hitTransformB;+		btVector3	m_normal;+		btVector3   m_hitPoint;+		btScalar	m_fraction; //input and output+		btIDebugDraw* m_debugDrawer;+		btScalar	m_allowedPenetration;++	};+++	/// cast a convex against another convex object+	virtual bool	calcTimeOfImpact(+					const btTransform& fromA,+					const btTransform& toA,+					const btTransform& fromB,+					const btTransform& toB,+					CastResult& result) = 0;+};++#endif //BT_CONVEX_CAST_H
+ bullet/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h view
@@ -0,0 +1,42 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+++#ifndef BT_CONVEX_PENETRATION_DEPTH_H+#define BT_CONVEX_PENETRATION_DEPTH_H++class btStackAlloc;+class btVector3;+#include "btSimplexSolverInterface.h"+class btConvexShape;+class btTransform;++///ConvexPenetrationDepthSolver provides an interface for penetration depth calculation.+class btConvexPenetrationDepthSolver+{+public:	+	+	virtual ~btConvexPenetrationDepthSolver() {};+	virtual bool calcPenDepth( btSimplexSolverInterface& simplexSolver,+		const btConvexShape* convexA,const btConvexShape* convexB,+					const btTransform& transA,const btTransform& transB,+				btVector3& v, btVector3& pa, btVector3& pb,+				class btIDebugDraw* debugDraw,btStackAlloc* stackAlloc+				) = 0;+++};+#endif //BT_CONVEX_PENETRATION_DEPTH_H+
+ bullet/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h view
@@ -0,0 +1,91 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+++#ifndef BT_DISCRETE_COLLISION_DETECTOR1_INTERFACE_H+#define BT_DISCRETE_COLLISION_DETECTOR1_INTERFACE_H++#include "LinearMath/btTransform.h"+#include "LinearMath/btVector3.h"+class btStackAlloc;++/// This interface is made to be used by an iterative approach to do TimeOfImpact calculations+/// This interface allows to query for closest points and penetration depth between two (convex) objects+/// the closest point is on the second object (B), and the normal points from the surface on B towards A.+/// distance is between closest points on B and closest point on A. So you can calculate closest point on A+/// by taking closestPointInA = closestPointInB + m_distance * m_normalOnSurfaceB+struct btDiscreteCollisionDetectorInterface+{+	+	struct Result+	{+	+		virtual ~Result(){}	++		///setShapeIdentifiersA/B provides experimental support for per-triangle material / custom material combiner+		virtual void setShapeIdentifiersA(int partId0,int index0)=0;+		virtual void setShapeIdentifiersB(int partId1,int index1)=0;+		virtual void addContactPoint(const btVector3& normalOnBInWorld,const btVector3& pointInWorld,btScalar depth)=0;+	};++	struct ClosestPointInput+	{+		ClosestPointInput()+			:m_maximumDistanceSquared(btScalar(BT_LARGE_FLOAT)),+			m_stackAlloc(0)+		{+		}++		btTransform m_transformA;+		btTransform m_transformB;+		btScalar	m_maximumDistanceSquared;+		btStackAlloc* m_stackAlloc;+	};++	virtual ~btDiscreteCollisionDetectorInterface() {};++	//+	// give either closest points (distance > 0) or penetration (distance)+	// the normal always points from B towards A+	//+	virtual void	getClosestPoints(const ClosestPointInput& input,Result& output,class btIDebugDraw* debugDraw,bool swapResults=false) = 0;++};++struct btStorageResult : public btDiscreteCollisionDetectorInterface::Result+{+		btVector3	m_normalOnSurfaceB;+		btVector3	m_closestPointInB;+		btScalar	m_distance; //negative means penetration !++		btStorageResult() : m_distance(btScalar(BT_LARGE_FLOAT))+		{++		}+		virtual ~btStorageResult() {};++		virtual void addContactPoint(const btVector3& normalOnBInWorld,const btVector3& pointInWorld,btScalar depth)+		{+			if (depth < m_distance)+			{+				m_normalOnSurfaceB = normalOnBInWorld;+				m_closestPointInB = pointInWorld;+				m_distance = depth;+			}+		}+};++#endif //BT_DISCRETE_COLLISION_DETECTOR1_INTERFACE_H+
+ bullet/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h view
@@ -0,0 +1,50 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++++#ifndef BT_GJK_CONVEX_CAST_H+#define BT_GJK_CONVEX_CAST_H++#include "BulletCollision/CollisionShapes/btCollisionMargin.h"++#include "LinearMath/btVector3.h"+#include "btConvexCast.h"+class btConvexShape;+class btMinkowskiSumShape;+#include "btSimplexSolverInterface.h"++///GjkConvexCast performs a raycast on a convex object using support mapping.+class btGjkConvexCast : public btConvexCast+{+	btSimplexSolverInterface*	m_simplexSolver;+	const btConvexShape*	m_convexA;+	const btConvexShape*	m_convexB;++public:++	btGjkConvexCast(const btConvexShape*	convexA,const btConvexShape* convexB,btSimplexSolverInterface* simplexSolver);++	/// cast a convex against another convex object+	virtual bool	calcTimeOfImpact(+					const btTransform& fromA,+					const btTransform& toA,+					const btTransform& fromB,+					const btTransform& toB,+					CastResult& result);++};++#endif //BT_GJK_CONVEX_CAST_H
+ bullet/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h view
@@ -0,0 +1,75 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2008 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the+use of this software.+Permission is granted to anyone to use this software for any purpose,+including commercial applications, and to alter it and redistribute it+freely,+subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not+claim that you wrote the original software. If you use this software in a+product, an acknowledgment in the product documentation would be appreciated+but is not required.+2. Altered source versions must be plainly marked as such, and must not be+misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++/*+GJK-EPA collision solver by Nathanael Presson, 2008+*/+#ifndef BT_GJK_EPA2_H+#define BT_GJK_EPA2_H++#include "BulletCollision/CollisionShapes/btConvexShape.h"++///btGjkEpaSolver contributed under zlib by Nathanael Presson+struct	btGjkEpaSolver2+{+struct	sResults+	{+	enum eStatus+		{+		Separated,		/* Shapes doesnt penetrate												*/ +		Penetrating,	/* Shapes are penetrating												*/ +		GJK_Failed,		/* GJK phase fail, no big issue, shapes are probably just 'touching'	*/ +		EPA_Failed		/* EPA phase fail, bigger problem, need to save parameters, and debug	*/ +		}		status;+	btVector3	witnesses[2];+	btVector3	normal;+	btScalar	distance;+	};++static int		StackSizeRequirement();++static bool		Distance(	const btConvexShape* shape0,const btTransform& wtrs0,+							const btConvexShape* shape1,const btTransform& wtrs1,+							const btVector3& guess,+							sResults& results);++static bool		Penetration(const btConvexShape* shape0,const btTransform& wtrs0,+							const btConvexShape* shape1,const btTransform& wtrs1,+							const btVector3& guess,+							sResults& results,+							bool usemargins=true);+#ifndef __SPU__+static btScalar	SignedDistance(	const btVector3& position,+								btScalar margin,+								const btConvexShape* shape,+								const btTransform& wtrs,+								sResults& results);+							+static bool		SignedDistance(	const btConvexShape* shape0,const btTransform& wtrs0,+								const btConvexShape* shape1,const btTransform& wtrs1,+								const btVector3& guess,+								sResults& results);+#endif //__SPU__++};++#endif //BT_GJK_EPA2_H+
+ bullet/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h view
@@ -0,0 +1,43 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++EPA Copyright (c) Ricardo Padrela 2006 ++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+#ifndef BT_GJP_EPA_PENETRATION_DEPTH_H+#define BT_GJP_EPA_PENETRATION_DEPTH_H++#include "btConvexPenetrationDepthSolver.h"++///EpaPenetrationDepthSolver uses the Expanding Polytope Algorithm to+///calculate the penetration depth between two convex shapes.+class btGjkEpaPenetrationDepthSolver : public btConvexPenetrationDepthSolver+{+	public :++		btGjkEpaPenetrationDepthSolver()+		{+		}++		bool			calcPenDepth( btSimplexSolverInterface& simplexSolver,+									  const btConvexShape* pConvexA, const btConvexShape* pConvexB,+									  const btTransform& transformA, const btTransform& transformB,+									  btVector3& v, btVector3& wWitnessOnA, btVector3& wWitnessOnB,+									  class btIDebugDraw* debugDraw,btStackAlloc* stackAlloc );++	private :++};++#endif	// BT_GJP_EPA_PENETRATION_DEPTH_H+
+ bullet/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h view
@@ -0,0 +1,103 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+++++#ifndef BT_GJK_PAIR_DETECTOR_H+#define BT_GJK_PAIR_DETECTOR_H++#include "btDiscreteCollisionDetectorInterface.h"+#include "BulletCollision/CollisionShapes/btCollisionMargin.h"++class btConvexShape;+#include "btSimplexSolverInterface.h"+class btConvexPenetrationDepthSolver;++/// btGjkPairDetector uses GJK to implement the btDiscreteCollisionDetectorInterface+class btGjkPairDetector : public btDiscreteCollisionDetectorInterface+{+	++	btVector3	m_cachedSeparatingAxis;+	btConvexPenetrationDepthSolver*	m_penetrationDepthSolver;+	btSimplexSolverInterface* m_simplexSolver;+	const btConvexShape* m_minkowskiA;+	const btConvexShape* m_minkowskiB;+	int	m_shapeTypeA;+	int m_shapeTypeB;+	btScalar	m_marginA;+	btScalar	m_marginB;++	bool		m_ignoreMargin;+	btScalar	m_cachedSeparatingDistance;+	++public:++	//some debugging to fix degeneracy problems+	int			m_lastUsedMethod;+	int			m_curIter;+	int			m_degenerateSimplex;+	int			m_catchDegeneracies;+++	btGjkPairDetector(const btConvexShape* objectA,const btConvexShape* objectB,btSimplexSolverInterface* simplexSolver,btConvexPenetrationDepthSolver*	penetrationDepthSolver);+	btGjkPairDetector(const btConvexShape* objectA,const btConvexShape* objectB,int shapeTypeA,int shapeTypeB,btScalar marginA, btScalar marginB, btSimplexSolverInterface* simplexSolver,btConvexPenetrationDepthSolver*	penetrationDepthSolver);+	virtual ~btGjkPairDetector() {};++	virtual void	getClosestPoints(const ClosestPointInput& input,Result& output,class btIDebugDraw* debugDraw,bool swapResults=false);++	void	getClosestPointsNonVirtual(const ClosestPointInput& input,Result& output,class btIDebugDraw* debugDraw);+	++	void setMinkowskiA(btConvexShape* minkA)+	{+		m_minkowskiA = minkA;+	}++	void setMinkowskiB(btConvexShape* minkB)+	{+		m_minkowskiB = minkB;+	}+	void setCachedSeperatingAxis(const btVector3& seperatingAxis)+	{+		m_cachedSeparatingAxis = seperatingAxis;+	}++	const btVector3& getCachedSeparatingAxis() const+	{+		return m_cachedSeparatingAxis;+	}+	btScalar	getCachedSeparatingDistance() const+	{+		return m_cachedSeparatingDistance;+	}++	void	setPenetrationDepthSolver(btConvexPenetrationDepthSolver*	penetrationDepthSolver)+	{+		m_penetrationDepthSolver = penetrationDepthSolver;+	}++	///don't use setIgnoreMargin, it's for Bullet's internal use+	void	setIgnoreMargin(bool ignoreMargin)+	{+		m_ignoreMargin = ignoreMargin;+	}+++};++#endif //BT_GJK_PAIR_DETECTOR_H
+ bullet/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h view
@@ -0,0 +1,158 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_MANIFOLD_CONTACT_POINT_H+#define BT_MANIFOLD_CONTACT_POINT_H++#include "LinearMath/btVector3.h"+#include "LinearMath/btTransformUtil.h"++#ifdef PFX_USE_FREE_VECTORMATH+	#include "physics_effects/base_level/solver/pfx_constraint_row.h"+typedef sce::PhysicsEffects::PfxConstraintRow btConstraintRow;+#else+	// Don't change following order of parameters+	ATTRIBUTE_ALIGNED16(struct) btConstraintRow {+		btScalar m_normal[3];+		btScalar m_rhs;+		btScalar m_jacDiagInv;+		btScalar m_lowerLimit;+		btScalar m_upperLimit;+		btScalar m_accumImpulse;+	};+	typedef btConstraintRow PfxConstraintRow;+#endif //PFX_USE_FREE_VECTORMATH++++/// ManifoldContactPoint collects and maintains persistent contactpoints.+/// used to improve stability and performance of rigidbody dynamics response.+class btManifoldPoint+	{+		public:+			btManifoldPoint()+				:m_userPersistentData(0),+				m_appliedImpulse(0.f),+				m_lateralFrictionInitialized(false),+				m_appliedImpulseLateral1(0.f),+				m_appliedImpulseLateral2(0.f),+				m_contactMotion1(0.f),+				m_contactMotion2(0.f),+				m_contactCFM1(0.f),+				m_contactCFM2(0.f),+				m_lifeTime(0)+			{+			}++			btManifoldPoint( const btVector3 &pointA, const btVector3 &pointB, +					const btVector3 &normal, +					btScalar distance ) :+					m_localPointA( pointA ), +					m_localPointB( pointB ), +					m_normalWorldOnB( normal ), +					m_distance1( distance ),+					m_combinedFriction(btScalar(0.)),+					m_combinedRestitution(btScalar(0.)),+					m_userPersistentData(0),+					m_appliedImpulse(0.f),+					m_lateralFrictionInitialized(false),+					m_appliedImpulseLateral1(0.f),+					m_appliedImpulseLateral2(0.f),+					m_contactMotion1(0.f),+					m_contactMotion2(0.f),+					m_contactCFM1(0.f),+					m_contactCFM2(0.f),+					m_lifeTime(0)+			{+				mConstraintRow[0].m_accumImpulse = 0.f;+				mConstraintRow[1].m_accumImpulse = 0.f;+				mConstraintRow[2].m_accumImpulse = 0.f;+			}++			++			btVector3 m_localPointA;			+			btVector3 m_localPointB;			+			btVector3	m_positionWorldOnB;+			///m_positionWorldOnA is redundant information, see getPositionWorldOnA(), but for clarity+			btVector3	m_positionWorldOnA;+			btVector3 m_normalWorldOnB;+		+			btScalar	m_distance1;+			btScalar	m_combinedFriction;+			btScalar	m_combinedRestitution;++         //BP mod, store contact triangles.+         int	   m_partId0;+         int      m_partId1;+         int      m_index0;+         int      m_index1;+				+			mutable void*	m_userPersistentData;+			btScalar		m_appliedImpulse;++			bool			m_lateralFrictionInitialized;+			btScalar		m_appliedImpulseLateral1;+			btScalar		m_appliedImpulseLateral2;+			btScalar		m_contactMotion1;+			btScalar		m_contactMotion2;+			btScalar		m_contactCFM1;+			btScalar		m_contactCFM2;++			int				m_lifeTime;//lifetime of the contactpoint in frames+			+			btVector3		m_lateralFrictionDir1;+			btVector3		m_lateralFrictionDir2;++++			btConstraintRow mConstraintRow[3];+++			btScalar getDistance() const+			{+				return m_distance1;+			}+			int	getLifeTime() const+			{+				return m_lifeTime;+			}++			const btVector3& getPositionWorldOnA() const {+				return m_positionWorldOnA;+//				return m_positionWorldOnB + m_normalWorldOnB * m_distance1;+			}++			const btVector3& getPositionWorldOnB() const+			{+				return m_positionWorldOnB;+			}++			void	setDistance(btScalar dist)+			{+				m_distance1 = dist;+			}+			+			///this returns the most recent applied impulse, to satisfy contact constraints by the constraint solver+			btScalar	getAppliedImpulse() const+			{+				return m_appliedImpulse;+			}++			++	};++#endif //BT_MANIFOLD_CONTACT_POINT_H
+ bullet/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h view
@@ -0,0 +1,40 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_MINKOWSKI_PENETRATION_DEPTH_SOLVER_H+#define BT_MINKOWSKI_PENETRATION_DEPTH_SOLVER_H++#include "btConvexPenetrationDepthSolver.h"++///MinkowskiPenetrationDepthSolver implements bruteforce penetration depth estimation.+///Implementation is based on sampling the depth using support mapping, and using GJK step to get the witness points.+class btMinkowskiPenetrationDepthSolver : public btConvexPenetrationDepthSolver+{+protected:++	static btVector3*	getPenetrationDirections();++public:++	virtual bool calcPenDepth( btSimplexSolverInterface& simplexSolver,+	const btConvexShape* convexA,const btConvexShape* convexB,+				const btTransform& transA,const btTransform& transB,+			btVector3& v, btVector3& pa, btVector3& pb,+			class btIDebugDraw* debugDraw,btStackAlloc* stackAlloc+			);+};++#endif //BT_MINKOWSKI_PENETRATION_DEPTH_SOLVER_H+
+ bullet/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h view
@@ -0,0 +1,232 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_PERSISTENT_MANIFOLD_H+#define BT_PERSISTENT_MANIFOLD_H+++#include "LinearMath/btVector3.h"+#include "LinearMath/btTransform.h"+#include "btManifoldPoint.h"+#include "LinearMath/btAlignedAllocator.h"++struct btCollisionResult;++///maximum contact breaking and merging threshold+extern btScalar gContactBreakingThreshold;++typedef bool (*ContactDestroyedCallback)(void* userPersistentData);+typedef bool (*ContactProcessedCallback)(btManifoldPoint& cp,void* body0,void* body1);+extern ContactDestroyedCallback	gContactDestroyedCallback;+extern ContactProcessedCallback gContactProcessedCallback;++//the enum starts at 1024 to avoid type conflicts with btTypedConstraint+enum btContactManifoldTypes+{+	MIN_CONTACT_MANIFOLD_TYPE = 1024,+	BT_PERSISTENT_MANIFOLD_TYPE+};++#define MANIFOLD_CACHE_SIZE 4++///btPersistentManifold is a contact point cache, it stays persistent as long as objects are overlapping in the broadphase.+///Those contact points are created by the collision narrow phase.+///The cache can be empty, or hold 1,2,3 or 4 points. Some collision algorithms (GJK) might only add one point at a time.+///updates/refreshes old contact points, and throw them away if necessary (distance becomes too large)+///reduces the cache to 4 points, when more then 4 points are added, using following rules:+///the contact point with deepest penetration is always kept, and it tries to maximuze the area covered by the points+///note that some pairs of objects might have more then one contact manifold.+++ATTRIBUTE_ALIGNED128( class) btPersistentManifold : public btTypedObject+//ATTRIBUTE_ALIGNED16( class) btPersistentManifold : public btTypedObject+{++	btManifoldPoint m_pointCache[MANIFOLD_CACHE_SIZE];++	/// this two body pointers can point to the physics rigidbody class.+	/// void* will allow any rigidbody class+	void* m_body0;+	void* m_body1;++	int	m_cachedPoints;++	btScalar	m_contactBreakingThreshold;+	btScalar	m_contactProcessingThreshold;++	+	/// sort cached points so most isolated points come first+	int	sortCachedPoints(const btManifoldPoint& pt);++	int		findContactPoint(const btManifoldPoint* unUsed, int numUnused,const btManifoldPoint& pt);++public:++	BT_DECLARE_ALIGNED_ALLOCATOR();++	int	m_companionIdA;+	int	m_companionIdB;++	int m_index1a;++	btPersistentManifold();++	btPersistentManifold(void* body0,void* body1,int , btScalar contactBreakingThreshold,btScalar contactProcessingThreshold)+		: btTypedObject(BT_PERSISTENT_MANIFOLD_TYPE),+	m_body0(body0),m_body1(body1),m_cachedPoints(0),+		m_contactBreakingThreshold(contactBreakingThreshold),+		m_contactProcessingThreshold(contactProcessingThreshold)+	{+	}++	SIMD_FORCE_INLINE void* getBody0() { return m_body0;}+	SIMD_FORCE_INLINE void* getBody1() { return m_body1;}++	SIMD_FORCE_INLINE const void* getBody0() const { return m_body0;}+	SIMD_FORCE_INLINE const void* getBody1() const { return m_body1;}++	void	setBodies(void* body0,void* body1)+	{+		m_body0 = body0;+		m_body1 = body1;+	}++	void clearUserCache(btManifoldPoint& pt);++#ifdef DEBUG_PERSISTENCY+	void	DebugPersistency();+#endif //+	+	SIMD_FORCE_INLINE int	getNumContacts() const { return m_cachedPoints;}++	SIMD_FORCE_INLINE const btManifoldPoint& getContactPoint(int index) const+	{+		btAssert(index < m_cachedPoints);+		return m_pointCache[index];+	}++	SIMD_FORCE_INLINE btManifoldPoint& getContactPoint(int index)+	{+		btAssert(index < m_cachedPoints);+		return m_pointCache[index];+	}++	///@todo: get this margin from the current physics / collision environment+	btScalar	getContactBreakingThreshold() const;++	btScalar	getContactProcessingThreshold() const+	{+		return m_contactProcessingThreshold;+	}+	+	int getCacheEntry(const btManifoldPoint& newPoint) const;++	int addManifoldPoint( const btManifoldPoint& newPoint);++	void removeContactPoint (int index)+	{+		clearUserCache(m_pointCache[index]);++		int lastUsedIndex = getNumContacts() - 1;+//		m_pointCache[index] = m_pointCache[lastUsedIndex];+		if(index != lastUsedIndex) +		{+			m_pointCache[index] = m_pointCache[lastUsedIndex]; +			//get rid of duplicated userPersistentData pointer+			m_pointCache[lastUsedIndex].m_userPersistentData = 0;+			m_pointCache[lastUsedIndex].mConstraintRow[0].m_accumImpulse = 0.f;+			m_pointCache[lastUsedIndex].mConstraintRow[1].m_accumImpulse = 0.f;+			m_pointCache[lastUsedIndex].mConstraintRow[2].m_accumImpulse = 0.f;++			m_pointCache[lastUsedIndex].m_appliedImpulse = 0.f;+			m_pointCache[lastUsedIndex].m_lateralFrictionInitialized = false;+			m_pointCache[lastUsedIndex].m_appliedImpulseLateral1 = 0.f;+			m_pointCache[lastUsedIndex].m_appliedImpulseLateral2 = 0.f;+			m_pointCache[lastUsedIndex].m_lifeTime = 0;+		}++		btAssert(m_pointCache[lastUsedIndex].m_userPersistentData==0);+		m_cachedPoints--;+	}+	void replaceContactPoint(const btManifoldPoint& newPoint,int insertIndex)+	{+		btAssert(validContactDistance(newPoint));++#define MAINTAIN_PERSISTENCY 1+#ifdef MAINTAIN_PERSISTENCY+		int	lifeTime = m_pointCache[insertIndex].getLifeTime();+		btScalar	appliedImpulse = m_pointCache[insertIndex].mConstraintRow[0].m_accumImpulse;+		btScalar	appliedLateralImpulse1 = m_pointCache[insertIndex].mConstraintRow[1].m_accumImpulse;+		btScalar	appliedLateralImpulse2 = m_pointCache[insertIndex].mConstraintRow[2].m_accumImpulse;+//		bool isLateralFrictionInitialized = m_pointCache[insertIndex].m_lateralFrictionInitialized;+		+		+			+		btAssert(lifeTime>=0);+		void* cache = m_pointCache[insertIndex].m_userPersistentData;+		+		m_pointCache[insertIndex] = newPoint;++		m_pointCache[insertIndex].m_userPersistentData = cache;+		m_pointCache[insertIndex].m_appliedImpulse = appliedImpulse;+		m_pointCache[insertIndex].m_appliedImpulseLateral1 = appliedLateralImpulse1;+		m_pointCache[insertIndex].m_appliedImpulseLateral2 = appliedLateralImpulse2;+		+		m_pointCache[insertIndex].mConstraintRow[0].m_accumImpulse =  appliedImpulse;+		m_pointCache[insertIndex].mConstraintRow[1].m_accumImpulse = appliedLateralImpulse1;+		m_pointCache[insertIndex].mConstraintRow[2].m_accumImpulse = appliedLateralImpulse2;+++		m_pointCache[insertIndex].m_lifeTime = lifeTime;+#else+		clearUserCache(m_pointCache[insertIndex]);+		m_pointCache[insertIndex] = newPoint;+	+#endif+	}++	bool validContactDistance(const btManifoldPoint& pt) const+	{+		if (pt.m_lifeTime >1)+		{+			return pt.m_distance1 <= getContactBreakingThreshold();+		}+		return pt.m_distance1 <= getContactProcessingThreshold();+	+	}+	/// calculated new worldspace coordinates and depth, and reject points that exceed the collision margin+	void	refreshContactPoints(  const btTransform& trA,const btTransform& trB);++	+	SIMD_FORCE_INLINE	void	clearManifold()+	{+		int i;+		for (i=0;i<m_cachedPoints;i++)+		{+			clearUserCache(m_pointCache[i]);+		}+		m_cachedPoints = 0;+	}++++}+;++++++#endif //BT_PERSISTENT_MANIFOLD_H
+ bullet/BulletCollision/NarrowPhaseCollision/btPointCollector.h view
@@ -0,0 +1,64 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_POINT_COLLECTOR_H+#define BT_POINT_COLLECTOR_H++#include "btDiscreteCollisionDetectorInterface.h"++++struct btPointCollector : public btDiscreteCollisionDetectorInterface::Result+{+	+	+	btVector3 m_normalOnBInWorld;+	btVector3 m_pointInWorld;+	btScalar	m_distance;//negative means penetration++	bool	m_hasResult;++	btPointCollector () +		: m_distance(btScalar(BT_LARGE_FLOAT)),m_hasResult(false)+	{+	}++	virtual void setShapeIdentifiersA(int partId0,int index0)+	{+		(void)partId0;+		(void)index0;+			+	}+	virtual void setShapeIdentifiersB(int partId1,int index1)+	{+		(void)partId1;+		(void)index1;+	}++	virtual void addContactPoint(const btVector3& normalOnBInWorld,const btVector3& pointInWorld,btScalar depth)+	{+		if (depth< m_distance)+		{+			m_hasResult = true;+			m_normalOnBInWorld = normalOnBInWorld;+			m_pointInWorld = pointInWorld;+			//negative means penetration+			m_distance = depth;+		}+	}+};++#endif //BT_POINT_COLLECTOR_H+
+ bullet/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.h view
@@ -0,0 +1,46 @@+/*
+Bullet Continuous Collision Detection and Physics Library
+Copyright (c) 2011 Advanced Micro Devices, Inc.  http://bulletphysics.org
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+Permission is granted to anyone to use this software for any purpose, 
+including commercial applications, and to alter it and redistribute it freely, 
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+*/
+
+
+///This file was written by Erwin Coumans
+
+
+#ifndef BT_POLYHEDRAL_CONTACT_CLIPPING_H
+#define BT_POLYHEDRAL_CONTACT_CLIPPING_H
+
+
+#include "LinearMath/btAlignedObjectArray.h"
+#include "LinearMath/btTransform.h"
+#include "btDiscreteCollisionDetectorInterface.h"
+
+class btConvexPolyhedron;
+
+typedef btAlignedObjectArray<btVector3> btVertexArray;
+
+// Clips a face to the back of a plane
+struct btPolyhedralContactClipping
+{
+	static void clipHullAgainstHull(const btVector3& separatingNormal, const btConvexPolyhedron& hullA, const btConvexPolyhedron& hullB, const btTransform& transA,const btTransform& transB, const btScalar minDist, btScalar maxDist, btDiscreteCollisionDetectorInterface::Result& resultOut);
+	static void	clipFaceAgainstHull(const btVector3& separatingNormal, const btConvexPolyhedron& hullA,  const btTransform& transA, btVertexArray& worldVertsB1, const btScalar minDist, btScalar maxDist,btDiscreteCollisionDetectorInterface::Result& resultOut);
+
+	static bool findSeparatingAxis(	const btConvexPolyhedron& hullA, const btConvexPolyhedron& hullB, const btTransform& transA,const btTransform& transB, btVector3& sep);
+
+	///the clipFace method is used internally
+	static void clipFace(const btVertexArray& pVtxIn, btVertexArray& ppVtxOut, const btVector3& planeNormalWS,btScalar planeEqWS);
+
+};
+
+#endif // BT_POLYHEDRAL_CONTACT_CLIPPING_H
+
+ bullet/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h view
@@ -0,0 +1,72 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_RAYCAST_TRI_CALLBACK_H+#define BT_RAYCAST_TRI_CALLBACK_H++#include "BulletCollision/CollisionShapes/btTriangleCallback.h"+#include "LinearMath/btTransform.h"+struct btBroadphaseProxy;+class btConvexShape;++class  btTriangleRaycastCallback: public btTriangleCallback+{+public:++	//input+	btVector3 m_from;+	btVector3 m_to;++   //@BP Mod - allow backface filtering and unflipped normals+   enum EFlags+   {+      kF_None                 = 0,+      kF_FilterBackfaces      = 1 << 0,+      kF_KeepUnflippedNormal  = 1 << 1,   // Prevents returned face normal getting flipped when a ray hits a back-facing triangle++      kF_Terminator        = 0xFFFFFFFF+   };+   unsigned int m_flags;++	btScalar	m_hitFraction;++	btTriangleRaycastCallback(const btVector3& from,const btVector3& to, unsigned int flags=0);+	+	virtual void processTriangle(btVector3* triangle, int partId, int triangleIndex);++	virtual btScalar reportHit(const btVector3& hitNormalLocal, btScalar hitFraction, int partId, int triangleIndex ) = 0;+	+};++class btTriangleConvexcastCallback : public btTriangleCallback+{+public:+	const btConvexShape* m_convexShape;+	btTransform m_convexShapeFrom;+	btTransform m_convexShapeTo;+	btTransform m_triangleToWorld;+	btScalar m_hitFraction;+	btScalar m_triangleCollisionMargin;+	btScalar m_allowedPenetration;++	btTriangleConvexcastCallback (const btConvexShape* convexShape, const btTransform& convexShapeFrom, const btTransform& convexShapeTo, const btTransform& triangleToWorld, const btScalar triangleCollisionMargin);++	virtual void processTriangle (btVector3* triangle, int partId, int triangleIndex);++	virtual btScalar reportHit (const btVector3& hitNormalLocal, const btVector3& hitPointLocal, btScalar hitFraction, int partId, int triangleIndex) = 0;+};++#endif //BT_RAYCAST_TRI_CALLBACK_H+
+ bullet/BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h view
@@ -0,0 +1,63 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++++#ifndef BT_SIMPLEX_SOLVER_INTERFACE_H+#define BT_SIMPLEX_SOLVER_INTERFACE_H++#include "LinearMath/btVector3.h"++#define NO_VIRTUAL_INTERFACE 1+#ifdef NO_VIRTUAL_INTERFACE+#include "btVoronoiSimplexSolver.h"+#define btSimplexSolverInterface btVoronoiSimplexSolver+#else++/// btSimplexSolverInterface can incrementally calculate distance between origin and up to 4 vertices+/// Used by GJK or Linear Casting. Can be implemented by the Johnson-algorithm or alternative approaches based on+/// voronoi regions or barycentric coordinates+class btSimplexSolverInterface+{+	public:+		virtual ~btSimplexSolverInterface() {};++	virtual void reset() = 0;++	virtual void addVertex(const btVector3& w, const btVector3& p, const btVector3& q) = 0;+	+	virtual bool closest(btVector3& v) = 0;++	virtual btScalar maxVertex() = 0;++	virtual bool fullSimplex() const = 0;++	virtual int getSimplex(btVector3 *pBuf, btVector3 *qBuf, btVector3 *yBuf) const = 0;++	virtual bool inSimplex(const btVector3& w) = 0;+	+	virtual void backup_closest(btVector3& v) = 0;++	virtual bool emptySimplex() const = 0;++	virtual void compute_points(btVector3& p1, btVector3& p2) = 0;++	virtual int numVertices() const =0;+++};+#endif+#endif //BT_SIMPLEX_SOLVER_INTERFACE_H+
+ bullet/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h view
@@ -0,0 +1,50 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+++#ifndef BT_SUBSIMPLEX_CONVEX_CAST_H+#define BT_SUBSIMPLEX_CONVEX_CAST_H++#include "btConvexCast.h"+#include "btSimplexSolverInterface.h"+class btConvexShape;++/// btSubsimplexConvexCast implements Gino van den Bergens' paper+///"Ray Casting against bteral Convex Objects with Application to Continuous Collision Detection"+/// GJK based Ray Cast, optimized version+/// Objects should not start in overlap, otherwise results are not defined.+class btSubsimplexConvexCast : public btConvexCast+{+	btSimplexSolverInterface* m_simplexSolver;+	const btConvexShape*	m_convexA;+	const btConvexShape*	m_convexB;++public:++	btSubsimplexConvexCast (const btConvexShape*	shapeA,const btConvexShape*	shapeB,btSimplexSolverInterface* simplexSolver);++	//virtual ~btSubsimplexConvexCast();+	///SimsimplexConvexCast calculateTimeOfImpact calculates the time of impact+normal for the linear cast (sweep) between two moving objects.+	///Precondition is that objects should not penetration/overlap at the start from the interval. Overlap can be tested using btGjkPairDetector.+	virtual bool	calcTimeOfImpact(+			const btTransform& fromA,+			const btTransform& toA,+			const btTransform& fromB,+			const btTransform& toB,+			CastResult& result);++};++#endif //BT_SUBSIMPLEX_CONVEX_CAST_H
+ bullet/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h view
@@ -0,0 +1,179 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++++#ifndef BT_VORONOI_SIMPLEX_SOLVER_H+#define BT_VORONOI_SIMPLEX_SOLVER_H++#include "btSimplexSolverInterface.h"++++#define VORONOI_SIMPLEX_MAX_VERTS 5++///disable next define, or use defaultCollisionConfiguration->getSimplexSolver()->setEqualVertexThreshold(0.f) to disable/configure+#define BT_USE_EQUAL_VERTEX_THRESHOLD+#define VORONOI_DEFAULT_EQUAL_VERTEX_THRESHOLD 0.0001f+++struct btUsageBitfield{+	btUsageBitfield()+	{+		reset();+	}++	void reset()+	{+		usedVertexA = false;+		usedVertexB = false;+		usedVertexC = false;+		usedVertexD = false;+	}+	unsigned short usedVertexA	: 1;+	unsigned short usedVertexB	: 1;+	unsigned short usedVertexC	: 1;+	unsigned short usedVertexD	: 1;+	unsigned short unused1		: 1;+	unsigned short unused2		: 1;+	unsigned short unused3		: 1;+	unsigned short unused4		: 1;+};+++struct	btSubSimplexClosestResult+{+	btVector3	m_closestPointOnSimplex;+	//MASK for m_usedVertices+	//stores the simplex vertex-usage, using the MASK, +	// if m_usedVertices & MASK then the related vertex is used+	btUsageBitfield	m_usedVertices;+	btScalar	m_barycentricCoords[4];+	bool m_degenerate;++	void	reset()+	{+		m_degenerate = false;+		setBarycentricCoordinates();+		m_usedVertices.reset();+	}+	bool	isValid()+	{+		bool valid = (m_barycentricCoords[0] >= btScalar(0.)) &&+			(m_barycentricCoords[1] >= btScalar(0.)) &&+			(m_barycentricCoords[2] >= btScalar(0.)) &&+			(m_barycentricCoords[3] >= btScalar(0.));+++		return valid;+	}+	void	setBarycentricCoordinates(btScalar a=btScalar(0.),btScalar b=btScalar(0.),btScalar c=btScalar(0.),btScalar d=btScalar(0.))+	{+		m_barycentricCoords[0] = a;+		m_barycentricCoords[1] = b;+		m_barycentricCoords[2] = c;+		m_barycentricCoords[3] = d;+	}++};++/// btVoronoiSimplexSolver is an implementation of the closest point distance algorithm from a 1-4 points simplex to the origin.+/// Can be used with GJK, as an alternative to Johnson distance algorithm.+#ifdef NO_VIRTUAL_INTERFACE+class btVoronoiSimplexSolver+#else+class btVoronoiSimplexSolver : public btSimplexSolverInterface+#endif+{+public:++	int	m_numVertices;++	btVector3	m_simplexVectorW[VORONOI_SIMPLEX_MAX_VERTS];+	btVector3	m_simplexPointsP[VORONOI_SIMPLEX_MAX_VERTS];+	btVector3	m_simplexPointsQ[VORONOI_SIMPLEX_MAX_VERTS];++	++	btVector3	m_cachedP1;+	btVector3	m_cachedP2;+	btVector3	m_cachedV;+	btVector3	m_lastW;+	+	btScalar	m_equalVertexThreshold;+	bool		m_cachedValidClosest;+++	btSubSimplexClosestResult m_cachedBC;++	bool	m_needsUpdate;+	+	void	removeVertex(int index);+	void	reduceVertices (const btUsageBitfield& usedVerts);+	bool	updateClosestVectorAndPoints();++	bool	closestPtPointTetrahedron(const btVector3& p, const btVector3& a, const btVector3& b, const btVector3& c, const btVector3& d, btSubSimplexClosestResult& finalResult);+	int		pointOutsideOfPlane(const btVector3& p, const btVector3& a, const btVector3& b, const btVector3& c, const btVector3& d);+	bool	closestPtPointTriangle(const btVector3& p, const btVector3& a, const btVector3& b, const btVector3& c,btSubSimplexClosestResult& result);++public:++	btVoronoiSimplexSolver()+		:  m_equalVertexThreshold(VORONOI_DEFAULT_EQUAL_VERTEX_THRESHOLD)+	{+	}+	 void reset();++	 void addVertex(const btVector3& w, const btVector3& p, const btVector3& q);++	 void	setEqualVertexThreshold(btScalar threshold)+	 {+		 m_equalVertexThreshold = threshold;+	 }++	 btScalar	getEqualVertexThreshold() const+	 {+		 return m_equalVertexThreshold;+	 }++	 bool closest(btVector3& v);++	 btScalar maxVertex();++	 bool fullSimplex() const+	 {+		 return (m_numVertices == 4);+	 }++	 int getSimplex(btVector3 *pBuf, btVector3 *qBuf, btVector3 *yBuf) const;++	 bool inSimplex(const btVector3& w);+	+	 void backup_closest(btVector3& v) ;++	 bool emptySimplex() const ;++	 void compute_points(btVector3& p1, btVector3& p2) ;++	 int numVertices() const +	 {+		 return m_numVertices;+	 }+++};++#endif //BT_VORONOI_SIMPLEX_SOLVER_H+
+ bullet/BulletDynamics/Character/btCharacterControllerInterface.h view
@@ -0,0 +1,46 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2008 Erwin Coumans  http://bulletphysics.com++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_CHARACTER_CONTROLLER_INTERFACE_H+#define BT_CHARACTER_CONTROLLER_INTERFACE_H++#include "LinearMath/btVector3.h"+#include "BulletDynamics/Dynamics/btActionInterface.h"++class btCollisionShape;+class btRigidBody;+class btCollisionWorld;++class btCharacterControllerInterface : public btActionInterface+{+public:+	btCharacterControllerInterface () {};+	virtual ~btCharacterControllerInterface () {};+	+	virtual void	setWalkDirection(const btVector3& walkDirection) = 0;+	virtual void	setVelocityForTimeInterval(const btVector3& velocity, btScalar timeInterval) = 0;+	virtual void	reset () = 0;+	virtual void	warp (const btVector3& origin) = 0;++	virtual void	preStep ( btCollisionWorld* collisionWorld) = 0;+	virtual void	playerStep (btCollisionWorld* collisionWorld, btScalar dt) = 0;+	virtual bool	canJump () const = 0;+	virtual void	jump () = 0;++	virtual bool	onGround () const = 0;+};++#endif //BT_CHARACTER_CONTROLLER_INTERFACE_H+
+ bullet/BulletDynamics/Character/btKinematicCharacterController.h view
@@ -0,0 +1,162 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2008 Erwin Coumans  http://bulletphysics.com++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+++#ifndef BT_KINEMATIC_CHARACTER_CONTROLLER_H+#define BT_KINEMATIC_CHARACTER_CONTROLLER_H++#include "LinearMath/btVector3.h"++#include "btCharacterControllerInterface.h"++#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h"+++class btCollisionShape;+class btRigidBody;+class btCollisionWorld;+class btCollisionDispatcher;+class btPairCachingGhostObject;++///btKinematicCharacterController is an object that supports a sliding motion in a world.+///It uses a ghost object and convex sweep test to test for upcoming collisions. This is combined with discrete collision detection to recover from penetrations.+///Interaction between btKinematicCharacterController and dynamic rigid bodies needs to be explicity implemented by the user.+class btKinematicCharacterController : public btCharacterControllerInterface+{+protected:++	btScalar m_halfHeight;+	+	btPairCachingGhostObject* m_ghostObject;+	btConvexShape*	m_convexShape;//is also in m_ghostObject, but it needs to be convex, so we store it here to avoid upcast+	+	btScalar m_verticalVelocity;+	btScalar m_verticalOffset;+	btScalar m_fallSpeed;+	btScalar m_jumpSpeed;+	btScalar m_maxJumpHeight;+	btScalar m_maxSlopeRadians; // Slope angle that is set (used for returning the exact value)+	btScalar m_maxSlopeCosine;  // Cosine equivalent of m_maxSlopeRadians (calculated once when set, for optimization)+	btScalar m_gravity;++	btScalar m_turnAngle;+	+	btScalar m_stepHeight;++	btScalar	m_addedMargin;//@todo: remove this and fix the code++	///this is the desired walk direction, set by the user+	btVector3	m_walkDirection;+	btVector3	m_normalizedDirection;++	//some internal variables+	btVector3 m_currentPosition;+	btScalar  m_currentStepOffset;+	btVector3 m_targetPosition;++	///keep track of the contact manifolds+	btManifoldArray	m_manifoldArray;++	bool m_touchingContact;+	btVector3 m_touchingNormal;++	bool  m_wasOnGround;+	bool  m_wasJumping;+	bool	m_useGhostObjectSweepTest;+	bool	m_useWalkDirection;+	btScalar	m_velocityTimeInterval;+	int m_upAxis;++	static btVector3* getUpAxisDirections();++	btVector3 computeReflectionDirection (const btVector3& direction, const btVector3& normal);+	btVector3 parallelComponent (const btVector3& direction, const btVector3& normal);+	btVector3 perpindicularComponent (const btVector3& direction, const btVector3& normal);++	bool recoverFromPenetration ( btCollisionWorld* collisionWorld);+	void stepUp (btCollisionWorld* collisionWorld);+	void updateTargetPositionBasedOnCollision (const btVector3& hit_normal, btScalar tangentMag = btScalar(0.0), btScalar normalMag = btScalar(1.0));+	void stepForwardAndStrafe (btCollisionWorld* collisionWorld, const btVector3& walkMove);+	void stepDown (btCollisionWorld* collisionWorld, btScalar dt);+public:+	btKinematicCharacterController (btPairCachingGhostObject* ghostObject,btConvexShape* convexShape,btScalar stepHeight, int upAxis = 1);+	~btKinematicCharacterController ();+	++	///btActionInterface interface+	virtual void updateAction( btCollisionWorld* collisionWorld,btScalar deltaTime)+	{+		preStep ( collisionWorld);+		playerStep (collisionWorld, deltaTime);+	}+	+	///btActionInterface interface+	void	debugDraw(btIDebugDraw* debugDrawer);++	void setUpAxis (int axis)+	{+		if (axis < 0)+			axis = 0;+		if (axis > 2)+			axis = 2;+		m_upAxis = axis;+	}++	/// This should probably be called setPositionIncrementPerSimulatorStep.+	/// This is neither a direction nor a velocity, but the amount to+	///	increment the position each simulation iteration, regardless+	///	of dt.+	/// This call will reset any velocity set by setVelocityForTimeInterval().+	virtual void	setWalkDirection(const btVector3& walkDirection);++	/// Caller provides a velocity with which the character should move for+	///	the given time period.  After the time period, velocity is reset+	///	to zero.+	/// This call will reset any walk direction set by setWalkDirection().+	/// Negative time intervals will result in no motion.+	virtual void setVelocityForTimeInterval(const btVector3& velocity,+				btScalar timeInterval);++	void reset ();+	void warp (const btVector3& origin);++	void preStep (  btCollisionWorld* collisionWorld);+	void playerStep ( btCollisionWorld* collisionWorld, btScalar dt);++	void setFallSpeed (btScalar fallSpeed);+	void setJumpSpeed (btScalar jumpSpeed);+	void setMaxJumpHeight (btScalar maxJumpHeight);+	bool canJump () const;++	void jump ();++	void setGravity(btScalar gravity);+	btScalar getGravity() const;++	/// The max slope determines the maximum angle that the controller can walk up.+	/// The slope angle is measured in radians.+	void setMaxSlope(btScalar slopeRadians);+	btScalar getMaxSlope() const;++	btPairCachingGhostObject* getGhostObject();+	void	setUseGhostSweepTest(bool useGhostObjectSweepTest)+	{+		m_useGhostObjectSweepTest = useGhostObjectSweepTest;+	}++	bool onGround () const;+};++#endif // BT_KINEMATIC_CHARACTER_CONTROLLER_H
+ bullet/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h view
@@ -0,0 +1,346 @@+/*+Bullet Continuous Collision Detection and Physics Library+btConeTwistConstraint is Copyright (c) 2007 Starbreeze Studios++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.++Written by: Marcus Hennix+*/++++/*+Overview:++btConeTwistConstraint can be used to simulate ragdoll joints (upper arm, leg etc).+It is a fixed translation, 3 degree-of-freedom (DOF) rotational "joint".+It divides the 3 rotational DOFs into swing (movement within a cone) and twist.+Swing is divided into swing1 and swing2 which can have different limits, giving an elliptical shape.+(Note: the cone's base isn't flat, so this ellipse is "embedded" on the surface of a sphere.)++In the contraint's frame of reference:+twist is along the x-axis,+and swing 1 and 2 are along the z and y axes respectively.+*/++++#ifndef BT_CONETWISTCONSTRAINT_H+#define BT_CONETWISTCONSTRAINT_H++#include "LinearMath/btVector3.h"+#include "btJacobianEntry.h"+#include "btTypedConstraint.h"++class btRigidBody;++enum btConeTwistFlags+{+	BT_CONETWIST_FLAGS_LIN_CFM = 1,+	BT_CONETWIST_FLAGS_LIN_ERP = 2,+	BT_CONETWIST_FLAGS_ANG_CFM = 4+};++///btConeTwistConstraint can be used to simulate ragdoll joints (upper arm, leg etc)+class btConeTwistConstraint : public btTypedConstraint+{+#ifdef IN_PARALLELL_SOLVER+public:+#endif+	btJacobianEntry	m_jac[3]; //3 orthogonal linear constraints++	btTransform m_rbAFrame; +	btTransform m_rbBFrame;++	btScalar	m_limitSoftness;+	btScalar	m_biasFactor;+	btScalar	m_relaxationFactor;++	btScalar	m_damping;++	btScalar	m_swingSpan1;+	btScalar	m_swingSpan2;+	btScalar	m_twistSpan;++	btScalar	m_fixThresh;++	btVector3   m_swingAxis;+	btVector3	m_twistAxis;++	btScalar	m_kSwing;+	btScalar	m_kTwist;++	btScalar	m_twistLimitSign;+	btScalar	m_swingCorrection;+	btScalar	m_twistCorrection;++	btScalar	m_twistAngle;++	btScalar	m_accSwingLimitImpulse;+	btScalar	m_accTwistLimitImpulse;++	bool		m_angularOnly;+	bool		m_solveTwistLimit;+	bool		m_solveSwingLimit;++	bool	m_useSolveConstraintObsolete;++	// not yet used...+	btScalar	m_swingLimitRatio;+	btScalar	m_twistLimitRatio;+	btVector3   m_twistAxisA;++	// motor+	bool		 m_bMotorEnabled;+	bool		 m_bNormalizedMotorStrength;+	btQuaternion m_qTarget;+	btScalar	 m_maxMotorImpulse;+	btVector3	 m_accMotorImpulse;+	+	// parameters+	int			m_flags;+	btScalar	m_linCFM;+	btScalar	m_linERP;+	btScalar	m_angCFM;+	+protected:++	void init();++	void computeConeLimitInfo(const btQuaternion& qCone, // in+		btScalar& swingAngle, btVector3& vSwingAxis, btScalar& swingLimit); // all outs++	void computeTwistLimitInfo(const btQuaternion& qTwist, // in+		btScalar& twistAngle, btVector3& vTwistAxis); // all outs++	void adjustSwingAxisToUseEllipseNormal(btVector3& vSwingAxis) const;+++public:++	btConeTwistConstraint(btRigidBody& rbA,btRigidBody& rbB,const btTransform& rbAFrame, const btTransform& rbBFrame);+	+	btConeTwistConstraint(btRigidBody& rbA,const btTransform& rbAFrame);++	virtual void	buildJacobian();++	virtual void getInfo1 (btConstraintInfo1* info);++	void	getInfo1NonVirtual(btConstraintInfo1* info);+	+	virtual void getInfo2 (btConstraintInfo2* info);+	+	void	getInfo2NonVirtual(btConstraintInfo2* info,const btTransform& transA,const btTransform& transB,const btMatrix3x3& invInertiaWorldA,const btMatrix3x3& invInertiaWorldB);++	virtual	void	solveConstraintObsolete(btRigidBody& bodyA,btRigidBody& bodyB,btScalar	timeStep);++	void	updateRHS(btScalar	timeStep);+++	const btRigidBody& getRigidBodyA() const+	{+		return m_rbA;+	}+	const btRigidBody& getRigidBodyB() const+	{+		return m_rbB;+	}++	void	setAngularOnly(bool angularOnly)+	{+		m_angularOnly = angularOnly;+	}++	void	setLimit(int limitIndex,btScalar limitValue)+	{+		switch (limitIndex)+		{+		case 3:+			{+				m_twistSpan = limitValue;+				break;+			}+		case 4:+			{+				m_swingSpan2 = limitValue;+				break;+			}+		case 5:+			{+				m_swingSpan1 = limitValue;+				break;+			}+		default:+			{+			}+		};+	}++	// setLimit(), a few notes:+	// _softness:+	//		0->1, recommend ~0.8->1.+	//		describes % of limits where movement is free.+	//		beyond this softness %, the limit is gradually enforced until the "hard" (1.0) limit is reached.+	// _biasFactor:+	//		0->1?, recommend 0.3 +/-0.3 or so.+	//		strength with which constraint resists zeroth order (angular, not angular velocity) limit violation.+	// __relaxationFactor:+	//		0->1, recommend to stay near 1.+	//		the lower the value, the less the constraint will fight velocities which violate the angular limits.+	void	setLimit(btScalar _swingSpan1,btScalar _swingSpan2,btScalar _twistSpan, btScalar _softness = 1.f, btScalar _biasFactor = 0.3f, btScalar _relaxationFactor = 1.0f)+	{+		m_swingSpan1 = _swingSpan1;+		m_swingSpan2 = _swingSpan2;+		m_twistSpan  = _twistSpan;++		m_limitSoftness =  _softness;+		m_biasFactor = _biasFactor;+		m_relaxationFactor = _relaxationFactor;+	}++	const btTransform& getAFrame() { return m_rbAFrame; };	+	const btTransform& getBFrame() { return m_rbBFrame; };++	inline int getSolveTwistLimit()+	{+		return m_solveTwistLimit;+	}++	inline int getSolveSwingLimit()+	{+		return m_solveTwistLimit;+	}++	inline btScalar getTwistLimitSign()+	{+		return m_twistLimitSign;+	}++	void calcAngleInfo();+	void calcAngleInfo2(const btTransform& transA, const btTransform& transB,const btMatrix3x3& invInertiaWorldA,const btMatrix3x3& invInertiaWorldB);++	inline btScalar getSwingSpan1()+	{+		return m_swingSpan1;+	}+	inline btScalar getSwingSpan2()+	{+		return m_swingSpan2;+	}+	inline btScalar getTwistSpan()+	{+		return m_twistSpan;+	}+	inline btScalar getTwistAngle()+	{+		return m_twistAngle;+	}+	bool isPastSwingLimit() { return m_solveSwingLimit; }++	void setDamping(btScalar damping) { m_damping = damping; }++	void enableMotor(bool b) { m_bMotorEnabled = b; }+	void setMaxMotorImpulse(btScalar maxMotorImpulse) { m_maxMotorImpulse = maxMotorImpulse; m_bNormalizedMotorStrength = false; }+	void setMaxMotorImpulseNormalized(btScalar maxMotorImpulse) { m_maxMotorImpulse = maxMotorImpulse; m_bNormalizedMotorStrength = true; }++	btScalar getFixThresh() { return m_fixThresh; }+	void setFixThresh(btScalar fixThresh) { m_fixThresh = fixThresh; }++	// setMotorTarget:+	// q: the desired rotation of bodyA wrt bodyB.+	// note: if q violates the joint limits, the internal target is clamped to avoid conflicting impulses (very bad for stability)+	// note: don't forget to enableMotor()+	void setMotorTarget(const btQuaternion &q);++	// same as above, but q is the desired rotation of frameA wrt frameB in constraint space+	void setMotorTargetInConstraintSpace(const btQuaternion &q);++	btVector3 GetPointForAngle(btScalar fAngleInRadians, btScalar fLength) const;++	///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5). +	///If no axis is provided, it uses the default axis for this constraint.+	virtual	void setParam(int num, btScalar value, int axis = -1);++	virtual void setFrames(const btTransform& frameA, const btTransform& frameB);++	const btTransform& getFrameOffsetA() const+	{+		return m_rbAFrame;+	}++	const btTransform& getFrameOffsetB() const+	{+		return m_rbBFrame;+	}+++	///return the local value of parameter+	virtual	btScalar getParam(int num, int axis = -1) const;++	virtual	int	calculateSerializeBufferSize() const;++	///fills the dataBuffer and returns the struct name (and 0 on failure)+	virtual	const char*	serialize(void* dataBuffer, btSerializer* serializer) const;++};++///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64+struct	btConeTwistConstraintData+{+	btTypedConstraintData	m_typeConstraintData;+	btTransformFloatData m_rbAFrame;+	btTransformFloatData m_rbBFrame;++	//limits+	float	m_swingSpan1;+	float	m_swingSpan2;+	float	m_twistSpan;+	float	m_limitSoftness;+	float	m_biasFactor;+	float	m_relaxationFactor;++	float	m_damping;+		+	char m_pad[4];++};+	+++SIMD_FORCE_INLINE int	btConeTwistConstraint::calculateSerializeBufferSize() const+{+	return sizeof(btConeTwistConstraintData);++}+++	///fills the dataBuffer and returns the struct name (and 0 on failure)+SIMD_FORCE_INLINE const char*	btConeTwistConstraint::serialize(void* dataBuffer, btSerializer* serializer) const+{+	btConeTwistConstraintData* cone = (btConeTwistConstraintData*) dataBuffer;+	btTypedConstraint::serialize(&cone->m_typeConstraintData,serializer);++	m_rbAFrame.serializeFloat(cone->m_rbAFrame);+	m_rbBFrame.serializeFloat(cone->m_rbBFrame);+	+	cone->m_swingSpan1 = float(m_swingSpan1);+	cone->m_swingSpan2 = float(m_swingSpan2);+	cone->m_twistSpan = float(m_twistSpan);+	cone->m_limitSoftness = float(m_limitSoftness);+	cone->m_biasFactor = float(m_biasFactor);+	cone->m_relaxationFactor = float(m_relaxationFactor);+	cone->m_damping = float(m_damping);++	return "btConeTwistConstraintData";+}+++#endif //BT_CONETWISTCONSTRAINT_H
+ bullet/BulletDynamics/ConstraintSolver/btConstraintSolver.h view
@@ -0,0 +1,52 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_CONSTRAINT_SOLVER_H+#define BT_CONSTRAINT_SOLVER_H++#include "LinearMath/btScalar.h"++class btPersistentManifold;+class btRigidBody;+class btCollisionObject;+class btTypedConstraint;+struct btContactSolverInfo;+struct btBroadphaseProxy;+class btIDebugDraw;+class btStackAlloc;+class	btDispatcher;+/// btConstraintSolver provides solver interface+class btConstraintSolver+{++public:++	virtual ~btConstraintSolver() {}+	+	virtual void prepareSolve (int /* numBodies */, int /* numManifolds */) {;}++	///solve a group of constraints+	virtual btScalar solveGroup(btCollisionObject** bodies,int numBodies,btPersistentManifold** manifold,int numManifolds,btTypedConstraint** constraints,int numConstraints, const btContactSolverInfo& info,class btIDebugDraw* debugDrawer, btStackAlloc* stackAlloc,btDispatcher* dispatcher) = 0;++	virtual void allSolved (const btContactSolverInfo& /* info */,class btIDebugDraw* /* debugDrawer */, btStackAlloc* /* stackAlloc */) {;}++	///clear internal cached data and reset random seed+	virtual	void	reset() = 0;+};+++++#endif //BT_CONSTRAINT_SOLVER_H
+ bullet/BulletDynamics/ConstraintSolver/btContactConstraint.h view
@@ -0,0 +1,71 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_CONTACT_CONSTRAINT_H+#define BT_CONTACT_CONSTRAINT_H++#include "LinearMath/btVector3.h"+#include "btJacobianEntry.h"+#include "btTypedConstraint.h"+#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h"++///btContactConstraint can be automatically created to solve contact constraints using the unified btTypedConstraint interface+ATTRIBUTE_ALIGNED16(class) btContactConstraint : public btTypedConstraint+{+protected:++	btPersistentManifold m_contactManifold;++public:+++	btContactConstraint(btPersistentManifold* contactManifold,btRigidBody& rbA,btRigidBody& rbB);++	void	setContactManifold(btPersistentManifold* contactManifold);++	btPersistentManifold* getContactManifold()+	{+		return &m_contactManifold;+	}++	const btPersistentManifold* getContactManifold() const+	{+		return &m_contactManifold;+	}++	virtual ~btContactConstraint();++	virtual void getInfo1 (btConstraintInfo1* info);++	virtual void getInfo2 (btConstraintInfo2* info);++	///obsolete methods+	virtual void	buildJacobian();+++};++///very basic collision resolution without friction+btScalar resolveSingleCollision(btRigidBody* body1, class btCollisionObject* colObj2, const btVector3& contactPositionWorld,const btVector3& contactNormalOnB, const struct btContactSolverInfo& solverInfo,btScalar distance);+++///resolveSingleBilateral is an obsolete methods used for vehicle friction between two dynamic objects+void resolveSingleBilateral(btRigidBody& body1, const btVector3& pos1,+                      btRigidBody& body2, const btVector3& pos2,+                      btScalar distance, const btVector3& normal,btScalar& impulse ,btScalar timeStep);++++#endif //BT_CONTACT_CONSTRAINT_H
+ bullet/BulletDynamics/ConstraintSolver/btContactSolverInfo.h view
@@ -0,0 +1,87 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_CONTACT_SOLVER_INFO+#define BT_CONTACT_SOLVER_INFO++enum	btSolverMode+{+	SOLVER_RANDMIZE_ORDER = 1,+	SOLVER_FRICTION_SEPARATE = 2,+	SOLVER_USE_WARMSTARTING = 4,+	SOLVER_USE_FRICTION_WARMSTARTING = 8,+	SOLVER_USE_2_FRICTION_DIRECTIONS = 16,+	SOLVER_ENABLE_FRICTION_DIRECTION_CACHING = 32,+	SOLVER_DISABLE_VELOCITY_DEPENDENT_FRICTION_DIRECTION = 64,+	SOLVER_CACHE_FRIENDLY = 128,+	SOLVER_SIMD = 256,	//enabled for Windows, the solver innerloop is branchless SIMD, 40% faster than FPU/scalar version+	SOLVER_CUDA = 512	//will be open sourced during Game Developers Conference 2009. Much faster.+};++struct btContactSolverInfoData+{+	++	btScalar	m_tau;+	btScalar	m_damping;//global non-contact constraint damping, can be locally overridden by constraints during 'getInfo2'.+	btScalar	m_friction;+	btScalar	m_timeStep;+	btScalar	m_restitution;+	int		m_numIterations;+	btScalar	m_maxErrorReduction;+	btScalar	m_sor;+	btScalar	m_erp;//used as Baumgarte factor+	btScalar	m_erp2;//used in Split Impulse+	btScalar	m_globalCfm;//constraint force mixing+	int			m_splitImpulse;+	btScalar	m_splitImpulsePenetrationThreshold;+	btScalar	m_linearSlop;+	btScalar	m_warmstartingFactor;++	int			m_solverMode;+	int	m_restingContactRestitutionThreshold;+	int			m_minimumSolverBatchSize;+++};++struct btContactSolverInfo : public btContactSolverInfoData+{++	++	inline btContactSolverInfo()+	{+		m_tau = btScalar(0.6);+		m_damping = btScalar(1.0);+		m_friction = btScalar(0.3);+		m_restitution = btScalar(0.);+		m_maxErrorReduction = btScalar(20.);+		m_numIterations = 10;+		m_erp = btScalar(0.2);+		m_erp2 = btScalar(0.1);+		m_globalCfm = btScalar(0.);+		m_sor = btScalar(1.);+		m_splitImpulse = false;+		m_splitImpulsePenetrationThreshold = -0.02f;+		m_linearSlop = btScalar(0.0);+		m_warmstartingFactor=btScalar(0.85);+		m_solverMode = SOLVER_USE_WARMSTARTING | SOLVER_SIMD;// | SOLVER_RANDMIZE_ORDER;+		m_restingContactRestitutionThreshold = 2;//resting contact lifetime threshold to disable restitution+		m_minimumSolverBatchSize = 128; //try to combine islands until the amount of constraints reaches this limit+	}+};++#endif //BT_CONTACT_SOLVER_INFO
+ bullet/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h view
@@ -0,0 +1,614 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose,+including commercial applications, and to alter it and redistribute it freely,+subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++/// 2009 March: btGeneric6DofConstraint refactored by Roman Ponomarev+/// Added support for generic constraint solver through getInfo1/getInfo2 methods++/*+2007-09-09+btGeneric6DofConstraint Refactored by Francisco Le?n+email: projectileman@yahoo.com+http://gimpact.sf.net+*/+++#ifndef BT_GENERIC_6DOF_CONSTRAINT_H+#define BT_GENERIC_6DOF_CONSTRAINT_H++#include "LinearMath/btVector3.h"+#include "btJacobianEntry.h"+#include "btTypedConstraint.h"++class btRigidBody;+++++//! Rotation Limit structure for generic joints+class btRotationalLimitMotor+{+public:+    //! limit_parameters+    //!@{+    btScalar m_loLimit;//!< joint limit+    btScalar m_hiLimit;//!< joint limit+    btScalar m_targetVelocity;//!< target motor velocity+    btScalar m_maxMotorForce;//!< max force on motor+    btScalar m_maxLimitForce;//!< max force on limit+    btScalar m_damping;//!< Damping.+    btScalar m_limitSoftness;//! Relaxation factor+    btScalar m_normalCFM;//!< Constraint force mixing factor+    btScalar m_stopERP;//!< Error tolerance factor when joint is at limit+    btScalar m_stopCFM;//!< Constraint force mixing factor when joint is at limit+    btScalar m_bounce;//!< restitution factor+    bool m_enableMotor;++    //!@}++    //! temp_variables+    //!@{+    btScalar m_currentLimitError;//!  How much is violated this limit+    btScalar m_currentPosition;     //!  current value of angle +    int m_currentLimit;//!< 0=free, 1=at lo limit, 2=at hi limit+    btScalar m_accumulatedImpulse;+    //!@}++    btRotationalLimitMotor()+    {+    	m_accumulatedImpulse = 0.f;+        m_targetVelocity = 0;+        m_maxMotorForce = 0.1f;+        m_maxLimitForce = 300.0f;+        m_loLimit = 1.0f;+        m_hiLimit = -1.0f;+		m_normalCFM = 0.f;+		m_stopERP = 0.2f;+		m_stopCFM = 0.f;+        m_bounce = 0.0f;+        m_damping = 1.0f;+        m_limitSoftness = 0.5f;+        m_currentLimit = 0;+        m_currentLimitError = 0;+        m_enableMotor = false;+    }++    btRotationalLimitMotor(const btRotationalLimitMotor & limot)+    {+        m_targetVelocity = limot.m_targetVelocity;+        m_maxMotorForce = limot.m_maxMotorForce;+        m_limitSoftness = limot.m_limitSoftness;+        m_loLimit = limot.m_loLimit;+        m_hiLimit = limot.m_hiLimit;+		m_normalCFM = limot.m_normalCFM;+		m_stopERP = limot.m_stopERP;+		m_stopCFM =	limot.m_stopCFM;+        m_bounce = limot.m_bounce;+        m_currentLimit = limot.m_currentLimit;+        m_currentLimitError = limot.m_currentLimitError;+        m_enableMotor = limot.m_enableMotor;+    }++++	//! Is limited+    bool isLimited()+    {+    	if(m_loLimit > m_hiLimit) return false;+    	return true;+    }++	//! Need apply correction+    bool needApplyTorques()+    {+    	if(m_currentLimit == 0 && m_enableMotor == false) return false;+    	return true;+    }++	//! calculates  error+	/*!+	calculates m_currentLimit and m_currentLimitError.+	*/+	int testLimitValue(btScalar test_value);++	//! apply the correction impulses for two bodies+    btScalar solveAngularLimits(btScalar timeStep,btVector3& axis, btScalar jacDiagABInv,btRigidBody * body0, btRigidBody * body1);++};++++class btTranslationalLimitMotor+{+public:+	btVector3 m_lowerLimit;//!< the constraint lower limits+    btVector3 m_upperLimit;//!< the constraint upper limits+    btVector3 m_accumulatedImpulse;+    //! Linear_Limit_parameters+    //!@{+    btScalar	m_limitSoftness;//!< Softness for linear limit+    btScalar	m_damping;//!< Damping for linear limit+    btScalar	m_restitution;//! Bounce parameter for linear limit+	btVector3	m_normalCFM;//!< Constraint force mixing factor+    btVector3	m_stopERP;//!< Error tolerance factor when joint is at limit+	btVector3	m_stopCFM;//!< Constraint force mixing factor when joint is at limit+    //!@}+	bool		m_enableMotor[3];+    btVector3	m_targetVelocity;//!< target motor velocity+    btVector3	m_maxMotorForce;//!< max force on motor+    btVector3	m_currentLimitError;//!  How much is violated this limit+    btVector3	m_currentLinearDiff;//!  Current relative offset of constraint frames+    int			m_currentLimit[3];//!< 0=free, 1=at lower limit, 2=at upper limit++    btTranslationalLimitMotor()+    {+    	m_lowerLimit.setValue(0.f,0.f,0.f);+    	m_upperLimit.setValue(0.f,0.f,0.f);+    	m_accumulatedImpulse.setValue(0.f,0.f,0.f);+		m_normalCFM.setValue(0.f, 0.f, 0.f);+		m_stopERP.setValue(0.2f, 0.2f, 0.2f);+		m_stopCFM.setValue(0.f, 0.f, 0.f);++    	m_limitSoftness = 0.7f;+    	m_damping = btScalar(1.0f);+    	m_restitution = btScalar(0.5f);+		for(int i=0; i < 3; i++) +		{+			m_enableMotor[i] = false;+			m_targetVelocity[i] = btScalar(0.f);+			m_maxMotorForce[i] = btScalar(0.f);+		}+    }++    btTranslationalLimitMotor(const btTranslationalLimitMotor & other )+    {+    	m_lowerLimit = other.m_lowerLimit;+    	m_upperLimit = other.m_upperLimit;+    	m_accumulatedImpulse = other.m_accumulatedImpulse;++    	m_limitSoftness = other.m_limitSoftness ;+    	m_damping = other.m_damping;+    	m_restitution = other.m_restitution;+		m_normalCFM = other.m_normalCFM;+		m_stopERP = other.m_stopERP;+		m_stopCFM = other.m_stopCFM;++		for(int i=0; i < 3; i++) +		{+			m_enableMotor[i] = other.m_enableMotor[i];+			m_targetVelocity[i] = other.m_targetVelocity[i];+			m_maxMotorForce[i] = other.m_maxMotorForce[i];+		}+    }++    //! Test limit+	/*!+    - free means upper < lower,+    - locked means upper == lower+    - limited means upper > lower+    - limitIndex: first 3 are linear, next 3 are angular+    */+    inline bool	isLimited(int limitIndex)+    {+       return (m_upperLimit[limitIndex] >= m_lowerLimit[limitIndex]);+    }+    inline bool needApplyForce(int limitIndex)+    {+    	if(m_currentLimit[limitIndex] == 0 && m_enableMotor[limitIndex] == false) return false;+    	return true;+    }+	int testLimitValue(int limitIndex, btScalar test_value);+++    btScalar solveLinearAxis(+    	btScalar timeStep,+        btScalar jacDiagABInv,+        btRigidBody& body1,const btVector3 &pointInA,+        btRigidBody& body2,const btVector3 &pointInB,+        int limit_index,+        const btVector3 & axis_normal_on_a,+		const btVector3 & anchorPos);+++};++enum bt6DofFlags+{+	BT_6DOF_FLAGS_CFM_NORM = 1,+	BT_6DOF_FLAGS_CFM_STOP = 2,+	BT_6DOF_FLAGS_ERP_STOP = 4+};+#define BT_6DOF_FLAGS_AXIS_SHIFT 3 // bits per axis+++/// btGeneric6DofConstraint between two rigidbodies each with a pivotpoint that descibes the axis location in local space+/*!+btGeneric6DofConstraint can leave any of the 6 degree of freedom 'free' or 'locked'.+currently this limit supports rotational motors<br>+<ul>+<li> For Linear limits, use btGeneric6DofConstraint.setLinearUpperLimit, btGeneric6DofConstraint.setLinearLowerLimit. You can set the parameters with the btTranslationalLimitMotor structure accsesible through the btGeneric6DofConstraint.getTranslationalLimitMotor method.+At this moment translational motors are not supported. May be in the future. </li>++<li> For Angular limits, use the btRotationalLimitMotor structure for configuring the limit.+This is accessible through btGeneric6DofConstraint.getLimitMotor method,+This brings support for limit parameters and motors. </li>++<li> Angulars limits have these possible ranges:+<table border=1 >+<tr>+	<td><b>AXIS</b></td>+	<td><b>MIN ANGLE</b></td>+	<td><b>MAX ANGLE</b></td>+</tr><tr>+	<td>X</td>+	<td>-PI</td>+	<td>PI</td>+</tr><tr>+	<td>Y</td>+	<td>-PI/2</td>+	<td>PI/2</td>+</tr><tr>+	<td>Z</td>+	<td>-PI</td>+	<td>PI</td>+</tr>+</table>+</li>+</ul>++*/+class btGeneric6DofConstraint : public btTypedConstraint+{+protected:++	//! relative_frames+    //!@{+	btTransform	m_frameInA;//!< the constraint space w.r.t body A+    btTransform	m_frameInB;//!< the constraint space w.r.t body B+    //!@}++    //! Jacobians+    //!@{+    btJacobianEntry	m_jacLinear[3];//!< 3 orthogonal linear constraints+    btJacobianEntry	m_jacAng[3];//!< 3 orthogonal angular constraints+    //!@}++	//! Linear_Limit_parameters+    //!@{+    btTranslationalLimitMotor m_linearLimits;+    //!@}+++    //! hinge_parameters+    //!@{+    btRotationalLimitMotor m_angularLimits[3];+	//!@}+++protected:+    //! temporal variables+    //!@{+    btScalar m_timeStep;+    btTransform m_calculatedTransformA;+    btTransform m_calculatedTransformB;+    btVector3 m_calculatedAxisAngleDiff;+    btVector3 m_calculatedAxis[3];+    btVector3 m_calculatedLinearDiff;+	btScalar	m_factA;+	btScalar	m_factB;+	bool		m_hasStaticBody;+    +	btVector3 m_AnchorPos; // point betwen pivots of bodies A and B to solve linear axes++    bool	m_useLinearReferenceFrameA;+	bool	m_useOffsetForConstraintFrame;+    +	int		m_flags;++    //!@}++    btGeneric6DofConstraint&	operator=(btGeneric6DofConstraint&	other)+    {+        btAssert(0);+        (void) other;+        return *this;+    }+++	int setAngularLimits(btConstraintInfo2 *info, int row_offset,const btTransform& transA,const btTransform& transB,const btVector3& linVelA,const btVector3& linVelB,const btVector3& angVelA,const btVector3& angVelB);++	int setLinearLimits(btConstraintInfo2 *info, int row, const btTransform& transA,const btTransform& transB,const btVector3& linVelA,const btVector3& linVelB,const btVector3& angVelA,const btVector3& angVelB);++    void buildLinearJacobian(+        btJacobianEntry & jacLinear,const btVector3 & normalWorld,+        const btVector3 & pivotAInW,const btVector3 & pivotBInW);++    void buildAngularJacobian(btJacobianEntry & jacAngular,const btVector3 & jointAxisW);++	// tests linear limits+	void calculateLinearInfo();++	//! calcs the euler angles between the two bodies.+    void calculateAngleInfo();++++public:++	///for backwards compatibility during the transition to 'getInfo/getInfo2'+	bool		m_useSolveConstraintObsolete;++    btGeneric6DofConstraint(btRigidBody& rbA, btRigidBody& rbB, const btTransform& frameInA, const btTransform& frameInB ,bool useLinearReferenceFrameA);+    btGeneric6DofConstraint(btRigidBody& rbB, const btTransform& frameInB, bool useLinearReferenceFrameB);+    +	//! Calcs global transform of the offsets+	/*!+	Calcs the global transform for the joint offset for body A an B, and also calcs the agle differences between the bodies.+	\sa btGeneric6DofConstraint.getCalculatedTransformA , btGeneric6DofConstraint.getCalculatedTransformB, btGeneric6DofConstraint.calculateAngleInfo+	*/+    void calculateTransforms(const btTransform& transA,const btTransform& transB);++	void calculateTransforms();++	//! Gets the global transform of the offset for body A+    /*!+    \sa btGeneric6DofConstraint.getFrameOffsetA, btGeneric6DofConstraint.getFrameOffsetB, btGeneric6DofConstraint.calculateAngleInfo.+    */+    const btTransform & getCalculatedTransformA() const+    {+    	return m_calculatedTransformA;+    }++    //! Gets the global transform of the offset for body B+    /*!+    \sa btGeneric6DofConstraint.getFrameOffsetA, btGeneric6DofConstraint.getFrameOffsetB, btGeneric6DofConstraint.calculateAngleInfo.+    */+    const btTransform & getCalculatedTransformB() const+    {+    	return m_calculatedTransformB;+    }++    const btTransform & getFrameOffsetA() const+    {+    	return m_frameInA;+    }++    const btTransform & getFrameOffsetB() const+    {+    	return m_frameInB;+    }+++    btTransform & getFrameOffsetA()+    {+    	return m_frameInA;+    }++    btTransform & getFrameOffsetB()+    {+    	return m_frameInB;+    }+++	//! performs Jacobian calculation, and also calculates angle differences and axis+    virtual void	buildJacobian();++	virtual void getInfo1 (btConstraintInfo1* info);++	void getInfo1NonVirtual (btConstraintInfo1* info);++	virtual void getInfo2 (btConstraintInfo2* info);++	void getInfo2NonVirtual (btConstraintInfo2* info,const btTransform& transA,const btTransform& transB,const btVector3& linVelA,const btVector3& linVelB,const btVector3& angVelA,const btVector3& angVelB);+++    void	updateRHS(btScalar	timeStep);++	//! Get the rotation axis in global coordinates+	/*!+	\pre btGeneric6DofConstraint.buildJacobian must be called previously.+	*/+    btVector3 getAxis(int axis_index) const;++    //! Get the relative Euler angle+    /*!+	\pre btGeneric6DofConstraint::calculateTransforms() must be called previously.+	*/+    btScalar getAngle(int axis_index) const;++	//! Get the relative position of the constraint pivot+    /*!+	\pre btGeneric6DofConstraint::calculateTransforms() must be called previously.+	*/+	btScalar getRelativePivotPosition(int axis_index) const;++	void setFrames(const btTransform & frameA, const btTransform & frameB);++	//! Test angular limit.+	/*!+	Calculates angular correction and returns true if limit needs to be corrected.+	\pre btGeneric6DofConstraint::calculateTransforms() must be called previously.+	*/+    bool testAngularLimitMotor(int axis_index);++    void	setLinearLowerLimit(const btVector3& linearLower)+    {+    	m_linearLimits.m_lowerLimit = linearLower;+    }++	void	getLinearLowerLimit(btVector3& linearLower)+	{+		linearLower = m_linearLimits.m_lowerLimit;+	}++	void	setLinearUpperLimit(const btVector3& linearUpper)+	{+		m_linearLimits.m_upperLimit = linearUpper;+	}++	void	getLinearUpperLimit(btVector3& linearUpper)+	{+		linearUpper = m_linearLimits.m_upperLimit;+	}++    void	setAngularLowerLimit(const btVector3& angularLower)+    {+		for(int i = 0; i < 3; i++) +			m_angularLimits[i].m_loLimit = btNormalizeAngle(angularLower[i]);+    }++	void	getAngularLowerLimit(btVector3& angularLower)+	{+		for(int i = 0; i < 3; i++) +			angularLower[i] = m_angularLimits[i].m_loLimit;+	}++    void	setAngularUpperLimit(const btVector3& angularUpper)+    {+		for(int i = 0; i < 3; i++)+			m_angularLimits[i].m_hiLimit = btNormalizeAngle(angularUpper[i]);+    }++	void	getAngularUpperLimit(btVector3& angularUpper)+	{+		for(int i = 0; i < 3; i++)+			angularUpper[i] = m_angularLimits[i].m_hiLimit;+	}++	//! Retrieves the angular limit informacion+    btRotationalLimitMotor * getRotationalLimitMotor(int index)+    {+    	return &m_angularLimits[index];+    }++    //! Retrieves the  limit informacion+    btTranslationalLimitMotor * getTranslationalLimitMotor()+    {+    	return &m_linearLimits;+    }++    //first 3 are linear, next 3 are angular+    void setLimit(int axis, btScalar lo, btScalar hi)+    {+    	if(axis<3)+    	{+    		m_linearLimits.m_lowerLimit[axis] = lo;+    		m_linearLimits.m_upperLimit[axis] = hi;+    	}+    	else+    	{+			lo = btNormalizeAngle(lo);+			hi = btNormalizeAngle(hi);+    		m_angularLimits[axis-3].m_loLimit = lo;+    		m_angularLimits[axis-3].m_hiLimit = hi;+    	}+    }++	//! Test limit+	/*!+    - free means upper < lower,+    - locked means upper == lower+    - limited means upper > lower+    - limitIndex: first 3 are linear, next 3 are angular+    */+    bool	isLimited(int limitIndex)+    {+    	if(limitIndex<3)+    	{+			return m_linearLimits.isLimited(limitIndex);++    	}+        return m_angularLimits[limitIndex-3].isLimited();+    }++	virtual void calcAnchorPos(void); // overridable++	int get_limit_motor_info2(	btRotationalLimitMotor * limot,+								const btTransform& transA,const btTransform& transB,const btVector3& linVelA,const btVector3& linVelB,const btVector3& angVelA,const btVector3& angVelB,+								btConstraintInfo2 *info, int row, btVector3& ax1, int rotational, int rotAllowed = false);++	// access for UseFrameOffset+	bool getUseFrameOffset() { return m_useOffsetForConstraintFrame; }+	void setUseFrameOffset(bool frameOffsetOnOff) { m_useOffsetForConstraintFrame = frameOffsetOnOff; }++	///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5). +	///If no axis is provided, it uses the default axis for this constraint.+	virtual	void setParam(int num, btScalar value, int axis = -1);+	///return the local value of parameter+	virtual	btScalar getParam(int num, int axis = -1) const;++	void setAxis( const btVector3& axis1, const btVector3& axis2);+++	virtual	int	calculateSerializeBufferSize() const;++	///fills the dataBuffer and returns the struct name (and 0 on failure)+	virtual	const char*	serialize(void* dataBuffer, btSerializer* serializer) const;++	+};++///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64+struct btGeneric6DofConstraintData+{+	btTypedConstraintData	m_typeConstraintData;+	btTransformFloatData m_rbAFrame; // constraint axii. Assumes z is hinge axis.+	btTransformFloatData m_rbBFrame;+	+	btVector3FloatData	m_linearUpperLimit;+	btVector3FloatData	m_linearLowerLimit;++	btVector3FloatData	m_angularUpperLimit;+	btVector3FloatData	m_angularLowerLimit;+	+	int	m_useLinearReferenceFrameA;+	int m_useOffsetForConstraintFrame;+};++SIMD_FORCE_INLINE	int	btGeneric6DofConstraint::calculateSerializeBufferSize() const+{+	return sizeof(btGeneric6DofConstraintData);+}++	///fills the dataBuffer and returns the struct name (and 0 on failure)+SIMD_FORCE_INLINE	const char*	btGeneric6DofConstraint::serialize(void* dataBuffer, btSerializer* serializer) const+{++	btGeneric6DofConstraintData* dof = (btGeneric6DofConstraintData*)dataBuffer;+	btTypedConstraint::serialize(&dof->m_typeConstraintData,serializer);++	m_frameInA.serializeFloat(dof->m_rbAFrame);+	m_frameInB.serializeFloat(dof->m_rbBFrame);++		+	int i;+	for (i=0;i<3;i++)+	{+		dof->m_angularLowerLimit.m_floats[i] =  float(m_angularLimits[i].m_loLimit);+		dof->m_angularUpperLimit.m_floats[i] =  float(m_angularLimits[i].m_hiLimit);+		dof->m_linearLowerLimit.m_floats[i] = float(m_linearLimits.m_lowerLimit[i]);+		dof->m_linearUpperLimit.m_floats[i] = float(m_linearLimits.m_upperLimit[i]);+	}+	+	dof->m_useLinearReferenceFrameA = m_useLinearReferenceFrameA? 1 : 0;+	dof->m_useOffsetForConstraintFrame = m_useOffsetForConstraintFrame ? 1 : 0;++	return "btGeneric6DofConstraintData";+}++++++#endif //BT_GENERIC_6DOF_CONSTRAINT_H
+ bullet/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h view
@@ -0,0 +1,97 @@+/*+Bullet Continuous Collision Detection and Physics Library, http://bulletphysics.org+Copyright (C) 2006, 2007 Sony Computer Entertainment Inc. ++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_GENERIC_6DOF_SPRING_CONSTRAINT_H+#define BT_GENERIC_6DOF_SPRING_CONSTRAINT_H+++#include "LinearMath/btVector3.h"+#include "btTypedConstraint.h"+#include "btGeneric6DofConstraint.h"+++/// Generic 6 DOF constraint that allows to set spring motors to any translational and rotational DOF++/// DOF index used in enableSpring() and setStiffness() means:+/// 0 : translation X+/// 1 : translation Y+/// 2 : translation Z+/// 3 : rotation X (3rd Euler rotational around new position of X axis, range [-PI+epsilon, PI-epsilon] )+/// 4 : rotation Y (2nd Euler rotational around new position of Y axis, range [-PI/2+epsilon, PI/2-epsilon] )+/// 5 : rotation Z (1st Euler rotational around Z axis, range [-PI+epsilon, PI-epsilon] )++class btGeneric6DofSpringConstraint : public btGeneric6DofConstraint+{+protected:+	bool		m_springEnabled[6];+	btScalar	m_equilibriumPoint[6];+	btScalar	m_springStiffness[6];+	btScalar	m_springDamping[6]; // between 0 and 1 (1 == no damping)+	void internalUpdateSprings(btConstraintInfo2* info);+public: +    btGeneric6DofSpringConstraint(btRigidBody& rbA, btRigidBody& rbB, const btTransform& frameInA, const btTransform& frameInB ,bool useLinearReferenceFrameA);+	void enableSpring(int index, bool onOff);+	void setStiffness(int index, btScalar stiffness);+	void setDamping(int index, btScalar damping);+	void setEquilibriumPoint(); // set the current constraint position/orientation as an equilibrium point for all DOF+	void setEquilibriumPoint(int index);  // set the current constraint position/orientation as an equilibrium point for given DOF+	void setEquilibriumPoint(int index, btScalar val);++	virtual void setAxis( const btVector3& axis1, const btVector3& axis2);++	virtual void getInfo2 (btConstraintInfo2* info);++	virtual	int	calculateSerializeBufferSize() const;+	///fills the dataBuffer and returns the struct name (and 0 on failure)+	virtual	const char*	serialize(void* dataBuffer, btSerializer* serializer) const;++};+++///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64+struct btGeneric6DofSpringConstraintData+{+	btGeneric6DofConstraintData	m_6dofData;+	+	int			m_springEnabled[6];+	float		m_equilibriumPoint[6];+	float		m_springStiffness[6];+	float		m_springDamping[6];+};++SIMD_FORCE_INLINE	int	btGeneric6DofSpringConstraint::calculateSerializeBufferSize() const+{+	return sizeof(btGeneric6DofSpringConstraintData);+}++	///fills the dataBuffer and returns the struct name (and 0 on failure)+SIMD_FORCE_INLINE	const char*	btGeneric6DofSpringConstraint::serialize(void* dataBuffer, btSerializer* serializer) const+{+	btGeneric6DofSpringConstraintData* dof = (btGeneric6DofSpringConstraintData*)dataBuffer;+	btGeneric6DofConstraint::serialize(&dof->m_6dofData,serializer);++	int i;+	for (i=0;i<6;i++)+	{+		dof->m_equilibriumPoint[i] = m_equilibriumPoint[i];+		dof->m_springDamping[i] = m_springDamping[i];+		dof->m_springEnabled[i] = m_springEnabled[i]? 1 : 0;+		dof->m_springStiffness[i] = m_springStiffness[i];+	}+	return "btGeneric6DofConstraintData";+}++#endif // BT_GENERIC_6DOF_SPRING_CONSTRAINT_H+
+ bullet/BulletDynamics/ConstraintSolver/btHinge2Constraint.h view
@@ -0,0 +1,58 @@+/*+Bullet Continuous Collision Detection and Physics Library, http://bulletphysics.org+Copyright (C) 2006, 2007 Sony Computer Entertainment Inc. ++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_HINGE2_CONSTRAINT_H+#define BT_HINGE2_CONSTRAINT_H++++#include "LinearMath/btVector3.h"+#include "btTypedConstraint.h"+#include "btGeneric6DofSpringConstraint.h"++++// Constraint similar to ODE Hinge2 Joint+// has 3 degrees of frredom:+// 2 rotational degrees of freedom, similar to Euler rotations around Z (axis 1) and X (axis 2)+// 1 translational (along axis Z) with suspension spring++class btHinge2Constraint : public btGeneric6DofSpringConstraint+{+protected:+	btVector3	m_anchor;+	btVector3	m_axis1;+	btVector3	m_axis2;+public:+	// constructor+	// anchor, axis1 and axis2 are in world coordinate system+	// axis1 must be orthogonal to axis2+    btHinge2Constraint(btRigidBody& rbA, btRigidBody& rbB, btVector3& anchor, btVector3& axis1, btVector3& axis2);+	// access+	const btVector3& getAnchor() { return m_calculatedTransformA.getOrigin(); }+	const btVector3& getAnchor2() { return m_calculatedTransformB.getOrigin(); }+	const btVector3& getAxis1() { return m_axis1; }+	const btVector3& getAxis2() { return m_axis2; }+	btScalar getAngle1() { return getAngle(2); }+	btScalar getAngle2() { return getAngle(0); }+	// limits+	void setUpperLimit(btScalar ang1max) { setAngularUpperLimit(btVector3(-1.f, 0.f, ang1max)); }+	void setLowerLimit(btScalar ang1min) { setAngularLowerLimit(btVector3( 1.f, 0.f, ang1min)); }+};++++#endif // BT_HINGE2_CONSTRAINT_H+
+ bullet/BulletDynamics/ConstraintSolver/btHingeConstraint.h view
@@ -0,0 +1,381 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++/* Hinge Constraint by Dirk Gregorius. Limits added by Marcus Hennix at Starbreeze Studios */++#ifndef BT_HINGECONSTRAINT_H+#define BT_HINGECONSTRAINT_H++#define _BT_USE_CENTER_LIMIT_ 1+++#include "LinearMath/btVector3.h"+#include "btJacobianEntry.h"+#include "btTypedConstraint.h"++class btRigidBody;++#ifdef BT_USE_DOUBLE_PRECISION+#define btHingeConstraintData	btHingeConstraintDoubleData+#define btHingeConstraintDataName	"btHingeConstraintDoubleData"+#else+#define btHingeConstraintData	btHingeConstraintFloatData+#define btHingeConstraintDataName	"btHingeConstraintFloatData"+#endif //BT_USE_DOUBLE_PRECISION++++enum btHingeFlags+{+	BT_HINGE_FLAGS_CFM_STOP = 1,+	BT_HINGE_FLAGS_ERP_STOP = 2,+	BT_HINGE_FLAGS_CFM_NORM = 4+};+++/// hinge constraint between two rigidbodies each with a pivotpoint that descibes the axis location in local space+/// axis defines the orientation of the hinge axis+ATTRIBUTE_ALIGNED16(class) btHingeConstraint : public btTypedConstraint+{+#ifdef IN_PARALLELL_SOLVER+public:+#endif+	btJacobianEntry	m_jac[3]; //3 orthogonal linear constraints+	btJacobianEntry	m_jacAng[3]; //2 orthogonal angular constraints+ 1 for limit/motor++	btTransform m_rbAFrame; // constraint axii. Assumes z is hinge axis.+	btTransform m_rbBFrame;++	btScalar	m_motorTargetVelocity;+	btScalar	m_maxMotorImpulse;+++#ifdef	_BT_USE_CENTER_LIMIT_+	btAngularLimit	m_limit;+#else+	btScalar	m_lowerLimit;	+	btScalar	m_upperLimit;	+	btScalar	m_limitSign;+	btScalar	m_correction;++	btScalar	m_limitSoftness; +	btScalar	m_biasFactor; +	btScalar	m_relaxationFactor; ++	bool		m_solveLimit;+#endif++	btScalar	m_kHinge;+++	btScalar	m_accLimitImpulse;+	btScalar	m_hingeAngle;+	btScalar	m_referenceSign;++	bool		m_angularOnly;+	bool		m_enableAngularMotor;+	bool		m_useSolveConstraintObsolete;+	bool		m_useOffsetForConstraintFrame;+	bool		m_useReferenceFrameA;++	btScalar	m_accMotorImpulse;++	int			m_flags;+	btScalar	m_normalCFM;+	btScalar	m_stopCFM;+	btScalar	m_stopERP;++	+public:++	btHingeConstraint(btRigidBody& rbA,btRigidBody& rbB, const btVector3& pivotInA,const btVector3& pivotInB, const btVector3& axisInA,const btVector3& axisInB, bool useReferenceFrameA = false);++	btHingeConstraint(btRigidBody& rbA,const btVector3& pivotInA,const btVector3& axisInA, bool useReferenceFrameA = false);+	+	btHingeConstraint(btRigidBody& rbA,btRigidBody& rbB, const btTransform& rbAFrame, const btTransform& rbBFrame, bool useReferenceFrameA = false);++	btHingeConstraint(btRigidBody& rbA,const btTransform& rbAFrame, bool useReferenceFrameA = false);+++	virtual void	buildJacobian();++	virtual void getInfo1 (btConstraintInfo1* info);++	void getInfo1NonVirtual(btConstraintInfo1* info);++	virtual void getInfo2 (btConstraintInfo2* info);++	void	getInfo2NonVirtual(btConstraintInfo2* info,const btTransform& transA,const btTransform& transB,const btVector3& angVelA,const btVector3& angVelB);++	void	getInfo2Internal(btConstraintInfo2* info,const btTransform& transA,const btTransform& transB,const btVector3& angVelA,const btVector3& angVelB);+	void	getInfo2InternalUsingFrameOffset(btConstraintInfo2* info,const btTransform& transA,const btTransform& transB,const btVector3& angVelA,const btVector3& angVelB);+		++	void	updateRHS(btScalar	timeStep);++	const btRigidBody& getRigidBodyA() const+	{+		return m_rbA;+	}+	const btRigidBody& getRigidBodyB() const+	{+		return m_rbB;+	}++	btRigidBody& getRigidBodyA()	+	{		+		return m_rbA;	+	}	++	btRigidBody& getRigidBodyB()	+	{		+		return m_rbB;	+	}++	btTransform& getFrameOffsetA()+	{+	return m_rbAFrame;+	}++	btTransform& getFrameOffsetB()+	{+		return m_rbBFrame;+	}++	void setFrames(const btTransform& frameA, const btTransform& frameB);+	+	void	setAngularOnly(bool angularOnly)+	{+		m_angularOnly = angularOnly;+	}++	void	enableAngularMotor(bool enableMotor,btScalar targetVelocity,btScalar maxMotorImpulse)+	{+		m_enableAngularMotor  = enableMotor;+		m_motorTargetVelocity = targetVelocity;+		m_maxMotorImpulse = maxMotorImpulse;+	}++	// extra motor API, including ability to set a target rotation (as opposed to angular velocity)+	// note: setMotorTarget sets angular velocity under the hood, so you must call it every tick to+	//       maintain a given angular target.+	void enableMotor(bool enableMotor) 	{ m_enableAngularMotor = enableMotor; }+	void setMaxMotorImpulse(btScalar maxMotorImpulse) { m_maxMotorImpulse = maxMotorImpulse; }+	void setMotorTarget(const btQuaternion& qAinB, btScalar dt); // qAinB is rotation of body A wrt body B.+	void setMotorTarget(btScalar targetAngle, btScalar dt);+++	void	setLimit(btScalar low,btScalar high,btScalar _softness = 0.9f, btScalar _biasFactor = 0.3f, btScalar _relaxationFactor = 1.0f)+	{+#ifdef	_BT_USE_CENTER_LIMIT_+		m_limit.set(low, high, _softness, _biasFactor, _relaxationFactor);+#else+		m_lowerLimit = btNormalizeAngle(low);+		m_upperLimit = btNormalizeAngle(high);+		m_limitSoftness =  _softness;+		m_biasFactor = _biasFactor;+		m_relaxationFactor = _relaxationFactor;+#endif+	}++	void	setAxis(btVector3& axisInA)+	{+		btVector3 rbAxisA1, rbAxisA2;+		btPlaneSpace1(axisInA, rbAxisA1, rbAxisA2);+		btVector3 pivotInA = m_rbAFrame.getOrigin();+//		m_rbAFrame.getOrigin() = pivotInA;+		m_rbAFrame.getBasis().setValue( rbAxisA1.getX(),rbAxisA2.getX(),axisInA.getX(),+										rbAxisA1.getY(),rbAxisA2.getY(),axisInA.getY(),+										rbAxisA1.getZ(),rbAxisA2.getZ(),axisInA.getZ() );++		btVector3 axisInB = m_rbA.getCenterOfMassTransform().getBasis() * axisInA;++		btQuaternion rotationArc = shortestArcQuat(axisInA,axisInB);+		btVector3 rbAxisB1 =  quatRotate(rotationArc,rbAxisA1);+		btVector3 rbAxisB2 = axisInB.cross(rbAxisB1);++		m_rbBFrame.getOrigin() = m_rbB.getCenterOfMassTransform().inverse()(m_rbA.getCenterOfMassTransform()(pivotInA));++		m_rbBFrame.getBasis().setValue( rbAxisB1.getX(),rbAxisB2.getX(),axisInB.getX(),+										rbAxisB1.getY(),rbAxisB2.getY(),axisInB.getY(),+										rbAxisB1.getZ(),rbAxisB2.getZ(),axisInB.getZ() );+		m_rbBFrame.getBasis() = m_rbB.getCenterOfMassTransform().getBasis().inverse() * m_rbBFrame.getBasis();++	}++	btScalar	getLowerLimit() const+	{+#ifdef	_BT_USE_CENTER_LIMIT_+	return m_limit.getLow();+#else+	return m_lowerLimit;+#endif+	}++	btScalar	getUpperLimit() const+	{+#ifdef	_BT_USE_CENTER_LIMIT_+	return m_limit.getHigh();+#else		+	return m_upperLimit;+#endif+	}+++	btScalar getHingeAngle();++	btScalar getHingeAngle(const btTransform& transA,const btTransform& transB);++	void testLimit(const btTransform& transA,const btTransform& transB);+++	const btTransform& getAFrame() const { return m_rbAFrame; };	+	const btTransform& getBFrame() const { return m_rbBFrame; };++	btTransform& getAFrame() { return m_rbAFrame; };	+	btTransform& getBFrame() { return m_rbBFrame; };++	inline int getSolveLimit()+	{+#ifdef	_BT_USE_CENTER_LIMIT_+	return m_limit.isLimit();+#else+	return m_solveLimit;+#endif+	}++	inline btScalar getLimitSign()+	{+#ifdef	_BT_USE_CENTER_LIMIT_+	return m_limit.getSign();+#else+		return m_limitSign;+#endif+	}++	inline bool getAngularOnly() +	{ +		return m_angularOnly; +	}+	inline bool getEnableAngularMotor() +	{ +		return m_enableAngularMotor; +	}+	inline btScalar getMotorTargetVelosity() +	{ +		return m_motorTargetVelocity; +	}+	inline btScalar getMaxMotorImpulse() +	{ +		return m_maxMotorImpulse; +	}+	// access for UseFrameOffset+	bool getUseFrameOffset() { return m_useOffsetForConstraintFrame; }+	void setUseFrameOffset(bool frameOffsetOnOff) { m_useOffsetForConstraintFrame = frameOffsetOnOff; }+++	///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5). +	///If no axis is provided, it uses the default axis for this constraint.+	virtual	void	setParam(int num, btScalar value, int axis = -1);+	///return the local value of parameter+	virtual	btScalar getParam(int num, int axis = -1) const;++	virtual	int	calculateSerializeBufferSize() const;++	///fills the dataBuffer and returns the struct name (and 0 on failure)+	virtual	const char*	serialize(void* dataBuffer, btSerializer* serializer) const;+++};++///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64+struct	btHingeConstraintDoubleData+{+	btTypedConstraintData	m_typeConstraintData;+	btTransformDoubleData m_rbAFrame; // constraint axii. Assumes z is hinge axis.+	btTransformDoubleData m_rbBFrame;+	int			m_useReferenceFrameA;+	int			m_angularOnly;+	int			m_enableAngularMotor;+	float	m_motorTargetVelocity;+	float	m_maxMotorImpulse;++	float	m_lowerLimit;+	float	m_upperLimit;+	float	m_limitSoftness;+	float	m_biasFactor;+	float	m_relaxationFactor;++};+///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64+struct	btHingeConstraintFloatData+{+	btTypedConstraintData	m_typeConstraintData;+	btTransformFloatData m_rbAFrame; // constraint axii. Assumes z is hinge axis.+	btTransformFloatData m_rbBFrame;+	int			m_useReferenceFrameA;+	int			m_angularOnly;+	+	int			m_enableAngularMotor;+	float	m_motorTargetVelocity;+	float	m_maxMotorImpulse;++	float	m_lowerLimit;+	float	m_upperLimit;+	float	m_limitSoftness;+	float	m_biasFactor;+	float	m_relaxationFactor;++};++++SIMD_FORCE_INLINE	int	btHingeConstraint::calculateSerializeBufferSize() const+{+	return sizeof(btHingeConstraintData);+}++	///fills the dataBuffer and returns the struct name (and 0 on failure)+SIMD_FORCE_INLINE	const char*	btHingeConstraint::serialize(void* dataBuffer, btSerializer* serializer) const+{+	btHingeConstraintData* hingeData = (btHingeConstraintData*)dataBuffer;+	btTypedConstraint::serialize(&hingeData->m_typeConstraintData,serializer);++	m_rbAFrame.serialize(hingeData->m_rbAFrame);+	m_rbBFrame.serialize(hingeData->m_rbBFrame);++	hingeData->m_angularOnly = m_angularOnly;+	hingeData->m_enableAngularMotor = m_enableAngularMotor;+	hingeData->m_maxMotorImpulse = float(m_maxMotorImpulse);+	hingeData->m_motorTargetVelocity = float(m_motorTargetVelocity);+	hingeData->m_useReferenceFrameA = m_useReferenceFrameA;+#ifdef	_BT_USE_CENTER_LIMIT_+	hingeData->m_lowerLimit = float(m_limit.getLow());+	hingeData->m_upperLimit = float(m_limit.getHigh());+	hingeData->m_limitSoftness = float(m_limit.getSoftness());+	hingeData->m_biasFactor = float(m_limit.getBiasFactor());+	hingeData->m_relaxationFactor = float(m_limit.getRelaxationFactor());+#else+	hingeData->m_lowerLimit = float(m_lowerLimit);+	hingeData->m_upperLimit = float(m_upperLimit);+	hingeData->m_limitSoftness = float(m_limitSoftness);+	hingeData->m_biasFactor = float(m_biasFactor);+	hingeData->m_relaxationFactor = float(m_relaxationFactor);+#endif++	return btHingeConstraintDataName;+}++#endif //BT_HINGECONSTRAINT_H
+ bullet/BulletDynamics/ConstraintSolver/btJacobianEntry.h view
@@ -0,0 +1,156 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_JACOBIAN_ENTRY_H+#define BT_JACOBIAN_ENTRY_H++#include "LinearMath/btVector3.h"+#include "BulletDynamics/Dynamics/btRigidBody.h"+++//notes:+// Another memory optimization would be to store m_1MinvJt in the remaining 3 w components+// which makes the btJacobianEntry memory layout 16 bytes+// if you only are interested in angular part, just feed massInvA and massInvB zero++/// Jacobian entry is an abstraction that allows to describe constraints+/// it can be used in combination with a constraint solver+/// Can be used to relate the effect of an impulse to the constraint error+ATTRIBUTE_ALIGNED16(class) btJacobianEntry+{+public:+	btJacobianEntry() {};+	//constraint between two different rigidbodies+	btJacobianEntry(+		const btMatrix3x3& world2A,+		const btMatrix3x3& world2B,+		const btVector3& rel_pos1,const btVector3& rel_pos2,+		const btVector3& jointAxis,+		const btVector3& inertiaInvA, +		const btScalar massInvA,+		const btVector3& inertiaInvB,+		const btScalar massInvB)+		:m_linearJointAxis(jointAxis)+	{+		m_aJ = world2A*(rel_pos1.cross(m_linearJointAxis));+		m_bJ = world2B*(rel_pos2.cross(-m_linearJointAxis));+		m_0MinvJt	= inertiaInvA * m_aJ;+		m_1MinvJt = inertiaInvB * m_bJ;+		m_Adiag = massInvA + m_0MinvJt.dot(m_aJ) + massInvB + m_1MinvJt.dot(m_bJ);++		btAssert(m_Adiag > btScalar(0.0));+	}++	//angular constraint between two different rigidbodies+	btJacobianEntry(const btVector3& jointAxis,+		const btMatrix3x3& world2A,+		const btMatrix3x3& world2B,+		const btVector3& inertiaInvA,+		const btVector3& inertiaInvB)+		:m_linearJointAxis(btVector3(btScalar(0.),btScalar(0.),btScalar(0.)))+	{+		m_aJ= world2A*jointAxis;+		m_bJ = world2B*-jointAxis;+		m_0MinvJt	= inertiaInvA * m_aJ;+		m_1MinvJt = inertiaInvB * m_bJ;+		m_Adiag =  m_0MinvJt.dot(m_aJ) + m_1MinvJt.dot(m_bJ);++		btAssert(m_Adiag > btScalar(0.0));+	}++	//angular constraint between two different rigidbodies+	btJacobianEntry(const btVector3& axisInA,+		const btVector3& axisInB,+		const btVector3& inertiaInvA,+		const btVector3& inertiaInvB)+		: m_linearJointAxis(btVector3(btScalar(0.),btScalar(0.),btScalar(0.)))+		, m_aJ(axisInA)+		, m_bJ(-axisInB)+	{+		m_0MinvJt	= inertiaInvA * m_aJ;+		m_1MinvJt = inertiaInvB * m_bJ;+		m_Adiag =  m_0MinvJt.dot(m_aJ) + m_1MinvJt.dot(m_bJ);++		btAssert(m_Adiag > btScalar(0.0));+	}++	//constraint on one rigidbody+	btJacobianEntry(+		const btMatrix3x3& world2A,+		const btVector3& rel_pos1,const btVector3& rel_pos2,+		const btVector3& jointAxis,+		const btVector3& inertiaInvA, +		const btScalar massInvA)+		:m_linearJointAxis(jointAxis)+	{+		m_aJ= world2A*(rel_pos1.cross(jointAxis));+		m_bJ = world2A*(rel_pos2.cross(-jointAxis));+		m_0MinvJt	= inertiaInvA * m_aJ;+		m_1MinvJt = btVector3(btScalar(0.),btScalar(0.),btScalar(0.));+		m_Adiag = massInvA + m_0MinvJt.dot(m_aJ);++		btAssert(m_Adiag > btScalar(0.0));+	}++	btScalar	getDiagonal() const { return m_Adiag; }++	// for two constraints on the same rigidbody (for example vehicle friction)+	btScalar	getNonDiagonal(const btJacobianEntry& jacB, const btScalar massInvA) const+	{+		const btJacobianEntry& jacA = *this;+		btScalar lin = massInvA * jacA.m_linearJointAxis.dot(jacB.m_linearJointAxis);+		btScalar ang = jacA.m_0MinvJt.dot(jacB.m_aJ);+		return lin + ang;+	}++	++	// for two constraints on sharing two same rigidbodies (for example two contact points between two rigidbodies)+	btScalar	getNonDiagonal(const btJacobianEntry& jacB,const btScalar massInvA,const btScalar massInvB) const+	{+		const btJacobianEntry& jacA = *this;+		btVector3 lin = jacA.m_linearJointAxis * jacB.m_linearJointAxis;+		btVector3 ang0 = jacA.m_0MinvJt * jacB.m_aJ;+		btVector3 ang1 = jacA.m_1MinvJt * jacB.m_bJ;+		btVector3 lin0 = massInvA * lin ;+		btVector3 lin1 = massInvB * lin;+		btVector3 sum = ang0+ang1+lin0+lin1;+		return sum[0]+sum[1]+sum[2];+	}++	btScalar getRelativeVelocity(const btVector3& linvelA,const btVector3& angvelA,const btVector3& linvelB,const btVector3& angvelB)+	{+		btVector3 linrel = linvelA - linvelB;+		btVector3 angvela  = angvelA * m_aJ;+		btVector3 angvelb  = angvelB * m_bJ;+		linrel *= m_linearJointAxis;+		angvela += angvelb;+		angvela += linrel;+		btScalar rel_vel2 = angvela[0]+angvela[1]+angvela[2];+		return rel_vel2 + SIMD_EPSILON;+	}+//private:++	btVector3	m_linearJointAxis;+	btVector3	m_aJ;+	btVector3	m_bJ;+	btVector3	m_0MinvJt;+	btVector3	m_1MinvJt;+	//Optimization: can be stored in the w/last component of one of the vectors+	btScalar	m_Adiag;++};++#endif //BT_JACOBIAN_ENTRY_H
+ bullet/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h view
@@ -0,0 +1,161 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_POINT2POINTCONSTRAINT_H+#define BT_POINT2POINTCONSTRAINT_H++#include "LinearMath/btVector3.h"+#include "btJacobianEntry.h"+#include "btTypedConstraint.h"++class btRigidBody;+++#ifdef BT_USE_DOUBLE_PRECISION+#define btPoint2PointConstraintData	btPoint2PointConstraintDoubleData+#define btPoint2PointConstraintDataName	"btPoint2PointConstraintDoubleData"+#else+#define btPoint2PointConstraintData	btPoint2PointConstraintFloatData+#define btPoint2PointConstraintDataName	"btPoint2PointConstraintFloatData"+#endif //BT_USE_DOUBLE_PRECISION++struct	btConstraintSetting+{+	btConstraintSetting()	:+		m_tau(btScalar(0.3)),+		m_damping(btScalar(1.)),+		m_impulseClamp(btScalar(0.))+	{+	}+	btScalar		m_tau;+	btScalar		m_damping;+	btScalar		m_impulseClamp;+};++enum btPoint2PointFlags+{+	BT_P2P_FLAGS_ERP = 1,+	BT_P2P_FLAGS_CFM = 2+};++/// point to point constraint between two rigidbodies each with a pivotpoint that descibes the 'ballsocket' location in local space+ATTRIBUTE_ALIGNED16(class) btPoint2PointConstraint : public btTypedConstraint+{+#ifdef IN_PARALLELL_SOLVER+public:+#endif+	btJacobianEntry	m_jac[3]; //3 orthogonal linear constraints+	+	btVector3	m_pivotInA;+	btVector3	m_pivotInB;+	+	int			m_flags;+	btScalar	m_erp;+	btScalar	m_cfm;+	+public:++	///for backwards compatibility during the transition to 'getInfo/getInfo2'+	bool		m_useSolveConstraintObsolete;++	btConstraintSetting	m_setting;++	btPoint2PointConstraint(btRigidBody& rbA,btRigidBody& rbB, const btVector3& pivotInA,const btVector3& pivotInB);++	btPoint2PointConstraint(btRigidBody& rbA,const btVector3& pivotInA);+++	virtual void	buildJacobian();++	virtual void getInfo1 (btConstraintInfo1* info);++	void getInfo1NonVirtual (btConstraintInfo1* info);++	virtual void getInfo2 (btConstraintInfo2* info);++	void getInfo2NonVirtual (btConstraintInfo2* info, const btTransform& body0_trans, const btTransform& body1_trans);++	void	updateRHS(btScalar	timeStep);++	void	setPivotA(const btVector3& pivotA)+	{+		m_pivotInA = pivotA;+	}++	void	setPivotB(const btVector3& pivotB)+	{+		m_pivotInB = pivotB;+	}++	const btVector3& getPivotInA() const+	{+		return m_pivotInA;+	}++	const btVector3& getPivotInB() const+	{+		return m_pivotInB;+	}++	///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5). +	///If no axis is provided, it uses the default axis for this constraint.+	virtual	void	setParam(int num, btScalar value, int axis = -1);+	///return the local value of parameter+	virtual	btScalar getParam(int num, int axis = -1) const;++	virtual	int	calculateSerializeBufferSize() const;++	///fills the dataBuffer and returns the struct name (and 0 on failure)+	virtual	const char*	serialize(void* dataBuffer, btSerializer* serializer) const;+++};++///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64+struct	btPoint2PointConstraintFloatData+{+	btTypedConstraintData	m_typeConstraintData;+	btVector3FloatData	m_pivotInA;+	btVector3FloatData	m_pivotInB;+};++///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64+struct	btPoint2PointConstraintDoubleData+{+	btTypedConstraintData	m_typeConstraintData;+	btVector3DoubleData	m_pivotInA;+	btVector3DoubleData	m_pivotInB;+};+++SIMD_FORCE_INLINE	int	btPoint2PointConstraint::calculateSerializeBufferSize() const+{+	return sizeof(btPoint2PointConstraintData);++}++	///fills the dataBuffer and returns the struct name (and 0 on failure)+SIMD_FORCE_INLINE	const char*	btPoint2PointConstraint::serialize(void* dataBuffer, btSerializer* serializer) const+{+	btPoint2PointConstraintData* p2pData = (btPoint2PointConstraintData*)dataBuffer;++	btTypedConstraint::serialize(&p2pData->m_typeConstraintData,serializer);+	m_pivotInA.serialize(p2pData->m_pivotInA);+	m_pivotInB.serialize(p2pData->m_pivotInB);++	return btPoint2PointConstraintDataName;+}++#endif //BT_POINT2POINTCONSTRAINT_H
+ bullet/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h view
@@ -0,0 +1,128 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_SEQUENTIAL_IMPULSE_CONSTRAINT_SOLVER_H+#define BT_SEQUENTIAL_IMPULSE_CONSTRAINT_SOLVER_H++#include "btConstraintSolver.h"+class btIDebugDraw;+#include "btContactConstraint.h"+#include "btSolverBody.h"+#include "btSolverConstraint.h"+#include "btTypedConstraint.h"+#include "BulletCollision/NarrowPhaseCollision/btManifoldPoint.h"++///The btSequentialImpulseConstraintSolver is a fast SIMD implementation of the Projected Gauss Seidel (iterative LCP) method.+class btSequentialImpulseConstraintSolver : public btConstraintSolver+{+protected:++	btConstraintArray			m_tmpSolverContactConstraintPool;+	btConstraintArray			m_tmpSolverNonContactConstraintPool;+	btConstraintArray			m_tmpSolverContactFrictionConstraintPool;+	btAlignedObjectArray<int>	m_orderTmpConstraintPool;+	btAlignedObjectArray<int>	m_orderFrictionConstraintPool;+	btAlignedObjectArray<btTypedConstraint::btConstraintInfo1> m_tmpConstraintSizesPool;++	void setupFrictionConstraint(	btSolverConstraint& solverConstraint, const btVector3& normalAxis,btRigidBody* solverBodyA,btRigidBody* solverBodyIdB,+									btManifoldPoint& cp,const btVector3& rel_pos1,const btVector3& rel_pos2,+									btCollisionObject* colObj0,btCollisionObject* colObj1, btScalar relaxation, +									btScalar desiredVelocity=0., btScalar cfmSlip=0.);++	btSolverConstraint&	addFrictionConstraint(const btVector3& normalAxis,btRigidBody* solverBodyA,btRigidBody* solverBodyB,int frictionIndex,btManifoldPoint& cp,const btVector3& rel_pos1,const btVector3& rel_pos2,btCollisionObject* colObj0,btCollisionObject* colObj1, btScalar relaxation, btScalar desiredVelocity=0., btScalar cfmSlip=0.);+	+	void setupContactConstraint(btSolverConstraint& solverConstraint, btCollisionObject* colObj0, btCollisionObject* colObj1, btManifoldPoint& cp, +								const btContactSolverInfo& infoGlobal, btVector3& vel, btScalar& rel_vel, btScalar& relaxation, +								btVector3& rel_pos1, btVector3& rel_pos2);++	void setFrictionConstraintImpulse( btSolverConstraint& solverConstraint, btRigidBody* rb0, btRigidBody* rb1, +										 btManifoldPoint& cp, const btContactSolverInfo& infoGlobal);++	///m_btSeed2 is used for re-arranging the constraint rows. improves convergence/quality of friction+	unsigned long	m_btSeed2;++//	void	initSolverBody(btSolverBody* solverBody, btCollisionObject* collisionObject);+	btScalar restitutionCurve(btScalar rel_vel, btScalar restitution);++	void	convertContact(btPersistentManifold* manifold,const btContactSolverInfo& infoGlobal);+++	void	resolveSplitPenetrationSIMD(+        btRigidBody& body1,+        btRigidBody& body2,+        const btSolverConstraint& contactConstraint);++	void	resolveSplitPenetrationImpulseCacheFriendly(+        btRigidBody& body1,+        btRigidBody& body2,+        const btSolverConstraint& contactConstraint);++	//internal method+	int	getOrInitSolverBody(btCollisionObject& body);++	void	resolveSingleConstraintRowGeneric(btRigidBody& body1,btRigidBody& body2,const btSolverConstraint& contactConstraint);++	void	resolveSingleConstraintRowGenericSIMD(btRigidBody& body1,btRigidBody& body2,const btSolverConstraint& contactConstraint);+	+	void	resolveSingleConstraintRowLowerLimit(btRigidBody& body1,btRigidBody& body2,const btSolverConstraint& contactConstraint);+	+	void	resolveSingleConstraintRowLowerLimitSIMD(btRigidBody& body1,btRigidBody& body2,const btSolverConstraint& contactConstraint);+		+protected:+	static btRigidBody& getFixedBody();+	+	virtual void solveGroupCacheFriendlySplitImpulseIterations(btCollisionObject** bodies,int numBodies,btPersistentManifold** manifoldPtr, int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal,btIDebugDraw* debugDrawer,btStackAlloc* stackAlloc);+	virtual btScalar solveGroupCacheFriendlyFinish(btCollisionObject** bodies ,int numBodies,btPersistentManifold** manifoldPtr, int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal,btIDebugDraw* debugDrawer,btStackAlloc* stackAlloc);+	btScalar solveSingleIteration(int iteration, btCollisionObject** bodies ,int numBodies,btPersistentManifold** manifoldPtr, int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal,btIDebugDraw* debugDrawer,btStackAlloc* stackAlloc);++	virtual btScalar solveGroupCacheFriendlySetup(btCollisionObject** bodies,int numBodies,btPersistentManifold** manifoldPtr, int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal,btIDebugDraw* debugDrawer,btStackAlloc* stackAlloc);+	virtual btScalar solveGroupCacheFriendlyIterations(btCollisionObject** bodies,int numBodies,btPersistentManifold** manifoldPtr, int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal,btIDebugDraw* debugDrawer,btStackAlloc* stackAlloc);+++public:++	+	btSequentialImpulseConstraintSolver();+	virtual ~btSequentialImpulseConstraintSolver();++	virtual btScalar solveGroup(btCollisionObject** bodies,int numBodies,btPersistentManifold** manifold,int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& info, btIDebugDraw* debugDrawer, btStackAlloc* stackAlloc,btDispatcher* dispatcher);+	++	+	///clear internal cached data and reset random seed+	virtual	void	reset();+	+	unsigned long btRand2();++	int btRandInt2 (int n);++	void	setRandSeed(unsigned long seed)+	{+		m_btSeed2 = seed;+	}+	unsigned long	getRandSeed() const+	{+		return m_btSeed2;+	}++};++#ifndef BT_PREFER_SIMD+typedef btSequentialImpulseConstraintSolver btSequentialImpulseConstraintSolverPrefered;+#endif+++#endif //BT_SEQUENTIAL_IMPULSE_CONSTRAINT_SOLVER_H+
+ bullet/BulletDynamics/ConstraintSolver/btSliderConstraint.h view
@@ -0,0 +1,333 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose,+including commercial applications, and to alter it and redistribute it freely,+subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++/*+Added by Roman Ponomarev (rponom@gmail.com)+April 04, 2008++TODO:+ - add clamping od accumulated impulse to improve stability+ - add conversion for ODE constraint solver+*/++#ifndef BT_SLIDER_CONSTRAINT_H+#define BT_SLIDER_CONSTRAINT_H++++#include "LinearMath/btVector3.h"+#include "btJacobianEntry.h"+#include "btTypedConstraint.h"++++class btRigidBody;++++#define SLIDER_CONSTRAINT_DEF_SOFTNESS		(btScalar(1.0))+#define SLIDER_CONSTRAINT_DEF_DAMPING		(btScalar(1.0))+#define SLIDER_CONSTRAINT_DEF_RESTITUTION	(btScalar(0.7))+#define SLIDER_CONSTRAINT_DEF_CFM			(btScalar(0.f))+++enum btSliderFlags+{+	BT_SLIDER_FLAGS_CFM_DIRLIN = (1 << 0),+	BT_SLIDER_FLAGS_ERP_DIRLIN = (1 << 1),+	BT_SLIDER_FLAGS_CFM_DIRANG = (1 << 2),+	BT_SLIDER_FLAGS_ERP_DIRANG = (1 << 3),+	BT_SLIDER_FLAGS_CFM_ORTLIN = (1 << 4),+	BT_SLIDER_FLAGS_ERP_ORTLIN = (1 << 5),+	BT_SLIDER_FLAGS_CFM_ORTANG = (1 << 6),+	BT_SLIDER_FLAGS_ERP_ORTANG = (1 << 7),+	BT_SLIDER_FLAGS_CFM_LIMLIN = (1 << 8),+	BT_SLIDER_FLAGS_ERP_LIMLIN = (1 << 9),+	BT_SLIDER_FLAGS_CFM_LIMANG = (1 << 10),+	BT_SLIDER_FLAGS_ERP_LIMANG = (1 << 11)+};+++class btSliderConstraint : public btTypedConstraint+{+protected:+	///for backwards compatibility during the transition to 'getInfo/getInfo2'+	bool		m_useSolveConstraintObsolete;+	bool		m_useOffsetForConstraintFrame;+	btTransform	m_frameInA;+    btTransform	m_frameInB;+	// use frameA fo define limits, if true+	bool m_useLinearReferenceFrameA;+	// linear limits+	btScalar m_lowerLinLimit;+	btScalar m_upperLinLimit;+	// angular limits+	btScalar m_lowerAngLimit;+	btScalar m_upperAngLimit;+	// softness, restitution and damping for different cases+	// DirLin - moving inside linear limits+	// LimLin - hitting linear limit+	// DirAng - moving inside angular limits+	// LimAng - hitting angular limit+	// OrthoLin, OrthoAng - against constraint axis+	btScalar m_softnessDirLin;+	btScalar m_restitutionDirLin;+	btScalar m_dampingDirLin;+	btScalar m_cfmDirLin;++	btScalar m_softnessDirAng;+	btScalar m_restitutionDirAng;+	btScalar m_dampingDirAng;+	btScalar m_cfmDirAng;++	btScalar m_softnessLimLin;+	btScalar m_restitutionLimLin;+	btScalar m_dampingLimLin;+	btScalar m_cfmLimLin;++	btScalar m_softnessLimAng;+	btScalar m_restitutionLimAng;+	btScalar m_dampingLimAng;+	btScalar m_cfmLimAng;++	btScalar m_softnessOrthoLin;+	btScalar m_restitutionOrthoLin;+	btScalar m_dampingOrthoLin;+	btScalar m_cfmOrthoLin;++	btScalar m_softnessOrthoAng;+	btScalar m_restitutionOrthoAng;+	btScalar m_dampingOrthoAng;+	btScalar m_cfmOrthoAng;+	+	// for interlal use+	bool m_solveLinLim;+	bool m_solveAngLim;++	int m_flags;++	btJacobianEntry	m_jacLin[3];+	btScalar		m_jacLinDiagABInv[3];++    btJacobianEntry	m_jacAng[3];++	btScalar m_timeStep;+    btTransform m_calculatedTransformA;+    btTransform m_calculatedTransformB;++	btVector3 m_sliderAxis;+	btVector3 m_realPivotAInW;+	btVector3 m_realPivotBInW;+	btVector3 m_projPivotInW;+	btVector3 m_delta;+	btVector3 m_depth;+	btVector3 m_relPosA;+	btVector3 m_relPosB;++	btScalar m_linPos;+	btScalar m_angPos;++	btScalar m_angDepth;+	btScalar m_kAngle;++	bool	 m_poweredLinMotor;+    btScalar m_targetLinMotorVelocity;+    btScalar m_maxLinMotorForce;+    btScalar m_accumulatedLinMotorImpulse;+	+	bool	 m_poweredAngMotor;+    btScalar m_targetAngMotorVelocity;+    btScalar m_maxAngMotorForce;+    btScalar m_accumulatedAngMotorImpulse;++	//------------------------    +	void initParams();+public:+	// constructors+    btSliderConstraint(btRigidBody& rbA, btRigidBody& rbB, const btTransform& frameInA, const btTransform& frameInB ,bool useLinearReferenceFrameA);+    btSliderConstraint(btRigidBody& rbB, const btTransform& frameInB, bool useLinearReferenceFrameA);++	// overrides++    virtual void getInfo1 (btConstraintInfo1* info);++	void getInfo1NonVirtual(btConstraintInfo1* info);+	+	virtual void getInfo2 (btConstraintInfo2* info);++	void getInfo2NonVirtual(btConstraintInfo2* info, const btTransform& transA, const btTransform& transB,const btVector3& linVelA,const btVector3& linVelB, btScalar rbAinvMass,btScalar rbBinvMass);+++	// access+    const btRigidBody& getRigidBodyA() const { return m_rbA; }+    const btRigidBody& getRigidBodyB() const { return m_rbB; }+    const btTransform & getCalculatedTransformA() const { return m_calculatedTransformA; }+    const btTransform & getCalculatedTransformB() const { return m_calculatedTransformB; }+    const btTransform & getFrameOffsetA() const { return m_frameInA; }+    const btTransform & getFrameOffsetB() const { return m_frameInB; }+    btTransform & getFrameOffsetA() { return m_frameInA; }+    btTransform & getFrameOffsetB() { return m_frameInB; }+    btScalar getLowerLinLimit() { return m_lowerLinLimit; }+    void setLowerLinLimit(btScalar lowerLimit) { m_lowerLinLimit = lowerLimit; }+    btScalar getUpperLinLimit() { return m_upperLinLimit; }+    void setUpperLinLimit(btScalar upperLimit) { m_upperLinLimit = upperLimit; }+    btScalar getLowerAngLimit() { return m_lowerAngLimit; }+    void setLowerAngLimit(btScalar lowerLimit) { m_lowerAngLimit = btNormalizeAngle(lowerLimit); }+    btScalar getUpperAngLimit() { return m_upperAngLimit; }+    void setUpperAngLimit(btScalar upperLimit) { m_upperAngLimit = btNormalizeAngle(upperLimit); }+	bool getUseLinearReferenceFrameA() { return m_useLinearReferenceFrameA; }+	btScalar getSoftnessDirLin() { return m_softnessDirLin; }+	btScalar getRestitutionDirLin() { return m_restitutionDirLin; }+	btScalar getDampingDirLin() { return m_dampingDirLin ; }+	btScalar getSoftnessDirAng() { return m_softnessDirAng; }+	btScalar getRestitutionDirAng() { return m_restitutionDirAng; }+	btScalar getDampingDirAng() { return m_dampingDirAng; }+	btScalar getSoftnessLimLin() { return m_softnessLimLin; }+	btScalar getRestitutionLimLin() { return m_restitutionLimLin; }+	btScalar getDampingLimLin() { return m_dampingLimLin; }+	btScalar getSoftnessLimAng() { return m_softnessLimAng; }+	btScalar getRestitutionLimAng() { return m_restitutionLimAng; }+	btScalar getDampingLimAng() { return m_dampingLimAng; }+	btScalar getSoftnessOrthoLin() { return m_softnessOrthoLin; }+	btScalar getRestitutionOrthoLin() { return m_restitutionOrthoLin; }+	btScalar getDampingOrthoLin() { return m_dampingOrthoLin; }+	btScalar getSoftnessOrthoAng() { return m_softnessOrthoAng; }+	btScalar getRestitutionOrthoAng() { return m_restitutionOrthoAng; }+	btScalar getDampingOrthoAng() { return m_dampingOrthoAng; }+	void setSoftnessDirLin(btScalar softnessDirLin) { m_softnessDirLin = softnessDirLin; }+	void setRestitutionDirLin(btScalar restitutionDirLin) { m_restitutionDirLin = restitutionDirLin; }+	void setDampingDirLin(btScalar dampingDirLin) { m_dampingDirLin = dampingDirLin; }+	void setSoftnessDirAng(btScalar softnessDirAng) { m_softnessDirAng = softnessDirAng; }+	void setRestitutionDirAng(btScalar restitutionDirAng) { m_restitutionDirAng = restitutionDirAng; }+	void setDampingDirAng(btScalar dampingDirAng) { m_dampingDirAng = dampingDirAng; }+	void setSoftnessLimLin(btScalar softnessLimLin) { m_softnessLimLin = softnessLimLin; }+	void setRestitutionLimLin(btScalar restitutionLimLin) { m_restitutionLimLin = restitutionLimLin; }+	void setDampingLimLin(btScalar dampingLimLin) { m_dampingLimLin = dampingLimLin; }+	void setSoftnessLimAng(btScalar softnessLimAng) { m_softnessLimAng = softnessLimAng; }+	void setRestitutionLimAng(btScalar restitutionLimAng) { m_restitutionLimAng = restitutionLimAng; }+	void setDampingLimAng(btScalar dampingLimAng) { m_dampingLimAng = dampingLimAng; }+	void setSoftnessOrthoLin(btScalar softnessOrthoLin) { m_softnessOrthoLin = softnessOrthoLin; }+	void setRestitutionOrthoLin(btScalar restitutionOrthoLin) { m_restitutionOrthoLin = restitutionOrthoLin; }+	void setDampingOrthoLin(btScalar dampingOrthoLin) { m_dampingOrthoLin = dampingOrthoLin; }+	void setSoftnessOrthoAng(btScalar softnessOrthoAng) { m_softnessOrthoAng = softnessOrthoAng; }+	void setRestitutionOrthoAng(btScalar restitutionOrthoAng) { m_restitutionOrthoAng = restitutionOrthoAng; }+	void setDampingOrthoAng(btScalar dampingOrthoAng) { m_dampingOrthoAng = dampingOrthoAng; }+	void setPoweredLinMotor(bool onOff) { m_poweredLinMotor = onOff; }+	bool getPoweredLinMotor() { return m_poweredLinMotor; }+	void setTargetLinMotorVelocity(btScalar targetLinMotorVelocity) { m_targetLinMotorVelocity = targetLinMotorVelocity; }+	btScalar getTargetLinMotorVelocity() { return m_targetLinMotorVelocity; }+	void setMaxLinMotorForce(btScalar maxLinMotorForce) { m_maxLinMotorForce = maxLinMotorForce; }+	btScalar getMaxLinMotorForce() { return m_maxLinMotorForce; }+	void setPoweredAngMotor(bool onOff) { m_poweredAngMotor = onOff; }+	bool getPoweredAngMotor() { return m_poweredAngMotor; }+	void setTargetAngMotorVelocity(btScalar targetAngMotorVelocity) { m_targetAngMotorVelocity = targetAngMotorVelocity; }+	btScalar getTargetAngMotorVelocity() { return m_targetAngMotorVelocity; }+	void setMaxAngMotorForce(btScalar maxAngMotorForce) { m_maxAngMotorForce = maxAngMotorForce; }+	btScalar getMaxAngMotorForce() { return m_maxAngMotorForce; }++	btScalar getLinearPos() const { return m_linPos; }+	btScalar getAngularPos() const { return m_angPos; }+	+	++	// access for ODE solver+	bool getSolveLinLimit() { return m_solveLinLim; }+	btScalar getLinDepth() { return m_depth[0]; }+	bool getSolveAngLimit() { return m_solveAngLim; }+	btScalar getAngDepth() { return m_angDepth; }+	// shared code used by ODE solver+	void	calculateTransforms(const btTransform& transA,const btTransform& transB);+	void	testLinLimits();+	void	testAngLimits();+	// access for PE Solver+	btVector3 getAncorInA();+	btVector3 getAncorInB();+	// access for UseFrameOffset+	bool getUseFrameOffset() { return m_useOffsetForConstraintFrame; }+	void setUseFrameOffset(bool frameOffsetOnOff) { m_useOffsetForConstraintFrame = frameOffsetOnOff; }++	void setFrames(const btTransform& frameA, const btTransform& frameB) +	{ +		m_frameInA=frameA; +		m_frameInB=frameB;+		calculateTransforms(m_rbA.getCenterOfMassTransform(),m_rbB.getCenterOfMassTransform());+		buildJacobian();+	} +++	///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5). +	///If no axis is provided, it uses the default axis for this constraint.+	virtual	void	setParam(int num, btScalar value, int axis = -1);+	///return the local value of parameter+	virtual	btScalar getParam(int num, int axis = -1) const;++	virtual	int	calculateSerializeBufferSize() const;++	///fills the dataBuffer and returns the struct name (and 0 on failure)+	virtual	const char*	serialize(void* dataBuffer, btSerializer* serializer) const;+++};++///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64+struct btSliderConstraintData+{+	btTypedConstraintData	m_typeConstraintData;+	btTransformFloatData m_rbAFrame; // constraint axii. Assumes z is hinge axis.+	btTransformFloatData m_rbBFrame;+	+	float	m_linearUpperLimit;+	float	m_linearLowerLimit;++	float	m_angularUpperLimit;+	float	m_angularLowerLimit;++	int	m_useLinearReferenceFrameA;+	int m_useOffsetForConstraintFrame;++};+++SIMD_FORCE_INLINE		int	btSliderConstraint::calculateSerializeBufferSize() const+{+	return sizeof(btSliderConstraintData);+}++	///fills the dataBuffer and returns the struct name (and 0 on failure)+SIMD_FORCE_INLINE	const char*	btSliderConstraint::serialize(void* dataBuffer, btSerializer* serializer) const+{++	btSliderConstraintData* sliderData = (btSliderConstraintData*) dataBuffer;+	btTypedConstraint::serialize(&sliderData->m_typeConstraintData,serializer);++	m_frameInA.serializeFloat(sliderData->m_rbAFrame);+	m_frameInB.serializeFloat(sliderData->m_rbBFrame);++	sliderData->m_linearUpperLimit = float(m_upperLinLimit);+	sliderData->m_linearLowerLimit = float(m_lowerLinLimit);++	sliderData->m_angularUpperLimit = float(m_upperAngLimit);+	sliderData->m_angularLowerLimit = float(m_lowerAngLimit);++	sliderData->m_useLinearReferenceFrameA = m_useLinearReferenceFrameA;+	sliderData->m_useOffsetForConstraintFrame = m_useOffsetForConstraintFrame;++	return "btSliderConstraintData";+}++++#endif //BT_SLIDER_CONSTRAINT_H+
+ bullet/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.h view
@@ -0,0 +1,107 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_SOLVE_2LINEAR_CONSTRAINT_H+#define BT_SOLVE_2LINEAR_CONSTRAINT_H++#include "LinearMath/btMatrix3x3.h"+#include "LinearMath/btVector3.h"+++class btRigidBody;++++/// constraint class used for lateral tyre friction.+class	btSolve2LinearConstraint+{+	btScalar	m_tau;+	btScalar	m_damping;++public:++	btSolve2LinearConstraint(btScalar tau,btScalar damping)+	{+		m_tau = tau;+		m_damping = damping;+	}+	//+	// solve unilateral constraint (equality, direct method)+	//+	void resolveUnilateralPairConstraint(		+														   btRigidBody* body0,+		btRigidBody* body1,++		const btMatrix3x3& world2A,+						const btMatrix3x3& world2B,+						+						const btVector3& invInertiaADiag,+						const btScalar invMassA,+						const btVector3& linvelA,const btVector3& angvelA,+						const btVector3& rel_posA1,+						const btVector3& invInertiaBDiag,+						const btScalar invMassB,+						const btVector3& linvelB,const btVector3& angvelB,+						const btVector3& rel_posA2,++					  btScalar depthA, const btVector3& normalA, +					  const btVector3& rel_posB1,const btVector3& rel_posB2,+					  btScalar depthB, const btVector3& normalB, +					  btScalar& imp0,btScalar& imp1);+++	//+	// solving 2x2 lcp problem (inequality, direct solution )+	//+	void resolveBilateralPairConstraint(+			btRigidBody* body0,+						btRigidBody* body1,+		const btMatrix3x3& world2A,+						const btMatrix3x3& world2B,+						+						const btVector3& invInertiaADiag,+						const btScalar invMassA,+						const btVector3& linvelA,const btVector3& angvelA,+						const btVector3& rel_posA1,+						const btVector3& invInertiaBDiag,+						const btScalar invMassB,+						const btVector3& linvelB,const btVector3& angvelB,+						const btVector3& rel_posA2,++					  btScalar depthA, const btVector3& normalA, +					  const btVector3& rel_posB1,const btVector3& rel_posB2,+					  btScalar depthB, const btVector3& normalB, +					  btScalar& imp0,btScalar& imp1);++/*+	void resolveAngularConstraint(	const btMatrix3x3& invInertiaAWS,+						const btScalar invMassA,+						const btVector3& linvelA,const btVector3& angvelA,+						const btVector3& rel_posA1,+						const btMatrix3x3& invInertiaBWS,+						const btScalar invMassB,+						const btVector3& linvelB,const btVector3& angvelB,+						const btVector3& rel_posA2,++					  btScalar depthA, const btVector3& normalA, +					  const btVector3& rel_posB1,const btVector3& rel_posB2,+					  btScalar depthB, const btVector3& normalB, +					  btScalar& imp0,btScalar& imp1);++*/++};++#endif //BT_SOLVE_2LINEAR_CONSTRAINT_H
+ bullet/BulletDynamics/ConstraintSolver/btSolverBody.h view
@@ -0,0 +1,191 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_SOLVER_BODY_H+#define BT_SOLVER_BODY_H++class	btRigidBody;+#include "LinearMath/btVector3.h"+#include "LinearMath/btMatrix3x3.h"+#include "BulletDynamics/Dynamics/btRigidBody.h"+#include "LinearMath/btAlignedAllocator.h"+#include "LinearMath/btTransformUtil.h"++///Until we get other contributions, only use SIMD on Windows, when using Visual Studio 2008 or later, and not double precision+#ifdef BT_USE_SSE+#define USE_SIMD 1+#endif //+++#ifdef USE_SIMD++struct	btSimdScalar+{+	SIMD_FORCE_INLINE	btSimdScalar()+	{++	}++	SIMD_FORCE_INLINE	btSimdScalar(float	fl)+	:m_vec128 (_mm_set1_ps(fl))+	{+	}++	SIMD_FORCE_INLINE	btSimdScalar(__m128 v128)+		:m_vec128(v128)+	{+	}+	union+	{+		__m128		m_vec128;+		float		m_floats[4];+		int			m_ints[4];+		btScalar	m_unusedPadding;+	};+	SIMD_FORCE_INLINE	__m128	get128()+	{+		return m_vec128;+	}++	SIMD_FORCE_INLINE	const __m128	get128() const+	{+		return m_vec128;+	}++	SIMD_FORCE_INLINE	void	set128(__m128 v128)+	{+		m_vec128 = v128;+	}++	SIMD_FORCE_INLINE	operator       __m128()       +	{ +		return m_vec128; +	}+	SIMD_FORCE_INLINE	operator const __m128() const +	{ +		return m_vec128; +	}+	+	SIMD_FORCE_INLINE	operator float() const +	{ +		return m_floats[0]; +	}++};++///@brief Return the elementwise product of two btSimdScalar+SIMD_FORCE_INLINE btSimdScalar +operator*(const btSimdScalar& v1, const btSimdScalar& v2) +{+	return btSimdScalar(_mm_mul_ps(v1.get128(),v2.get128()));+}++///@brief Return the elementwise product of two btSimdScalar+SIMD_FORCE_INLINE btSimdScalar +operator+(const btSimdScalar& v1, const btSimdScalar& v2) +{+	return btSimdScalar(_mm_add_ps(v1.get128(),v2.get128()));+}+++#else+#define btSimdScalar btScalar+#endif++///The btSolverBody is an internal datastructure for the constraint solver. Only necessary data is packed to increase cache coherence/performance.+ATTRIBUTE_ALIGNED64 (struct)	btSolverBodyObsolete+{+	BT_DECLARE_ALIGNED_ALLOCATOR();+	btVector3		m_deltaLinearVelocity;+	btVector3		m_deltaAngularVelocity;+	btVector3		m_angularFactor;+	btVector3		m_invMass;+	btRigidBody*	m_originalBody;+	btVector3		m_pushVelocity;+	btVector3		m_turnVelocity;++	+	SIMD_FORCE_INLINE void	getVelocityInLocalPointObsolete(const btVector3& rel_pos, btVector3& velocity ) const+	{+		if (m_originalBody)+			velocity = m_originalBody->getLinearVelocity()+m_deltaLinearVelocity + (m_originalBody->getAngularVelocity()+m_deltaAngularVelocity).cross(rel_pos);+		else+			velocity.setValue(0,0,0);+	}++	SIMD_FORCE_INLINE void	getAngularVelocity(btVector3& angVel) const+	{+		if (m_originalBody)+			angVel = m_originalBody->getAngularVelocity()+m_deltaAngularVelocity;+		else+			angVel.setValue(0,0,0);+	}+++	//Optimization for the iterative solver: avoid calculating constant terms involving inertia, normal, relative position+	SIMD_FORCE_INLINE void applyImpulse(const btVector3& linearComponent, const btVector3& angularComponent,const btScalar impulseMagnitude)+	{+		//if (m_invMass)+		{+			m_deltaLinearVelocity += linearComponent*impulseMagnitude;+			m_deltaAngularVelocity += angularComponent*(impulseMagnitude*m_angularFactor);+		}+	}++	SIMD_FORCE_INLINE void internalApplyPushImpulse(const btVector3& linearComponent, const btVector3& angularComponent,btScalar impulseMagnitude)+	{+		if (m_originalBody)+		{+			m_pushVelocity += linearComponent*impulseMagnitude;+			m_turnVelocity += angularComponent*(impulseMagnitude*m_angularFactor);+		}+	}+	+	void	writebackVelocity()+	{+		if (m_originalBody)+		{+			m_originalBody->setLinearVelocity(m_originalBody->getLinearVelocity()+ m_deltaLinearVelocity);+			m_originalBody->setAngularVelocity(m_originalBody->getAngularVelocity()+m_deltaAngularVelocity);+			+			//m_originalBody->setCompanionId(-1);+		}+	}+++	void	writebackVelocity(btScalar timeStep)+	{+        (void) timeStep;+		if (m_originalBody)+		{+			m_originalBody->setLinearVelocity(m_originalBody->getLinearVelocity()+ m_deltaLinearVelocity);+			m_originalBody->setAngularVelocity(m_originalBody->getAngularVelocity()+m_deltaAngularVelocity);+			+			//correct the position/orientation based on push/turn recovery+			btTransform newTransform;+			btTransformUtil::integrateTransform(m_originalBody->getWorldTransform(),m_pushVelocity,m_turnVelocity,timeStep,newTransform);+			m_originalBody->setWorldTransform(newTransform);+			+			//m_originalBody->setCompanionId(-1);+		}+	}+	+++};++#endif //BT_SOLVER_BODY_H++
+ bullet/BulletDynamics/ConstraintSolver/btSolverConstraint.h view
@@ -0,0 +1,96 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_SOLVER_CONSTRAINT_H+#define BT_SOLVER_CONSTRAINT_H++class	btRigidBody;+#include "LinearMath/btVector3.h"+#include "LinearMath/btMatrix3x3.h"+#include "btJacobianEntry.h"++//#define NO_FRICTION_TANGENTIALS 1+#include "btSolverBody.h"+++///1D constraint along a normal axis between bodyA and bodyB. It can be combined to solve contact and friction constraints.+ATTRIBUTE_ALIGNED64 (struct)	btSolverConstraint+{+	BT_DECLARE_ALIGNED_ALLOCATOR();++	btVector3		m_relpos1CrossNormal;+	btVector3		m_contactNormal;++	btVector3		m_relpos2CrossNormal;+	//btVector3		m_contactNormal2;//usually m_contactNormal2 == -m_contactNormal++	btVector3		m_angularComponentA;+	btVector3		m_angularComponentB;+	+	mutable btSimdScalar	m_appliedPushImpulse;+	mutable btSimdScalar	m_appliedImpulse;+	+	+	btScalar	m_friction;+	btScalar	m_jacDiagABInv;+	union+	{+		int	m_numConsecutiveRowsPerKernel;+		btScalar	m_unusedPadding0;+	};++	union+	{+		int			m_frictionIndex;+		btScalar	m_unusedPadding1;+	};+	union+	{+		btRigidBody*	m_solverBodyA;+		int				m_companionIdA;+	};+	union+	{+		btRigidBody*	m_solverBodyB;+		int				m_companionIdB;+	};+	+	union+	{+		void*		m_originalContactPoint;+		btScalar	m_unusedPadding4;+	};++	btScalar		m_rhs;+	btScalar		m_cfm;+	btScalar		m_lowerLimit;+	btScalar		m_upperLimit;++	btScalar		m_rhsPenetration;++	enum		btSolverConstraintType+	{+		BT_SOLVER_CONTACT_1D = 0,+		BT_SOLVER_FRICTION_1D+	};+};++typedef btAlignedObjectArray<btSolverConstraint>	btConstraintArray;+++#endif //BT_SOLVER_CONSTRAINT_H+++
+ bullet/BulletDynamics/ConstraintSolver/btTypedConstraint.h view
@@ -0,0 +1,436 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2010 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_TYPED_CONSTRAINT_H+#define BT_TYPED_CONSTRAINT_H++class btRigidBody;+#include "LinearMath/btScalar.h"+#include "btSolverConstraint.h"++class btSerializer;++//Don't change any of the existing enum values, so add enum types at the end for serialization compatibility+enum btTypedConstraintType+{+	POINT2POINT_CONSTRAINT_TYPE=3,+	HINGE_CONSTRAINT_TYPE,+	CONETWIST_CONSTRAINT_TYPE,+	D6_CONSTRAINT_TYPE,+	SLIDER_CONSTRAINT_TYPE,+	CONTACT_CONSTRAINT_TYPE,+	D6_SPRING_CONSTRAINT_TYPE,+	MAX_CONSTRAINT_TYPE+};+++enum btConstraintParams+{+	BT_CONSTRAINT_ERP=1,+	BT_CONSTRAINT_STOP_ERP,+	BT_CONSTRAINT_CFM,+	BT_CONSTRAINT_STOP_CFM+};++#if 1+	#define btAssertConstrParams(_par) btAssert(_par) +#else+	#define btAssertConstrParams(_par)+#endif+++///TypedConstraint is the baseclass for Bullet constraints and vehicles+class btTypedConstraint : public btTypedObject+{+	int	m_userConstraintType;++	union+	{+		int	m_userConstraintId;+		void* m_userConstraintPtr;+	};++	btScalar	m_breakingImpulseThreshold;+	bool		m_isEnabled;+++	bool m_needsFeedback;++	btTypedConstraint&	operator=(btTypedConstraint&	other)+	{+		btAssert(0);+		(void) other;+		return *this;+	}++protected:+	btRigidBody&	m_rbA;+	btRigidBody&	m_rbB;+	btScalar	m_appliedImpulse;+	btScalar	m_dbgDrawSize;++	///internal method used by the constraint solver, don't use them directly+	btScalar getMotorFactor(btScalar pos, btScalar lowLim, btScalar uppLim, btScalar vel, btScalar timeFact);+	+	static btRigidBody& getFixedBody();++public:++	virtual ~btTypedConstraint() {};+	btTypedConstraint(btTypedConstraintType type, btRigidBody& rbA);+	btTypedConstraint(btTypedConstraintType type, btRigidBody& rbA,btRigidBody& rbB);++	struct btConstraintInfo1 {+		int m_numConstraintRows,nub;+	};++	struct btConstraintInfo2 {+		// integrator parameters: frames per second (1/stepsize), default error+		// reduction parameter (0..1).+		btScalar fps,erp;++		// for the first and second body, pointers to two (linear and angular)+		// n*3 jacobian sub matrices, stored by rows. these matrices will have+		// been initialized to 0 on entry. if the second body is zero then the+		// J2xx pointers may be 0.+		btScalar *m_J1linearAxis,*m_J1angularAxis,*m_J2linearAxis,*m_J2angularAxis;++		// elements to jump from one row to the next in J's+		int rowskip;++		// right hand sides of the equation J*v = c + cfm * lambda. cfm is the+		// "constraint force mixing" vector. c is set to zero on entry, cfm is+		// set to a constant value (typically very small or zero) value on entry.+		btScalar *m_constraintError,*cfm;++		// lo and hi limits for variables (set to -/+ infinity on entry).+		btScalar *m_lowerLimit,*m_upperLimit;++		// findex vector for variables. see the LCP solver interface for a+		// description of what this does. this is set to -1 on entry.+		// note that the returned indexes are relative to the first index of+		// the constraint.+		int *findex;+		// number of solver iterations+		int m_numIterations;++		//damping of the velocity+		btScalar	m_damping;+	};++	///internal method used by the constraint solver, don't use them directly+	virtual void	buildJacobian() {};++	///internal method used by the constraint solver, don't use them directly+	virtual	void	setupSolverConstraint(btConstraintArray& ca, int solverBodyA,int solverBodyB, btScalar timeStep)+	{+        (void)ca;+        (void)solverBodyA;+        (void)solverBodyB;+        (void)timeStep;+	}+	+	///internal method used by the constraint solver, don't use them directly+	virtual void getInfo1 (btConstraintInfo1* info)=0;++	///internal method used by the constraint solver, don't use them directly+	virtual void getInfo2 (btConstraintInfo2* info)=0;++	///internal method used by the constraint solver, don't use them directly+	void	internalSetAppliedImpulse(btScalar appliedImpulse)+	{+		m_appliedImpulse = appliedImpulse;+	}+	///internal method used by the constraint solver, don't use them directly+	btScalar	internalGetAppliedImpulse()+	{+		return m_appliedImpulse;+	}+++	btScalar	getBreakingImpulseThreshold() const+	{+		return 	m_breakingImpulseThreshold;+	}++	void	setBreakingImpulseThreshold(btScalar threshold)+	{+		m_breakingImpulseThreshold = threshold;+	}++	bool	isEnabled() const+	{+		return m_isEnabled;+	}++	void	setEnabled(bool enabled)+	{+		m_isEnabled=enabled;+	}+++	///internal method used by the constraint solver, don't use them directly+	virtual	void	solveConstraintObsolete(btRigidBody& /*bodyA*/,btRigidBody& /*bodyB*/,btScalar	/*timeStep*/) {};++	+	const btRigidBody& getRigidBodyA() const+	{+		return m_rbA;+	}+	const btRigidBody& getRigidBodyB() const+	{+		return m_rbB;+	}++	btRigidBody& getRigidBodyA() +	{+		return m_rbA;+	}+	btRigidBody& getRigidBodyB()+	{+		return m_rbB;+	}++	int getUserConstraintType() const+	{+		return m_userConstraintType ;+	}++	void	setUserConstraintType(int userConstraintType)+	{+		m_userConstraintType = userConstraintType;+	};++	void	setUserConstraintId(int uid)+	{+		m_userConstraintId = uid;+	}++	int getUserConstraintId() const+	{+		return m_userConstraintId;+	}++	void	setUserConstraintPtr(void* ptr)+	{+		m_userConstraintPtr = ptr;+	}++	void*	getUserConstraintPtr()+	{+		return m_userConstraintPtr;+	}++	int getUid() const+	{+		return m_userConstraintId;   +	} ++	bool	needsFeedback() const+	{+		return m_needsFeedback;+	}++	///enableFeedback will allow to read the applied linear and angular impulse+	///use getAppliedImpulse, getAppliedLinearImpulse and getAppliedAngularImpulse to read feedback information+	void	enableFeedback(bool needsFeedback)+	{+		m_needsFeedback = needsFeedback;+	}++	///getAppliedImpulse is an estimated total applied impulse. +	///This feedback could be used to determine breaking constraints or playing sounds.+	btScalar	getAppliedImpulse() const+	{+		btAssert(m_needsFeedback);+		return m_appliedImpulse;+	}++	btTypedConstraintType getConstraintType () const+	{+		return btTypedConstraintType(m_objectType);+	}+	+	void setDbgDrawSize(btScalar dbgDrawSize)+	{+		m_dbgDrawSize = dbgDrawSize;+	}+	btScalar getDbgDrawSize()+	{+		return m_dbgDrawSize;+	}++	///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5). +	///If no axis is provided, it uses the default axis for this constraint.+	virtual	void	setParam(int num, btScalar value, int axis = -1) = 0;++	///return the local value of parameter+	virtual	btScalar getParam(int num, int axis = -1) const = 0;+	+	virtual	int	calculateSerializeBufferSize() const;++	///fills the dataBuffer and returns the struct name (and 0 on failure)+	virtual	const char*	serialize(void* dataBuffer, btSerializer* serializer) const;++};++// returns angle in range [-SIMD_2_PI, SIMD_2_PI], closest to one of the limits +// all arguments should be normalized angles (i.e. in range [-SIMD_PI, SIMD_PI])+SIMD_FORCE_INLINE btScalar btAdjustAngleToLimits(btScalar angleInRadians, btScalar angleLowerLimitInRadians, btScalar angleUpperLimitInRadians)+{+	if(angleLowerLimitInRadians >= angleUpperLimitInRadians)+	{+		return angleInRadians;+	}+	else if(angleInRadians < angleLowerLimitInRadians)+	{+		btScalar diffLo = btFabs(btNormalizeAngle(angleLowerLimitInRadians - angleInRadians));+		btScalar diffHi = btFabs(btNormalizeAngle(angleUpperLimitInRadians - angleInRadians));+		return (diffLo < diffHi) ? angleInRadians : (angleInRadians + SIMD_2_PI);+	}+	else if(angleInRadians > angleUpperLimitInRadians)+	{+		btScalar diffHi = btFabs(btNormalizeAngle(angleInRadians - angleUpperLimitInRadians));+		btScalar diffLo = btFabs(btNormalizeAngle(angleInRadians - angleLowerLimitInRadians));+		return (diffLo < diffHi) ? (angleInRadians - SIMD_2_PI) : angleInRadians;+	}+	else+	{+		return angleInRadians;+	}+}++///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64+struct	btTypedConstraintData+{+	btRigidBodyData		*m_rbA;+	btRigidBodyData		*m_rbB;+	char	*m_name;++	int	m_objectType;+	int	m_userConstraintType;+	int	m_userConstraintId;+	int	m_needsFeedback;++	float	m_appliedImpulse;+	float	m_dbgDrawSize;++	int	m_disableCollisionsBetweenLinkedBodies;+	char	m_pad4[4];+	+};++SIMD_FORCE_INLINE	int	btTypedConstraint::calculateSerializeBufferSize() const+{+	return sizeof(btTypedConstraintData);+}++++class btAngularLimit+{+private:+	btScalar +		m_center,+		m_halfRange,+		m_softness,+		m_biasFactor,+		m_relaxationFactor,+		m_correction,+		m_sign;++	bool+		m_solveLimit;++public:+	/// Default constructor initializes limit as inactive, allowing free constraint movement+	btAngularLimit()+		:m_center(0.0f),+		m_halfRange(-1.0f),+		m_softness(0.9f),+		m_biasFactor(0.3f),+		m_relaxationFactor(1.0f),+		m_correction(0.0f),+		m_sign(0.0f),+		m_solveLimit(false)+	{}++	/// Sets all limit's parameters.+	/// When low > high limit becomes inactive.+	/// When high - low > 2PI limit is ineffective too becouse no angle can exceed the limit+	void set(btScalar low, btScalar high, btScalar _softness = 0.9f, btScalar _biasFactor = 0.3f, btScalar _relaxationFactor = 1.0f);++	/// Checks conastaint angle against limit. If limit is active and the angle violates the limit+	/// correction is calculated.+	void test(const btScalar angle);++	/// Returns limit's softness+	inline btScalar getSoftness() const+	{+		return m_softness;+	}++	/// Returns limit's bias factor+	inline btScalar getBiasFactor() const+	{+		return m_biasFactor;+	}++	/// Returns limit's relaxation factor+	inline btScalar getRelaxationFactor() const+	{+		return m_relaxationFactor;+	}++	/// Returns correction value evaluated when test() was invoked +	inline btScalar getCorrection() const+	{+		return m_correction;+	}++	/// Returns sign value evaluated when test() was invoked +	inline btScalar getSign() const+	{+		return m_sign;+	}++	/// Gives half of the distance between min and max limit angle+	inline btScalar getHalfRange() const+	{+		return m_halfRange;+	}++	/// Returns true when the last test() invocation recognized limit violation+	inline bool isLimit() const+	{+		return m_solveLimit;+	}++	/// Checks given angle against limit. If limit is active and angle doesn't fit it, the angle+	/// returned is modified so it equals to the limit closest to given angle.+	void fit(btScalar& angle) const;++	/// Returns correction value multiplied by sign value+	btScalar getError() const;++	btScalar getLow() const;++	btScalar getHigh() const;++};++++#endif //BT_TYPED_CONSTRAINT_H
+ bullet/BulletDynamics/ConstraintSolver/btUniversalConstraint.h view
@@ -0,0 +1,62 @@+/*+Bullet Continuous Collision Detection and Physics Library, http://bulletphysics.org+Copyright (C) 2006, 2007 Sony Computer Entertainment Inc. ++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_UNIVERSAL_CONSTRAINT_H+#define BT_UNIVERSAL_CONSTRAINT_H++++#include "LinearMath/btVector3.h"+#include "btTypedConstraint.h"+#include "btGeneric6DofConstraint.h"++++/// Constraint similar to ODE Universal Joint+/// has 2 rotatioonal degrees of freedom, similar to Euler rotations around Z (axis 1)+/// and Y (axis 2)+/// Description from ODE manual : +/// "Given axis 1 on body 1, and axis 2 on body 2 that is perpendicular to axis 1, it keeps them perpendicular. +/// In other words, rotation of the two bodies about the direction perpendicular to the two axes will be equal."++class btUniversalConstraint : public btGeneric6DofConstraint+{+protected:+	btVector3	m_anchor;+	btVector3	m_axis1;+	btVector3	m_axis2;+public:+	// constructor+	// anchor, axis1 and axis2 are in world coordinate system+	// axis1 must be orthogonal to axis2+    btUniversalConstraint(btRigidBody& rbA, btRigidBody& rbB, btVector3& anchor, btVector3& axis1, btVector3& axis2);+	// access+	const btVector3& getAnchor() { return m_calculatedTransformA.getOrigin(); }+	const btVector3& getAnchor2() { return m_calculatedTransformB.getOrigin(); }+	const btVector3& getAxis1() { return m_axis1; }+	const btVector3& getAxis2() { return m_axis2; }+	btScalar getAngle1() { return getAngle(2); }+	btScalar getAngle2() { return getAngle(1); }+	// limits+	void setUpperLimit(btScalar ang1max, btScalar ang2max) { setAngularUpperLimit(btVector3(0.f, ang1max, ang2max)); }+	void setLowerLimit(btScalar ang1min, btScalar ang2min) { setAngularLowerLimit(btVector3(0.f, ang1min, ang2min)); }++	void setAxis( const btVector3& axis1, const btVector3& axis2);+};++++#endif // BT_UNIVERSAL_CONSTRAINT_H+
+ bullet/BulletDynamics/Dynamics/btActionInterface.h view
@@ -0,0 +1,46 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef _BT_ACTION_INTERFACE_H+#define _BT_ACTION_INTERFACE_H++class btIDebugDraw;+class btCollisionWorld;++#include "LinearMath/btScalar.h"+#include "btRigidBody.h"++///Basic interface to allow actions such as vehicles and characters to be updated inside a btDynamicsWorld+class btActionInterface+{+protected:++	static btRigidBody& getFixedBody();+	+	+public:++	virtual ~btActionInterface()+	{+	}++	virtual void updateAction( btCollisionWorld* collisionWorld, btScalar deltaTimeStep)=0;++	virtual void debugDraw(btIDebugDraw* debugDrawer) = 0;++};++#endif //_BT_ACTION_INTERFACE_H+
+ bullet/BulletDynamics/Dynamics/btContinuousDynamicsWorld.h view
@@ -0,0 +1,46 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2007 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_CONTINUOUS_DYNAMICS_WORLD_H+#define BT_CONTINUOUS_DYNAMICS_WORLD_H++#include "btDiscreteDynamicsWorld.h"++///btContinuousDynamicsWorld adds optional (per object) continuous collision detection for fast moving objects to the btDiscreteDynamicsWorld.+///This copes with fast moving objects that otherwise would tunnel/miss collisions.+///Under construction, don't use yet! Please use btDiscreteDynamicsWorld instead.+class btContinuousDynamicsWorld : public btDiscreteDynamicsWorld+{++	void	updateTemporalAabbs(btScalar timeStep);++	public:++		btContinuousDynamicsWorld(btDispatcher* dispatcher,btBroadphaseInterface* pairCache,btConstraintSolver* constraintSolver,btCollisionConfiguration* collisionConfiguration);+		virtual ~btContinuousDynamicsWorld();+		+		///time stepping with calculation of time of impact for selected fast moving objects+		virtual void	internalSingleStepSimulation( btScalar timeStep);++		virtual void	calculateTimeOfImpacts(btScalar timeStep);++		virtual btDynamicsWorldType	getWorldType() const+		{+			return BT_CONTINUOUS_DYNAMICS_WORLD;+		}++};++#endif //BT_CONTINUOUS_DYNAMICS_WORLD_H
+ bullet/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h view
@@ -0,0 +1,200 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+++#ifndef BT_DISCRETE_DYNAMICS_WORLD_H+#define BT_DISCRETE_DYNAMICS_WORLD_H++#include "btDynamicsWorld.h"++class btDispatcher;+class btOverlappingPairCache;+class btConstraintSolver;+class btSimulationIslandManager;+class btTypedConstraint;+class btActionInterface;++class btIDebugDraw;+#include "LinearMath/btAlignedObjectArray.h"+++///btDiscreteDynamicsWorld provides discrete rigid body simulation+///those classes replace the obsolete CcdPhysicsEnvironment/CcdPhysicsController+class btDiscreteDynamicsWorld : public btDynamicsWorld+{+protected:++	btConstraintSolver*	m_constraintSolver;++	btSimulationIslandManager*	m_islandManager;++	btAlignedObjectArray<btTypedConstraint*> m_constraints;++	btAlignedObjectArray<btRigidBody*> m_nonStaticRigidBodies;++	btVector3	m_gravity;++	//for variable timesteps+	btScalar	m_localTime;+	//for variable timesteps++	bool	m_ownsIslandManager;+	bool	m_ownsConstraintSolver;+	bool	m_synchronizeAllMotionStates;++	btAlignedObjectArray<btActionInterface*>	m_actions;+	+	int	m_profileTimings;++	virtual void	predictUnconstraintMotion(btScalar timeStep);+	+	virtual void	integrateTransforms(btScalar timeStep);+		+	virtual void	addSpeculativeContacts(btScalar timeStep);++	virtual void	calculateSimulationIslands();++	virtual void	solveConstraints(btContactSolverInfo& solverInfo);+	+	void	updateActivationState(btScalar timeStep);++	void	updateActions(btScalar timeStep);++	void	startProfiling(btScalar timeStep);++	virtual void	internalSingleStepSimulation( btScalar timeStep);+++	virtual void	saveKinematicState(btScalar timeStep);++	void	serializeRigidBodies(btSerializer* serializer);++public:+++	///this btDiscreteDynamicsWorld constructor gets created objects from the user, and will not delete those+	btDiscreteDynamicsWorld(btDispatcher* dispatcher,btBroadphaseInterface* pairCache,btConstraintSolver* constraintSolver,btCollisionConfiguration* collisionConfiguration);++	virtual ~btDiscreteDynamicsWorld();++	///if maxSubSteps > 0, it will interpolate motion between fixedTimeStep's+	virtual int	stepSimulation( btScalar timeStep,int maxSubSteps=1, btScalar fixedTimeStep=btScalar(1.)/btScalar(60.));+++	virtual void	synchronizeMotionStates();++	///this can be useful to synchronize a single rigid body -> graphics object+	void	synchronizeSingleMotionState(btRigidBody* body);++	virtual void	addConstraint(btTypedConstraint* constraint, bool disableCollisionsBetweenLinkedBodies=false);++	virtual void	removeConstraint(btTypedConstraint* constraint);++	virtual void	addAction(btActionInterface*);++	virtual void	removeAction(btActionInterface*);+	+	btSimulationIslandManager*	getSimulationIslandManager()+	{+		return m_islandManager;+	}++	const btSimulationIslandManager*	getSimulationIslandManager() const +	{+		return m_islandManager;+	}++	btCollisionWorld*	getCollisionWorld()+	{+		return this;+	}++	virtual void	setGravity(const btVector3& gravity);++	virtual btVector3 getGravity () const;++	virtual void	addCollisionObject(btCollisionObject* collisionObject,short int collisionFilterGroup=btBroadphaseProxy::StaticFilter,short int collisionFilterMask=btBroadphaseProxy::AllFilter ^ btBroadphaseProxy::StaticFilter);++	virtual void	addRigidBody(btRigidBody* body);++	virtual void	addRigidBody(btRigidBody* body, short group, short mask);++	virtual void	removeRigidBody(btRigidBody* body);++	///removeCollisionObject will first check if it is a rigid body, if so call removeRigidBody otherwise call btCollisionWorld::removeCollisionObject+	virtual void	removeCollisionObject(btCollisionObject* collisionObject);+++	void	debugDrawConstraint(btTypedConstraint* constraint);++	virtual void	debugDrawWorld();++	virtual void	setConstraintSolver(btConstraintSolver* solver);++	virtual btConstraintSolver* getConstraintSolver();+	+	virtual	int		getNumConstraints() const;++	virtual btTypedConstraint* getConstraint(int index)	;++	virtual const btTypedConstraint* getConstraint(int index) const;++	+	virtual btDynamicsWorldType	getWorldType() const+	{+		return BT_DISCRETE_DYNAMICS_WORLD;+	}+	+	///the forces on each rigidbody is accumulating together with gravity. clear this after each timestep.+	virtual void	clearForces();++	///apply gravity, call this once per timestep+	virtual void	applyGravity();++	virtual void	setNumTasks(int numTasks)+	{+        (void) numTasks;+	}++	///obsolete, use updateActions instead+	virtual void updateVehicles(btScalar timeStep)+	{+		updateActions(timeStep);+	}++	///obsolete, use addAction instead+	virtual void	addVehicle(btActionInterface* vehicle);+	///obsolete, use removeAction instead+	virtual void	removeVehicle(btActionInterface* vehicle);+	///obsolete, use addAction instead+	virtual void	addCharacter(btActionInterface* character);+	///obsolete, use removeAction instead+	virtual void	removeCharacter(btActionInterface* character);++	void	setSynchronizeAllMotionStates(bool synchronizeAll)+	{+		m_synchronizeAllMotionStates = synchronizeAll;+	}+	bool getSynchronizeAllMotionStates() const+	{+		return m_synchronizeAllMotionStates;+	}++	///Preliminary serialization test for Bullet 2.76. Loading those files requires a separate parser (see Bullet/Demos/SerializeDemo)+	virtual	void	serialize(btSerializer* serializer);++};++#endif //BT_DISCRETE_DYNAMICS_WORLD_H
+ bullet/BulletDynamics/Dynamics/btDynamicsWorld.h view
@@ -0,0 +1,151 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_DYNAMICS_WORLD_H+#define BT_DYNAMICS_WORLD_H++#include "BulletCollision/CollisionDispatch/btCollisionWorld.h"+#include "BulletDynamics/ConstraintSolver/btContactSolverInfo.h"++class btTypedConstraint;+class btActionInterface;+class btConstraintSolver;+class btDynamicsWorld;+++/// Type for the callback for each tick+typedef void (*btInternalTickCallback)(btDynamicsWorld *world, btScalar timeStep);++enum btDynamicsWorldType+{+	BT_SIMPLE_DYNAMICS_WORLD=1,+	BT_DISCRETE_DYNAMICS_WORLD=2,+	BT_CONTINUOUS_DYNAMICS_WORLD=3,+	BT_SOFT_RIGID_DYNAMICS_WORLD=4+};++///The btDynamicsWorld is the interface class for several dynamics implementation, basic, discrete, parallel, and continuous etc.+class btDynamicsWorld : public btCollisionWorld+{++protected:+		btInternalTickCallback m_internalTickCallback;+		btInternalTickCallback m_internalPreTickCallback;+		void*	m_worldUserInfo;++		btContactSolverInfo	m_solverInfo;++public:+		++		btDynamicsWorld(btDispatcher* dispatcher,btBroadphaseInterface* broadphase,btCollisionConfiguration* collisionConfiguration)+		:btCollisionWorld(dispatcher,broadphase,collisionConfiguration), m_internalTickCallback(0),m_internalPreTickCallback(0), m_worldUserInfo(0)+		{+		}++		virtual ~btDynamicsWorld()+		{+		}+		+		///stepSimulation proceeds the simulation over 'timeStep', units in preferably in seconds.+		///By default, Bullet will subdivide the timestep in constant substeps of each 'fixedTimeStep'.+		///in order to keep the simulation real-time, the maximum number of substeps can be clamped to 'maxSubSteps'.+		///You can disable subdividing the timestep/substepping by passing maxSubSteps=0 as second argument to stepSimulation, but in that case you have to keep the timeStep constant.+		virtual int		stepSimulation( btScalar timeStep,int maxSubSteps=1, btScalar fixedTimeStep=btScalar(1.)/btScalar(60.))=0;+			+		virtual void	debugDrawWorld() = 0;+				+		virtual void	addConstraint(btTypedConstraint* constraint, bool disableCollisionsBetweenLinkedBodies=false) +		{ +			(void)constraint; (void)disableCollisionsBetweenLinkedBodies;+		}++		virtual void	removeConstraint(btTypedConstraint* constraint) {(void)constraint;}++		virtual void	addAction(btActionInterface* action) = 0;++		virtual void	removeAction(btActionInterface* action) = 0;++		//once a rigidbody is added to the dynamics world, it will get this gravity assigned+		//existing rigidbodies in the world get gravity assigned too, during this method+		virtual void	setGravity(const btVector3& gravity) = 0;+		virtual btVector3 getGravity () const = 0;++		virtual void	synchronizeMotionStates() = 0;++		virtual void	addRigidBody(btRigidBody* body) = 0;++		virtual void	addRigidBody(btRigidBody* body, short group, short mask) = 0;++		virtual void	removeRigidBody(btRigidBody* body) = 0;++		virtual void	setConstraintSolver(btConstraintSolver* solver) = 0;++		virtual btConstraintSolver* getConstraintSolver() = 0;+		+		virtual	int		getNumConstraints() const {	return 0;		}+		+		virtual btTypedConstraint* getConstraint(int index)		{	(void)index;		return 0;		}+		+		virtual const btTypedConstraint* getConstraint(int index) const	{	(void)index;	return 0;	}++		virtual btDynamicsWorldType	getWorldType() const=0;++		virtual void	clearForces() = 0;++		/// Set the callback for when an internal tick (simulation substep) happens, optional user info+		void setInternalTickCallback(btInternalTickCallback cb,	void* worldUserInfo=0,bool isPreTick=false) +		{ +			if (isPreTick)+			{+				m_internalPreTickCallback = cb;+			} else+			{+				m_internalTickCallback = cb; +			}+			m_worldUserInfo = worldUserInfo;+		}++		void	setWorldUserInfo(void* worldUserInfo)+		{+			m_worldUserInfo = worldUserInfo;+		}++		void*	getWorldUserInfo() const+		{+			return m_worldUserInfo;+		}++		btContactSolverInfo& getSolverInfo()+		{+			return m_solverInfo;+		}+++		///obsolete, use addAction instead.+		virtual void	addVehicle(btActionInterface* vehicle) {(void)vehicle;}+		///obsolete, use removeAction instead+		virtual void	removeVehicle(btActionInterface* vehicle) {(void)vehicle;}+		///obsolete, use addAction instead.+		virtual void	addCharacter(btActionInterface* character) {(void)character;}+		///obsolete, use removeAction instead+		virtual void	removeCharacter(btActionInterface* character) {(void)character;}+++};++#endif //BT_DYNAMICS_WORLD_H++
+ bullet/BulletDynamics/Dynamics/btRigidBody.h view
@@ -0,0 +1,691 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_RIGIDBODY_H+#define BT_RIGIDBODY_H++#include "LinearMath/btAlignedObjectArray.h"+#include "LinearMath/btTransform.h"+#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h"+#include "BulletCollision/CollisionDispatch/btCollisionObject.h"++class btCollisionShape;+class btMotionState;+class btTypedConstraint;+++extern btScalar gDeactivationTime;+extern bool gDisableDeactivation;++#ifdef BT_USE_DOUBLE_PRECISION+#define btRigidBodyData	btRigidBodyDoubleData+#define btRigidBodyDataName	"btRigidBodyDoubleData"+#else+#define btRigidBodyData	btRigidBodyFloatData+#define btRigidBodyDataName	"btRigidBodyFloatData"+#endif //BT_USE_DOUBLE_PRECISION+++enum	btRigidBodyFlags+{+	BT_DISABLE_WORLD_GRAVITY = 1+};+++///The btRigidBody is the main class for rigid body objects. It is derived from btCollisionObject, so it keeps a pointer to a btCollisionShape.+///It is recommended for performance and memory use to share btCollisionShape objects whenever possible.+///There are 3 types of rigid bodies: +///- A) Dynamic rigid bodies, with positive mass. Motion is controlled by rigid body dynamics.+///- B) Fixed objects with zero mass. They are not moving (basically collision objects)+///- C) Kinematic objects, which are objects without mass, but the user can move them. There is on-way interaction, and Bullet calculates a velocity based on the timestep and previous and current world transform.+///Bullet automatically deactivates dynamic rigid bodies, when the velocity is below a threshold for a given time.+///Deactivated (sleeping) rigid bodies don't take any processing time, except a minor broadphase collision detection impact (to allow active objects to activate/wake up sleeping objects)+class btRigidBody  : public btCollisionObject+{++	btMatrix3x3	m_invInertiaTensorWorld;+	btVector3		m_linearVelocity;+	btVector3		m_angularVelocity;+	btScalar		m_inverseMass;+	btVector3		m_linearFactor;++	btVector3		m_gravity;	+	btVector3		m_gravity_acceleration;+	btVector3		m_invInertiaLocal;+	btVector3		m_totalForce;+	btVector3		m_totalTorque;+	+	btScalar		m_linearDamping;+	btScalar		m_angularDamping;++	bool			m_additionalDamping;+	btScalar		m_additionalDampingFactor;+	btScalar		m_additionalLinearDampingThresholdSqr;+	btScalar		m_additionalAngularDampingThresholdSqr;+	btScalar		m_additionalAngularDampingFactor;+++	btScalar		m_linearSleepingThreshold;+	btScalar		m_angularSleepingThreshold;++	//m_optionalMotionState allows to automatic synchronize the world transform for active objects+	btMotionState*	m_optionalMotionState;++	//keep track of typed constraints referencing this rigid body+	btAlignedObjectArray<btTypedConstraint*> m_constraintRefs;++	int				m_rigidbodyFlags;+	+	int				m_debugBodyId;+	++protected:++	ATTRIBUTE_ALIGNED64(btVector3		m_deltaLinearVelocity);+	btVector3		m_deltaAngularVelocity;+	btVector3		m_angularFactor;+	btVector3		m_invMass;+	btVector3		m_pushVelocity;+	btVector3		m_turnVelocity;+++public:+++	///The btRigidBodyConstructionInfo structure provides information to create a rigid body. Setting mass to zero creates a fixed (non-dynamic) rigid body.+	///For dynamic objects, you can use the collision shape to approximate the local inertia tensor, otherwise use the zero vector (default argument)+	///You can use the motion state to synchronize the world transform between physics and graphics objects. +	///And if the motion state is provided, the rigid body will initialize its initial world transform from the motion state,+	///m_startWorldTransform is only used when you don't provide a motion state.+	struct	btRigidBodyConstructionInfo+	{+		btScalar			m_mass;++		///When a motionState is provided, the rigid body will initialize its world transform from the motion state+		///In this case, m_startWorldTransform is ignored.+		btMotionState*		m_motionState;+		btTransform	m_startWorldTransform;++		btCollisionShape*	m_collisionShape;+		btVector3			m_localInertia;+		btScalar			m_linearDamping;+		btScalar			m_angularDamping;++		///best simulation results when friction is non-zero+		btScalar			m_friction;+		///best simulation results using zero restitution.+		btScalar			m_restitution;++		btScalar			m_linearSleepingThreshold;+		btScalar			m_angularSleepingThreshold;++		//Additional damping can help avoiding lowpass jitter motion, help stability for ragdolls etc.+		//Such damping is undesirable, so once the overall simulation quality of the rigid body dynamics system has improved, this should become obsolete+		bool				m_additionalDamping;+		btScalar			m_additionalDampingFactor;+		btScalar			m_additionalLinearDampingThresholdSqr;+		btScalar			m_additionalAngularDampingThresholdSqr;+		btScalar			m_additionalAngularDampingFactor;++		btRigidBodyConstructionInfo(	btScalar mass, btMotionState* motionState, btCollisionShape* collisionShape, const btVector3& localInertia=btVector3(0,0,0)):+		m_mass(mass),+			m_motionState(motionState),+			m_collisionShape(collisionShape),+			m_localInertia(localInertia),+			m_linearDamping(btScalar(0.)),+			m_angularDamping(btScalar(0.)),+			m_friction(btScalar(0.5)),+			m_restitution(btScalar(0.)),+			m_linearSleepingThreshold(btScalar(0.8)),+			m_angularSleepingThreshold(btScalar(1.f)),+			m_additionalDamping(false),+			m_additionalDampingFactor(btScalar(0.005)),+			m_additionalLinearDampingThresholdSqr(btScalar(0.01)),+			m_additionalAngularDampingThresholdSqr(btScalar(0.01)),+			m_additionalAngularDampingFactor(btScalar(0.01))+		{+			m_startWorldTransform.setIdentity();+		}+	};++	///btRigidBody constructor using construction info+	btRigidBody(	const btRigidBodyConstructionInfo& constructionInfo);++	///btRigidBody constructor for backwards compatibility. +	///To specify friction (etc) during rigid body construction, please use the other constructor (using btRigidBodyConstructionInfo)+	btRigidBody(	btScalar mass, btMotionState* motionState, btCollisionShape* collisionShape, const btVector3& localInertia=btVector3(0,0,0));+++	virtual ~btRigidBody()+        { +                //No constraints should point to this rigidbody+		//Remove constraints from the dynamics world before you delete the related rigidbodies. +                btAssert(m_constraintRefs.size()==0); +        }++protected:++	///setupRigidBody is only used internally by the constructor+	void	setupRigidBody(const btRigidBodyConstructionInfo& constructionInfo);++public:++	void			proceedToTransform(const btTransform& newTrans); +	+	///to keep collision detection and dynamics separate we don't store a rigidbody pointer+	///but a rigidbody is derived from btCollisionObject, so we can safely perform an upcast+	static const btRigidBody*	upcast(const btCollisionObject* colObj)+	{+		if (colObj->getInternalType()&btCollisionObject::CO_RIGID_BODY)+			return (const btRigidBody*)colObj;+		return 0;+	}+	static btRigidBody*	upcast(btCollisionObject* colObj)+	{+		if (colObj->getInternalType()&btCollisionObject::CO_RIGID_BODY)+			return (btRigidBody*)colObj;+		return 0;+	}+	+	/// continuous collision detection needs prediction+	void			predictIntegratedTransform(btScalar step, btTransform& predictedTransform) ;+	+	void			saveKinematicState(btScalar step);+	+	void			applyGravity();+	+	void			setGravity(const btVector3& acceleration);  ++	const btVector3&	getGravity() const+	{+		return m_gravity_acceleration;+	}++	void			setDamping(btScalar lin_damping, btScalar ang_damping);++	btScalar getLinearDamping() const+	{+		return m_linearDamping;+	}++	btScalar getAngularDamping() const+	{+		return m_angularDamping;+	}++	btScalar getLinearSleepingThreshold() const+	{+		return m_linearSleepingThreshold;+	}++	btScalar getAngularSleepingThreshold() const+	{+		return m_angularSleepingThreshold;+	}++	void			applyDamping(btScalar timeStep);++	SIMD_FORCE_INLINE const btCollisionShape*	getCollisionShape() const {+		return m_collisionShape;+	}++	SIMD_FORCE_INLINE btCollisionShape*	getCollisionShape() {+			return m_collisionShape;+	}+	+	void			setMassProps(btScalar mass, const btVector3& inertia);+	+	const btVector3& getLinearFactor() const+	{+		return m_linearFactor;+	}+	void setLinearFactor(const btVector3& linearFactor)+	{+		m_linearFactor = linearFactor;+		m_invMass = m_linearFactor*m_inverseMass;+	}+	btScalar		getInvMass() const { return m_inverseMass; }+	const btMatrix3x3& getInvInertiaTensorWorld() const { +		return m_invInertiaTensorWorld; +	}+		+	void			integrateVelocities(btScalar step);++	void			setCenterOfMassTransform(const btTransform& xform);++	void			applyCentralForce(const btVector3& force)+	{+		m_totalForce += force*m_linearFactor;+	}++	const btVector3& getTotalForce() const+	{+		return m_totalForce;+	};++	const btVector3& getTotalTorque() const+	{+		return m_totalTorque;+	};+    +	const btVector3& getInvInertiaDiagLocal() const+	{+		return m_invInertiaLocal;+	};++	void	setInvInertiaDiagLocal(const btVector3& diagInvInertia)+	{+		m_invInertiaLocal = diagInvInertia;+	}++	void	setSleepingThresholds(btScalar linear,btScalar angular)+	{+		m_linearSleepingThreshold = linear;+		m_angularSleepingThreshold = angular;+	}++	void	applyTorque(const btVector3& torque)+	{+		m_totalTorque += torque*m_angularFactor;+	}+	+	void	applyForce(const btVector3& force, const btVector3& rel_pos) +	{+		applyCentralForce(force);+		applyTorque(rel_pos.cross(force*m_linearFactor));+	}+	+	void applyCentralImpulse(const btVector3& impulse)+	{+		m_linearVelocity += impulse *m_linearFactor * m_inverseMass;+	}+	+  	void applyTorqueImpulse(const btVector3& torque)+	{+			m_angularVelocity += m_invInertiaTensorWorld * torque * m_angularFactor;+	}+	+	void applyImpulse(const btVector3& impulse, const btVector3& rel_pos) +	{+		if (m_inverseMass != btScalar(0.))+		{+			applyCentralImpulse(impulse);+			if (m_angularFactor)+			{+				applyTorqueImpulse(rel_pos.cross(impulse*m_linearFactor));+			}+		}+	}++	void clearForces() +	{+		m_totalForce.setValue(btScalar(0.0), btScalar(0.0), btScalar(0.0));+		m_totalTorque.setValue(btScalar(0.0), btScalar(0.0), btScalar(0.0));+	}+	+	void updateInertiaTensor();    +	+	const btVector3&     getCenterOfMassPosition() const { +		return m_worldTransform.getOrigin(); +	}+	btQuaternion getOrientation() const;+	+	const btTransform&  getCenterOfMassTransform() const { +		return m_worldTransform; +	}+	const btVector3&   getLinearVelocity() const { +		return m_linearVelocity; +	}+	const btVector3&    getAngularVelocity() const { +		return m_angularVelocity; +	}+	++	inline void setLinearVelocity(const btVector3& lin_vel)+	{ +		m_linearVelocity = lin_vel; +	}++	inline void setAngularVelocity(const btVector3& ang_vel) +	{ +		m_angularVelocity = ang_vel; +	}++	btVector3 getVelocityInLocalPoint(const btVector3& rel_pos) const+	{+		//we also calculate lin/ang velocity for kinematic objects+		return m_linearVelocity + m_angularVelocity.cross(rel_pos);++		//for kinematic objects, we could also use use:+		//		return 	(m_worldTransform(rel_pos) - m_interpolationWorldTransform(rel_pos)) / m_kinematicTimeStep;+	}++	void translate(const btVector3& v) +	{+		m_worldTransform.getOrigin() += v; +	}++	+	void	getAabb(btVector3& aabbMin,btVector3& aabbMax) const;+++++	+	SIMD_FORCE_INLINE btScalar computeImpulseDenominator(const btVector3& pos, const btVector3& normal) const+	{+		btVector3 r0 = pos - getCenterOfMassPosition();++		btVector3 c0 = (r0).cross(normal);++		btVector3 vec = (c0 * getInvInertiaTensorWorld()).cross(r0);++		return m_inverseMass + normal.dot(vec);++	}++	SIMD_FORCE_INLINE btScalar computeAngularImpulseDenominator(const btVector3& axis) const+	{+		btVector3 vec = axis * getInvInertiaTensorWorld();+		return axis.dot(vec);+	}++	SIMD_FORCE_INLINE void	updateDeactivation(btScalar timeStep)+	{+		if ( (getActivationState() == ISLAND_SLEEPING) || (getActivationState() == DISABLE_DEACTIVATION))+			return;++		if ((getLinearVelocity().length2() < m_linearSleepingThreshold*m_linearSleepingThreshold) &&+			(getAngularVelocity().length2() < m_angularSleepingThreshold*m_angularSleepingThreshold))+		{+			m_deactivationTime += timeStep;+		} else+		{+			m_deactivationTime=btScalar(0.);+			setActivationState(0);+		}++	}++	SIMD_FORCE_INLINE bool	wantsSleeping()+	{++		if (getActivationState() == DISABLE_DEACTIVATION)+			return false;++		//disable deactivation+		if (gDisableDeactivation || (gDeactivationTime == btScalar(0.)))+			return false;++		if ( (getActivationState() == ISLAND_SLEEPING) || (getActivationState() == WANTS_DEACTIVATION))+			return true;++		if (m_deactivationTime> gDeactivationTime)+		{+			return true;+		}+		return false;+	}+++	+	const btBroadphaseProxy*	getBroadphaseProxy() const+	{+		return m_broadphaseHandle;+	}+	btBroadphaseProxy*	getBroadphaseProxy() +	{+		return m_broadphaseHandle;+	}+	void	setNewBroadphaseProxy(btBroadphaseProxy* broadphaseProxy)+	{+		m_broadphaseHandle = broadphaseProxy;+	}++	//btMotionState allows to automatic synchronize the world transform for active objects+	btMotionState*	getMotionState()+	{+		return m_optionalMotionState;+	}+	const btMotionState*	getMotionState() const+	{+		return m_optionalMotionState;+	}+	void	setMotionState(btMotionState* motionState)+	{+		m_optionalMotionState = motionState;+		if (m_optionalMotionState)+			motionState->getWorldTransform(m_worldTransform);+	}++	//for experimental overriding of friction/contact solver func+	int	m_contactSolverType;+	int	m_frictionSolverType;++	void	setAngularFactor(const btVector3& angFac)+	{+		m_angularFactor = angFac;+	}++	void	setAngularFactor(btScalar angFac)+	{+		m_angularFactor.setValue(angFac,angFac,angFac);+	}+	const btVector3&	getAngularFactor() const+	{+		return m_angularFactor;+	}++	//is this rigidbody added to a btCollisionWorld/btDynamicsWorld/btBroadphase?+	bool	isInWorld() const+	{+		return (getBroadphaseProxy() != 0);+	}++	virtual bool checkCollideWithOverride(btCollisionObject* co);++	void addConstraintRef(btTypedConstraint* c);+	void removeConstraintRef(btTypedConstraint* c);++	btTypedConstraint* getConstraintRef(int index)+	{+		return m_constraintRefs[index];+	}++	int getNumConstraintRefs() const+	{+		return m_constraintRefs.size();+	}++	void	setFlags(int flags)+	{+		m_rigidbodyFlags = flags;+	}++	int getFlags() const+	{+		return m_rigidbodyFlags;+	}++	const btVector3& getDeltaLinearVelocity() const+	{+		return m_deltaLinearVelocity;+	}++	const btVector3& getDeltaAngularVelocity() const+	{+		return m_deltaAngularVelocity;+	}++	const btVector3& getPushVelocity() const +	{+		return m_pushVelocity;+	}++	const btVector3& getTurnVelocity() const +	{+		return m_turnVelocity;+	}+++	////////////////////////////////////////////////+	///some internal methods, don't use them+		+	btVector3& internalGetDeltaLinearVelocity()+	{+		return m_deltaLinearVelocity;+	}++	btVector3& internalGetDeltaAngularVelocity()+	{+		return m_deltaAngularVelocity;+	}++	const btVector3& internalGetAngularFactor() const+	{+		return m_angularFactor;+	}++	const btVector3& internalGetInvMass() const+	{+		return m_invMass;+	}+	+	btVector3& internalGetPushVelocity()+	{+		return m_pushVelocity;+	}++	btVector3& internalGetTurnVelocity()+	{+		return m_turnVelocity;+	}++	SIMD_FORCE_INLINE void	internalGetVelocityInLocalPointObsolete(const btVector3& rel_pos, btVector3& velocity ) const+	{+		velocity = getLinearVelocity()+m_deltaLinearVelocity + (getAngularVelocity()+m_deltaAngularVelocity).cross(rel_pos);+	}++	SIMD_FORCE_INLINE void	internalGetAngularVelocity(btVector3& angVel) const+	{+		angVel = getAngularVelocity()+m_deltaAngularVelocity;+	}+++	//Optimization for the iterative solver: avoid calculating constant terms involving inertia, normal, relative position+	SIMD_FORCE_INLINE void internalApplyImpulse(const btVector3& linearComponent, const btVector3& angularComponent,const btScalar impulseMagnitude)+	{+		if (m_inverseMass)+		{+			m_deltaLinearVelocity += linearComponent*impulseMagnitude;+			m_deltaAngularVelocity += angularComponent*(impulseMagnitude*m_angularFactor);+		}+	}++	SIMD_FORCE_INLINE void internalApplyPushImpulse(const btVector3& linearComponent, const btVector3& angularComponent,btScalar impulseMagnitude)+	{+		if (m_inverseMass)+		{+			m_pushVelocity += linearComponent*impulseMagnitude;+			m_turnVelocity += angularComponent*(impulseMagnitude*m_angularFactor);+		}+	}+	+	void	internalWritebackVelocity()+	{+		if (m_inverseMass)+		{+			setLinearVelocity(getLinearVelocity()+ m_deltaLinearVelocity);+			setAngularVelocity(getAngularVelocity()+m_deltaAngularVelocity);+			//m_deltaLinearVelocity.setZero();+			//m_deltaAngularVelocity .setZero();+			//m_originalBody->setCompanionId(-1);+		}+	}+++	void	internalWritebackVelocity(btScalar timeStep);++	++	///////////////////////////////////////////////++	virtual	int	calculateSerializeBufferSize()	const;++	///fills the dataBuffer and returns the struct name (and 0 on failure)+	virtual	const char*	serialize(void* dataBuffer,  class btSerializer* serializer) const;++	virtual void serializeSingleObject(class btSerializer* serializer) const;++};++//@todo add m_optionalMotionState and m_constraintRefs to btRigidBodyData+///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64+struct	btRigidBodyFloatData+{+	btCollisionObjectFloatData	m_collisionObjectData;+	btMatrix3x3FloatData		m_invInertiaTensorWorld;+	btVector3FloatData		m_linearVelocity;+	btVector3FloatData		m_angularVelocity;+	btVector3FloatData		m_angularFactor;+	btVector3FloatData		m_linearFactor;+	btVector3FloatData		m_gravity;	+	btVector3FloatData		m_gravity_acceleration;+	btVector3FloatData		m_invInertiaLocal;+	btVector3FloatData		m_totalForce;+	btVector3FloatData		m_totalTorque;+	float					m_inverseMass;+	float					m_linearDamping;+	float					m_angularDamping;+	float					m_additionalDampingFactor;+	float					m_additionalLinearDampingThresholdSqr;+	float					m_additionalAngularDampingThresholdSqr;+	float					m_additionalAngularDampingFactor;+	float					m_linearSleepingThreshold;+	float					m_angularSleepingThreshold;+	int						m_additionalDamping;+};++///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64+struct	btRigidBodyDoubleData+{+	btCollisionObjectDoubleData	m_collisionObjectData;+	btMatrix3x3DoubleData		m_invInertiaTensorWorld;+	btVector3DoubleData		m_linearVelocity;+	btVector3DoubleData		m_angularVelocity;+	btVector3DoubleData		m_angularFactor;+	btVector3DoubleData		m_linearFactor;+	btVector3DoubleData		m_gravity;	+	btVector3DoubleData		m_gravity_acceleration;+	btVector3DoubleData		m_invInertiaLocal;+	btVector3DoubleData		m_totalForce;+	btVector3DoubleData		m_totalTorque;+	double					m_inverseMass;+	double					m_linearDamping;+	double					m_angularDamping;+	double					m_additionalDampingFactor;+	double					m_additionalLinearDampingThresholdSqr;+	double					m_additionalAngularDampingThresholdSqr;+	double					m_additionalAngularDampingFactor;+	double					m_linearSleepingThreshold;+	double					m_angularSleepingThreshold;+	int						m_additionalDamping;+	char	m_padding[4];+};++++#endif //BT_RIGIDBODY_H+
+ bullet/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h view
@@ -0,0 +1,89 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_SIMPLE_DYNAMICS_WORLD_H+#define BT_SIMPLE_DYNAMICS_WORLD_H++#include "btDynamicsWorld.h"++class btDispatcher;+class btOverlappingPairCache;+class btConstraintSolver;++///The btSimpleDynamicsWorld serves as unit-test and to verify more complicated and optimized dynamics worlds.+///Please use btDiscreteDynamicsWorld instead (or btContinuousDynamicsWorld once it is finished).+class btSimpleDynamicsWorld : public btDynamicsWorld+{+protected:++	btConstraintSolver*	m_constraintSolver;++	bool	m_ownsConstraintSolver;++	void	predictUnconstraintMotion(btScalar timeStep);+	+	void	integrateTransforms(btScalar timeStep);+		+	btVector3	m_gravity;+	+public:++++	///this btSimpleDynamicsWorld constructor creates dispatcher, broadphase pairCache and constraintSolver+	btSimpleDynamicsWorld(btDispatcher* dispatcher,btBroadphaseInterface* pairCache,btConstraintSolver* constraintSolver,btCollisionConfiguration* collisionConfiguration);++	virtual ~btSimpleDynamicsWorld();+		+	///maxSubSteps/fixedTimeStep for interpolation is currently ignored for btSimpleDynamicsWorld, use btDiscreteDynamicsWorld instead+	virtual int	stepSimulation( btScalar timeStep,int maxSubSteps=1, btScalar fixedTimeStep=btScalar(1.)/btScalar(60.));++	virtual void	setGravity(const btVector3& gravity);++	virtual btVector3 getGravity () const;++	virtual void	addRigidBody(btRigidBody* body);++	virtual void	addRigidBody(btRigidBody* body, short group, short mask);++	virtual void	removeRigidBody(btRigidBody* body);++	virtual void	debugDrawWorld();+				+	virtual void	addAction(btActionInterface* action);++	virtual void	removeAction(btActionInterface* action);++	///removeCollisionObject will first check if it is a rigid body, if so call removeRigidBody otherwise call btCollisionWorld::removeCollisionObject+	virtual void	removeCollisionObject(btCollisionObject* collisionObject);+	+	virtual void	updateAabbs();++	virtual void	synchronizeMotionStates();++	virtual void	setConstraintSolver(btConstraintSolver* solver);++	virtual btConstraintSolver* getConstraintSolver();++	virtual btDynamicsWorldType	getWorldType() const+	{+		return BT_SIMPLE_DYNAMICS_WORLD;+	}++	virtual void	clearForces();++};++#endif //BT_SIMPLE_DYNAMICS_WORLD_H
+ bullet/BulletDynamics/Vehicle/btRaycastVehicle.h view
@@ -0,0 +1,236 @@+/*+ * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/+ *+ * Permission to use, copy, modify, distribute and sell this software+ * and its documentation for any purpose is hereby granted without fee,+ * provided that the above copyright notice appear in all copies.+ * Erwin Coumans makes no representations about the suitability + * of this software for any purpose.  + * It is provided "as is" without express or implied warranty.+*/+#ifndef BT_RAYCASTVEHICLE_H+#define BT_RAYCASTVEHICLE_H++#include "BulletDynamics/Dynamics/btRigidBody.h"+#include "BulletDynamics/ConstraintSolver/btTypedConstraint.h"+#include "btVehicleRaycaster.h"+class btDynamicsWorld;+#include "LinearMath/btAlignedObjectArray.h"+#include "btWheelInfo.h"+#include "BulletDynamics/Dynamics/btActionInterface.h"++class btVehicleTuning;++///rayCast vehicle, very special constraint that turn a rigidbody into a vehicle.+class btRaycastVehicle : public btActionInterface+{++		btAlignedObjectArray<btVector3>	m_forwardWS;+		btAlignedObjectArray<btVector3>	m_axle;+		btAlignedObjectArray<btScalar>	m_forwardImpulse;+		btAlignedObjectArray<btScalar>	m_sideImpulse;+	+		///backwards compatibility+		int	m_userConstraintType;+		int	m_userConstraintId;++public:+	class btVehicleTuning+		{+			public:++			btVehicleTuning()+				:m_suspensionStiffness(btScalar(5.88)),+				m_suspensionCompression(btScalar(0.83)),+				m_suspensionDamping(btScalar(0.88)),+				m_maxSuspensionTravelCm(btScalar(500.)),+				m_frictionSlip(btScalar(10.5)),+				m_maxSuspensionForce(btScalar(6000.))+			{+			}+			btScalar	m_suspensionStiffness;+			btScalar	m_suspensionCompression;+			btScalar	m_suspensionDamping;+			btScalar	m_maxSuspensionTravelCm;+			btScalar	m_frictionSlip;+			btScalar	m_maxSuspensionForce;++		};+private:++	btScalar	m_tau;+	btScalar	m_damping;+	btVehicleRaycaster*	m_vehicleRaycaster;+	btScalar		m_pitchControl;+	btScalar	m_steeringValue; +	btScalar m_currentVehicleSpeedKmHour;++	btRigidBody* m_chassisBody;++	int m_indexRightAxis;+	int m_indexUpAxis;+	int	m_indexForwardAxis;++	void defaultInit(const btVehicleTuning& tuning);++public:++	//constructor to create a car from an existing rigidbody+	btRaycastVehicle(const btVehicleTuning& tuning,btRigidBody* chassis,	btVehicleRaycaster* raycaster );++	virtual ~btRaycastVehicle() ;+++	///btActionInterface interface+	virtual void updateAction( btCollisionWorld* collisionWorld, btScalar step)+	{+        (void) collisionWorld;+		updateVehicle(step);+	}+	++	///btActionInterface interface+	void	debugDraw(btIDebugDraw* debugDrawer);+			+	const btTransform& getChassisWorldTransform() const;+	+	btScalar rayCast(btWheelInfo& wheel);++	virtual void updateVehicle(btScalar step);+	+	+	void resetSuspension();++	btScalar	getSteeringValue(int wheel) const;++	void	setSteeringValue(btScalar steering,int wheel);+++	void	applyEngineForce(btScalar force, int wheel);++	const btTransform&	getWheelTransformWS( int wheelIndex ) const;++	void	updateWheelTransform( int wheelIndex, bool interpolatedTransform = true );+	+//	void	setRaycastWheelInfo( int wheelIndex , bool isInContact, const btVector3& hitPoint, const btVector3& hitNormal,btScalar depth);++	btWheelInfo&	addWheel( const btVector3& connectionPointCS0, const btVector3& wheelDirectionCS0,const btVector3& wheelAxleCS,btScalar suspensionRestLength,btScalar wheelRadius,const btVehicleTuning& tuning, bool isFrontWheel);++	inline int		getNumWheels() const {+		return int (m_wheelInfo.size());+	}+	+	btAlignedObjectArray<btWheelInfo>	m_wheelInfo;+++	const btWheelInfo&	getWheelInfo(int index) const;++	btWheelInfo&	getWheelInfo(int index);++	void	updateWheelTransformsWS(btWheelInfo& wheel , bool interpolatedTransform = true);++	+	void setBrake(btScalar brake,int wheelIndex);++	void	setPitchControl(btScalar pitch)+	{+		m_pitchControl = pitch;+	}+	+	void	updateSuspension(btScalar deltaTime);++	virtual void	updateFriction(btScalar	timeStep);++++	inline btRigidBody* getRigidBody()+	{+		return m_chassisBody;+	}++	const btRigidBody* getRigidBody() const+	{+		return m_chassisBody;+	}++	inline int	getRightAxis() const+	{+		return m_indexRightAxis;+	}+	inline int getUpAxis() const+	{+		return m_indexUpAxis;+	}++	inline int getForwardAxis() const+	{+		return m_indexForwardAxis;+	}++	+	///Worldspace forward vector+	btVector3 getForwardVector() const+	{+		const btTransform& chassisTrans = getChassisWorldTransform(); ++		btVector3 forwardW ( +			  chassisTrans.getBasis()[0][m_indexForwardAxis], +			  chassisTrans.getBasis()[1][m_indexForwardAxis], +			  chassisTrans.getBasis()[2][m_indexForwardAxis]); ++		return forwardW;+	}++	///Velocity of vehicle (positive if velocity vector has same direction as foward vector)+	btScalar	getCurrentSpeedKmHour() const+	{+		return m_currentVehicleSpeedKmHour;+	}++	virtual void	setCoordinateSystem(int rightIndex,int upIndex,int forwardIndex)+	{+		m_indexRightAxis = rightIndex;+		m_indexUpAxis = upIndex;+		m_indexForwardAxis = forwardIndex;+	}+++	///backwards compatibility+	int getUserConstraintType() const+	{+		return m_userConstraintType ;+	}++	void	setUserConstraintType(int userConstraintType)+	{+		m_userConstraintType = userConstraintType;+	};++	void	setUserConstraintId(int uid)+	{+		m_userConstraintId = uid;+	}++	int getUserConstraintId() const+	{+		return m_userConstraintId;+	}++};++class btDefaultVehicleRaycaster : public btVehicleRaycaster+{+	btDynamicsWorld*	m_dynamicsWorld;+public:+	btDefaultVehicleRaycaster(btDynamicsWorld* world)+		:m_dynamicsWorld(world)+	{+	}++	virtual void* castRay(const btVector3& from,const btVector3& to, btVehicleRaycasterResult& result);++};+++#endif //BT_RAYCASTVEHICLE_H+
+ bullet/BulletDynamics/Vehicle/btVehicleRaycaster.h view
@@ -0,0 +1,35 @@+/*+ * Copyright (c) 2005 Erwin Coumans http://bulletphysics.org+ *+ * Permission to use, copy, modify, distribute and sell this software+ * and its documentation for any purpose is hereby granted without fee,+ * provided that the above copyright notice appear in all copies.+ * Erwin Coumans makes no representations about the suitability + * of this software for any purpose.  + * It is provided "as is" without express or implied warranty.+*/+#ifndef BT_VEHICLE_RAYCASTER_H+#define BT_VEHICLE_RAYCASTER_H++#include "LinearMath/btVector3.h"++/// btVehicleRaycaster is provides interface for between vehicle simulation and raycasting+struct btVehicleRaycaster+{+virtual ~btVehicleRaycaster()+{+}+	struct btVehicleRaycasterResult+	{+		btVehicleRaycasterResult() :m_distFraction(btScalar(-1.)){};+		btVector3	m_hitPointInWorld;+		btVector3	m_hitNormalInWorld;+		btScalar	m_distFraction;+	};++	virtual void* castRay(const btVector3& from,const btVector3& to, btVehicleRaycasterResult& result) = 0;++};++#endif //BT_VEHICLE_RAYCASTER_H+
+ bullet/BulletDynamics/Vehicle/btWheelInfo.h view
@@ -0,0 +1,119 @@+/*+ * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/+ *+ * Permission to use, copy, modify, distribute and sell this software+ * and its documentation for any purpose is hereby granted without fee,+ * provided that the above copyright notice appear in all copies.+ * Erwin Coumans makes no representations about the suitability + * of this software for any purpose.  + * It is provided "as is" without express or implied warranty.+*/+#ifndef BT_WHEEL_INFO_H+#define BT_WHEEL_INFO_H++#include "LinearMath/btVector3.h"+#include "LinearMath/btTransform.h"++class btRigidBody;++struct btWheelInfoConstructionInfo+{+	btVector3	m_chassisConnectionCS;+	btVector3	m_wheelDirectionCS;+	btVector3	m_wheelAxleCS;+	btScalar	m_suspensionRestLength;+	btScalar	m_maxSuspensionTravelCm;+	btScalar	m_wheelRadius;+	+	btScalar		m_suspensionStiffness;+	btScalar		m_wheelsDampingCompression;+	btScalar		m_wheelsDampingRelaxation;+	btScalar		m_frictionSlip;+	btScalar		m_maxSuspensionForce;+	bool m_bIsFrontWheel;+	+};++/// btWheelInfo contains information per wheel about friction and suspension.+struct btWheelInfo+{+	struct RaycastInfo+	{+		//set by raycaster+		btVector3	m_contactNormalWS;//contactnormal+		btVector3	m_contactPointWS;//raycast hitpoint+		btScalar	m_suspensionLength;+		btVector3	m_hardPointWS;//raycast starting point+		btVector3	m_wheelDirectionWS; //direction in worldspace+		btVector3	m_wheelAxleWS; // axle in worldspace+		bool		m_isInContact;+		void*		m_groundObject; //could be general void* ptr+	};++	RaycastInfo	m_raycastInfo;++	btTransform	m_worldTransform;+	+	btVector3	m_chassisConnectionPointCS; //const+	btVector3	m_wheelDirectionCS;//const+	btVector3	m_wheelAxleCS; // const or modified by steering+	btScalar	m_suspensionRestLength1;//const+	btScalar	m_maxSuspensionTravelCm;+	btScalar getSuspensionRestLength() const;+	btScalar	m_wheelsRadius;//const+	btScalar	m_suspensionStiffness;//const+	btScalar	m_wheelsDampingCompression;//const+	btScalar	m_wheelsDampingRelaxation;//const+	btScalar	m_frictionSlip;+	btScalar	m_steering;+	btScalar	m_rotation;+	btScalar	m_deltaRotation;+	btScalar	m_rollInfluence;+	btScalar	m_maxSuspensionForce;++	btScalar	m_engineForce;++	btScalar	m_brake;+	+	bool m_bIsFrontWheel;+	+	void*		m_clientInfo;//can be used to store pointer to sync transforms...++	btWheelInfo(btWheelInfoConstructionInfo& ci)++	{++		m_suspensionRestLength1 = ci.m_suspensionRestLength;+		m_maxSuspensionTravelCm = ci.m_maxSuspensionTravelCm;++		m_wheelsRadius = ci.m_wheelRadius;+		m_suspensionStiffness = ci.m_suspensionStiffness;+		m_wheelsDampingCompression = ci.m_wheelsDampingCompression;+		m_wheelsDampingRelaxation = ci.m_wheelsDampingRelaxation;+		m_chassisConnectionPointCS = ci.m_chassisConnectionCS;+		m_wheelDirectionCS = ci.m_wheelDirectionCS;+		m_wheelAxleCS = ci.m_wheelAxleCS;+		m_frictionSlip = ci.m_frictionSlip;+		m_steering = btScalar(0.);+		m_engineForce = btScalar(0.);+		m_rotation = btScalar(0.);+		m_deltaRotation = btScalar(0.);+		m_brake = btScalar(0.);+		m_rollInfluence = btScalar(0.1);+		m_bIsFrontWheel = ci.m_bIsFrontWheel;+		m_maxSuspensionForce = ci.m_maxSuspensionForce;++	}++	void	updateWheel(const btRigidBody& chassis,RaycastInfo& raycastInfo);++	btScalar	m_clippedInvContactDotSuspension;+	btScalar	m_suspensionRelativeVelocity;+	//calculated by suspension+	btScalar	m_wheelsSuspensionForce;+	btScalar	m_skidInfo;++};++#endif //BT_WHEEL_INFO_H+
+ bullet/BulletMultiThreaded/GpuSoftBodySolvers/CPU/btSoftBodySolverData.h view
@@ -0,0 +1,744 @@+/*
+Bullet Continuous Collision Detection and Physics Library
+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+Permission is granted to anyone to use this software for any purpose, 
+including commercial applications, and to alter it and redistribute it freely, 
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+*/
+
+#ifndef BT_SOFT_BODY_SOLVER_DATA_H
+#define BT_SOFT_BODY_SOLVER_DATA_H
+
+#include "BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h"
+#include "vectormath/vmInclude.h"
+
+
+class btSoftBodyLinkData
+{
+public:
+	/**
+	 * Class representing a link as a set of three indices into the vertex array.
+	 */
+	class LinkNodePair
+	{
+	public:
+		int vertex0;
+		int vertex1;
+
+		LinkNodePair()
+		{
+			vertex0 = 0;
+			vertex1 = 0;
+		}
+
+		LinkNodePair( int v0, int v1 )
+		{
+			vertex0 = v0;
+			vertex1 = v1;
+		}
+	};
+
+	/**
+	 * Class describing a link for input into the system.
+	 */
+	class LinkDescription
+	{
+	protected:
+		int m_vertex0;
+		int m_vertex1;
+		float m_linkLinearStiffness;
+		float m_linkStrength;
+
+	public:
+
+		LinkDescription()
+		{
+			m_vertex0 = 0;
+			m_vertex1 = 0;
+			m_linkLinearStiffness = 1.0;
+			m_linkStrength = 1.0;
+		}
+
+		LinkDescription( int newVertex0, int newVertex1, float linkLinearStiffness )
+		{
+			m_vertex0 = newVertex0;
+			m_vertex1 = newVertex1;
+			m_linkLinearStiffness = linkLinearStiffness;
+			m_linkStrength = 1.0;
+		}
+
+		LinkNodePair getVertexPair() const
+		{
+			LinkNodePair nodes;
+			nodes.vertex0 = m_vertex0;
+			nodes.vertex1 = m_vertex1;
+			return nodes;
+		}
+
+		void setVertex0( int vertex )
+		{
+			m_vertex0 = vertex;
+		}
+
+		void setVertex1( int vertex )
+		{
+			m_vertex1 = vertex;
+		}
+
+		void setLinkLinearStiffness( float linearStiffness )
+		{
+			m_linkLinearStiffness = linearStiffness;
+		}
+
+		void setLinkStrength( float strength )
+		{
+			m_linkStrength = strength;
+		}
+
+		int getVertex0() const
+		{
+			return m_vertex0;
+		}
+
+		int getVertex1() const
+		{
+			return m_vertex1;
+		}
+
+		float getLinkStrength() const
+		{
+			return m_linkStrength;
+		}
+
+		float getLinkLinearStiffness() const
+		{
+			return m_linkLinearStiffness;
+		}
+	};
+
+
+protected:
+	// NOTE:
+	// Vertex reference data is stored relative to global array, not relative to individual cloth.
+	// Values must be correct if being passed into single-cloth VBOs or when migrating from one solver
+	// to another.
+
+	btAlignedObjectArray< LinkNodePair > m_links; // Vertex pair for the link
+	btAlignedObjectArray< float >								m_linkStrength; // Strength of each link
+	// (inverseMassA + inverseMassB)/ linear stiffness coefficient
+	btAlignedObjectArray< float >								m_linksMassLSC; 
+	btAlignedObjectArray< float >								m_linksRestLengthSquared; 
+	// Current vector length of link
+	btAlignedObjectArray< Vectormath::Aos::Vector3 >			m_linksCLength;
+	// 1/(current length * current length * massLSC)
+	btAlignedObjectArray< float >								m_linksLengthRatio; 
+	btAlignedObjectArray< float >								m_linksRestLength;
+	btAlignedObjectArray< float >								m_linksMaterialLinearStiffnessCoefficient;
+
+public:
+	btSoftBodyLinkData()
+	{
+	}
+
+	virtual ~btSoftBodyLinkData()
+	{
+	}
+
+	virtual void clear()
+	{
+		m_links.resize(0);
+		m_linkStrength.resize(0);
+		m_linksMassLSC.resize(0);
+		m_linksRestLengthSquared.resize(0);
+		m_linksLengthRatio.resize(0);
+		m_linksRestLength.resize(0);
+		m_linksMaterialLinearStiffnessCoefficient.resize(0);
+	}
+
+	int getNumLinks()
+	{
+		return m_links.size();
+	}
+
+	/** Allocate enough space in all link-related arrays to fit numLinks links */
+	virtual void createLinks( int numLinks )
+	{
+		int previousSize = m_links.size();
+		int newSize = previousSize + numLinks;
+
+		// Resize all the arrays that store link data
+		m_links.resize( newSize );
+		m_linkStrength.resize( newSize );
+		m_linksMassLSC.resize( newSize );
+		m_linksRestLengthSquared.resize( newSize );
+		m_linksCLength.resize( newSize );
+		m_linksLengthRatio.resize( newSize );
+		m_linksRestLength.resize( newSize );
+		m_linksMaterialLinearStiffnessCoefficient.resize( newSize );
+	}
+	
+	/** Insert the link described into the correct data structures assuming space has already been allocated by a call to createLinks */
+	virtual void setLinkAt( const LinkDescription &link, int linkIndex )
+	{
+		m_links[linkIndex] = link.getVertexPair();
+		m_linkStrength[linkIndex] = link.getLinkStrength();
+		m_linksMassLSC[linkIndex] = 0.f;
+		m_linksRestLengthSquared[linkIndex] = 0.f;
+		m_linksCLength[linkIndex] = Vectormath::Aos::Vector3(0.f, 0.f, 0.f);
+		m_linksLengthRatio[linkIndex] = 0.f;
+		m_linksRestLength[linkIndex] = 0.f;
+		m_linksMaterialLinearStiffnessCoefficient[linkIndex] = link.getLinkLinearStiffness();
+	}
+
+
+	/**
+	 * Return true if data is on the accelerator.
+	 * The CPU version of this class will return true here because
+	 * the CPU is the same as the accelerator.
+	 */
+	virtual bool onAccelerator()
+	{
+		return true;
+	}
+	
+	/**
+	 * Move data from host memory to the accelerator.
+	 * The CPU version will always return that it has moved it.
+	 */
+	virtual bool moveToAccelerator()
+	{
+		return true;
+	}
+
+	/**
+	 * Move data from host memory from the accelerator.
+	 * The CPU version will always return that it has moved it.
+	 */
+	virtual bool moveFromAccelerator()
+	{
+		return true;
+	}
+
+
+
+	/**
+	 * Return reference to the vertex index pair for link linkIndex as stored on the host.
+	 */
+	LinkNodePair &getVertexPair( int linkIndex )
+	{
+		return m_links[linkIndex];
+	}
+
+	/** 
+	 * Return reference to strength of link linkIndex as stored on the host.
+	 */
+	float &getStrength( int linkIndex )
+	{
+		return m_linkStrength[linkIndex];
+	}
+
+	/**
+	 * Return a reference to the strength of the link corrected for link sorting.
+	 * This is important if we are using data on an accelerator which has the data sorted in some fashion.
+	 */
+	virtual float &getStrengthCorrected( int linkIndex )
+	{
+		return getStrength( linkIndex );
+	}
+
+	/**
+	 * Return reference to the rest length of link linkIndex as stored on the host.
+	 */
+	float &getRestLength( int linkIndex )
+	{
+		return m_linksRestLength[linkIndex];
+	}
+
+	/**
+	 * Return reference to linear stiffness coefficient for link linkIndex as stored on the host.
+	 */
+	float &getLinearStiffnessCoefficient( int linkIndex )
+	{
+		return m_linksMaterialLinearStiffnessCoefficient[linkIndex];
+	}
+
+	/**
+	 * Return reference to the MassLSC value for link linkIndex as stored on the host.
+	 */
+	float &getMassLSC( int linkIndex )
+	{
+		return m_linksMassLSC[linkIndex];
+	}
+
+	/**
+	 * Return reference to rest length squared for link linkIndex as stored on the host.
+	 */
+	float &getRestLengthSquared( int linkIndex )
+	{
+		return m_linksRestLengthSquared[linkIndex];
+	}
+
+	/**
+	 * Return reference to current length of link linkIndex as stored on the host.
+	 */
+	Vectormath::Aos::Vector3 &getCurrentLength( int linkIndex )
+	{
+		return m_linksCLength[linkIndex];
+	}
+
+	 /**
+	  * Return the link length ratio from for link linkIndex as stored on the host.
+	  */
+	 float &getLinkLengthRatio( int linkIndex )
+	 {
+		 return m_linksLengthRatio[linkIndex];
+	 }
+};
+
+
+
+/**
+ * Wrapper for vertex data information.
+ * By wrapping it like this we stand a good chance of being able to optimise for storage format easily.
+ * It should also help us make sure all the data structures remain consistent.
+ */
+class btSoftBodyVertexData
+{
+public:
+	/**
+	 * Class describing a vertex for input into the system.
+	 */
+	class VertexDescription
+	{
+	private:
+		Vectormath::Aos::Point3 m_position;
+		/** Inverse mass. If this is 0f then the mass was 0 because that simplifies calculations. */
+		float m_inverseMass;
+
+	public:
+		VertexDescription()
+		{	
+			m_position = Vectormath::Aos::Point3( 0.f, 0.f, 0.f );
+			m_inverseMass = 0.f;
+		}
+
+		VertexDescription( const Vectormath::Aos::Point3 &position, float mass )
+		{
+			m_position = position;
+			if( mass > 0.f )
+				m_inverseMass = 1.0f/mass;
+			else
+				m_inverseMass = 0.f;
+		}
+
+		void setPosition( const Vectormath::Aos::Point3 &position )
+		{
+			m_position = position;
+		}
+
+		void setInverseMass( float inverseMass )
+		{
+			m_inverseMass = inverseMass;
+		}
+
+		void setMass( float mass )
+		{
+			if( mass > 0.f )
+				m_inverseMass = 1.0f/mass;
+			else
+				m_inverseMass = 0.f;
+		}
+
+		Vectormath::Aos::Point3 getPosition() const
+		{
+			return m_position;
+		}
+
+		float getInverseMass() const
+		{
+			return m_inverseMass;
+		}
+
+		float getMass() const
+		{
+			if( m_inverseMass == 0.f )
+				return 0.f;
+			else
+				return 1.0f/m_inverseMass;
+		}
+	};
+protected:
+
+	// identifier for the individual cloth
+	// For the CPU we don't really need this as we can grab the cloths and iterate over only their vertices
+	// For a parallel accelerator knowing on a per-vertex basis which cloth we're part of will help for obtaining
+	// per-cloth data
+	// For sorting etc it might also be helpful to be able to use in-array data such as this.
+	btAlignedObjectArray< int >							m_clothIdentifier;
+	btAlignedObjectArray< Vectormath::Aos::Point3 >		m_vertexPosition;			// vertex positions
+	btAlignedObjectArray< Vectormath::Aos::Point3 >		m_vertexPreviousPosition;	// vertex positions
+	btAlignedObjectArray< Vectormath::Aos::Vector3 >	m_vertexVelocity;			// Velocity
+	btAlignedObjectArray< Vectormath::Aos::Vector3 >	m_vertexForceAccumulator;	// Force accumulator
+	btAlignedObjectArray< Vectormath::Aos::Vector3 >	m_vertexNormal;				// Normals
+	btAlignedObjectArray< float >						m_vertexInverseMass;		// Inverse mass
+	btAlignedObjectArray< float >						m_vertexArea;				// Area controlled by the vertex
+	btAlignedObjectArray< int >							m_vertexTriangleCount;		// Number of triangles touching this vertex
+
+public:
+	btSoftBodyVertexData()
+	{
+	}
+
+	virtual ~btSoftBodyVertexData()
+	{
+	}
+
+	virtual void clear()
+	{
+		m_clothIdentifier.resize(0);
+		m_vertexPosition.resize(0);
+		m_vertexPreviousPosition.resize(0);
+		m_vertexVelocity.resize(0);
+		m_vertexForceAccumulator.resize(0);
+		m_vertexNormal.resize(0);
+		m_vertexInverseMass.resize(0);
+		m_vertexArea.resize(0);
+		m_vertexTriangleCount.resize(0);
+	}
+
+	int getNumVertices()
+	{
+		return m_vertexPosition.size();
+	}
+
+	int getClothIdentifier( int vertexIndex )
+	{
+		return m_clothIdentifier[vertexIndex];
+	}
+
+	void setVertexAt( const VertexDescription &vertex, int vertexIndex )
+	{
+		m_vertexPosition[vertexIndex] = vertex.getPosition();
+		m_vertexPreviousPosition[vertexIndex] = vertex.getPosition();
+		m_vertexVelocity[vertexIndex] = Vectormath::Aos::Vector3(0.f, 0.f, 0.f);
+		m_vertexForceAccumulator[vertexIndex] = Vectormath::Aos::Vector3(0.f, 0.f, 0.f);
+		m_vertexNormal[vertexIndex] = Vectormath::Aos::Vector3(0.f, 0.f, 0.f);
+		m_vertexInverseMass[vertexIndex] = vertex.getInverseMass();
+		m_vertexArea[vertexIndex] = 0.f;
+		m_vertexTriangleCount[vertexIndex] = 0;
+	}
+
+	/** 
+	 * Create numVertices new vertices for cloth clothIdentifier 
+	 * maxVertices allows a buffer zone of extra vertices for alignment or tearing reasons.
+	 */
+	void createVertices( int numVertices, int clothIdentifier, int maxVertices = 0 )
+	{
+		int previousSize = m_vertexPosition.size();
+		if( maxVertices == 0 )
+			maxVertices = numVertices;
+		int newSize = previousSize + maxVertices;
+
+		// Resize all the arrays that store vertex data
+		m_clothIdentifier.resize( newSize );
+		m_vertexPosition.resize( newSize );
+		m_vertexPreviousPosition.resize( newSize );
+		m_vertexVelocity.resize( newSize );
+		m_vertexForceAccumulator.resize( newSize );
+		m_vertexNormal.resize( newSize );
+		m_vertexInverseMass.resize( newSize );
+		m_vertexArea.resize( newSize );
+		m_vertexTriangleCount.resize( newSize );
+
+		for( int vertexIndex = previousSize; vertexIndex < newSize; ++vertexIndex )
+			m_clothIdentifier[vertexIndex] = clothIdentifier;
+		for( int vertexIndex = (previousSize + numVertices); vertexIndex < newSize; ++vertexIndex )
+			m_clothIdentifier[vertexIndex] = -1;
+	}
+
+	// Get and set methods in header so they can be inlined
+
+	/**
+	 * Return a reference to the position of vertex vertexIndex as stored on the host.
+	 */
+	Vectormath::Aos::Point3 &getPosition( int vertexIndex )
+	{
+		return m_vertexPosition[vertexIndex];
+	}
+
+	Vectormath::Aos::Point3 getPosition( int vertexIndex ) const
+	{
+		return m_vertexPosition[vertexIndex];
+	}
+
+	/**
+	 * Return a reference to the previous position of vertex vertexIndex as stored on the host.
+	 */
+	Vectormath::Aos::Point3 &getPreviousPosition( int vertexIndex )
+	{
+		return m_vertexPreviousPosition[vertexIndex];
+	}
+
+	/**
+	 * Return a reference to the velocity of vertex vertexIndex as stored on the host.
+	 */
+	Vectormath::Aos::Vector3 &getVelocity( int vertexIndex )
+	{
+		return m_vertexVelocity[vertexIndex];
+	}
+
+	/**
+	 * Return a reference to the force accumulator of vertex vertexIndex as stored on the host.
+	 */
+	Vectormath::Aos::Vector3 &getForceAccumulator( int vertexIndex )
+	{
+		return m_vertexForceAccumulator[vertexIndex];
+	}
+
+	/**
+	 * Return a reference to the normal of vertex vertexIndex as stored on the host.
+	 */
+	Vectormath::Aos::Vector3 &getNormal( int vertexIndex )
+	{
+		return m_vertexNormal[vertexIndex];
+	}
+
+	Vectormath::Aos::Vector3 getNormal( int vertexIndex ) const
+	{
+		return m_vertexNormal[vertexIndex];
+	}
+
+	/**
+	 * Return a reference to the inverse mass of vertex vertexIndex as stored on the host.
+	 */
+	float &getInverseMass( int vertexIndex )
+	{
+		return m_vertexInverseMass[vertexIndex];
+	}
+
+	/**
+	 * Get access to the area controlled by this vertex.
+	 */
+	float &getArea( int vertexIndex )
+	{
+		return m_vertexArea[vertexIndex];
+	}
+
+	/**
+	 * Get access to the array of how many triangles touch each vertex.
+	 */
+	int &getTriangleCount( int vertexIndex )
+	{
+		return m_vertexTriangleCount[vertexIndex];
+	}
+
+
+
+	/**
+	 * Return true if data is on the accelerator.
+	 * The CPU version of this class will return true here because
+	 * the CPU is the same as the accelerator.
+	 */
+	virtual bool onAccelerator()
+	{
+		return true;
+	}
+	
+	/**
+	 * Move data from host memory to the accelerator.
+	 * The CPU version will always return that it has moved it.
+	 */
+	virtual bool moveToAccelerator()
+	{
+		return true;
+	}
+
+	/**
+	 * Move data from host memory from the accelerator.
+	 * The CPU version will always return that it has moved it.
+	 */
+	virtual bool moveFromAccelerator()
+	{
+		return true;
+	}
+
+	btAlignedObjectArray< Vectormath::Aos::Point3 >	&getVertexPositions()
+	{
+		return m_vertexPosition;
+	}
+};
+
+
+class btSoftBodyTriangleData
+{
+public:
+	/**
+	 * Class representing a triangle as a set of three indices into the
+	 * vertex array.
+	 */
+	class TriangleNodeSet
+	{
+	public:
+		int vertex0;
+		int vertex1;
+		int vertex2;
+		int _padding;
+
+		TriangleNodeSet( )
+		{
+			vertex0 = 0;
+			vertex1 = 0;
+			vertex2 = 0;
+			_padding = -1;
+		}
+
+		TriangleNodeSet( int newVertex0, int newVertex1, int newVertex2 )
+		{
+			vertex0 = newVertex0;
+			vertex1 = newVertex1;
+			vertex2 = newVertex2;
+		}
+	};
+
+	class TriangleDescription
+	{
+	protected:
+		int m_vertex0;
+		int m_vertex1;
+		int m_vertex2;
+
+	public:
+		TriangleDescription()
+		{
+			m_vertex0 = 0;
+			m_vertex1 = 0;
+			m_vertex2 = 0;
+		}
+
+		TriangleDescription( int newVertex0, int newVertex1, int newVertex2 )
+		{
+			m_vertex0 = newVertex0;
+			m_vertex1 = newVertex1;
+			m_vertex2 = newVertex2;
+		}
+
+		TriangleNodeSet getVertexSet() const
+		{
+			btSoftBodyTriangleData::TriangleNodeSet nodes;
+			nodes.vertex0 = m_vertex0;
+			nodes.vertex1 = m_vertex1;
+			nodes.vertex2 = m_vertex2;
+			return nodes;
+		}
+	};
+
+protected:
+	// NOTE:
+	// Vertex reference data is stored relative to global array, not relative to individual cloth.
+	// Values must be correct if being passed into single-cloth VBOs or when migrating from one solver
+	// to another.
+	btAlignedObjectArray< TriangleNodeSet > m_vertexIndices;
+	btAlignedObjectArray< float > m_area;
+	btAlignedObjectArray< Vectormath::Aos::Vector3 > m_normal;
+
+public:
+	btSoftBodyTriangleData()
+	{
+	}
+
+	virtual ~btSoftBodyTriangleData()
+	{
+
+	}
+
+	virtual void clear()
+	{
+		m_vertexIndices.resize(0);
+		m_area.resize(0);
+		m_normal.resize(0);
+	}
+
+	int getNumTriangles()
+	{
+		return m_vertexIndices.size();
+	}
+
+	virtual void setTriangleAt( const TriangleDescription &triangle, int triangleIndex )
+	{
+		m_vertexIndices[triangleIndex] = triangle.getVertexSet();
+	}
+
+	virtual void createTriangles( int numTriangles )		
+	{
+		int previousSize = m_vertexIndices.size();
+		int newSize = previousSize + numTriangles;
+
+		// Resize all the arrays that store triangle data
+		m_vertexIndices.resize( newSize );
+		m_area.resize( newSize );
+		m_normal.resize( newSize );
+	}
+
+	/**
+	 * Return the vertex index set for triangle triangleIndex as stored on the host.
+	 */
+	const TriangleNodeSet &getVertexSet( int triangleIndex )
+	{
+		return m_vertexIndices[triangleIndex];
+	}
+
+	/**
+	 * Get access to the triangle area.
+	 */
+	float &getTriangleArea( int triangleIndex )
+	{
+		return m_area[triangleIndex];
+	}
+
+	/**
+	 * Get access to the normal vector for this triangle.
+	 */
+	Vectormath::Aos::Vector3 &getNormal( int triangleIndex )
+	{
+		return m_normal[triangleIndex];
+	}
+
+	/**
+	 * Return true if data is on the accelerator.
+	 * The CPU version of this class will return true here because
+	 * the CPU is the same as the accelerator.
+	 */
+	virtual bool onAccelerator()
+	{
+		return true;
+	}
+	
+	/**
+	 * Move data from host memory to the accelerator.
+	 * The CPU version will always return that it has moved it.
+	 */
+	virtual bool moveToAccelerator()
+	{
+		return true;
+	}
+
+	/**
+	 * Move data from host memory from the accelerator.
+	 * The CPU version will always return that it has moved it.
+	 */
+	virtual bool moveFromAccelerator()
+	{
+		return true;
+	}
+};
+
+
+#endif // #ifndef BT_SOFT_BODY_SOLVER_DATA_H
+
+ bullet/BulletMultiThreaded/GpuSoftBodySolvers/CPU/btSoftBodySolver_CPU.h view
@@ -0,0 +1,370 @@+/*
+Bullet Continuous Collision Detection and Physics Library
+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+Permission is granted to anyone to use this software for any purpose, 
+including commercial applications, and to alter it and redistribute it freely, 
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+*/
+
+#ifndef BT_ACCELERATED_SOFT_BODY_CPU_SOLVER_H
+#define BT_ACCELERATED_SOFT_BODY_CPU_SOLVER_H
+
+#include "vectormath/vmInclude.h"
+#include "BulletSoftBody/btSoftBodySolvers.h"
+#include "BulletSoftBody/btSoftBodySolverVertexBuffer.h"
+#include "BulletMultiThreaded/GpuSoftBodySolvers/CPU/btSoftBodySolverData.h"
+
+struct btCPUCollisionShapeDescription
+{
+	int softBodyIdentifier;
+	int collisionShapeType;
+	Vectormath::Aos::Transform3 shapeTransform;
+	union
+	{
+		struct Sphere
+		{
+			float radius;
+		} sphere;
+		struct Capsule
+		{
+			float radius;
+			float halfHeight;
+			int upAxis;
+		} capsule;
+	} shapeInformation;
+	
+	float margin;
+	float friction;
+	Vectormath::Aos::Vector3 linearVelocity;
+	Vectormath::Aos::Vector3 angularVelocity;
+
+	btCPUCollisionShapeDescription()
+	{
+		collisionShapeType = 0;
+		margin = 0;
+		friction = 0;
+	}
+};
+
+class btCPUSoftBodySolver : public btSoftBodySolver
+{
+protected:
+	/**
+	 * Entry in the collision shape array.
+	 * Specifies the shape type, the transform matrix and the necessary details of the collisionShape.
+	 */
+
+
+	// Public because output classes need it. This is a better encapsulation to break in the short term
+	// Than having the solvers themselves need dependencies on DX, CL etc unnecessarily
+public:
+	
+	struct CollisionObjectIndices
+	{
+		CollisionObjectIndices( int f, int e )
+		{
+			firstObject = f;
+			endObject = e;
+		}
+
+		int firstObject;
+		int endObject;
+	};
+
+	/**
+	 * SoftBody class to maintain information about a soft body instance
+	 * within a solver.
+	 * This data addresses the main solver arrays.
+	 */
+	class btAcceleratedSoftBodyInterface
+	{
+	protected:
+		/** Current number of vertices that are part of this cloth */
+		int m_numVertices;
+		/** Maximum number of vertices allocated to be part of this cloth */
+		int m_maxVertices;
+		/** Current number of triangles that are part of this cloth */
+		int m_numTriangles;
+		/** Maximum number of triangles allocated to be part of this cloth */
+		int m_maxTriangles;
+		/** Index of first vertex in the world allocated to this cloth */
+		int m_firstVertex;
+		/** Index of first triangle in the world allocated to this cloth */
+		int m_firstTriangle;
+		/** Index of first link in the world allocated to this cloth */
+		int m_firstLink;
+		/** Maximum number of links allocated to this cloth */
+		int m_maxLinks;
+		/** Current number of links allocated to this cloth */
+		int m_numLinks;
+
+		/** The actual soft body this data represents */
+		btSoftBody *m_softBody;
+
+
+	public:
+		btAcceleratedSoftBodyInterface( btSoftBody *softBody ) :
+		  m_softBody( softBody )
+		{
+			m_numVertices = 0;
+			m_maxVertices = 0;
+			m_numTriangles = 0;
+			m_maxTriangles = 0;
+			m_firstVertex = 0;
+			m_firstTriangle = 0;
+			m_firstLink = 0;
+			m_maxLinks = 0;
+			m_numLinks = 0;
+		}
+		int getNumVertices() const
+		{
+			return m_numVertices;
+		}
+
+		int getNumTriangles() const
+		{
+			return m_numTriangles;
+		}
+
+		int getMaxVertices() const
+		{
+			return m_maxVertices;
+		}
+
+		int getMaxTriangles() const
+		{
+			return m_maxTriangles;
+		}
+
+		int getFirstVertex() const
+		{
+			return m_firstVertex;
+		}
+
+		int getFirstTriangle() const
+		{
+			return m_firstTriangle;
+		}
+
+		/**
+		 * Update the bounds in the btSoftBody object
+		 */
+		void updateBounds( const btVector3 &lowerBound, const btVector3 &upperBound );
+
+		// TODO: All of these set functions will have to do checks and
+		// update the world because restructuring of the arrays will be necessary
+		// Reasonable use of "friend"?
+		void setNumVertices( int numVertices )
+		{
+			m_numVertices = numVertices;
+		}	
+		
+		void setNumTriangles( int numTriangles )
+		{
+			m_numTriangles = numTriangles;
+		}
+
+		void setMaxVertices( int maxVertices )
+		{
+			m_maxVertices = maxVertices;
+		}
+
+		void setMaxTriangles( int maxTriangles )
+		{
+			m_maxTriangles = maxTriangles;
+		}
+
+		void setFirstVertex( int firstVertex )
+		{
+			m_firstVertex = firstVertex;
+		}
+
+		void setFirstTriangle( int firstTriangle )
+		{
+			m_firstTriangle = firstTriangle;
+		}
+
+		void setMaxLinks( int maxLinks )
+		{
+			m_maxLinks = maxLinks;
+		}
+
+		void setNumLinks( int numLinks )
+		{
+			m_numLinks = numLinks;
+		}
+
+		void setFirstLink( int firstLink )
+		{
+			m_firstLink = firstLink;
+		}
+
+		int getMaxLinks() const
+		{
+			return m_maxLinks;
+		}
+
+		int getNumLinks() const
+		{
+			return m_numLinks;
+		}
+
+		int getFirstLink() const
+		{
+			return m_firstLink;
+		}
+
+		btSoftBody* getSoftBody()
+		{
+			return m_softBody;
+		}
+
+		const btSoftBody* const getSoftBody() const
+		{
+			return m_softBody;
+		}
+	};
+	
+	btSoftBodyLinkData m_linkData;
+	btSoftBodyVertexData m_vertexData;
+	btSoftBodyTriangleData m_triangleData;
+
+protected:
+
+
+
+		
+	/** Variable to define whether we need to update solver constants on the next iteration */
+	bool m_updateSolverConstants;
+
+	/** 
+	 * Cloths owned by this solver.
+	 * Only our cloths are in this array.
+	 */
+	btAlignedObjectArray< btAcceleratedSoftBodyInterface * > m_softBodySet;
+	
+	/** Acceleration value to be applied to all non-static vertices in the solver. 
+	 * Index n is cloth n, array sized by number of cloths in the world not the solver. 
+	 */
+	btAlignedObjectArray< Vectormath::Aos::Vector3 > m_perClothAcceleration;
+
+	/** Wind velocity to be applied normal to all non-static vertices in the solver. 
+	 * Index n is cloth n, array sized by number of cloths in the world not the solver. 
+	 */
+	btAlignedObjectArray< Vectormath::Aos::Vector3 > m_perClothWindVelocity;
+
+	/** Velocity damping factor */
+	btAlignedObjectArray< float > m_perClothDampingFactor;
+
+	/** Velocity correction coefficient */
+	btAlignedObjectArray< float > m_perClothVelocityCorrectionCoefficient;
+
+	/** Lift parameter for wind effect on cloth. */
+	btAlignedObjectArray< float > m_perClothLiftFactor;
+	
+	/** Drag parameter for wind effect on cloth. */
+	btAlignedObjectArray< float > m_perClothDragFactor;
+
+	/** Density of the medium in which each cloth sits */
+	btAlignedObjectArray< float > m_perClothMediumDensity;
+
+	/** 
+	 * Collision shape details: pair of index of first collision shape for the cloth and number of collision objects.
+	 */
+	btAlignedObjectArray< CollisionObjectIndices > m_perClothCollisionObjects;
+
+	/** 
+	 * Collision shapes being passed across to the cloths in this solver.
+	 */
+	btAlignedObjectArray< btCPUCollisionShapeDescription > m_collisionObjectDetails;
+
+
+	void prepareCollisionConstraints();
+
+	Vectormath::Aos::Vector3 ProjectOnAxis( const Vectormath::Aos::Vector3 &v, const Vectormath::Aos::Vector3 &a );
+
+	void ApplyClampedForce( float solverdt, const Vectormath::Aos::Vector3 &force, const Vectormath::Aos::Vector3 &vertexVelocity, float inverseMass, Vectormath::Aos::Vector3 &vertexForce );
+	
+	float computeTriangleArea( 
+		const Vectormath::Aos::Point3 &vertex0,
+		const Vectormath::Aos::Point3 &vertex1,
+		const Vectormath::Aos::Point3 &vertex2 );
+
+	void applyForces( float solverdt );
+	void integrate( float solverdt );
+	void updateConstants( float timeStep );
+	int findSoftBodyIndex( const btSoftBody* const softBody );
+	
+	/** Update the bounds of the soft body objects in the solver */
+	void updateBounds();
+
+
+public:
+	btCPUSoftBodySolver();
+	
+	virtual ~btCPUSoftBodySolver();
+
+	
+	virtual SolverTypes getSolverType() const
+	{
+		return CPU_SOLVER;
+	}
+
+
+	virtual btSoftBodyLinkData &getLinkData();
+
+	virtual btSoftBodyVertexData &getVertexData();
+
+	virtual btSoftBodyTriangleData &getTriangleData();
+
+
+
+	btAcceleratedSoftBodyInterface *findSoftBodyInterface( const btSoftBody* const softBody );
+	const btAcceleratedSoftBodyInterface * const findSoftBodyInterface( const btSoftBody* const softBody ) const;
+
+
+
+	virtual bool checkInitialized();
+
+	virtual void updateSoftBodies( );
+
+	virtual void optimize( btAlignedObjectArray< btSoftBody * > &softBodies , bool forceUpdate=false);
+
+	virtual void copyBackToSoftBodies();
+
+	virtual void solveConstraints( float solverdt );
+
+	virtual void predictMotion( float solverdt );
+
+	virtual void processCollision( btSoftBody *, btCollisionObject* );
+
+	virtual void processCollision( btSoftBody*, btSoftBody *);
+
+};
+
+
+/** 
+ * Class to manage movement of data from a solver to a given target.
+ * This version is the CPU to CPU generic version.
+ */
+class btSoftBodySolverOutputCPUtoCPU : public btSoftBodySolverOutput
+{
+protected:
+
+public:
+	btSoftBodySolverOutputCPUtoCPU()
+	{
+	}
+
+	/** Output current computed vertex data to the vertex buffers for all cloths in the solver. */
+	virtual void copySoftBodyToVertexBuffer( const btSoftBody * const softBody, btVertexBufferDescriptor *vertexBuffer );
+};
+
+#endif // #ifndef BT_ACCELERATED_SOFT_BODY_CPU_SOLVER_H
+ bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolverBuffer_DX11.h view
@@ -0,0 +1,323 @@+/*
+Bullet Continuous Collision Detection and Physics Library
+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+Permission is granted to anyone to use this software for any purpose, 
+including commercial applications, and to alter it and redistribute it freely, 
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+*/
+#ifndef BT_SOFT_BODY_SOLVER_BUFFER_DX11_H
+#define BT_SOFT_BODY_SOLVER_BUFFER_DX11_H
+
+// DX11 support
+#include <windows.h>
+#include <crtdbg.h>
+#include <d3d11.h>
+#include <d3dx11.h>
+#include <d3dcompiler.h>
+
+#ifndef SAFE_RELEASE
+#define SAFE_RELEASE(p)      { if(p) { (p)->Release(); (p)=NULL; } }
+#endif
+
+/**
+ * DX11 Buffer that tracks a host buffer on use to ensure size-correctness.
+ */
+template <typename ElementType> class btDX11Buffer
+{
+protected:
+	ID3D11Device*				m_d3dDevice;
+	ID3D11DeviceContext*		m_d3dDeviceContext;
+
+	ID3D11Buffer*               m_Buffer;
+	ID3D11ShaderResourceView*   m_SRV;
+	ID3D11UnorderedAccessView*  m_UAV;
+	btAlignedObjectArray< ElementType >*	m_CPUBuffer;
+
+	// TODO: Separate this from the main class
+	// as read back buffers can be shared between buffers
+	ID3D11Buffer*               m_readBackBuffer;
+
+	int m_gpuSize;
+	bool m_onGPU;
+
+	bool m_readOnlyOnGPU;
+	
+	bool createBuffer( ID3D11Buffer *preexistingBuffer = 0)
+	{
+		HRESULT hr = S_OK;
+
+		// Create all CS buffers
+		if( preexistingBuffer )
+		{
+			m_Buffer = preexistingBuffer;
+		} else {
+			D3D11_BUFFER_DESC buffer_desc;
+			ZeroMemory(&buffer_desc, sizeof(buffer_desc));		
+			buffer_desc.Usage = D3D11_USAGE_DEFAULT;
+			if( m_readOnlyOnGPU )
+				buffer_desc.BindFlags = D3D11_BIND_SHADER_RESOURCE;
+			else
+				buffer_desc.BindFlags = D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_UNORDERED_ACCESS;
+			buffer_desc.MiscFlags = D3D11_RESOURCE_MISC_BUFFER_STRUCTURED;
+			
+			buffer_desc.ByteWidth = m_CPUBuffer->size() * sizeof(ElementType);
+			// At a minimum the buffer must exist
+			if( buffer_desc.ByteWidth == 0 )
+				buffer_desc.ByteWidth = sizeof(ElementType);
+			buffer_desc.StructureByteStride = sizeof(ElementType);
+			hr = m_d3dDevice->CreateBuffer(&buffer_desc, NULL, &m_Buffer);
+			if( FAILED( hr ) )
+		        return (hr==S_OK);
+		} 
+
+		if( m_readOnlyOnGPU )
+		{
+			D3D11_SHADER_RESOURCE_VIEW_DESC srvbuffer_desc;
+			ZeroMemory(&srvbuffer_desc, sizeof(srvbuffer_desc));
+			srvbuffer_desc.Format = DXGI_FORMAT_UNKNOWN;
+			srvbuffer_desc.ViewDimension = D3D11_SRV_DIMENSION_BUFFER;
+
+			srvbuffer_desc.Buffer.ElementWidth = m_CPUBuffer->size();
+			if( srvbuffer_desc.Buffer.ElementWidth == 0 )
+				srvbuffer_desc.Buffer.ElementWidth = 1;
+			hr = m_d3dDevice->CreateShaderResourceView(m_Buffer, &srvbuffer_desc, &m_SRV);
+			if( FAILED( hr ) )
+				return (hr==S_OK);
+		} else {
+			// Create SRV
+			D3D11_SHADER_RESOURCE_VIEW_DESC srvbuffer_desc;
+			ZeroMemory(&srvbuffer_desc, sizeof(srvbuffer_desc));
+			srvbuffer_desc.Format = DXGI_FORMAT_UNKNOWN;
+			srvbuffer_desc.ViewDimension = D3D11_SRV_DIMENSION_BUFFER;
+
+			srvbuffer_desc.Buffer.ElementWidth = m_CPUBuffer->size();
+			if( srvbuffer_desc.Buffer.ElementWidth == 0 )
+				srvbuffer_desc.Buffer.ElementWidth = 1;
+			hr = m_d3dDevice->CreateShaderResourceView(m_Buffer, &srvbuffer_desc, &m_SRV);
+			if( FAILED( hr ) )
+				return (hr==S_OK);
+
+			// Create UAV
+			D3D11_UNORDERED_ACCESS_VIEW_DESC uavbuffer_desc;
+			ZeroMemory(&uavbuffer_desc, sizeof(uavbuffer_desc));
+			uavbuffer_desc.Format = DXGI_FORMAT_UNKNOWN;
+			uavbuffer_desc.ViewDimension = D3D11_UAV_DIMENSION_BUFFER;
+
+			uavbuffer_desc.Buffer.NumElements = m_CPUBuffer->size();
+			if( uavbuffer_desc.Buffer.NumElements == 0 )
+				uavbuffer_desc.Buffer.NumElements = 1;
+			hr = m_d3dDevice->CreateUnorderedAccessView(m_Buffer, &uavbuffer_desc, &m_UAV);
+			if( FAILED( hr ) )
+				return (hr==S_OK);
+
+			// Create read back buffer
+			D3D11_BUFFER_DESC readback_buffer_desc;
+			ZeroMemory(&readback_buffer_desc, sizeof(readback_buffer_desc));
+
+			readback_buffer_desc.ByteWidth = m_CPUBuffer->size() * sizeof(ElementType);
+			readback_buffer_desc.Usage = D3D11_USAGE_STAGING;
+			readback_buffer_desc.CPUAccessFlags = D3D11_CPU_ACCESS_READ;
+			readback_buffer_desc.StructureByteStride = sizeof(ElementType);
+			hr = m_d3dDevice->CreateBuffer(&readback_buffer_desc, NULL, &m_readBackBuffer);
+			if( FAILED( hr ) )
+				return (hr==S_OK);
+		}
+
+		m_gpuSize = m_CPUBuffer->size();
+		return true;
+	}
+
+
+
+public:
+	btDX11Buffer( ID3D11Device *d3dDevice, ID3D11DeviceContext *d3dDeviceContext, btAlignedObjectArray< ElementType > *CPUBuffer, bool readOnly )
+	{
+		m_d3dDevice = d3dDevice;
+		m_d3dDeviceContext = d3dDeviceContext;
+		m_Buffer = 0;
+		m_SRV = 0;
+		m_UAV = 0;
+		m_readBackBuffer = 0;
+
+		m_CPUBuffer = CPUBuffer;
+
+		m_gpuSize = 0;
+		m_onGPU = false;
+
+		m_readOnlyOnGPU = readOnly;
+	}
+
+	virtual ~btDX11Buffer()
+	{
+		SAFE_RELEASE(m_Buffer);
+		SAFE_RELEASE(m_SRV);
+		SAFE_RELEASE(m_UAV);
+		SAFE_RELEASE(m_readBackBuffer);
+	}
+
+	ID3D11ShaderResourceView* &getSRV()
+	{
+		return m_SRV;
+	}
+
+	ID3D11UnorderedAccessView* &getUAV()
+	{
+		return m_UAV;
+	}
+
+	ID3D11Buffer* &getBuffer()
+	{
+		return m_Buffer;
+	}
+
+	/**
+	 * Move the data to the GPU if it is not there already.
+	 */
+	bool moveToGPU()
+	{
+		// Reallocate if GPU size is too small
+		if( (m_CPUBuffer->size() > m_gpuSize ) )
+			m_onGPU = false;
+		if( !m_onGPU && m_CPUBuffer->size() > 0 )
+		{
+			// If the buffer doesn't exist or the CPU-side buffer has changed size, create
+			// We should really delete the old one, too, but let's leave that for later
+			if( !m_Buffer || (m_CPUBuffer->size() != m_gpuSize) )
+			{
+				SAFE_RELEASE(m_Buffer);
+				SAFE_RELEASE(m_SRV);
+				SAFE_RELEASE(m_UAV);
+				SAFE_RELEASE(m_readBackBuffer);
+				if( !createBuffer() )
+				{
+					btAssert("Buffer creation failed.");
+					return false;
+				}
+			}
+
+			if( m_gpuSize > 0 )
+			{
+				D3D11_BOX destRegion;
+				destRegion.left = 0;
+				destRegion.front = 0;
+				destRegion.top = 0;
+				destRegion.bottom = 1;
+				destRegion.back = 1;
+				destRegion.right = (m_CPUBuffer->size())*sizeof(ElementType);
+				m_d3dDeviceContext->UpdateSubresource(m_Buffer, 0, &destRegion, &((*m_CPUBuffer)[0]), 0, 0);
+
+				m_onGPU = true;
+			}
+
+		}
+
+		return true;
+	}
+
+	/**
+	 * Move the data back from the GPU if it is on there and isn't read only.
+	 */
+	bool moveFromGPU()
+	{
+		if( m_CPUBuffer->size() > 0 )
+		{
+			if( m_onGPU && !m_readOnlyOnGPU )
+			{
+				// Copy back
+				D3D11_MAPPED_SUBRESOURCE MappedResource = {0}; 
+				//m_pd3dImmediateContext->CopyResource(m_phAngVelReadBackBuffer, m_phAngVel);
+
+				D3D11_BOX destRegion;	
+				destRegion.left = 0;
+				destRegion.front = 0;
+				destRegion.top = 0;
+				destRegion.bottom = 1;
+				destRegion.back = 1;
+
+				destRegion.right = (m_CPUBuffer->size())*sizeof(ElementType);
+				m_d3dDeviceContext->CopySubresourceRegion(
+					m_readBackBuffer,
+					0,
+					0,
+					0,
+					0 ,
+					m_Buffer,
+					0,
+					&destRegion
+					);
+
+				m_d3dDeviceContext->Map(m_readBackBuffer, 0, D3D11_MAP_READ, 0, &MappedResource);   
+				//memcpy(m_hAngVel, MappedResource.pData, (m_maxObjs * sizeof(float) ));
+				memcpy(&((*m_CPUBuffer)[0]), MappedResource.pData, ((m_CPUBuffer->size()) * sizeof(ElementType) ));		
+				m_d3dDeviceContext->Unmap(m_readBackBuffer, 0);
+
+				m_onGPU = false;
+			}
+		}
+
+		return true;
+	}
+
+
+	/**
+	 * Copy the data back from the GPU without changing its state to be CPU-side.
+	 * Useful if we just want to view it on the host for visualization.
+	 */
+	bool copyFromGPU()
+	{
+		if( m_CPUBuffer->size() > 0 )
+		{
+			if( m_onGPU && !m_readOnlyOnGPU )
+			{
+				// Copy back
+				D3D11_MAPPED_SUBRESOURCE MappedResource = {0}; 
+
+				D3D11_BOX destRegion;	
+				destRegion.left = 0;
+				destRegion.front = 0;
+				destRegion.top = 0;
+				destRegion.bottom = 1;
+				destRegion.back = 1;
+
+				destRegion.right = (m_CPUBuffer->size())*sizeof(ElementType);
+				m_d3dDeviceContext->CopySubresourceRegion(
+					m_readBackBuffer,
+					0,
+					0,
+					0,
+					0 ,
+					m_Buffer,
+					0,
+					&destRegion
+					);
+
+				m_d3dDeviceContext->Map(m_readBackBuffer, 0, D3D11_MAP_READ, 0, &MappedResource);   
+				//memcpy(m_hAngVel, MappedResource.pData, (m_maxObjs * sizeof(float) ));
+				memcpy(&((*m_CPUBuffer)[0]), MappedResource.pData, ((m_CPUBuffer->size()) * sizeof(ElementType) ));		
+				m_d3dDeviceContext->Unmap(m_readBackBuffer, 0);
+			}
+		}
+
+		return true;
+	}
+
+	/**
+	 * Call if data has changed on the CPU.
+	 * Can then trigger a move to the GPU as necessary.
+	 */
+	virtual void changedOnCPU()
+	{
+		m_onGPU = false;
+	}
+}; // class btDX11Buffer
+
+
+
+#endif // #ifndef BT_SOFT_BODY_SOLVER_BUFFER_DX11_H
+ bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolverLinkData_DX11.h view
@@ -0,0 +1,103 @@+/*
+Bullet Continuous Collision Detection and Physics Library
+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+Permission is granted to anyone to use this software for any purpose, 
+including commercial applications, and to alter it and redistribute it freely, 
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+*/
+
+
+#include "BulletMultiThreaded/GpuSoftBodySolvers/CPU/btSoftBodySolverData.h"
+#include "btSoftBodySolverBuffer_DX11.h"
+
+
+#ifndef BT_SOFT_BODY_SOLVER_LINK_DATA_DX11_H
+#define BT_SOFT_BODY_SOLVER_LINK_DATA_DX11_H
+
+struct ID3D11Device;
+struct ID3D11DeviceContext;
+
+
+class btSoftBodyLinkDataDX11 : public btSoftBodyLinkData
+{
+public:
+	bool				m_onGPU;
+	ID3D11Device		*m_d3dDevice;
+	ID3D11DeviceContext *m_d3dDeviceContext;
+
+
+	btDX11Buffer<LinkNodePair>				m_dx11Links;
+	btDX11Buffer<float>											m_dx11LinkStrength;
+	btDX11Buffer<float>											m_dx11LinksMassLSC;
+	btDX11Buffer<float>											m_dx11LinksRestLengthSquared;
+	btDX11Buffer<Vectormath::Aos::Vector3>						m_dx11LinksCLength;
+	btDX11Buffer<float>											m_dx11LinksLengthRatio;
+	btDX11Buffer<float>											m_dx11LinksRestLength;
+	btDX11Buffer<float>											m_dx11LinksMaterialLinearStiffnessCoefficient;
+
+	struct BatchPair
+	{
+		int start;
+		int length;
+
+		BatchPair() :
+			start(0),
+			length(0)
+		{
+		}
+
+		BatchPair( int s, int l ) : 
+			start( s ),
+			length( l )
+		{
+		}
+	};
+
+	/**
+	 * Link addressing information for each cloth.
+	 * Allows link locations to be computed independently of data batching.
+	 */
+	btAlignedObjectArray< int >							m_linkAddresses;
+
+	/**
+	 * Start and length values for computation batches over link data.
+	 */
+	btAlignedObjectArray< BatchPair >		m_batchStartLengths;
+
+
+	//ID3D11Buffer*               readBackBuffer;
+	
+	btSoftBodyLinkDataDX11( ID3D11Device *d3dDevice, ID3D11DeviceContext *d3dDeviceContext );
+
+	virtual ~btSoftBodyLinkDataDX11();
+
+	/** Allocate enough space in all link-related arrays to fit numLinks links */
+	virtual void createLinks( int numLinks );
+	
+	/** Insert the link described into the correct data structures assuming space has already been allocated by a call to createLinks */
+	virtual void setLinkAt( const LinkDescription &link, int linkIndex );
+
+	virtual bool onAccelerator();
+
+	virtual bool moveToAccelerator();
+
+	virtual bool moveFromAccelerator();
+
+	/**
+	 * Generate (and later update) the batching for the entire link set.
+	 * This redoes a lot of work because it batches the entire set when each cloth is inserted.
+	 * In theory we could delay it until just before we need the cloth.
+	 * It's a one-off overhead, though, so that is a later optimisation.
+	 */
+	void generateBatches();
+};
+
+
+#endif // #ifndef BT_SOFT_BODY_SOLVER_LINK_DATA_DX11_H
+ bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolverLinkData_DX11SIMDAware.h view
@@ -0,0 +1,173 @@+/*
+Bullet Continuous Collision Detection and Physics Library
+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+Permission is granted to anyone to use this software for any purpose, 
+including commercial applications, and to alter it and redistribute it freely, 
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+*/
+
+#include "BulletMultiThreaded/GpuSoftBodySolvers/CPU/btSoftBodySolverData.h"
+#include "btSoftBodySolverBuffer_DX11.h"
+
+#ifndef BT_ACCELERATED_SOFT_BODY_LINK_DATA_DX11_SIMDAWARE_H
+#define BT_ACCELERATED_SOFT_BODY_LINK_DATA_DX11_SIMDAWARE_H
+
+struct ID3D11Device;
+struct ID3D11DeviceContext;
+
+
+class btSoftBodyLinkDataDX11SIMDAware : public btSoftBodyLinkData
+{
+public:
+	bool				m_onGPU;
+	ID3D11Device		*m_d3dDevice;
+	ID3D11DeviceContext *m_d3dDeviceContext;
+
+	const int m_wavefrontSize;
+	const int m_linksPerWorkItem;
+	const int m_maxLinksPerWavefront;
+	int m_maxBatchesWithinWave;
+	int m_maxVerticesWithinWave;
+	int m_numWavefronts;
+
+	int m_maxVertex;
+
+	struct NumBatchesVerticesPair
+	{
+		int numBatches;
+		int numVertices;
+	};
+
+	// Array storing number of links in each wavefront
+	btAlignedObjectArray<int>									m_linksPerWavefront;
+	btAlignedObjectArray<NumBatchesVerticesPair>				m_numBatchesAndVerticesWithinWaves;
+	btDX11Buffer< NumBatchesVerticesPair >						m_dx11NumBatchesAndVerticesWithinWaves;
+
+	// All arrays here will contain batches of m_maxLinksPerWavefront links
+	// ordered by wavefront.
+	// with either global vertex pairs or local vertex pairs
+	btAlignedObjectArray< int >									m_wavefrontVerticesGlobalAddresses; // List of global vertices per wavefront
+	btDX11Buffer<int>											m_dx11WavefrontVerticesGlobalAddresses;
+	btAlignedObjectArray< LinkNodePair >						m_linkVerticesLocalAddresses; // Vertex pair for the link
+	btDX11Buffer<LinkNodePair>									m_dx11LinkVerticesLocalAddresses;
+	btDX11Buffer<float>											m_dx11LinkStrength;
+	btDX11Buffer<float>											m_dx11LinksMassLSC;
+	btDX11Buffer<float>											m_dx11LinksRestLengthSquared;
+	btDX11Buffer<float>											m_dx11LinksRestLength;
+	btDX11Buffer<float>											m_dx11LinksMaterialLinearStiffnessCoefficient;
+
+	struct BatchPair
+	{
+		int start;
+		int length;
+
+		BatchPair() :
+			start(0),
+			length(0)
+		{
+		}
+
+		BatchPair( int s, int l ) : 
+			start( s ),
+			length( l )
+		{
+		}
+	};
+
+	/**
+	 * Link addressing information for each cloth.
+	 * Allows link locations to be computed independently of data batching.
+	 */
+	btAlignedObjectArray< int >							m_linkAddresses;
+
+	/**
+	 * Start and length values for computation batches over link data.
+	 */
+	btAlignedObjectArray< BatchPair >		m_wavefrontBatchStartLengths;
+
+
+	//ID3D11Buffer*               readBackBuffer;
+	
+	btSoftBodyLinkDataDX11SIMDAware( ID3D11Device *d3dDevice, ID3D11DeviceContext *d3dDeviceContext );
+
+	virtual ~btSoftBodyLinkDataDX11SIMDAware();
+
+	/** Allocate enough space in all link-related arrays to fit numLinks links */
+	virtual void createLinks( int numLinks );
+	
+	/** Insert the link described into the correct data structures assuming space has already been allocated by a call to createLinks */
+	virtual void setLinkAt( const LinkDescription &link, int linkIndex );
+
+	virtual bool onAccelerator();
+
+	virtual bool moveToAccelerator();
+
+	virtual bool moveFromAccelerator();
+
+	/**
+	 * Generate (and later update) the batching for the entire link set.
+	 * This redoes a lot of work because it batches the entire set when each cloth is inserted.
+	 * In theory we could delay it until just before we need the cloth.
+	 * It's a one-off overhead, though, so that is a later optimisation.
+	 */
+	void generateBatches();
+
+	int getMaxVerticesPerWavefront()
+	{
+		return m_maxVerticesWithinWave;
+	}
+
+	int getWavefrontSize()
+	{
+		return m_wavefrontSize;
+	}
+
+	int getLinksPerWorkItem()
+	{
+		return m_linksPerWorkItem;
+	}
+
+	int getMaxLinksPerWavefront()
+	{
+		return m_maxLinksPerWavefront;
+	}
+
+	int getMaxBatchesPerWavefront()
+	{
+		return m_maxBatchesWithinWave;
+	}
+
+	int getNumWavefronts()
+	{
+		return m_numWavefronts;
+	}
+
+	NumBatchesVerticesPair getNumBatchesAndVerticesWithinWavefront( int wavefront )
+	{
+		return m_numBatchesAndVerticesWithinWaves[wavefront];
+	}
+
+	int getVertexGlobalAddresses( int vertexIndex )
+	{
+		return m_wavefrontVerticesGlobalAddresses[vertexIndex];
+	}
+
+	/**
+	 * Get post-batching local addresses of the vertex pair for a link assuming all vertices used by a wavefront are loaded locally.
+	 */
+	LinkNodePair getVertexPairLocalAddresses( int linkIndex )
+	{
+		return m_linkVerticesLocalAddresses[linkIndex];
+	}
+
+};
+
+
+#endif // #ifndef BT_ACCELERATED_SOFT_BODY_LINK_DATA_DX11_SIMDAWARE_H
+ bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolverTriangleData_DX11.h view
@@ -0,0 +1,96 @@+/*
+Bullet Continuous Collision Detection and Physics Library
+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+Permission is granted to anyone to use this software for any purpose, 
+including commercial applications, and to alter it and redistribute it freely, 
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+*/
+
+#include "BulletMultiThreaded/GpuSoftBodySolvers/CPU/btSoftBodySolverData.h"
+#include "btSoftBodySolverBuffer_DX11.h"
+
+
+#ifndef BT_SOFT_BODY_SOLVER_TRIANGLE_DATA_DX11_H
+#define BT_SOFT_BODY_SOLVER_TRIANGLE_DATA_DX11_H
+
+struct ID3D11Device;
+struct ID3D11DeviceContext;
+
+class btSoftBodyTriangleDataDX11 : public btSoftBodyTriangleData
+{
+public:
+	bool				m_onGPU;
+	ID3D11Device		*m_d3dDevice;
+	ID3D11DeviceContext *m_d3dDeviceContext;
+
+	btDX11Buffer<btSoftBodyTriangleData::TriangleNodeSet>							m_dx11VertexIndices;
+	btDX11Buffer<float>									m_dx11Area;
+	btDX11Buffer<Vectormath::Aos::Vector3>				m_dx11Normal;
+
+	struct BatchPair
+	{
+		int start;
+		int length;
+
+		BatchPair() :
+			start(0),
+			length(0)
+		{
+		}
+
+		BatchPair( int s, int l ) : 
+			start( s ),
+			length( l )
+		{
+		}
+	};
+
+
+	/**
+	 * Link addressing information for each cloth.
+	 * Allows link locations to be computed independently of data batching.
+	 */
+	btAlignedObjectArray< int >							m_triangleAddresses;
+
+	/**
+	 * Start and length values for computation batches over link data.
+	 */
+	btAlignedObjectArray< BatchPair >		m_batchStartLengths;
+
+	//ID3D11Buffer*               readBackBuffer;
+
+public:
+	btSoftBodyTriangleDataDX11( ID3D11Device *d3dDevice, ID3D11DeviceContext *d3dDeviceContext );
+
+	virtual ~btSoftBodyTriangleDataDX11();
+
+
+	/** Allocate enough space in all link-related arrays to fit numLinks links */
+	virtual void createTriangles( int numTriangles );
+	
+	/** Insert the link described into the correct data structures assuming space has already been allocated by a call to createLinks */
+	virtual void setTriangleAt( const btSoftBodyTriangleData::TriangleDescription &triangle, int triangleIndex );
+
+	virtual bool onAccelerator();
+	virtual bool moveToAccelerator();
+
+	virtual bool moveFromAccelerator();
+	/**
+	 * Generate (and later update) the batching for the entire triangle set.
+	 * This redoes a lot of work because it batches the entire set when each cloth is inserted.
+	 * In theory we could delay it until just before we need the cloth.
+	 * It's a one-off overhead, though, so that is a later optimisation.
+	 */
+	void generateBatches();
+};
+
+
+
+#endif // #ifndef BT_SOFT_BODY_SOLVER_TRIANGLE_DATA_DX11_H
+ bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolverVertexBuffer_DX11.h view
@@ -0,0 +1,107 @@+/*
+Bullet Continuous Collision Detection and Physics Library
+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+Permission is granted to anyone to use this software for any purpose, 
+including commercial applications, and to alter it and redistribute it freely, 
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+*/
+
+#ifndef BT_SOFT_BODY_SOLVER_VERTEX_BUFFER_DX11_H
+#define BT_SOFT_BODY_SOLVER_VERTEX_BUFFER_DX11_H 
+
+
+#include "BulletSoftBody/btSoftBodySolverVertexBuffer.h"
+
+#include <windows.h>
+#include <crtdbg.h>
+#include <d3d11.h>
+#include <d3dx11.h>
+#include <d3dcompiler.h>
+
+class btDX11VertexBufferDescriptor : public btVertexBufferDescriptor
+{
+protected:
+	/** Context of the DX11 device on which the vertex buffer is stored. */
+	ID3D11DeviceContext* m_context;
+	/** DX11 vertex buffer */
+	ID3D11Buffer* m_vertexBuffer;
+	/** UAV for DX11 buffer */
+	ID3D11UnorderedAccessView*  m_vertexBufferUAV;
+
+
+public:
+	/**
+	 * buffer is a pointer to the DX11 buffer to place the vertex data in.
+	 * UAV is a pointer to the UAV representation of the buffer laid out in floats.
+	 * vertexOffset is the offset in floats to the first vertex.
+	 * vertexStride is the stride in floats between vertices.
+	 */
+	btDX11VertexBufferDescriptor( ID3D11DeviceContext* context, ID3D11Buffer* buffer, ID3D11UnorderedAccessView *UAV, int vertexOffset, int vertexStride )
+	{
+		m_context = context;
+		m_vertexBuffer = buffer;
+		m_vertexBufferUAV = UAV;
+		m_vertexOffset = vertexOffset;
+		m_vertexStride = vertexStride;
+		m_hasVertexPositions = true;
+	}
+
+	/**
+	 * buffer is a pointer to the DX11 buffer to place the vertex data in.
+	 * UAV is a pointer to the UAV representation of the buffer laid out in floats.
+	 * vertexOffset is the offset in floats to the first vertex.
+	 * vertexStride is the stride in floats between vertices.
+	 * normalOffset is the offset in floats to the first normal.
+	 * normalStride is the stride in floats between normals.
+	 */
+	btDX11VertexBufferDescriptor( ID3D11DeviceContext* context, ID3D11Buffer* buffer, ID3D11UnorderedAccessView *UAV, int vertexOffset, int vertexStride, int normalOffset, int normalStride )
+	{
+		m_context = context;
+		m_vertexBuffer = buffer;
+		m_vertexBufferUAV = UAV;
+		m_vertexOffset = vertexOffset;
+		m_vertexStride = vertexStride;
+		m_hasVertexPositions = true;
+		
+		m_normalOffset = normalOffset;
+		m_normalStride = normalStride;
+		m_hasNormals = true;
+	}
+
+	virtual ~btDX11VertexBufferDescriptor()
+	{
+
+	}
+
+	/**
+	 * Return the type of the vertex buffer descriptor.
+	 */
+	virtual BufferTypes getBufferType() const
+	{
+		return DX11_BUFFER;
+	}
+
+	virtual ID3D11DeviceContext* getContext() const
+	{
+		return m_context;
+	}
+
+	virtual ID3D11Buffer* getbtDX11Buffer() const
+	{
+		return m_vertexBuffer;
+	}
+
+	virtual ID3D11UnorderedAccessView* getDX11UAV() const
+	{
+		return m_vertexBufferUAV;
+	}		
+};
+
+#endif // #ifndef BT_SOFT_BODY_SOLVER_VERTEX_BUFFER_DX11_H
+ bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolverVertexData_DX11.h view
@@ -0,0 +1,63 @@+/*
+Bullet Continuous Collision Detection and Physics Library
+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+Permission is granted to anyone to use this software for any purpose, 
+including commercial applications, and to alter it and redistribute it freely, 
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+*/
+
+
+#include "BulletMultiThreaded/GpuSoftBodySolvers/CPU/btSoftBodySolverData.h"
+#include "btSoftBodySolverBuffer_DX11.h"
+
+
+#ifndef BT_SOFT_BHODY_SOLVER_VERTEX_DATA_DX11_H
+#define BT_SOFT_BHODY_SOLVER_VERTEX_DATA_DX11_H
+
+class btSoftBodyLinkData;
+class btSoftBodyLinkData::LinkDescription;
+
+struct ID3D11Device;
+struct ID3D11DeviceContext;
+
+class btSoftBodyVertexDataDX11 : public btSoftBodyVertexData
+{
+protected:
+	bool				m_onGPU;
+	ID3D11Device		*m_d3dDevice;
+	ID3D11DeviceContext *m_d3dDeviceContext;
+
+public:
+	btDX11Buffer<int>										m_dx11ClothIdentifier;
+	btDX11Buffer<Vectormath::Aos::Point3>					m_dx11VertexPosition;
+	btDX11Buffer<Vectormath::Aos::Point3>					m_dx11VertexPreviousPosition;
+	btDX11Buffer<Vectormath::Aos::Vector3>				m_dx11VertexVelocity;
+	btDX11Buffer<Vectormath::Aos::Vector3>				m_dx11VertexForceAccumulator;
+	btDX11Buffer<Vectormath::Aos::Vector3>				m_dx11VertexNormal;
+	btDX11Buffer<float>									m_dx11VertexInverseMass;
+	btDX11Buffer<float>									m_dx11VertexArea;
+	btDX11Buffer<int>										m_dx11VertexTriangleCount;
+
+
+	//ID3D11Buffer*               readBackBuffer;
+
+public:
+	btSoftBodyVertexDataDX11( ID3D11Device *d3dDevice, ID3D11DeviceContext *d3dDeviceContext );
+	virtual ~btSoftBodyVertexDataDX11();
+
+	virtual bool onAccelerator();
+	virtual bool moveToAccelerator();
+
+	virtual bool moveFromAccelerator();
+};
+
+
+#endif // #ifndef BT_SOFT_BHODY_SOLVER_VERTEX_DATA_DX11_H
+
+ bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolver_DX11.h view
@@ -0,0 +1,679 @@+/*
+Bullet Continuous Collision Detection and Physics Library
+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+Permission is granted to anyone to use this software for any purpose, 
+including commercial applications, and to alter it and redistribute it freely, 
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+*/
+
+#ifndef BT_ACCELERATED_SOFT_BODY_DX11_SOLVER_H
+#define BT_ACCELERATED_SOFT_BODY_DX11_SOLVER_H
+
+
+#include "vectormath/vmInclude.h"
+#include "BulletSoftBody/btSoftBodySolvers.h"
+#include "btSoftBodySolverVertexBuffer_DX11.h"
+#include "btSoftBodySolverLinkData_DX11.h"
+#include "btSoftBodySolverVertexData_DX11.h"
+#include "btSoftBodySolverTriangleData_DX11.h"
+
+
+
+class DXFunctions
+{
+public:
+	
+	typedef HRESULT (WINAPI * CompileFromMemoryFunc)(LPCSTR,SIZE_T,LPCSTR,const D3D10_SHADER_MACRO*,LPD3D10INCLUDE,LPCSTR,LPCSTR,UINT,UINT,ID3DX11ThreadPump*,ID3D10Blob**,ID3D10Blob**,HRESULT*);
+
+	ID3D11Device *		 m_dx11Device;
+	ID3D11DeviceContext* m_dx11Context;
+	CompileFromMemoryFunc m_dx11CompileFromMemory;
+
+	DXFunctions(ID3D11Device *dx11Device, ID3D11DeviceContext* dx11Context, CompileFromMemoryFunc dx11CompileFromMemory) :
+		m_dx11Device( dx11Device ),
+		m_dx11Context( dx11Context ),
+		m_dx11CompileFromMemory( dx11CompileFromMemory )
+	{
+
+	}
+
+	class KernelDesc
+	{
+	protected:
+		
+
+	public:
+		ID3D11ComputeShader* kernel;
+		ID3D11Buffer* constBuffer;
+
+		KernelDesc()
+		{
+			kernel = 0;
+			constBuffer = 0;
+		}
+
+		virtual ~KernelDesc()
+		{
+			// TODO: this should probably destroy its kernel but we need to be careful
+			// in case KernelDescs are copied
+		}
+	}; 
+
+	/**
+	 * Compile a compute shader kernel from a string and return the appropriate KernelDesc object.
+	 */
+	KernelDesc compileComputeShaderFromString( const char* shaderString, const char* shaderName, int constBufferSize, D3D10_SHADER_MACRO *compileMacros = 0 );
+
+};
+
+class btDX11SoftBodySolver : public btSoftBodySolver
+{
+protected:
+	/**
+	 * Entry in the collision shape array.
+	 * Specifies the shape type, the transform matrix and the necessary details of the collisionShape.
+	 */
+	struct CollisionShapeDescription
+	{
+		Vectormath::Aos::Transform3 shapeTransform;
+		Vectormath::Aos::Vector3 linearVelocity;
+		Vectormath::Aos::Vector3 angularVelocity;
+
+		int softBodyIdentifier;
+		int collisionShapeType;
+	
+		// Both needed for capsule
+		float radius;
+		float halfHeight;
+		
+		float margin;
+		float friction;
+
+		CollisionShapeDescription()
+		{
+			collisionShapeType = 0;
+			margin = 0;
+			friction = 0;
+		}
+	};
+
+	struct UIntVector3
+	{
+		UIntVector3()
+		{
+			x = 0;
+			y = 0;
+			z = 0;
+			_padding = 0;
+		}
+		
+		UIntVector3( unsigned int x_, unsigned int y_, unsigned int z_ )
+		{
+			x = x_;
+			y = y_;
+			z = z_;
+			_padding = 0;
+		}
+			
+		unsigned int x;
+		unsigned int y;
+		unsigned int z;
+		unsigned int _padding;
+	};
+
+
+
+public:
+	/**
+	 * SoftBody class to maintain information about a soft body instance
+	 * within a solver.
+	 * This data addresses the main solver arrays.
+	 */
+	class btAcceleratedSoftBodyInterface
+	{
+	protected:
+		/** Current number of vertices that are part of this cloth */
+		int m_numVertices;
+		/** Maximum number of vertices allocated to be part of this cloth */
+		int m_maxVertices;
+		/** Current number of triangles that are part of this cloth */
+		int m_numTriangles;
+		/** Maximum number of triangles allocated to be part of this cloth */
+		int m_maxTriangles;
+		/** Index of first vertex in the world allocated to this cloth */
+		int m_firstVertex;
+		/** Index of first triangle in the world allocated to this cloth */
+		int m_firstTriangle;
+		/** Index of first link in the world allocated to this cloth */
+		int m_firstLink;
+		/** Maximum number of links allocated to this cloth */
+		int m_maxLinks;
+		/** Current number of links allocated to this cloth */
+		int m_numLinks;
+
+		/** The actual soft body this data represents */
+		btSoftBody *m_softBody;
+
+
+	public:
+		btAcceleratedSoftBodyInterface( btSoftBody *softBody ) :
+		  m_softBody( softBody )
+		{
+			m_numVertices = 0;
+			m_maxVertices = 0;
+			m_numTriangles = 0;
+			m_maxTriangles = 0;
+			m_firstVertex = 0;
+			m_firstTriangle = 0;
+			m_firstLink = 0;
+			m_maxLinks = 0;
+			m_numLinks = 0;
+		}
+		int getNumVertices() const
+		{
+			return m_numVertices;
+		}
+
+		int getNumTriangles() const
+		{
+			return m_numTriangles;
+		}
+
+		int getMaxVertices() const
+		{
+			return m_maxVertices;
+		}
+
+		int getMaxTriangles() const
+		{
+			return m_maxTriangles;
+		}
+
+		int getFirstVertex() const
+		{
+			return m_firstVertex;
+		}
+
+		int getFirstTriangle() const
+		{
+			return m_firstTriangle;
+		}
+
+
+		/**
+		 * Update the bounds in the btSoftBody object
+		 */
+		void updateBounds( const btVector3 &lowerBound, const btVector3 &upperBound );
+
+		// TODO: All of these set functions will have to do checks and
+		// update the world because restructuring of the arrays will be necessary
+		// Reasonable use of "friend"?
+		void setNumVertices( int numVertices )
+		{
+			m_numVertices = numVertices;
+		}	
+	
+		void setNumTriangles( int numTriangles )
+		{
+			m_numTriangles = numTriangles;
+		}
+
+		void setMaxVertices( int maxVertices )
+		{
+			m_maxVertices = maxVertices;
+		}
+
+		void setMaxTriangles( int maxTriangles )
+		{
+			m_maxTriangles = maxTriangles;
+		}
+
+		void setFirstVertex( int firstVertex )
+		{
+			m_firstVertex = firstVertex;
+		}
+
+		void setFirstTriangle( int firstTriangle )
+		{
+			m_firstTriangle = firstTriangle;
+		}
+
+		void setMaxLinks( int maxLinks )
+		{
+			m_maxLinks = maxLinks;
+		}
+
+		void setNumLinks( int numLinks )
+		{
+			m_numLinks = numLinks;
+		}
+
+		void setFirstLink( int firstLink )
+		{
+			m_firstLink = firstLink;
+		}
+
+		int getMaxLinks()
+		{
+			return m_maxLinks;
+		}
+
+		int getNumLinks()
+		{
+			return m_numLinks;
+		}
+
+		int getFirstLink()
+		{
+			return m_firstLink;
+		}
+
+		btSoftBody* getSoftBody()
+		{
+			return m_softBody;
+		}
+
+	};
+
+	
+	struct CollisionObjectIndices
+	{
+		CollisionObjectIndices( int f, int e )
+		{
+			firstObject = f;
+			endObject = e;
+		}
+
+		int firstObject;
+		int endObject;
+	};
+
+
+
+
+
+	struct PrepareLinksCB
+	{		
+		int numLinks;
+		int padding0;
+		int padding1;
+		int padding2;
+	};
+
+	struct SolvePositionsFromLinksKernelCB
+	{		
+		int startLink;
+		int numLinks;
+		float kst;
+		float ti;
+	};
+
+	struct IntegrateCB
+	{
+		int numNodes;
+		float solverdt;
+		int padding1;
+		int padding2;
+	};
+
+	struct UpdatePositionsFromVelocitiesCB
+	{
+		int numNodes;
+		float solverSDT;
+		int padding1;
+		int padding2;
+	};
+
+	struct UpdateVelocitiesFromPositionsWithoutVelocitiesCB
+	{
+		int numNodes;
+		float isolverdt;
+		int padding1;
+		int padding2;
+	};
+
+	struct UpdateVelocitiesFromPositionsWithVelocitiesCB
+	{
+		int numNodes;
+		float isolverdt;
+		int padding1;
+		int padding2;
+	};
+
+	struct UpdateSoftBodiesCB
+	{
+		int numNodes;
+		int startFace;
+		int numFaces;
+		float epsilon;
+	};
+
+
+	struct ApplyForcesCB
+	{
+		unsigned int numNodes;
+		float solverdt;
+		float epsilon;
+		int padding3;
+	};
+
+	struct AddVelocityCB
+	{
+		int startNode;
+		int lastNode;
+		float velocityX;
+		float velocityY;
+		float velocityZ;
+		int padding1;
+		int padding2;
+		int padding3;
+	};
+
+	struct VSolveLinksCB
+	{
+		int startLink;
+		int numLinks;
+		float kst;
+		int padding;
+	};
+
+	struct ComputeBoundsCB
+	{
+		int numNodes;
+		int numSoftBodies;
+		int padding1;
+		int padding2;
+	};
+
+	struct SolveCollisionsAndUpdateVelocitiesCB
+	{
+		unsigned int numNodes;
+		float isolverdt;
+		int padding0;
+		int padding1;
+	};
+
+	
+
+
+protected:
+	ID3D11Device *		 m_dx11Device;
+	ID3D11DeviceContext* m_dx11Context;
+	
+	DXFunctions dxFunctions;
+public:
+	/** Link data for all cloths. Note that this will be sorted batch-wise for efficient computation and m_linkAddresses will maintain the addressing. */
+	btSoftBodyLinkDataDX11 m_linkData;
+	btSoftBodyVertexDataDX11 m_vertexData;
+	btSoftBodyTriangleDataDX11 m_triangleData;
+
+protected:
+
+	/** Variable to define whether we need to update solver constants on the next iteration */
+	bool m_updateSolverConstants;
+
+	bool m_shadersInitialized;
+
+	/** 
+	 * Cloths owned by this solver.
+	 * Only our cloths are in this array.
+	 */
+	btAlignedObjectArray< btAcceleratedSoftBodyInterface * > m_softBodySet;
+
+	/** Acceleration value to be applied to all non-static vertices in the solver. 
+	 * Index n is cloth n, array sized by number of cloths in the world not the solver. 
+	 */
+	btAlignedObjectArray< Vectormath::Aos::Vector3 >	m_perClothAcceleration;
+	btDX11Buffer<Vectormath::Aos::Vector3>				m_dx11PerClothAcceleration;
+
+	/** Wind velocity to be applied normal to all non-static vertices in the solver. 
+	 * Index n is cloth n, array sized by number of cloths in the world not the solver. 
+	 */
+	btAlignedObjectArray< Vectormath::Aos::Vector3 >	m_perClothWindVelocity;
+	btDX11Buffer<Vectormath::Aos::Vector3>				m_dx11PerClothWindVelocity;
+
+	/** Velocity damping factor */
+	btAlignedObjectArray< float >						m_perClothDampingFactor;
+	btDX11Buffer<float>									m_dx11PerClothDampingFactor;
+
+	/** Velocity correction coefficient */
+	btAlignedObjectArray< float >						m_perClothVelocityCorrectionCoefficient;
+	btDX11Buffer<float>									m_dx11PerClothVelocityCorrectionCoefficient;
+
+	/** Lift parameter for wind effect on cloth. */
+	btAlignedObjectArray< float >						m_perClothLiftFactor;
+	btDX11Buffer<float>									m_dx11PerClothLiftFactor;
+	
+	/** Drag parameter for wind effect on cloth. */
+	btAlignedObjectArray< float >						m_perClothDragFactor;
+	btDX11Buffer<float>									m_dx11PerClothDragFactor;
+
+	/** Density of the medium in which each cloth sits */
+	btAlignedObjectArray< float >						m_perClothMediumDensity;
+	btDX11Buffer<float>									m_dx11PerClothMediumDensity;
+
+	
+	/** 
+	 * Collision shape details: pair of index of first collision shape for the cloth and number of collision objects.
+	 */
+	btAlignedObjectArray< CollisionObjectIndices >		m_perClothCollisionObjects;
+	btDX11Buffer<CollisionObjectIndices>				m_dx11PerClothCollisionObjects;
+
+	/** 
+	 * Collision shapes being passed across to the cloths in this solver.
+	 */
+	btAlignedObjectArray< CollisionShapeDescription >	m_collisionObjectDetails;
+	btDX11Buffer< CollisionShapeDescription >			m_dx11CollisionObjectDetails;
+
+	/** 
+	 * Minimum bounds for each cloth.
+	 * Updated by GPU and returned for use by broad phase.
+	 * These are int vectors as a reminder that they store the int representation of a float, not a float.
+	 * Bit 31 is inverted - is floats are stored with int-sortable values.
+	 */
+	btAlignedObjectArray< UIntVector3 >	m_perClothMinBounds;
+	btDX11Buffer< UIntVector3 >			m_dx11PerClothMinBounds;
+
+	/** 
+	 * Maximum bounds for each cloth.
+	 * Updated by GPU and returned for use by broad phase.
+	 * These are int vectors as a reminder that they store the int representation of a float, not a float.
+	 * Bit 31 is inverted - is floats are stored with int-sortable values.
+	 */
+	btAlignedObjectArray< UIntVector3 >	m_perClothMaxBounds;
+	btDX11Buffer< UIntVector3 >			m_dx11PerClothMaxBounds;
+
+	
+	/** 
+	 * Friction coefficient for each cloth
+	 */
+	btAlignedObjectArray< float >	m_perClothFriction;
+	btDX11Buffer< float >			m_dx11PerClothFriction;
+
+	DXFunctions::KernelDesc		prepareLinksKernel;
+	DXFunctions::KernelDesc		solvePositionsFromLinksKernel;
+	DXFunctions::KernelDesc		vSolveLinksKernel;
+	DXFunctions::KernelDesc		integrateKernel;
+	DXFunctions::KernelDesc		addVelocityKernel;
+	DXFunctions::KernelDesc		updatePositionsFromVelocitiesKernel;
+	DXFunctions::KernelDesc		updateVelocitiesFromPositionsWithoutVelocitiesKernel;
+	DXFunctions::KernelDesc		updateVelocitiesFromPositionsWithVelocitiesKernel;
+	DXFunctions::KernelDesc		solveCollisionsAndUpdateVelocitiesKernel;
+	DXFunctions::KernelDesc		resetNormalsAndAreasKernel;
+	DXFunctions::KernelDesc		normalizeNormalsAndAreasKernel;
+	DXFunctions::KernelDesc		computeBoundsKernel;
+	DXFunctions::KernelDesc		updateSoftBodiesKernel;
+
+	DXFunctions::KernelDesc		applyForcesKernel;
+
+
+	/**
+	 * Integrate motion on the solver.
+	 */
+	virtual void integrate( float solverdt );
+	float computeTriangleArea( 
+		const Vectormath::Aos::Point3 &vertex0,
+		const Vectormath::Aos::Point3 &vertex1,
+		const Vectormath::Aos::Point3 &vertex2 );
+
+
+	virtual bool buildShaders();
+
+	void resetNormalsAndAreas( int numVertices );
+
+	void normalizeNormalsAndAreas( int numVertices );
+
+	void executeUpdateSoftBodies( int firstTriangle, int numTriangles );
+
+	void prepareCollisionConstraints();
+
+	Vectormath::Aos::Vector3 ProjectOnAxis( const Vectormath::Aos::Vector3 &v, const Vectormath::Aos::Vector3 &a );
+
+	void ApplyClampedForce( float solverdt, const Vectormath::Aos::Vector3 &force, const Vectormath::Aos::Vector3 &vertexVelocity, float inverseMass, Vectormath::Aos::Vector3 &vertexForce );
+
+	virtual void applyForces( float solverdt );
+	
+	virtual void updateConstants( float timeStep );
+	int findSoftBodyIndex( const btSoftBody* const softBody );
+
+	//////////////////////////////////////
+	// Kernel dispatches
+	virtual void prepareLinks();
+
+	void updatePositionsFromVelocities( float solverdt );
+	void solveLinksForPosition( int startLink, int numLinks, float kst, float ti );
+	void solveLinksForVelocity( int startLink, int numLinks, float kst );
+	
+	void updateVelocitiesFromPositionsWithVelocities( float isolverdt );
+	void updateVelocitiesFromPositionsWithoutVelocities( float isolverdt );
+	void computeBounds( );
+	void solveCollisionsAndUpdateVelocities( float isolverdt );
+
+	// End kernel dispatches
+	/////////////////////////////////////
+
+	void updateBounds();
+
+	
+	void releaseKernels();
+
+public:
+	btDX11SoftBodySolver(ID3D11Device * dx11Device, ID3D11DeviceContext* dx11Context, DXFunctions::CompileFromMemoryFunc dx11CompileFromMemory = &D3DX11CompileFromMemory);
+
+	virtual ~btDX11SoftBodySolver();
+	
+	
+	virtual SolverTypes getSolverType() const
+	{
+		return DX_SOLVER;
+	}
+
+
+	virtual btSoftBodyLinkData &getLinkData();
+
+	virtual btSoftBodyVertexData &getVertexData();
+
+	virtual btSoftBodyTriangleData &getTriangleData();
+
+
+
+	
+
+	btAcceleratedSoftBodyInterface *findSoftBodyInterface( const btSoftBody* const softBody );
+	const btAcceleratedSoftBodyInterface * const findSoftBodyInterface( const btSoftBody* const softBody ) const;
+
+	virtual bool checkInitialized();
+
+	virtual void updateSoftBodies( );
+
+	virtual void optimize( btAlignedObjectArray< btSoftBody * > &softBodies , bool forceUpdate=false);
+
+	virtual void copyBackToSoftBodies();
+
+	virtual void solveConstraints( float solverdt );
+
+	virtual void predictMotion( float solverdt );
+
+	
+	virtual void processCollision( btSoftBody *, btCollisionObject* );
+
+	virtual void processCollision( btSoftBody*, btSoftBody* );
+
+};
+
+
+
+/** 
+ * Class to manage movement of data from a solver to a given target.
+ * This version is the DX to CPU version.
+ */
+class btSoftBodySolverOutputDXtoCPU : public btSoftBodySolverOutput
+{
+protected:
+
+public:
+	btSoftBodySolverOutputDXtoCPU()
+	{
+	}
+
+	/** Output current computed vertex data to the vertex buffers for all cloths in the solver. */
+	virtual void copySoftBodyToVertexBuffer( const btSoftBody * const softBody, btVertexBufferDescriptor *vertexBuffer );
+};
+
+/** 
+ * Class to manage movement of data from a solver to a given target.
+ * This version is the DX to DX version and subclasses DX to CPU so that it works for that too.
+ */
+class btSoftBodySolverOutputDXtoDX : public btSoftBodySolverOutputDXtoCPU
+{
+protected:
+	struct OutputToVertexArrayCB
+	{
+		int startNode;
+		int numNodes;
+		int positionOffset;
+		int positionStride;
+		
+		int normalOffset;	
+		int normalStride;
+		int padding1;
+		int padding2;
+	};
+	
+	DXFunctions dxFunctions;
+	DXFunctions::KernelDesc outputToVertexArrayWithNormalsKernel;
+	DXFunctions::KernelDesc outputToVertexArrayWithoutNormalsKernel;
+
+	
+	bool m_shadersInitialized;
+
+	bool checkInitialized();
+	bool buildShaders();
+	void releaseKernels();
+
+public:
+	btSoftBodySolverOutputDXtoDX(ID3D11Device *dx11Device, ID3D11DeviceContext* dx11Context, DXFunctions::CompileFromMemoryFunc dx11CompileFromMemory = &D3DX11CompileFromMemory) :
+	  dxFunctions( dx11Device, dx11Context, dx11CompileFromMemory )
+	{
+		m_shadersInitialized = false;
+	}
+
+	~btSoftBodySolverOutputDXtoDX()
+	{
+		releaseKernels();
+	}
+
+	/** Output current computed vertex data to the vertex buffers for all cloths in the solver. */
+	virtual void copySoftBodyToVertexBuffer( const btSoftBody * const softBody, btVertexBufferDescriptor *vertexBuffer );
+};
+
+#endif // #ifndef BT_ACCELERATED_SOFT_BODY_DX11_SOLVER_H
+
+
+ bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolver_DX11SIMDAware.h view
@@ -0,0 +1,81 @@+/*
+Bullet Continuous Collision Detection and Physics Library
+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+Permission is granted to anyone to use this software for any purpose, 
+including commercial applications, and to alter it and redistribute it freely, 
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+*/
+
+#include "vectormath/vmInclude.h"
+#include "btSoftBodySolver_DX11.h"
+#include "btSoftBodySolverVertexBuffer_DX11.h"
+#include "btSoftBodySolverLinkData_DX11SIMDAware.h"
+#include "btSoftBodySolverVertexData_DX11.h"
+#include "btSoftBodySolverTriangleData_DX11.h"
+
+
+#ifndef BT_SOFT_BODY_DX11_SOLVER_SIMDAWARE_H
+#define BT_SOFT_BODY_DX11_SOLVER_SIMDAWARE_H
+
+class btDX11SIMDAwareSoftBodySolver : public btDX11SoftBodySolver
+{
+protected:
+	struct SolvePositionsFromLinksKernelCB
+	{		
+		int startWave;
+		int numWaves;
+		float kst;
+		float ti;
+	};
+
+
+	/** Link data for all cloths. Note that this will be sorted batch-wise for efficient computation and m_linkAddresses will maintain the addressing. */
+	btSoftBodyLinkDataDX11SIMDAware m_linkData;
+		
+	/** Variable to define whether we need to update solver constants on the next iteration */
+	bool m_updateSolverConstants;
+
+	
+	virtual bool buildShaders();
+
+	void updateConstants( float timeStep );
+
+
+	//////////////////////////////////////
+	// Kernel dispatches
+	
+
+	void solveLinksForPosition( int startLink, int numLinks, float kst, float ti );
+
+	// End kernel dispatches
+	/////////////////////////////////////
+
+
+
+public:
+	btDX11SIMDAwareSoftBodySolver(ID3D11Device * dx11Device, ID3D11DeviceContext* dx11Context, DXFunctions::CompileFromMemoryFunc dx11CompileFromMemory = &D3DX11CompileFromMemory);
+
+	virtual ~btDX11SIMDAwareSoftBodySolver();
+
+	virtual btSoftBodyLinkData &getLinkData();
+
+	virtual void optimize( btAlignedObjectArray< btSoftBody * > &softBodies , bool forceUpdate=false);
+
+	virtual void solveConstraints( float solverdt );
+	
+	virtual SolverTypes getSolverType() const
+	{
+		return DX_SIMD_SOLVER;
+	}
+	
+};
+
+#endif // #ifndef BT_SOFT_BODY_DX11_SOLVER_SIMDAWARE_H
+
+ bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverBuffer_OpenCL.h view
@@ -0,0 +1,209 @@+/*
+Bullet Continuous Collision Detection and Physics Library
+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+Permission is granted to anyone to use this software for any purpose, 
+including commercial applications, and to alter it and redistribute it freely, 
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+*/
+
+#ifndef BT_SOFT_BODY_SOLVER_BUFFER_OPENCL_H
+#define BT_SOFT_BODY_SOLVER_BUFFER_OPENCL_H
+
+// OpenCL support
+
+#ifdef USE_MINICL
+	#include "MiniCL/cl.h"
+#else //USE_MINICL
+	#ifdef __APPLE__
+		#include <OpenCL/OpenCL.h>
+	#else
+		#include <CL/cl.h>
+	#endif //__APPLE__
+#endif//USE_MINICL
+
+#ifndef SAFE_RELEASE
+#define SAFE_RELEASE(p)      { if(p) { (p)->Release(); (p)=NULL; } }
+#endif
+
+template <typename ElementType> class btOpenCLBuffer
+{
+public:
+
+	cl_command_queue	m_cqCommandQue;
+	cl_context			m_clContext;
+	cl_mem				m_buffer;
+
+
+
+	btAlignedObjectArray< ElementType > * m_CPUBuffer;
+	
+	int  m_gpuSize;
+	bool m_onGPU;
+	bool m_readOnlyOnGPU;
+	bool m_allocated;
+
+
+	bool createBuffer( cl_mem* preexistingBuffer = 0)
+	{
+
+		cl_int err;
+		 
+
+		if( preexistingBuffer )
+		{
+			m_buffer = *preexistingBuffer;
+		} 
+		else {
+
+			cl_mem_flags flags= m_readOnlyOnGPU ? CL_MEM_READ_ONLY : CL_MEM_READ_WRITE;
+
+			size_t size = m_CPUBuffer->size() * sizeof(ElementType);
+			// At a minimum the buffer must exist
+			if( size == 0 )
+				size = sizeof(ElementType);
+			m_buffer = clCreateBuffer(m_clContext, flags, size, 0, &err);
+			if( err != CL_SUCCESS )
+			{
+				btAssert( "Buffer::Buffer(m_buffer)");
+			}
+		}
+
+		m_gpuSize = m_CPUBuffer->size();
+
+		return true;
+	}
+
+public:
+	btOpenCLBuffer( cl_command_queue	commandQue,cl_context ctx, btAlignedObjectArray< ElementType >* CPUBuffer, bool readOnly)
+		:m_cqCommandQue(commandQue),
+		m_clContext(ctx),
+		m_buffer(0),
+		m_CPUBuffer(CPUBuffer),
+		m_gpuSize(0),
+		m_onGPU(false),
+		m_readOnlyOnGPU(readOnly),
+		m_allocated(false)
+	{
+	}
+
+	~btOpenCLBuffer()
+	{
+		clReleaseMemObject(m_buffer);
+	}
+
+
+	bool moveToGPU()
+	{
+
+
+		cl_int err;
+
+		if( (m_CPUBuffer->size() != m_gpuSize) )
+		{
+			m_onGPU = false;
+		}
+
+		if( !m_allocated && m_CPUBuffer->size() == 0  )
+		{
+			// If it isn't on the GPU and yet there is no data on the CPU side this may cause a problem with some kernels.
+			// We should create *something* on the device side
+			if (!createBuffer()) {
+				return false;
+			}
+			m_allocated = true;
+		}
+
+		if( !m_onGPU && m_CPUBuffer->size() > 0 )
+		{
+			if (!m_allocated || (m_CPUBuffer->size() != m_gpuSize)) {
+				if (!createBuffer()) {
+					return false;
+				}
+				m_allocated = true;
+			}
+			
+			size_t size = m_CPUBuffer->size() * sizeof(ElementType);
+			err = clEnqueueWriteBuffer(m_cqCommandQue,m_buffer,
+				CL_FALSE,
+				0,
+				size, 
+				&((*m_CPUBuffer)[0]),0,0,0);
+			if( err != CL_SUCCESS )
+			{
+				btAssert( "CommandQueue::enqueueWriteBuffer(m_buffer)" );
+			}
+
+			m_onGPU = true;
+		}
+
+		return true;
+
+	}
+
+	bool moveFromGPU()
+	{
+
+		cl_int err;
+
+		if (m_CPUBuffer->size() > 0) {
+			if (m_onGPU && !m_readOnlyOnGPU) {
+				size_t size = m_CPUBuffer->size() * sizeof(ElementType);
+				err = clEnqueueReadBuffer(m_cqCommandQue,
+					m_buffer,
+					CL_TRUE,
+					0,
+					size,
+					&((*m_CPUBuffer)[0]),0,0,0);
+
+				if( err != CL_SUCCESS )
+				{
+					btAssert( "CommandQueue::enqueueReadBuffer(m_buffer)" );
+				}
+
+				m_onGPU = false;
+			}
+		}
+
+		return true;
+	}
+
+	bool copyFromGPU()
+	{
+
+		cl_int err;
+		size_t size = m_CPUBuffer->size() * sizeof(ElementType);
+
+		if (m_CPUBuffer->size() > 0) {
+			if (m_onGPU && !m_readOnlyOnGPU) {
+				err = clEnqueueReadBuffer(m_cqCommandQue,
+					m_buffer,
+					CL_TRUE,
+					0,size, 
+					&((*m_CPUBuffer)[0]),0,0,0);
+
+				if( err != CL_SUCCESS )
+				{
+					btAssert( "CommandQueue::enqueueReadBuffer(m_buffer)");
+				}
+
+			}
+		}
+
+		return true;
+	}
+
+	virtual void changedOnCPU()
+	{
+		m_onGPU = false;
+	}
+}; // class btOpenCLBuffer
+
+
+#endif // #ifndef BT_SOFT_BODY_SOLVER_BUFFER_OPENCL_H
+ bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverLinkData_OpenCL.h view
@@ -0,0 +1,99 @@+/*
+Bullet Continuous Collision Detection and Physics Library
+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+Permission is granted to anyone to use this software for any purpose, 
+including commercial applications, and to alter it and redistribute it freely, 
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+*/
+
+#include "BulletMultiThreaded/GpuSoftBodySolvers/CPU/btSoftBodySolverData.h"
+#include "btSoftBodySolverBuffer_OpenCL.h"
+
+
+#ifndef BT_SOFT_BODY_SOLVER_LINK_DATA_OPENCL_H
+#define BT_SOFT_BODY_SOLVER_LINK_DATA_OPENCL_H
+
+
+class btSoftBodyLinkDataOpenCL : public btSoftBodyLinkData
+{
+public:
+	bool				m_onGPU;
+
+	cl_command_queue	m_cqCommandQue;
+
+
+	btOpenCLBuffer<LinkNodePair> m_clLinks;
+	btOpenCLBuffer<float>							      m_clLinkStrength;
+	btOpenCLBuffer<float>								  m_clLinksMassLSC;
+	btOpenCLBuffer<float>								  m_clLinksRestLengthSquared;
+	btOpenCLBuffer<Vectormath::Aos::Vector3>			  m_clLinksCLength;
+	btOpenCLBuffer<float>								  m_clLinksLengthRatio;
+	btOpenCLBuffer<float>								  m_clLinksRestLength;
+	btOpenCLBuffer<float>								  m_clLinksMaterialLinearStiffnessCoefficient;
+
+	struct BatchPair
+	{
+		int start;
+		int length;
+
+		BatchPair() :
+			start(0),
+			length(0)
+		{
+		}
+
+		BatchPair( int s, int l ) : 
+			start( s ),
+			length( l )
+		{
+		}
+	};
+
+	/**
+	 * Link addressing information for each cloth.
+	 * Allows link locations to be computed independently of data batching.
+	 */
+	btAlignedObjectArray< int >							m_linkAddresses;
+
+	/**
+	 * Start and length values for computation batches over link data.
+	 */
+	btAlignedObjectArray< BatchPair >		m_batchStartLengths;
+
+	btSoftBodyLinkDataOpenCL(cl_command_queue queue, cl_context ctx);
+
+	virtual ~btSoftBodyLinkDataOpenCL();
+
+	/** Allocate enough space in all link-related arrays to fit numLinks links */
+	virtual void createLinks( int numLinks );
+	
+	/** Insert the link described into the correct data structures assuming space has already been allocated by a call to createLinks */
+	virtual void setLinkAt( 
+		const LinkDescription &link, 
+		int linkIndex );
+
+	virtual bool onAccelerator();
+
+	virtual bool moveToAccelerator();
+
+	virtual bool moveFromAccelerator();
+
+	/**
+	 * Generate (and later update) the batching for the entire link set.
+	 * This redoes a lot of work because it batches the entire set when each cloth is inserted.
+	 * In theory we could delay it until just before we need the cloth.
+	 * It's a one-off overhead, though, so that is a later optimisation.
+	 */
+	void generateBatches();
+};
+
+
+
+#endif // #ifndef BT_SOFT_BODY_SOLVER_LINK_DATA_OPENCL_H
+ bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverLinkData_OpenCLSIMDAware.h view
@@ -0,0 +1,169 @@+/*
+Bullet Continuous Collision Detection and Physics Library
+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+Permission is granted to anyone to use this software for any purpose, 
+including commercial applications, and to alter it and redistribute it freely, 
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+*/
+
+#include "BulletMultiThreaded/GpuSoftBodySolvers/CPU/btSoftBodySolverData.h"
+#include "btSoftBodySolverBuffer_OpenCL.h"
+
+
+#ifndef BT_SOFT_BODY_SOLVER_LINK_DATA_OPENCL_SIMDAWARE_H
+#define BT_SOFT_BODY_SOLVER_LINK_DATA_OPENCL_SIMDAWARE_H
+
+
+class btSoftBodyLinkDataOpenCLSIMDAware : public btSoftBodyLinkData
+{
+public:
+	bool				m_onGPU;
+
+	cl_command_queue	m_cqCommandQue;
+
+	const int m_wavefrontSize;
+	const int m_linksPerWorkItem;
+	const int m_maxLinksPerWavefront;
+	int m_maxBatchesWithinWave;
+	int m_maxVerticesWithinWave;
+	int m_numWavefronts;
+
+	int m_maxVertex;
+
+	struct NumBatchesVerticesPair
+	{
+		int numBatches;
+		int numVertices;
+	};
+
+	btAlignedObjectArray<int>							  m_linksPerWavefront;
+	btAlignedObjectArray<NumBatchesVerticesPair>		  m_numBatchesAndVerticesWithinWaves;
+	btOpenCLBuffer< NumBatchesVerticesPair >			  m_clNumBatchesAndVerticesWithinWaves;
+
+	// All arrays here will contain batches of m_maxLinksPerWavefront links
+	// ordered by wavefront.
+	// with either global vertex pairs or local vertex pairs
+	btAlignedObjectArray< int >							  m_wavefrontVerticesGlobalAddresses; // List of global vertices per wavefront
+	btOpenCLBuffer<int>									  m_clWavefrontVerticesGlobalAddresses;
+	btAlignedObjectArray< LinkNodePair >				  m_linkVerticesLocalAddresses; // Vertex pair for the link
+	btOpenCLBuffer<LinkNodePair>						  m_clLinkVerticesLocalAddresses;
+	btOpenCLBuffer<float>							      m_clLinkStrength;
+	btOpenCLBuffer<float>								  m_clLinksMassLSC;
+	btOpenCLBuffer<float>								  m_clLinksRestLengthSquared;
+	btOpenCLBuffer<float>								  m_clLinksRestLength;
+	btOpenCLBuffer<float>								  m_clLinksMaterialLinearStiffnessCoefficient;
+
+	struct BatchPair
+	{
+		int start;
+		int length;
+
+		BatchPair() :
+			start(0),
+			length(0)
+		{
+		}
+
+		BatchPair( int s, int l ) : 
+			start( s ),
+			length( l )
+		{
+		}
+	};
+
+	/**
+	 * Link addressing information for each cloth.
+	 * Allows link locations to be computed independently of data batching.
+	 */
+	btAlignedObjectArray< int >							m_linkAddresses;
+	
+	/**
+	 * Start and length values for computation batches over link data.
+	 */
+	btAlignedObjectArray< BatchPair >		m_wavefrontBatchStartLengths;
+
+	btSoftBodyLinkDataOpenCLSIMDAware(cl_command_queue queue, cl_context ctx);
+
+	virtual ~btSoftBodyLinkDataOpenCLSIMDAware();
+
+	/** Allocate enough space in all link-related arrays to fit numLinks links */
+	virtual void createLinks( int numLinks );
+	
+	/** Insert the link described into the correct data structures assuming space has already been allocated by a call to createLinks */
+	virtual void setLinkAt( 
+		const LinkDescription &link, 
+		int linkIndex );
+
+	virtual bool onAccelerator();
+
+	virtual bool moveToAccelerator();
+
+	virtual bool moveFromAccelerator();
+
+	/**
+	 * Generate (and later update) the batching for the entire link set.
+	 * This redoes a lot of work because it batches the entire set when each cloth is inserted.
+	 * In theory we could delay it until just before we need the cloth.
+	 * It's a one-off overhead, though, so that is a later optimisation.
+	 */
+	void generateBatches();
+
+	int getMaxVerticesPerWavefront()
+	{
+		return m_maxVerticesWithinWave;
+	}
+
+	int getWavefrontSize()
+	{
+		return m_wavefrontSize;
+	}
+
+	int getLinksPerWorkItem()
+	{
+		return m_linksPerWorkItem;
+	}
+
+	int getMaxLinksPerWavefront()
+	{
+		return m_maxLinksPerWavefront;
+	}
+
+	int getMaxBatchesPerWavefront()
+	{
+		return m_maxBatchesWithinWave;
+	}
+
+	int getNumWavefronts()
+	{
+		return m_numWavefronts;
+	}
+
+	NumBatchesVerticesPair getNumBatchesAndVerticesWithinWavefront( int wavefront )
+	{
+		return m_numBatchesAndVerticesWithinWaves[wavefront];
+	}
+
+	int getVertexGlobalAddresses( int vertexIndex )
+	{
+		return m_wavefrontVerticesGlobalAddresses[vertexIndex];
+	}
+
+	/**
+	 * Get post-batching local addresses of the vertex pair for a link assuming all vertices used by a wavefront are loaded locally.
+	 */
+	LinkNodePair getVertexPairLocalAddresses( int linkIndex )
+	{
+		return m_linkVerticesLocalAddresses[linkIndex];
+	}
+};
+
+
+
+#endif // #ifndef BT_SOFT_BODY_SOLVER_LINK_DATA_OPENCL_SIMDAWARE_H
+ bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverOutputCLtoGL.h view
@@ -0,0 +1,62 @@+/*
+Bullet Continuous Collision Detection and Physics Library
+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+Permission is granted to anyone to use this software for any purpose, 
+including commercial applications, and to alter it and redistribute it freely, 
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+*/
+
+#ifndef BT_SOFT_BODY_SOLVER_OUTPUT_CL_TO_GL_H
+#define BT_SOFT_BODY_SOLVER_OUTPUT_CL_TO_GL_H
+
+#include "btSoftBodySolver_OpenCL.h"
+
+/** 
+ * Class to manage movement of data from a solver to a given target.
+ * This version is the CL to GL interop version.
+ */
+class btSoftBodySolverOutputCLtoGL : public btSoftBodySolverOutput
+{
+protected:
+	cl_command_queue	m_cqCommandQue;
+	cl_context			m_cxMainContext;
+	CLFunctions			clFunctions;
+	
+	cl_kernel		outputToVertexArrayWithNormalsKernel;
+	cl_kernel		outputToVertexArrayWithoutNormalsKernel;
+
+	bool m_shadersInitialized;
+	
+	virtual bool checkInitialized();	
+	virtual bool buildShaders();
+	void releaseKernels();
+public:
+	btSoftBodySolverOutputCLtoGL(cl_command_queue cqCommandQue, cl_context cxMainContext) :
+		m_cqCommandQue( cqCommandQue ),
+		m_cxMainContext( cxMainContext ),
+		clFunctions(cqCommandQue, cxMainContext),
+		outputToVertexArrayWithNormalsKernel( 0 ),
+		outputToVertexArrayWithoutNormalsKernel( 0 ),
+		m_shadersInitialized( false )
+	{
+	}
+
+	virtual ~btSoftBodySolverOutputCLtoGL()
+	{
+		releaseKernels();
+	}
+
+	/** Output current computed vertex data to the vertex buffers for all cloths in the solver. */
+	virtual void copySoftBodyToVertexBuffer( const btSoftBody * const softBody, btVertexBufferDescriptor *vertexBuffer );
+};
+
+
+
+#endif // #ifndef BT_SOFT_BODY_SOLVER_OUTPUT_CL_TO_GL_H
+ bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverTriangleData_OpenCL.h view
@@ -0,0 +1,84 @@+/*
+Bullet Continuous Collision Detection and Physics Library
+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+Permission is granted to anyone to use this software for any purpose, 
+including commercial applications, and to alter it and redistribute it freely, 
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+*/
+
+
+#include "BulletMultiThreaded/GpuSoftBodySolvers/CPU/btSoftBodySolverData.h"
+#include "btSoftBodySolverBuffer_OpenCL.h"
+
+
+#ifndef BT_SOFT_BODY_SOLVER_TRIANGLE_DATA_OPENCL_H
+#define BT_SOFT_BODY_SOLVER_TRIANGLE_DATA_OPENCL_H
+
+
+class btSoftBodyTriangleDataOpenCL : public btSoftBodyTriangleData
+{
+public:
+	bool				m_onGPU;
+	cl_command_queue    m_queue;
+
+	btOpenCLBuffer<btSoftBodyTriangleData::TriangleNodeSet>					m_clVertexIndices;
+	btOpenCLBuffer<float>								m_clArea;
+	btOpenCLBuffer<Vectormath::Aos::Vector3>			m_clNormal;
+
+	/**
+	 * Link addressing information for each cloth.
+	 * Allows link locations to be computed independently of data batching.
+	 */
+	btAlignedObjectArray< int >							m_triangleAddresses;
+
+	/**
+	 * Start and length values for computation batches over link data.
+	 */
+	struct btSomePair
+	{
+		btSomePair() {}
+		btSomePair(int f,int s)
+			:first(f),second(s)
+		{
+		}
+		int first;
+		int second;
+	};
+	btAlignedObjectArray< btSomePair >		m_batchStartLengths;
+
+public:
+	btSoftBodyTriangleDataOpenCL( cl_command_queue queue, cl_context ctx );
+
+	virtual ~btSoftBodyTriangleDataOpenCL();
+
+	/** Allocate enough space in all link-related arrays to fit numLinks links */
+	virtual void createTriangles( int numTriangles );
+	
+	/** Insert the link described into the correct data structures assuming space has already been allocated by a call to createLinks */
+	virtual void setTriangleAt( const btSoftBodyTriangleData::TriangleDescription &triangle, int triangleIndex );
+
+	virtual bool onAccelerator();
+
+	virtual bool moveToAccelerator();
+
+	virtual bool moveFromAccelerator();
+
+	/**
+	 * Generate (and later update) the batching for the entire triangle set.
+	 * This redoes a lot of work because it batches the entire set when each cloth is inserted.
+	 * In theory we could delay it until just before we need the cloth.
+	 * It's a one-off overhead, though, so that is a later optimisation.
+	 */
+	void generateBatches();
+}; // class btSoftBodyTriangleDataOpenCL
+
+
+#endif // #ifndef BT_SOFT_BODY_SOLVER_TRIANGLE_DATA_OPENCL_H
+
+ bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverVertexBuffer_OpenGL.h view
@@ -0,0 +1,166 @@+/*
+Bullet Continuous Collision Detection and Physics Library
+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+Permission is granted to anyone to use this software for any purpose, 
+including commercial applications, and to alter it and redistribute it freely, 
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+*/
+
+#ifndef BT_SOFT_BODY_SOLVER_VERTEX_BUFFER_OPENGL_H
+#define BT_SOFT_BODY_SOLVER_VERTEX_BUFFER_OPENGL_H 
+
+
+#include "BulletSoftBody/btSoftBodySolverVertexBuffer.h"
+#ifdef USE_MINICL
+	#include "MiniCL/cl.h"
+#else //USE_MINICL
+	#ifdef __APPLE__
+		#include <OpenCL/OpenCL.h>
+	#else
+		#include <CL/cl.h>
+		#include <CL/cl_gl.h>
+	#endif //__APPLE__
+#endif//USE_MINICL
+
+
+#ifdef _WIN32//for glut.h
+#include <windows.h>
+#endif
+
+//think different
+#if defined(__APPLE__) && !defined (VMDMESA)
+#include <OpenGL/OpenGL.h>
+#include <OpenGL/gl.h>
+#include <OpenGL/glu.h>
+#include <GLUT/glut.h>
+#else
+
+
+#ifdef _WINDOWS
+#include <windows.h>
+#include <GL/gl.h>
+#include <GL/glu.h>
+#else
+#include <GL/glut.h>
+#endif //_WINDOWS
+#endif //APPLE
+
+
+
+class btOpenGLInteropVertexBufferDescriptor : public btVertexBufferDescriptor
+{
+protected:
+	/** OpenCL context */
+	cl_context			m_context;
+
+	/** OpenCL command queue */
+	cl_command_queue	m_commandQueue;
+	
+	/** OpenCL interop buffer */
+	cl_mem m_buffer;
+
+	/** VBO in GL that is the basis of the interop buffer */
+	GLuint m_openGLVBO;
+
+
+public:
+	/**
+	 * context is the OpenCL context this interop buffer will work in.
+	 * queue is the command queue that kernels and data movement will be enqueued into.
+	 * openGLVBO is the OpenGL vertex buffer data will be copied into.
+	 * vertexOffset is the offset in floats to the first vertex.
+	 * vertexStride is the stride in floats between vertices.
+	 */
+	btOpenGLInteropVertexBufferDescriptor( cl_command_queue cqCommandQue, cl_context context, GLuint openGLVBO, int vertexOffset, int vertexStride )
+	{
+#ifndef USE_MINICL
+		cl_int ciErrNum = CL_SUCCESS;
+		m_context = context;
+		m_commandQueue = cqCommandQue;
+		
+		m_vertexOffset = vertexOffset;
+		m_vertexStride = vertexStride;
+
+		m_openGLVBO = openGLVBO;
+		
+		m_buffer = clCreateFromGLBuffer(m_context, CL_MEM_WRITE_ONLY, openGLVBO, &ciErrNum);
+		if( ciErrNum != CL_SUCCESS )
+		{
+			btAssert( 0 &&  "clEnqueueAcquireGLObjects(copySoftBodyToVertexBuffer)");
+		}
+
+		m_hasVertexPositions = true;
+#else
+		btAssert(0);//MiniCL shouldn't get here
+#endif
+	}
+
+	/**
+	 * context is the OpenCL context this interop buffer will work in.
+	 * queue is the command queue that kernels and data movement will be enqueued into.
+	 * openGLVBO is the OpenGL vertex buffer data will be copied into.
+	 * vertexOffset is the offset in floats to the first vertex.
+	 * vertexStride is the stride in floats between vertices.
+	 * normalOffset is the offset in floats to the first normal.
+	 * normalStride is the stride in floats between normals.
+	 */
+	btOpenGLInteropVertexBufferDescriptor( cl_command_queue cqCommandQue, cl_context context, GLuint openGLVBO, int vertexOffset, int vertexStride, int normalOffset, int normalStride )
+	{
+#ifndef USE_MINICL
+		cl_int ciErrNum = CL_SUCCESS;
+		m_context = context;
+		m_commandQueue = cqCommandQue;
+		
+		m_openGLVBO = openGLVBO;
+		
+		m_buffer = clCreateFromGLBuffer(m_context, CL_MEM_WRITE_ONLY, openGLVBO, &ciErrNum);
+		if( ciErrNum != CL_SUCCESS )
+		{
+			btAssert( 0 &&  "clEnqueueAcquireGLObjects(copySoftBodyToVertexBuffer)");
+		}
+
+		m_vertexOffset = vertexOffset;
+		m_vertexStride = vertexStride;
+		m_hasVertexPositions = true;
+
+		m_normalOffset = normalOffset;
+		m_normalStride = normalStride;
+		m_hasNormals = true;
+#else
+		btAssert(0);
+#endif //USE_MINICL
+		
+	}
+
+	virtual ~btOpenGLInteropVertexBufferDescriptor()
+	{
+		clReleaseMemObject( m_buffer );
+	}
+
+	/**
+	 * Return the type of the vertex buffer descriptor.
+	 */
+	virtual BufferTypes getBufferType() const
+	{
+		return OPENGL_BUFFER;
+	}
+
+	virtual cl_context getContext() const
+	{
+		return m_context;
+	}
+
+	virtual cl_mem getBuffer() const
+	{
+		return m_buffer;
+	}	
+};
+
+#endif // #ifndef BT_SOFT_BODY_SOLVER_VERTEX_BUFFER_OPENGL_H
+ bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverVertexData_OpenCL.h view
@@ -0,0 +1,52 @@+/*
+Bullet Continuous Collision Detection and Physics Library
+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+Permission is granted to anyone to use this software for any purpose, 
+including commercial applications, and to alter it and redistribute it freely, 
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+*/
+
+#include "BulletMultiThreaded/GpuSoftBodySolvers/CPU/btSoftBodySolverData.h"
+#include "btSoftBodySolverBuffer_OpenCL.h"
+
+#ifndef BT_SOFT_BODY_SOLVER_VERTEX_DATA_OPENCL_H
+#define BT_SOFT_BODY_SOLVER_VERTEX_DATA_OPENCL_H
+
+
+class btSoftBodyVertexDataOpenCL : public btSoftBodyVertexData
+{
+protected:
+	bool		m_onGPU;
+	cl_command_queue	m_queue;
+
+public:
+	btOpenCLBuffer<int>									m_clClothIdentifier;
+	btOpenCLBuffer<Vectormath::Aos::Point3>				m_clVertexPosition;
+	btOpenCLBuffer<Vectormath::Aos::Point3>				m_clVertexPreviousPosition;
+	btOpenCLBuffer<Vectormath::Aos::Vector3>				m_clVertexVelocity;
+	btOpenCLBuffer<Vectormath::Aos::Vector3>				m_clVertexForceAccumulator;
+	btOpenCLBuffer<Vectormath::Aos::Vector3>				m_clVertexNormal;
+	btOpenCLBuffer<float>									m_clVertexInverseMass;
+	btOpenCLBuffer<float>									m_clVertexArea;
+	btOpenCLBuffer<int>									m_clVertexTriangleCount;
+public:
+	btSoftBodyVertexDataOpenCL( cl_command_queue queue,  cl_context ctx);
+
+	virtual ~btSoftBodyVertexDataOpenCL();
+
+	virtual bool onAccelerator();
+
+	virtual bool moveToAccelerator();
+
+	virtual bool moveFromAccelerator();
+};
+
+
+#endif // #ifndef BT_SOFT_BODY_SOLVER_VERTEX_DATA_OPENCL_H
+ bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolver_OpenCL.h view
@@ -0,0 +1,488 @@+/*
+Bullet Continuous Collision Detection and Physics Library
+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+Permission is granted to anyone to use this software for any purpose, 
+including commercial applications, and to alter it and redistribute it freely, 
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+*/
+
+#ifndef BT_SOFT_BODY_SOLVER_OPENCL_H
+#define BT_SOFT_BODY_SOLVER_OPENCL_H
+
+#include "stddef.h" //for size_t
+#include "vectormath/vmInclude.h"
+
+#include "BulletSoftBody/btSoftBodySolvers.h"
+#include "btSoftBodySolverBuffer_OpenCL.h"
+#include "btSoftBodySolverLinkData_OpenCL.h"
+#include "btSoftBodySolverVertexData_OpenCL.h"
+#include "btSoftBodySolverTriangleData_OpenCL.h"
+
+class CLFunctions
+{
+protected:
+	cl_command_queue	m_cqCommandQue;
+	cl_context			m_cxMainContext;
+	
+public:
+	CLFunctions(cl_command_queue cqCommandQue, cl_context cxMainContext) :
+		m_cqCommandQue( cqCommandQue ),
+		m_cxMainContext( cxMainContext )
+	{
+	}
+
+
+	/**
+	 * Compile a compute shader kernel from a string and return the appropriate cl_kernel object.
+	 */	
+	cl_kernel compileCLKernelFromString( const char* kernelSource, const char* kernelName, const char* additionalMacros = "" );
+};
+
+/**
+ * Entry in the collision shape array.
+ * Specifies the shape type, the transform matrix and the necessary details of the collisionShape.
+ */
+struct CollisionShapeDescription
+{
+	Vectormath::Aos::Transform3 shapeTransform;
+	Vectormath::Aos::Vector3 linearVelocity;
+	Vectormath::Aos::Vector3 angularVelocity;
+
+	int softBodyIdentifier;
+	int collisionShapeType;
+
+	// Both needed for capsule
+	float radius;
+	float halfHeight;
+	int upAxis;
+	
+	float margin;
+	float friction;
+
+	CollisionShapeDescription()
+	{
+		collisionShapeType = 0;
+		margin = 0;
+		friction = 0;
+	}
+};
+
+/**
+	 * SoftBody class to maintain information about a soft body instance
+	 * within a solver.
+	 * This data addresses the main solver arrays.
+	 */
+class btOpenCLAcceleratedSoftBodyInterface
+{
+protected:
+	/** Current number of vertices that are part of this cloth */
+	int m_numVertices;
+	/** Maximum number of vertices allocated to be part of this cloth */
+	int m_maxVertices;
+	/** Current number of triangles that are part of this cloth */
+	int m_numTriangles;
+	/** Maximum number of triangles allocated to be part of this cloth */
+	int m_maxTriangles;
+	/** Index of first vertex in the world allocated to this cloth */
+	int m_firstVertex;
+	/** Index of first triangle in the world allocated to this cloth */
+	int m_firstTriangle;
+	/** Index of first link in the world allocated to this cloth */
+	int m_firstLink;
+	/** Maximum number of links allocated to this cloth */
+	int m_maxLinks;
+	/** Current number of links allocated to this cloth */
+	int m_numLinks;
+
+	/** The actual soft body this data represents */
+	btSoftBody *m_softBody;
+
+
+public:
+	btOpenCLAcceleratedSoftBodyInterface( btSoftBody *softBody ) :
+	  m_softBody( softBody )
+	{
+		m_numVertices = 0;
+		m_maxVertices = 0;
+		m_numTriangles = 0;
+		m_maxTriangles = 0;
+		m_firstVertex = 0;
+		m_firstTriangle = 0;
+		m_firstLink = 0;
+		m_maxLinks = 0;
+		m_numLinks = 0;
+	}
+	int getNumVertices()
+	{
+		return m_numVertices;
+	}
+
+	int getNumTriangles()
+	{
+		return m_numTriangles;
+	}
+
+	int getMaxVertices()
+	{
+		return m_maxVertices;
+	}
+
+	int getMaxTriangles()
+	{
+		return m_maxTriangles;
+	}
+
+	int getFirstVertex()
+	{
+		return m_firstVertex;
+	}
+
+	int getFirstTriangle()
+	{
+		return m_firstTriangle;
+	}
+	
+	/**
+	 * Update the bounds in the btSoftBody object
+	 */
+	void updateBounds( const btVector3 &lowerBound, const btVector3 &upperBound );
+
+	// TODO: All of these set functions will have to do checks and
+	// update the world because restructuring of the arrays will be necessary
+	// Reasonable use of "friend"?
+	void setNumVertices( int numVertices )
+	{
+		m_numVertices = numVertices;
+	}	
+
+	void setNumTriangles( int numTriangles )
+	{
+		m_numTriangles = numTriangles;
+	}
+
+	void setMaxVertices( int maxVertices )
+	{
+		m_maxVertices = maxVertices;
+	}
+
+	void setMaxTriangles( int maxTriangles )
+	{
+		m_maxTriangles = maxTriangles;
+	}
+
+	void setFirstVertex( int firstVertex )
+	{
+		m_firstVertex = firstVertex;
+	}
+
+	void setFirstTriangle( int firstTriangle )
+	{
+		m_firstTriangle = firstTriangle;
+	}
+
+	void setMaxLinks( int maxLinks )
+	{
+		m_maxLinks = maxLinks;
+	}
+
+	void setNumLinks( int numLinks )
+	{
+		m_numLinks = numLinks;
+	}
+
+	void setFirstLink( int firstLink )
+	{
+		m_firstLink = firstLink;
+	}
+
+	int getMaxLinks()
+	{
+		return m_maxLinks;
+	}
+
+	int getNumLinks()
+	{
+		return m_numLinks;
+	}
+
+	int getFirstLink()
+	{
+		return m_firstLink;
+	}
+
+	btSoftBody* getSoftBody()
+	{
+		return m_softBody;
+	}
+
+};
+
+
+
+class btOpenCLSoftBodySolver : public btSoftBodySolver
+{
+public:
+	
+
+	struct UIntVector3
+	{
+		UIntVector3()
+		{
+			x = 0;
+			y = 0;
+			z = 0;
+			_padding = 0;
+		}
+		
+		UIntVector3( unsigned int x_, unsigned int y_, unsigned int z_ )
+		{
+			x = x_;
+			y = y_;
+			z = z_;
+			_padding = 0;
+		}
+			
+		unsigned int x;
+		unsigned int y;
+		unsigned int z;
+		unsigned int _padding;
+	};
+
+	struct CollisionObjectIndices
+	{
+		CollisionObjectIndices( int f, int e )
+		{
+			firstObject = f;
+			endObject = e;
+		}
+
+		int firstObject;
+		int endObject;
+	};
+
+	btSoftBodyLinkDataOpenCL m_linkData;
+	btSoftBodyVertexDataOpenCL m_vertexData;
+	btSoftBodyTriangleDataOpenCL m_triangleData;
+
+protected:
+
+	CLFunctions clFunctions;
+
+	/** Variable to define whether we need to update solver constants on the next iteration */
+	bool m_updateSolverConstants;
+
+	bool m_shadersInitialized;
+
+	/** 
+	 * Cloths owned by this solver.
+	 * Only our cloths are in this array.
+	 */
+	btAlignedObjectArray< btOpenCLAcceleratedSoftBodyInterface * > m_softBodySet;
+
+	/** Acceleration value to be applied to all non-static vertices in the solver. 
+	 * Index n is cloth n, array sized by number of cloths in the world not the solver. 
+	 */
+	btAlignedObjectArray< Vectormath::Aos::Vector3 >	m_perClothAcceleration;
+	btOpenCLBuffer<Vectormath::Aos::Vector3>			m_clPerClothAcceleration;
+
+	/** Wind velocity to be applied normal to all non-static vertices in the solver. 
+	 * Index n is cloth n, array sized by number of cloths in the world not the solver. 
+	 */
+	btAlignedObjectArray< Vectormath::Aos::Vector3 >	m_perClothWindVelocity;
+	btOpenCLBuffer<Vectormath::Aos::Vector3>			m_clPerClothWindVelocity;
+
+	/** Velocity damping factor */
+	btAlignedObjectArray< float >						m_perClothDampingFactor;
+	btOpenCLBuffer<float>								m_clPerClothDampingFactor;
+
+	/** Velocity correction coefficient */
+	btAlignedObjectArray< float >						m_perClothVelocityCorrectionCoefficient;
+	btOpenCLBuffer<float>								m_clPerClothVelocityCorrectionCoefficient;
+
+	/** Lift parameter for wind effect on cloth. */
+	btAlignedObjectArray< float >						m_perClothLiftFactor;
+	btOpenCLBuffer<float>								m_clPerClothLiftFactor;
+	
+	/** Drag parameter for wind effect on cloth. */
+	btAlignedObjectArray< float >						m_perClothDragFactor;
+	btOpenCLBuffer<float>								m_clPerClothDragFactor;
+
+	/** Density of the medium in which each cloth sits */
+	btAlignedObjectArray< float >						m_perClothMediumDensity;
+	btOpenCLBuffer<float>								m_clPerClothMediumDensity;
+
+	/** 
+	 * Collision shape details: pair of index of first collision shape for the cloth and number of collision objects.
+	 */
+	btAlignedObjectArray< CollisionObjectIndices >		m_perClothCollisionObjects;
+	btOpenCLBuffer<CollisionObjectIndices>				m_clPerClothCollisionObjects;
+
+	/** 
+	 * Collision shapes being passed across to the cloths in this solver.
+	 */
+	btAlignedObjectArray< CollisionShapeDescription >	m_collisionObjectDetails;
+	btOpenCLBuffer< CollisionShapeDescription >			m_clCollisionObjectDetails;
+
+
+	
+	/** 
+	 * Friction coefficient for each cloth
+	 */
+	btAlignedObjectArray< float >	m_perClothFriction;
+	btOpenCLBuffer< float >			m_clPerClothFriction;
+
+
+
+	cl_kernel		prepareLinksKernel;
+	cl_kernel		solvePositionsFromLinksKernel;
+	cl_kernel		updateConstantsKernel;
+	cl_kernel		integrateKernel;
+	cl_kernel		addVelocityKernel;
+	cl_kernel		updatePositionsFromVelocitiesKernel;
+	cl_kernel		updateVelocitiesFromPositionsWithoutVelocitiesKernel;
+	cl_kernel		updateVelocitiesFromPositionsWithVelocitiesKernel;
+	cl_kernel		vSolveLinksKernel;
+	cl_kernel		solveCollisionsAndUpdateVelocitiesKernel;
+	cl_kernel		resetNormalsAndAreasKernel;
+	cl_kernel		normalizeNormalsAndAreasKernel;
+	cl_kernel		updateSoftBodiesKernel;
+
+	cl_kernel		outputToVertexArrayKernel;
+	cl_kernel		applyForcesKernel;
+
+	cl_command_queue	m_cqCommandQue;
+	cl_context			m_cxMainContext;
+	
+	size_t				m_defaultWorkGroupSize;
+
+
+	virtual bool buildShaders();
+
+	void resetNormalsAndAreas( int numVertices );
+
+	void normalizeNormalsAndAreas( int numVertices );
+
+	void executeUpdateSoftBodies( int firstTriangle, int numTriangles );
+
+	void prepareCollisionConstraints();
+	
+	Vectormath::Aos::Vector3 ProjectOnAxis( const Vectormath::Aos::Vector3 &v, const Vectormath::Aos::Vector3 &a );
+
+	void ApplyClampedForce( float solverdt, const Vectormath::Aos::Vector3 &force, const Vectormath::Aos::Vector3 &vertexVelocity, float inverseMass, Vectormath::Aos::Vector3 &vertexForce );
+	
+
+	int findSoftBodyIndex( const btSoftBody* const softBody );
+
+	virtual void applyForces( float solverdt );
+
+	/**
+	 * Integrate motion on the solver.
+	 */
+	virtual void integrate( float solverdt );
+
+	virtual void updateConstants( float timeStep );
+
+	float computeTriangleArea( 
+		const Vectormath::Aos::Point3 &vertex0,
+		const Vectormath::Aos::Point3 &vertex1,
+		const Vectormath::Aos::Point3 &vertex2 );
+
+
+	//////////////////////////////////////
+	// Kernel dispatches
+	void prepareLinks();
+
+	void solveLinksForVelocity( int startLink, int numLinks, float kst );
+
+	void updatePositionsFromVelocities( float solverdt );
+
+	virtual void solveLinksForPosition( int startLink, int numLinks, float kst, float ti );
+	
+	void updateVelocitiesFromPositionsWithVelocities( float isolverdt );
+
+	void updateVelocitiesFromPositionsWithoutVelocities( float isolverdt );
+	virtual void solveCollisionsAndUpdateVelocities( float isolverdt );
+
+	// End kernel dispatches
+	/////////////////////////////////////
+	
+	void updateBounds();
+
+	void releaseKernels();
+
+public:
+	btOpenCLSoftBodySolver(cl_command_queue queue,cl_context	ctx);
+
+	virtual ~btOpenCLSoftBodySolver();
+
+
+	
+	btOpenCLAcceleratedSoftBodyInterface *findSoftBodyInterface( const btSoftBody* const softBody );
+
+	virtual btSoftBodyLinkData &getLinkData();
+
+	virtual btSoftBodyVertexData &getVertexData();
+
+	virtual btSoftBodyTriangleData &getTriangleData();
+
+	virtual SolverTypes getSolverType() const
+	{
+		return CL_SOLVER;
+	}
+
+
+	virtual bool checkInitialized();
+
+	virtual void updateSoftBodies( );
+
+	virtual void optimize( btAlignedObjectArray< btSoftBody * > &softBodies , bool forceUpdate=false);
+
+	virtual void copyBackToSoftBodies();
+
+	virtual void solveConstraints( float solverdt );
+
+	virtual void predictMotion( float solverdt );
+
+	virtual void processCollision( btSoftBody *, btCollisionObject* );
+
+	virtual void processCollision( btSoftBody*, btSoftBody* );
+
+	virtual void	setDefaultWorkgroupSize(size_t workGroupSize)
+	{
+		m_defaultWorkGroupSize = workGroupSize;
+	}
+	virtual size_t	getDefaultWorkGroupSize() const
+	{
+		return m_defaultWorkGroupSize;
+	}
+	
+}; // btOpenCLSoftBodySolver
+
+
+/** 
+ * Class to manage movement of data from a solver to a given target.
+ * This version is the CL to CPU version.
+ */
+class btSoftBodySolverOutputCLtoCPU : public btSoftBodySolverOutput
+{
+protected:
+
+public:
+	btSoftBodySolverOutputCLtoCPU()
+	{
+	}
+
+	/** Output current computed vertex data to the vertex buffers for all cloths in the solver. */
+	virtual void copySoftBodyToVertexBuffer( const btSoftBody * const softBody, btVertexBufferDescriptor *vertexBuffer );
+};
+
+
+
+#endif // #ifndef BT_SOFT_BODY_SOLVER_OPENCL_H
+ bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolver_OpenCLSIMDAware.h view
@@ -0,0 +1,82 @@+/*
+Bullet Continuous Collision Detection and Physics Library
+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+Permission is granted to anyone to use this software for any purpose, 
+including commercial applications, and to alter it and redistribute it freely, 
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+*/
+
+#ifndef BT_SOFT_BODY_SOLVER_OPENCL_SIMDAWARE_H
+#define BT_SOFT_BODY_SOLVER_OPENCL_SIMDAWARE_H
+
+#include "stddef.h" //for size_t
+#include "vectormath/vmInclude.h"
+
+#include "btSoftBodySolver_OpenCL.h"
+#include "btSoftBodySolverBuffer_OpenCL.h"
+#include "btSoftBodySolverLinkData_OpenCLSIMDAware.h"
+#include "btSoftBodySolverVertexData_OpenCL.h"
+#include "btSoftBodySolverTriangleData_OpenCL.h"
+
+
+
+
+
+class btOpenCLSoftBodySolverSIMDAware : public btOpenCLSoftBodySolver
+{
+protected:
+	
+
+	btSoftBodyLinkDataOpenCLSIMDAware m_linkData;
+
+
+	bool m_shadersInitialized;
+
+
+	bool buildShaders();
+
+
+	void updateConstants( float timeStep );
+
+	float computeTriangleArea( 
+		const Vectormath::Aos::Point3 &vertex0,
+		const Vectormath::Aos::Point3 &vertex1,
+		const Vectormath::Aos::Point3 &vertex2 );
+
+
+	//////////////////////////////////////
+	// Kernel dispatches
+	void solveLinksForPosition( int startLink, int numLinks, float kst, float ti );
+	
+	void solveCollisionsAndUpdateVelocities( float isolverdt );
+	// End kernel dispatches
+	/////////////////////////////////////
+
+public:
+	btOpenCLSoftBodySolverSIMDAware(cl_command_queue queue,cl_context	ctx);
+
+	virtual ~btOpenCLSoftBodySolverSIMDAware();
+
+	virtual SolverTypes getSolverType() const
+	{
+		return CL_SIMD_SOLVER;
+	}
+
+
+	virtual btSoftBodyLinkData &getLinkData();
+
+
+	virtual void optimize( btAlignedObjectArray< btSoftBody * > &softBodies , bool forceUpdate=false);
+
+	virtual void solveConstraints( float solverdt );
+
+}; // btOpenCLSoftBodySolverSIMDAware
+
+#endif // #ifndef BT_SOFT_BODY_SOLVER_OPENCL_SIMDAWARE_H
+ bullet/BulletMultiThreaded/HeapManager.h view
@@ -0,0 +1,117 @@+/*+   Copyright (C) 2009 Sony Computer Entertainment Inc.+   All rights reserved.++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.++*/++#ifndef BT_HEAP_MANAGER_H__+#define BT_HEAP_MANAGER_H__++#ifdef __SPU__+	#define HEAP_STACK_SIZE 32+#else+	#define HEAP_STACK_SIZE 64+#endif++#define MIN_ALLOC_SIZE 16+++class HeapManager+{+private:+	ATTRIBUTE_ALIGNED16(unsigned char *mHeap);+	ATTRIBUTE_ALIGNED16(unsigned int mHeapBytes);+	ATTRIBUTE_ALIGNED16(unsigned char *mPoolStack[HEAP_STACK_SIZE]);+	ATTRIBUTE_ALIGNED16(unsigned int mCurStack);+	+public:+	enum {ALIGN16,ALIGN128};++	HeapManager(unsigned char *buf,int bytes)+	{+		mHeap = buf;+		mHeapBytes = bytes;+		clear();+	}+	+	~HeapManager()+	{+	}+	+	int getAllocated()+	{+		return (int)(mPoolStack[mCurStack]-mHeap);+	}+	+	int getRest()+	{+		return mHeapBytes-getAllocated();+	}++	void *allocate(size_t bytes,int alignment = ALIGN16)+	{+		if(bytes <= 0) bytes = MIN_ALLOC_SIZE;+		btAssert(mCurStack < (HEAP_STACK_SIZE-1));++		+#if defined(_WIN64) || defined(__LP64__) || defined(__x86_64__)+		unsigned long long p = (unsigned long long )mPoolStack[mCurStack];+		if(alignment == ALIGN128) {+			p = ((p+127) & 0xffffffffffffff80);+			bytes = (bytes+127) & 0xffffffffffffff80;+		}+		else {+			bytes = (bytes+15) & 0xfffffffffffffff0;+		}++		btAssert(bytes <=(mHeapBytes-(p-(unsigned long long )mHeap)) );+		+#else+		unsigned long p = (unsigned long )mPoolStack[mCurStack];+		if(alignment == ALIGN128) {+			p = ((p+127) & 0xffffff80);+			bytes = (bytes+127) & 0xffffff80;+		}+		else {+			bytes = (bytes+15) & 0xfffffff0;+		}+		btAssert(bytes <=(mHeapBytes-(p-(unsigned long)mHeap)) );+#endif+		unsigned char * bla = (unsigned char *)(p + bytes);+		mPoolStack[++mCurStack] = bla;+		return (void*)p;+	}++	void deallocate(void *p)+	{+		(void) p;+		mCurStack--;+	}+	+	void clear()+	{+		mPoolStack[0] = mHeap;+		mCurStack = 0;+	}++//	void printStack()+//	{+//		for(unsigned int i=0;i<=mCurStack;i++) {+//			PRINTF("memStack %2d 0x%x\n",i,(uint32_t)mPoolStack[i]);+//		}+//	}++};++#endif //BT_HEAP_MANAGER_H__+
+ bullet/BulletMultiThreaded/PlatformDefinitions.h view
@@ -0,0 +1,99 @@+#ifndef BT_TYPE_DEFINITIONS_H+#define BT_TYPE_DEFINITIONS_H++///This file provides some platform/compiler checks for common definitions+#include "LinearMath/btScalar.h"+#include "LinearMath/btMinMax.h"++#ifdef PFX_USE_FREE_VECTORMATH+#include "physics_effects/base_level/base/pfx_vectormath_include.win32.h"+typedef Vectormath::Aos::Vector3    vmVector3;+typedef Vectormath::Aos::Quat       vmQuat;+typedef Vectormath::Aos::Matrix3    vmMatrix3;+typedef Vectormath::Aos::Transform3 vmTransform3;+typedef Vectormath::Aos::Point3     vmPoint3;+#else+#include "vectormath/vmInclude.h"+#endif//PFX_USE_FREE_VECTORMATH++++++#ifdef _WIN32++typedef union+{+  unsigned int u;+  void *p;+} addr64;++#define USE_WIN32_THREADING 1++		#if defined(__MINGW32__) || defined(__CYGWIN__) || (defined (_MSC_VER) && _MSC_VER < 1300)+		#else+		#endif //__MINGW32__++		typedef unsigned char     uint8_t;+#ifndef __PHYSICS_COMMON_H__+#ifndef PFX_USE_FREE_VECTORMATH+#ifndef __BT_SKIP_UINT64_H+		typedef unsigned long int uint64_t;+#endif //__BT_SKIP_UINT64_H+#endif //PFX_USE_FREE_VECTORMATH+		typedef unsigned int      uint32_t;+#endif //__PHYSICS_COMMON_H__+		typedef unsigned short    uint16_t;++		#include <malloc.h>+		#define memalign(alignment, size) malloc(size);+			+#include <string.h> //memcpy++		++		#include <stdio.h>		+		#define spu_printf printf+		+#else+		#include <stdint.h>+		#include <stdlib.h>+		#include <string.h> //for memcpy++#if defined	(__CELLOS_LV2__)+	// Playstation 3 Cell SDK+#include <spu_printf.h>+		+#else+	// posix system++#define USE_PTHREADS    (1)++#ifdef USE_LIBSPE2+#include <stdio.h>		+#define spu_printf printf	+#define DWORD unsigned int+			typedef union+			{+			  unsigned long long ull;+			  unsigned int ui[2];+			  void *p;+			} addr64;+#endif // USE_LIBSPE2++#endif	//__CELLOS_LV2__+	+#endif++#ifdef __SPU__+#include <stdio.h>		+#define printf spu_printf+#endif++/* Included here because we need uint*_t typedefs */+#include "PpuAddressSpace.h"++#endif //BT_TYPE_DEFINITIONS_H+++
+ bullet/BulletMultiThreaded/PosixThreadSupport.h view
@@ -0,0 +1,142 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2007 Erwin Coumans  http://bulletphysics.com++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_POSIX_THREAD_SUPPORT_H+#define BT_POSIX_THREAD_SUPPORT_H+++#include "LinearMath/btScalar.h"+#include "PlatformDefinitions.h"++#ifdef USE_PTHREADS //platform specifc defines are defined in PlatformDefinitions.h++#ifndef _XOPEN_SOURCE+#define _XOPEN_SOURCE 600 //for definition of pthread_barrier_t, see http://pages.cs.wisc.edu/~travitch/pthreads_primer.html+#endif //_XOPEN_SOURCE+#include <pthread.h>+#include <semaphore.h>++++#include "LinearMath/btAlignedObjectArray.h"++#include "btThreadSupportInterface.h"+++typedef void (*PosixThreadFunc)(void* userPtr,void* lsMemory);+typedef void* (*PosixlsMemorySetupFunc)();++// PosixThreadSupport helps to initialize/shutdown libspe2, start/stop SPU tasks and communication+class PosixThreadSupport : public btThreadSupportInterface +{+public:+    typedef enum sStatus {+        STATUS_BUSY,+        STATUS_READY,+        STATUS_FINISHED+    } Status;++	// placeholder, until libspe2 support is there+	struct	btSpuStatus+	{+		uint32_t	m_taskId;+		uint32_t	m_commandId;+		uint32_t	m_status;++		PosixThreadFunc	m_userThreadFunc;+		void*	m_userPtr; //for taskDesc etc+		void*	m_lsMemory; //initialized using PosixLocalStoreMemorySetupFunc++                pthread_t thread;+                sem_t* startSemaphore;++        unsigned long threadUsed;+	};+private:++	btAlignedObjectArray<btSpuStatus>	m_activeSpuStatus;+public:+	///Setup and initialize SPU/CELL/Libspe2++	++	struct	ThreadConstructionInfo+	{+		ThreadConstructionInfo(char* uniqueName,+									PosixThreadFunc userThreadFunc,+									PosixlsMemorySetupFunc	lsMemoryFunc,+									int numThreads=1,+									int threadStackSize=65535+									)+									:m_uniqueName(uniqueName),+									m_userThreadFunc(userThreadFunc),+									m_lsMemoryFunc(lsMemoryFunc),+									m_numThreads(numThreads),+									m_threadStackSize(threadStackSize)+		{++		}++		char*					m_uniqueName;+		PosixThreadFunc			m_userThreadFunc;+		PosixlsMemorySetupFunc	m_lsMemoryFunc;+		int						m_numThreads;+		int						m_threadStackSize;++	};++	PosixThreadSupport(ThreadConstructionInfo& threadConstructionInfo);++///cleanup/shutdown Libspe2+	virtual	~PosixThreadSupport();++	void	startThreads(ThreadConstructionInfo&	threadInfo);+++///send messages to SPUs+	virtual	void sendRequest(uint32_t uiCommand, ppu_address_t uiArgument0, uint32_t uiArgument1);++///check for messages from SPUs+	virtual	void waitForResponse(unsigned int *puiArgument0, unsigned int *puiArgument1);++///start the spus (can be called at the beginning of each frame, to make sure that the right SPU program is loaded)+	virtual	void startSPU();++///tell the task scheduler we are done with the SPU tasks+	virtual	void stopSPU();++	virtual void setNumTasks(int numTasks) {}++	virtual int getNumTasks() const+	{+		return m_activeSpuStatus.size();+	}++	virtual btBarrier* createBarrier();++	virtual btCriticalSection* createCriticalSection();+	+	virtual void*	getThreadLocalMemory(int taskId)+	{+		return m_activeSpuStatus[taskId].m_lsMemory;+	}++};++#endif // USE_PTHREADS++#endif // BT_POSIX_THREAD_SUPPORT_H++
+ bullet/BulletMultiThreaded/PpuAddressSpace.h view
@@ -0,0 +1,37 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2010 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+++#ifndef BT_PPU_ADDRESS_SPACE_H+#define BT_PPU_ADDRESS_SPACE_H+++#ifdef _WIN32+//stop those casting warnings until we have a better solution for ppu_address_t / void* / uint64 conversions+#pragma warning (disable: 4311)+#pragma warning (disable: 4312)+#endif //_WIN32+++#if defined(_WIN64)+	typedef unsigned __int64 ppu_address_t;+#elif defined(__LP64__) || defined(__x86_64__)+	typedef uint64_t ppu_address_t;+#else+	typedef uint32_t ppu_address_t;+#endif //defined(_WIN64)++#endif //BT_PPU_ADDRESS_SPACE_H+
+ bullet/BulletMultiThreaded/SequentialThreadSupport.h view
@@ -0,0 +1,96 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2007 Erwin Coumans  http://bulletphysics.com++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#include "LinearMath/btScalar.h"+#include "PlatformDefinitions.h"+++#ifndef BT_SEQUENTIAL_THREAD_SUPPORT_H+#define BT_SEQUENTIAL_THREAD_SUPPORT_H++#include "LinearMath/btAlignedObjectArray.h"++#include "btThreadSupportInterface.h"++typedef void (*SequentialThreadFunc)(void* userPtr,void* lsMemory);+typedef void* (*SequentiallsMemorySetupFunc)();++++///The SequentialThreadSupport is a portable non-parallel implementation of the btThreadSupportInterface+///This is useful for debugging and porting SPU Tasks to other platforms.+class SequentialThreadSupport : public btThreadSupportInterface +{+public:+	struct	btSpuStatus+	{+		uint32_t	m_taskId;+		uint32_t	m_commandId;+		uint32_t	m_status;++		SequentialThreadFunc	m_userThreadFunc;++		void*	m_userPtr; //for taskDesc etc+		void*	m_lsMemory; //initialized using SequentiallsMemorySetupFunc+	};+private:+	btAlignedObjectArray<btSpuStatus>	m_activeSpuStatus;+	btAlignedObjectArray<void*>			m_completeHandles;	+public:+	struct	SequentialThreadConstructionInfo+	{+		SequentialThreadConstructionInfo (char* uniqueName,+									SequentialThreadFunc userThreadFunc,+									SequentiallsMemorySetupFunc	lsMemoryFunc+									)+									:m_uniqueName(uniqueName),+									m_userThreadFunc(userThreadFunc),+									m_lsMemoryFunc(lsMemoryFunc)+		{++		}++		char*						m_uniqueName;+		SequentialThreadFunc		m_userThreadFunc;+		SequentiallsMemorySetupFunc	m_lsMemoryFunc;+	};++	SequentialThreadSupport(SequentialThreadConstructionInfo& threadConstructionInfo);+	virtual	~SequentialThreadSupport();+	void	startThreads(SequentialThreadConstructionInfo&	threadInfo);+///send messages to SPUs+	virtual	void sendRequest(uint32_t uiCommand, ppu_address_t uiArgument0, uint32_t uiArgument1);+///check for messages from SPUs+	virtual	void waitForResponse(unsigned int *puiArgument0, unsigned int *puiArgument1);+///start the spus (can be called at the beginning of each frame, to make sure that the right SPU program is loaded)+	virtual	void startSPU();+///tell the task scheduler we are done with the SPU tasks+	virtual	void stopSPU();++	virtual void setNumTasks(int numTasks);++	virtual int getNumTasks() const+	{+		return 1;+	}+	virtual btBarrier*	createBarrier();++	virtual btCriticalSection* createCriticalSection();+	++};++#endif //BT_SEQUENTIAL_THREAD_SUPPORT_H+
+ bullet/BulletMultiThreaded/SpuCollisionObjectWrapper.h view
@@ -0,0 +1,40 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2007 Erwin Coumans  http://bulletphysics.com++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_SPU_COLLISION_OBJECT_WRAPPER_H+#define BT_SPU_COLLISION_OBJECT_WRAPPER_H++#include "PlatformDefinitions.h"+#include "BulletCollision/CollisionDispatch/btCollisionObject.h"++ATTRIBUTE_ALIGNED16(class) SpuCollisionObjectWrapper+{+protected:+	int m_shapeType;+	float m_margin;+	ppu_address_t m_collisionObjectPtr;++public:+	SpuCollisionObjectWrapper ();++	SpuCollisionObjectWrapper (const btCollisionObject* collisionObject);++	int           getShapeType () const;+	float         getCollisionMargin () const;+	ppu_address_t getCollisionObjectPtr () const;+};+++#endif //BT_SPU_COLLISION_OBJECT_WRAPPER_H
+ bullet/BulletMultiThreaded/SpuCollisionTaskProcess.h view
@@ -0,0 +1,163 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2007 Erwin Coumans  http://bulletphysics.com++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_SPU_COLLISION_TASK_PROCESS_H+#define BT_SPU_COLLISION_TASK_PROCESS_H++#include <assert.h>++#include "LinearMath/btScalar.h"++#include "PlatformDefinitions.h"+#include "LinearMath/btAlignedObjectArray.h"+#include "SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.h" // for definitions processCollisionTask and createCollisionLocalStoreMemory++#include "btThreadSupportInterface.h"+++//#include "SPUAssert.h"+#include <string.h>+++#include "BulletCollision/CollisionDispatch/btCollisionObject.h"+#include "BulletCollision/CollisionShapes/btCollisionShape.h"+#include "BulletCollision/CollisionShapes/btConvexShape.h"++#include "LinearMath/btAlignedAllocator.h"++#include <stdio.h>+++#define DEBUG_SpuCollisionTaskProcess 1+++#define CMD_GATHER_AND_PROCESS_PAIRLIST	1++class btCollisionObject;+class btPersistentManifold;+class btDispatcher;+++/////Task Description for SPU collision detection+//struct SpuGatherAndProcessPairsTaskDesc+//{+//	uint64_t	inPtr;//m_pairArrayPtr;+//	//mutex variable+//	uint32_t	m_someMutexVariableInMainMemory;+//+//	uint64_t	m_dispatcher;+//+//	uint32_t	numOnLastPage;+//+//	uint16_t numPages;+//	uint16_t taskId;+//+//	struct	CollisionTask_LocalStoreMemory*	m_lsMemory; +//}+//+//#if  defined(__CELLOS_LV2__) || defined(USE_LIBSPE2)+//__attribute__ ((aligned (16)))+//#endif+//;+++///MidphaseWorkUnitInput stores individual primitive versus mesh collision detection input, to be processed by the SPU.+ATTRIBUTE_ALIGNED16(struct) SpuGatherAndProcessWorkUnitInput+{+	uint64_t m_pairArrayPtr;+	int		m_startIndex;+	int		m_endIndex;+};+++++/// SpuCollisionTaskProcess handles SPU processing of collision pairs.+/// Maintains a set of task buffers.+/// When the task is full, the task is issued for SPUs to process.  Contact output goes into btPersistentManifold+/// associated with each task.+/// When PPU issues a task, it will look for completed task buffers+/// PPU will do postprocessing, dependent on workunit output (not likely)+class SpuCollisionTaskProcess+{++  unsigned char  *m_workUnitTaskBuffers;+++	// track task buffers that are being used, and total busy tasks+	btAlignedObjectArray<bool>	m_taskBusy;+	btAlignedObjectArray<SpuGatherAndProcessPairsTaskDesc>	m_spuGatherTaskDesc;++	class	btThreadSupportInterface*	m_threadInterface;++	unsigned int	m_maxNumOutstandingTasks;++	unsigned int   m_numBusyTasks;++	// the current task and the current entry to insert a new work unit+	unsigned int   m_currentTask;+	unsigned int   m_currentPage;+	unsigned int   m_currentPageEntry;++	bool m_useEpa;++#ifdef DEBUG_SpuCollisionTaskProcess+	bool m_initialized;+#endif+	void issueTask2();+	//void postProcess(unsigned int taskId, int outputSize);++public:+	SpuCollisionTaskProcess(btThreadSupportInterface*	threadInterface, unsigned int maxNumOutstandingTasks);+	+	~SpuCollisionTaskProcess();+	+	///call initialize in the beginning of the frame, before addCollisionPairToTask+	void initialize2(bool useEpa = false);++	///batch up additional work to a current task for SPU processing. When batch is full, it issues the task.+	void addWorkToTask(void* pairArrayPtr,int startIndex,int endIndex);++	///call flush to submit potential outstanding work to SPUs and wait for all involved SPUs to be finished+	void flush2();++	/// set the maximum number of SPU tasks allocated+	void	setNumTasks(int maxNumTasks);++	int		getNumTasks() const+	{+		return m_maxNumOutstandingTasks;+	}+};++++#define MIDPHASE_TASK_PTR(task) (&m_workUnitTaskBuffers[0] + MIDPHASE_WORKUNIT_TASK_SIZE*task)+#define MIDPHASE_ENTRY_PTR(task,page,entry) (MIDPHASE_TASK_PTR(task) + MIDPHASE_WORKUNIT_PAGE_SIZE*page + sizeof(SpuGatherAndProcessWorkUnitInput)*entry)+#define MIDPHASE_OUTPUT_PTR(task) (&m_contactOutputBuffers[0] + MIDPHASE_MAX_CONTACT_BUFFER_SIZE*task)+#define MIDPHASE_TREENODES_PTR(task) (&m_complexShapeBuffers[0] + MIDPHASE_COMPLEX_SHAPE_BUFFER_SIZE*task)+++#define MIDPHASE_WORKUNIT_PAGE_SIZE (16)+//#define MIDPHASE_WORKUNIT_PAGE_SIZE (128)++#define MIDPHASE_NUM_WORKUNIT_PAGES 1+#define MIDPHASE_WORKUNIT_TASK_SIZE (MIDPHASE_WORKUNIT_PAGE_SIZE*MIDPHASE_NUM_WORKUNIT_PAGES)+#define MIDPHASE_NUM_WORKUNITS_PER_PAGE (MIDPHASE_WORKUNIT_PAGE_SIZE / sizeof(SpuGatherAndProcessWorkUnitInput))+#define MIDPHASE_NUM_WORKUNITS_PER_TASK (MIDPHASE_NUM_WORKUNITS_PER_PAGE*MIDPHASE_NUM_WORKUNIT_PAGES)+++#endif // BT_SPU_COLLISION_TASK_PROCESS_H+
+ bullet/BulletMultiThreaded/SpuContactManifoldCollisionAlgorithm.h view
@@ -0,0 +1,120 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2007 Erwin Coumans  http://bulletphysics.com++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_SPU_CONTACTMANIFOLD_COLLISION_ALGORITHM_H+#define BT_SPU_CONTACTMANIFOLD_COLLISION_ALGORITHM_H++#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h"+#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h"+#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h"+#include "BulletCollision/BroadphaseCollision/btDispatcher.h"+#include "LinearMath/btTransformUtil.h"++class btPersistentManifold;++//#define USE_SEPDISTANCE_UTIL 1++/// SpuContactManifoldCollisionAlgorithm  provides contact manifold and should be processed on SPU.+ATTRIBUTE_ALIGNED16(class) SpuContactManifoldCollisionAlgorithm : public btCollisionAlgorithm+{+	btVector3	m_shapeDimensions0;+	btVector3	m_shapeDimensions1;+	btPersistentManifold*	m_manifoldPtr;+	int		m_shapeType0;+	int		m_shapeType1;+	float	m_collisionMargin0;+	float	m_collisionMargin1;++	btCollisionObject*	m_collisionObject0;+	btCollisionObject*	m_collisionObject1;+	+	++	+public:+	+	virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);++	virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);++	+	SpuContactManifoldCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1);+#ifdef USE_SEPDISTANCE_UTIL+	btConvexSeparatingDistanceUtil	m_sepDistance;+#endif //USE_SEPDISTANCE_UTIL++	virtual ~SpuContactManifoldCollisionAlgorithm();++	virtual	void	getAllContactManifolds(btManifoldArray&	manifoldArray)+	{+		if (m_manifoldPtr)+			manifoldArray.push_back(m_manifoldPtr);+	}++	btPersistentManifold*	getContactManifoldPtr()+	{+		return m_manifoldPtr;+	}++	btCollisionObject*	getCollisionObject0()+	{+		return m_collisionObject0;+	}+	+	btCollisionObject*	getCollisionObject1()+	{+		return m_collisionObject1;+	}++	int		getShapeType0() const+	{+		return m_shapeType0;+	}++	int		getShapeType1() const+	{+		return m_shapeType1;+	}+	float	getCollisionMargin0() const+	{+		return m_collisionMargin0;+	}+	float	getCollisionMargin1() const+	{+		return m_collisionMargin1;+	}++	const btVector3&	getShapeDimensions0() const+	{+		return m_shapeDimensions0;+	}++	const btVector3&	getShapeDimensions1() const+	{+		return m_shapeDimensions1;+	}++	struct CreateFunc :public 	btCollisionAlgorithmCreateFunc+	{+		virtual	btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1)+		{+			void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(SpuContactManifoldCollisionAlgorithm));+			return new(mem) SpuContactManifoldCollisionAlgorithm(ci,body0,body1);+		}+	};++};++#endif //BT_SPU_CONTACTMANIFOLD_COLLISION_ALGORITHM_H
+ bullet/BulletMultiThreaded/SpuDoubleBuffer.h view
@@ -0,0 +1,126 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2007 Erwin Coumans  http://bulletphysics.com++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+++#ifndef BT_DOUBLE_BUFFER_H+#define BT_DOUBLE_BUFFER_H++#include "SpuFakeDma.h"+#include "LinearMath/btScalar.h"+++///DoubleBuffer+template<class T, int size>+class DoubleBuffer+{+#if defined(__SPU__) || defined(USE_LIBSPE2)+	ATTRIBUTE_ALIGNED128( T m_buffer0[size] ) ;+	ATTRIBUTE_ALIGNED128( T m_buffer1[size] ) ;+#else+	T m_buffer0[size];+	T m_buffer1[size];+#endif+	+	T *m_frontBuffer;+	T *m_backBuffer;++	unsigned int m_dmaTag;+	bool m_dmaPending;+public:+	bool	isPending() const { return m_dmaPending;}+	DoubleBuffer();++	void init ();++	// dma get and put commands+	void backBufferDmaGet(uint64_t ea, unsigned int numBytes, unsigned int tag);+	void backBufferDmaPut(uint64_t ea, unsigned int numBytes, unsigned int tag);++	// gets pointer to a buffer+	T *getFront();+	T *getBack();++	// if back buffer dma was started, wait for it to complete+	// then move back to front and vice versa+	T *swapBuffers();+};++template<class T, int size>+DoubleBuffer<T,size>::DoubleBuffer()+{+	init ();+}++template<class T, int size>+void DoubleBuffer<T,size>::init()+{+	this->m_dmaPending = false;+	this->m_frontBuffer = &this->m_buffer0[0];+	this->m_backBuffer = &this->m_buffer1[0];+}++template<class T, int size>+void+DoubleBuffer<T,size>::backBufferDmaGet(uint64_t ea, unsigned int numBytes, unsigned int tag)+{+	m_dmaPending = true;+	m_dmaTag = tag;+	if (numBytes)+	{+		m_backBuffer = (T*)cellDmaLargeGetReadOnly(m_backBuffer, ea, numBytes, tag, 0, 0);+	}+}++template<class T, int size>+void+DoubleBuffer<T,size>::backBufferDmaPut(uint64_t ea, unsigned int numBytes, unsigned int tag)+{+	m_dmaPending = true;+	m_dmaTag = tag;+	cellDmaLargePut(m_backBuffer, ea, numBytes, tag, 0, 0);+}++template<class T, int size>+T *+DoubleBuffer<T,size>::getFront()+{+	return m_frontBuffer;+}++template<class T, int size>+T *+DoubleBuffer<T,size>::getBack()+{+	return m_backBuffer;+}++template<class T, int size>+T *+DoubleBuffer<T,size>::swapBuffers()+{+	if (m_dmaPending)+	{+		cellDmaWaitTagStatusAll(1<<m_dmaTag);+		m_dmaPending = false;+	}++	T *tmp = m_backBuffer;+	m_backBuffer = m_frontBuffer;+	m_frontBuffer = tmp;++	return m_frontBuffer;+}++#endif
+ bullet/BulletMultiThreaded/SpuFakeDma.h view
@@ -0,0 +1,135 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_FAKE_DMA_H+#define BT_FAKE_DMA_H+++#include "PlatformDefinitions.h"+#include "LinearMath/btScalar.h"+++#ifdef __SPU__++#ifndef USE_LIBSPE2++#include <cell/dma.h>+#include <stdint.h>++#define DMA_TAG(xfer) (xfer + 1)+#define DMA_MASK(xfer) (1 << DMA_TAG(xfer))++#else // !USE_LIBSPE2++#define DMA_TAG(xfer) (xfer + 1)+#define DMA_MASK(xfer) (1 << DMA_TAG(xfer))+		+#include <spu_mfcio.h>		+		+#define DEBUG_DMA		+#ifdef DEBUG_DMA+#define dUASSERT(a,b) if (!(a)) { printf(b);}+#define uintsize ppu_address_t+		+#define cellDmaLargeGet(ls, ea, size, tag, tid, rid) if (  (((uintsize)ls%16) != ((uintsize)ea%16)) || ((((uintsize)ea%16) || ((uintsize)ls%16)) && (( ((uintsize)ls%16) != ((uintsize)size%16) ) || ( ((uintsize)ea%16) != ((uintsize)size%16) ) ) ) || ( ((uintsize)size%16) && ((uintsize)size!=1) && ((uintsize)size!=2) && ((uintsize)size!=4) && ((uintsize)size!=8) ) || (size >= 16384) || !(uintsize)ls || !(uintsize)ea) { \+															dUASSERT( (((uintsize)ea % 16) == 0) || (size < 16), "XDR Address not aligned: "); \+															dUASSERT( (((uintsize)ls % 16) == 0) || (size < 16), "LS Address not aligned: "); \+															dUASSERT( ((((uintsize)ls % size) == 0) && (((uintsize)ea % size) == 0))  || (size > 16), "Not naturally aligned: "); \+															dUASSERT((size == 1) || (size == 2) || (size == 4) || (size == 8) || ((size % 16) == 0), "size not a multiple of 16byte: "); \+															dUASSERT(size < 16384, "size too big: "); \+															dUASSERT( ((uintsize)ea%16)==((uintsize)ls%16), "wrong Quadword alignment of LS and EA: "); \+	    													dUASSERT(ea != 0, "Nullpointer EA: "); dUASSERT(ls != 0, "Nullpointer LS: ");\+															printf("GET %s:%d from: 0x%x, to: 0x%x - %d bytes\n", __FILE__, __LINE__, (unsigned int)ea,(unsigned int)ls,(unsigned int)size);\+															} \+															mfc_get(ls, ea, size, tag, tid, rid)+#define cellDmaGet(ls, ea, size, tag, tid, rid) if (  (((uintsize)ls%16) != ((uintsize)ea%16)) || ((((uintsize)ea%16) || ((uintsize)ls%16)) && (( ((uintsize)ls%16) != ((uintsize)size%16) ) || ( ((uintsize)ea%16) != ((uintsize)size%16) ) ) ) || ( ((uintsize)size%16) && ((uintsize)size!=1) && ((uintsize)size!=2) && ((uintsize)size!=4) && ((uintsize)size!=8) ) || (size >= 16384) || !(uintsize)ls || !(uintsize)ea) { \+														dUASSERT( (((uintsize)ea % 16) == 0) || (size < 16), "XDR Address not aligned: "); \+														dUASSERT( (((uintsize)ls % 16) == 0) || (size < 16), "LS Address not aligned: "); \+														dUASSERT( ((((uintsize)ls % size) == 0) && (((uintsize)ea % size) == 0))  || (size > 16), "Not naturally aligned: "); \+														dUASSERT((size == 1) || (size == 2) || (size == 4) || (size == 8) || ((size % 16) == 0), "size not a multiple of 16byte: "); \+    													dUASSERT(size < 16384, "size too big: "); \+														dUASSERT( ((uintsize)ea%16)==((uintsize)ls%16), "wrong Quadword alignment of LS and EA: "); \+    													dUASSERT(ea != 0, "Nullpointer EA: "); dUASSERT(ls != 0, "Nullpointer LS: ");\+    													printf("GET %s:%d from: 0x%x, to: 0x%x - %d bytes\n", __FILE__, __LINE__, (unsigned int)ea,(unsigned int)ls,(unsigned int)size);\+														} \+														mfc_get(ls, ea, size, tag, tid, rid)+#define cellDmaLargePut(ls, ea, size, tag, tid, rid) if (  (((uintsize)ls%16) != ((uintsize)ea%16)) || ((((uintsize)ea%16) || ((uintsize)ls%16)) && (( ((uintsize)ls%16) != ((uintsize)size%16) ) || ( ((uintsize)ea%16) != ((uintsize)size%16) ) ) ) || ( ((uintsize)size%16) && ((uintsize)size!=1) && ((uintsize)size!=2) && ((uintsize)size!=4) && ((uintsize)size!=8) ) || (size >= 16384) || !(uintsize)ls || !(uintsize)ea) { \+															dUASSERT( (((uintsize)ea % 16) == 0) || (size < 16), "XDR Address not aligned: "); \+															dUASSERT( (((uintsize)ls % 16) == 0) || (size < 16), "LS Address not aligned: "); \+															dUASSERT( ((((uintsize)ls % size) == 0) && (((uintsize)ea % size) == 0))  || (size > 16), "Not naturally aligned: "); \+															dUASSERT((size == 1) || (size == 2) || (size == 4) || (size == 8) || ((size % 16) == 0), "size not a multiple of 16byte: "); \+        													dUASSERT(size < 16384, "size too big: "); \+															dUASSERT( ((uintsize)ea%16)==((uintsize)ls%16), "wrong Quadword alignment of LS and EA: "); \+        													dUASSERT(ea != 0, "Nullpointer EA: "); dUASSERT(ls != 0, "Nullpointer LS: ");\+    														printf("PUT %s:%d from: 0x%x, to: 0x%x - %d bytes\n", __FILE__, __LINE__, (unsigned int)ls,(unsigned int)ea,(unsigned int)size); \+															} \+															mfc_put(ls, ea, size, tag, tid, rid)+#define cellDmaSmallGet(ls, ea, size, tag, tid, rid) if (  (((uintsize)ls%16) != ((uintsize)ea%16)) || ((((uintsize)ea%16) || ((uintsize)ls%16)) && (( ((uintsize)ls%16) != ((uintsize)size%16) ) || ( ((uintsize)ea%16) != ((uintsize)size%16) ) ) ) || ( ((uintsize)size%16) && ((uintsize)size!=1) && ((uintsize)size!=2) && ((uintsize)size!=4) && ((uintsize)size!=8) ) || (size >= 16384) || !(uintsize)ls || !(uintsize)ea) { \+																dUASSERT( (((uintsize)ea % 16) == 0) || (size < 16), "XDR Address not aligned: "); \+																dUASSERT( (((uintsize)ls % 16) == 0) || (size < 16), "LS Address not aligned: "); \+																dUASSERT( ((((uintsize)ls % size) == 0) && (((uintsize)ea % size) == 0))  || (size > 16), "Not naturally aligned: "); \+    															dUASSERT((size == 1) || (size == 2) || (size == 4) || (size == 8) || ((size % 16) == 0), "size not a multiple of 16byte: "); \+    															dUASSERT(size < 16384, "size too big: "); \+    															dUASSERT( ((uintsize)ea%16)==((uintsize)ls%16), "wrong Quadword alignment of LS and EA: "); \+    	    													dUASSERT(ea != 0, "Nullpointer EA: "); dUASSERT(ls != 0, "Nullpointer LS: ");\+    															printf("GET %s:%d from: 0x%x, to: 0x%x - %d bytes\n", __FILE__, __LINE__, (unsigned int)ea,(unsigned int)ls,(unsigned int)size);\+																} \+																mfc_get(ls, ea, size, tag, tid, rid)+#define cellDmaWaitTagStatusAll(ignore) mfc_write_tag_mask(ignore) ; mfc_read_tag_status_all()++#else+#define cellDmaLargeGet(ls, ea, size, tag, tid, rid) mfc_get(ls, ea, size, tag, tid, rid)+#define cellDmaGet(ls, ea, size, tag, tid, rid) mfc_get(ls, ea, size, tag, tid, rid)+#define cellDmaLargePut(ls, ea, size, tag, tid, rid) mfc_put(ls, ea, size, tag, tid, rid)+#define cellDmaSmallGet(ls, ea, size, tag, tid, rid) mfc_get(ls, ea, size, tag, tid, rid)+#define cellDmaWaitTagStatusAll(ignore) mfc_write_tag_mask(ignore) ; mfc_read_tag_status_all()+#endif // DEBUG_DMA++		+		+		+		+		+		+		+#endif // USE_LIBSPE2+#else // !__SPU__+//Simulate DMA using memcpy or direct access on non-CELL platforms that don't have DMAs and SPUs (Win32, Mac, Linux etc)+//Potential to add networked simulation using this interface++#define DMA_TAG(a) (a)+#define DMA_MASK(a) (a)++		/// cellDmaLargeGet Win32 replacements for Cell DMA to allow simulating most of the SPU code (just memcpy)+		int	cellDmaLargeGet(void *ls, uint64_t ea, uint32_t size, uint32_t tag, uint32_t tid, uint32_t rid);+		int	cellDmaGet(void *ls, uint64_t ea, uint32_t size, uint32_t tag, uint32_t tid, uint32_t rid);+		/// cellDmaLargePut Win32 replacements for Cell DMA to allow simulating most of the SPU code (just memcpy)+		int cellDmaLargePut(const void *ls, uint64_t ea, uint32_t size, uint32_t tag, uint32_t tid, uint32_t rid);+		/// cellDmaWaitTagStatusAll Win32 replacements for Cell DMA to allow simulating most of the SPU code (just memcpy)+		void	cellDmaWaitTagStatusAll(int ignore);+++#endif //__CELLOS_LV2__++///stallingUnalignedDmaSmallGet internally uses DMA_TAG(1)+int	stallingUnalignedDmaSmallGet(void *ls, uint64_t ea, uint32_t size);+++void*	cellDmaLargeGetReadOnly(void *ls, uint64_t ea, uint32_t size, uint32_t tag, uint32_t tid, uint32_t rid);+void*	cellDmaGetReadOnly(void *ls, uint64_t ea, uint32_t size, uint32_t tag, uint32_t tid, uint32_t rid);+void*	cellDmaSmallGetReadOnly(void *ls, uint64_t ea, uint32_t size, uint32_t tag, uint32_t tid, uint32_t rid);+++#endif //BT_FAKE_DMA_H
+ bullet/BulletMultiThreaded/SpuGatheringCollisionDispatcher.h view
@@ -0,0 +1,72 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2007 Erwin Coumans  http://bulletphysics.com++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+#ifndef BT_SPU_GATHERING_COLLISION__DISPATCHER_H+#define BT_SPU_GATHERING_COLLISION__DISPATCHER_H++#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h"+++///Tuning value to optimized SPU utilization +///Too small value means Task overhead is large compared to computation (too fine granularity)+///Too big value might render some SPUs are idle, while a few other SPUs are doing all work.+//#define SPU_BATCHSIZE_BROADPHASE_PAIRS 8+//#define SPU_BATCHSIZE_BROADPHASE_PAIRS 16+//#define SPU_BATCHSIZE_BROADPHASE_PAIRS 64+#define SPU_BATCHSIZE_BROADPHASE_PAIRS 128+//#define SPU_BATCHSIZE_BROADPHASE_PAIRS 256+//#define SPU_BATCHSIZE_BROADPHASE_PAIRS 512+//#define SPU_BATCHSIZE_BROADPHASE_PAIRS 1024++++class SpuCollisionTaskProcess;++///SpuGatheringCollisionDispatcher can use SPU to gather and calculate collision detection+///Time of Impact, Closest Points and Penetration Depth.+class SpuGatheringCollisionDispatcher : public btCollisionDispatcher+{+	+	SpuCollisionTaskProcess*	m_spuCollisionTaskProcess;+	+protected:++	class	btThreadSupportInterface*	m_threadInterface;++	unsigned int	m_maxNumOutstandingTasks;+	++public:++	//can be used by SPU collision algorithms	+	SpuCollisionTaskProcess*	getSpuCollisionTaskProcess()+	{+			return m_spuCollisionTaskProcess;+	}+	+	SpuGatheringCollisionDispatcher (class	btThreadSupportInterface*	threadInterface, unsigned int	maxNumOutstandingTasks,btCollisionConfiguration* collisionConfiguration);+	+	virtual ~SpuGatheringCollisionDispatcher();++	bool	supportsDispatchPairOnSpu(int proxyType0,int proxyType1);++	virtual void	dispatchAllCollisionPairs(btOverlappingPairCache* pairCache,const btDispatcherInfo& dispatchInfo,btDispatcher* dispatcher) ;++};++++#endif //BT_SPU_GATHERING_COLLISION__DISPATCHER_H++
+ bullet/BulletMultiThreaded/SpuLibspe2Support.h view
@@ -0,0 +1,180 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2007 Erwin Coumans  http://bulletphysics.com++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+++#ifndef BT_SPU_LIBSPE2_SUPPORT_H+#define BT_SPU_LIBSPE2_SUPPORT_H++#include <LinearMath/btScalar.h> //for uint32_t etc.++#ifdef USE_LIBSPE2++#include <stdlib.h>+#include <stdio.h>+//#include "SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.h"+#include "PlatformDefinitions.h"+++//extern struct SpuGatherAndProcessPairsTaskDesc;++enum+{+	Spu_Mailbox_Event_Nothing = 0,+	Spu_Mailbox_Event_Task = 1,+	Spu_Mailbox_Event_Shutdown = 2,+	+	Spu_Mailbox_Event_ForceDword = 0xFFFFFFFF+	+};++enum+{+	Spu_Status_Free = 0,+	Spu_Status_Occupied = 1,+	Spu_Status_Startup = 2,+	+	Spu_Status_ForceDword = 0xFFFFFFFF+	+};+++struct btSpuStatus+{+	uint32_t	m_taskId;+	uint32_t	m_commandId;+	uint32_t	m_status;++	addr64 m_taskDesc;+	addr64 m_lsMemory;+	+}+__attribute__ ((aligned (128)))+;++++#ifndef __SPU__++#include "LinearMath/btAlignedObjectArray.h"+#include "SpuCollisionTaskProcess.h"+#include "SpuSampleTaskProcess.h"+#include "btThreadSupportInterface.h"+#include <libspe2.h>+#include <pthread.h>+#include <sched.h>++#define MAX_SPUS 4 ++typedef struct ppu_pthread_data +{+	spe_context_ptr_t context;+	pthread_t pthread;+	unsigned int entry;+	unsigned int flags;+	addr64 argp;+	addr64 envp;+	spe_stop_info_t stopinfo;+} ppu_pthread_data_t;+++static void *ppu_pthread_function(void *arg)+{+    ppu_pthread_data_t * datap = (ppu_pthread_data_t *)arg;+    /*+    int rc;+    do +    {*/+        spe_context_run(datap->context, &datap->entry, datap->flags, datap->argp.p, datap->envp.p, &datap->stopinfo);+        if (datap->stopinfo.stop_reason == SPE_EXIT) +        {+           if (datap->stopinfo.result.spe_exit_code != 0) +           {+             perror("FAILED: SPE returned a non-zero exit status: \n");+             exit(1);+           }+         } +        else +         {+           perror("FAILED: SPE abnormally terminated\n");+           exit(1);+         }+        +        +    //} while (rc > 0); // loop until exit or error, and while any stop & signal+    pthread_exit(NULL);+}+++++++///SpuLibspe2Support helps to initialize/shutdown libspe2, start/stop SPU tasks and communication+class SpuLibspe2Support : public btThreadSupportInterface+{++	btAlignedObjectArray<btSpuStatus>	m_activeSpuStatus;+	+public:+	//Setup and initialize SPU/CELL/Libspe2+	SpuLibspe2Support(spe_program_handle_t *speprog,int numThreads);+	+	// SPE program handle ptr.+	spe_program_handle_t *program;+	+	// SPE program data+	ppu_pthread_data_t data[MAX_SPUS];+	+	//cleanup/shutdown Libspe2+	~SpuLibspe2Support();++	///send messages to SPUs+	void sendRequest(uint32_t uiCommand, uint32_t uiArgument0, uint32_t uiArgument1=0);++	//check for messages from SPUs+	void waitForResponse(unsigned int *puiArgument0, unsigned int *puiArgument1);++	//start the spus (can be called at the beginning of each frame, to make sure that the right SPU program is loaded)+	virtual void startSPU();++	//tell the task scheduler we are done with the SPU tasks+	virtual void stopSPU();++	virtual void setNumTasks(int numTasks)+	{+		//changing the number of tasks after initialization is not implemented (yet)+	}++private:+	+	///start the spus (can be called at the beginning of each frame, to make sure that the right SPU program is loaded)+	void internal_startSPU();+++	+	+	int numThreads;++};++#endif // NOT __SPU__++#endif //USE_LIBSPE2++#endif //BT_SPU_LIBSPE2_SUPPORT_H++++
+ bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/Box.h view
@@ -0,0 +1,167 @@+/*+   Copyright (C) 2006, 2008 Sony Computer Entertainment Inc.+   All rights reserved.++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.++*/++#ifndef __BOX_H__+#define __BOX_H__+++#ifndef PE_REF+#define PE_REF(a) a&+#endif++#include <math.h>+++#include "../PlatformDefinitions.h"+++++enum FeatureType { F, E, V };++//----------------------------------------------------------------------------+// Box+//----------------------------------------------------------------------------+///The Box is an internal class used by the boxBoxDistance calculation.+class Box+{+public:+	vmVector3 mHalf;++	inline Box()+	{}+	inline Box(PE_REF(vmVector3) half_);+	inline Box(float hx, float hy, float hz);++	inline void Set(PE_REF(vmVector3) half_);+	inline void Set(float hx, float hy, float hz);++	inline vmVector3 GetAABB(const vmMatrix3& rotation) const;+};++inline+Box::Box(PE_REF(vmVector3) half_)+{+	Set(half_);+}++inline+Box::Box(float hx, float hy, float hz)+{+	Set(hx, hy, hz);+}++inline+void+Box::Set(PE_REF(vmVector3) half_)+{+	mHalf = half_;+}++inline+void+Box::Set(float hx, float hy, float hz)+{+	mHalf = vmVector3(hx, hy, hz);+}++inline+vmVector3+Box::GetAABB(const vmMatrix3& rotation) const+{+	return absPerElem(rotation) * mHalf;+}++//-------------------------------------------------------------------------------------------------+// BoxPoint+//-------------------------------------------------------------------------------------------------++///The BoxPoint class is an internally used class to contain feature information for boxBoxDistance calculation.+class BoxPoint+{+public:+	BoxPoint() : localPoint(0.0f) {}++	vmPoint3      localPoint;+	FeatureType featureType;+	int         featureIdx;++	inline void setVertexFeature(int plusX, int plusY, int plusZ);+	inline void setEdgeFeature(int dim0, int plus0, int dim1, int plus1);+	inline void setFaceFeature(int dim, int plus);++	inline void getVertexFeature(int & plusX, int & plusY, int & plusZ) const;+	inline void getEdgeFeature(int & dim0, int & plus0, int & dim1, int & plus1) const;+	inline void getFaceFeature(int & dim, int & plus) const;+};++inline+void+BoxPoint::setVertexFeature(int plusX, int plusY, int plusZ)+{+	featureType = V;+	featureIdx = plusX << 2 | plusY << 1 | plusZ;+}++inline+void+BoxPoint::setEdgeFeature(int dim0, int plus0, int dim1, int plus1)+{+	featureType = E;++	if (dim0 > dim1) {+		featureIdx = plus1 << 5 | dim1 << 3 | plus0 << 2 | dim0;+	} else {+		featureIdx = plus0 << 5 | dim0 << 3 | plus1 << 2 | dim1;+	}+}++inline+void+BoxPoint::setFaceFeature(int dim, int plus)+{+	featureType = F;+	featureIdx = plus << 2 | dim;+}++inline+void+BoxPoint::getVertexFeature(int & plusX, int & plusY, int & plusZ) const+{+	plusX = featureIdx >> 2;+	plusY = featureIdx >> 1 & 1;+	plusZ = featureIdx & 1;+}++inline+void+BoxPoint::getEdgeFeature(int & dim0, int & plus0, int & dim1, int & plus1) const+{+	plus0 = featureIdx >> 5;+	dim0 = featureIdx >> 3 & 3;+	plus1 = featureIdx >> 2 & 1;+	dim1 = featureIdx & 3;+}++inline+void+BoxPoint::getFaceFeature(int & dim, int & plus) const+{+	plus = featureIdx >> 2;+	dim = featureIdx & 3;+}++#endif /* __BOX_H__ */
+ bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuCollisionShapes.h view
@@ -0,0 +1,128 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+#ifndef __SPU_COLLISION_SHAPES_H+#define __SPU_COLLISION_SHAPES_H++#include "../SpuDoubleBuffer.h"++#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h"+#include "BulletCollision/CollisionShapes/btConvexInternalShape.h"+#include "BulletCollision/CollisionShapes/btCylinderShape.h"+#include "BulletCollision/CollisionShapes/btStaticPlaneShape.h"++#include "BulletCollision/CollisionShapes/btOptimizedBvh.h"+#include "BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h"+#include "BulletCollision/CollisionShapes/btSphereShape.h"++#include "BulletCollision/CollisionShapes/btCapsuleShape.h"++#include "BulletCollision/CollisionShapes/btConvexShape.h"+#include "BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h"+#include "BulletCollision/CollisionShapes/btConvexHullShape.h"+#include "BulletCollision/CollisionShapes/btCompoundShape.h"++#define MAX_NUM_SPU_CONVEX_POINTS 128 //@fallback to PPU if a btConvexHullShape has more than MAX_NUM_SPU_CONVEX_POINTS points+#define MAX_SPU_COMPOUND_SUBSHAPES 16 //@fallback on PPU if compound has more than MAX_SPU_COMPOUND_SUBSHAPES child shapes+#define MAX_SHAPE_SIZE 256 //@todo: assert on this++ATTRIBUTE_ALIGNED16(struct)	SpuConvexPolyhedronVertexData+{+	void*	gSpuConvexShapePtr;+	btVector3* gConvexPoints;+	int gNumConvexPoints;+	int unused;+	ATTRIBUTE_ALIGNED16(btVector3 g_convexPointBuffer[MAX_NUM_SPU_CONVEX_POINTS]);+};++++ATTRIBUTE_ALIGNED16(struct) CollisionShape_LocalStoreMemory+{+	ATTRIBUTE_ALIGNED16(char collisionShape[MAX_SHAPE_SIZE]);+};++ATTRIBUTE_ALIGNED16(struct) CompoundShape_LocalStoreMemory+{+	// Compound data++	ATTRIBUTE_ALIGNED16(btCompoundShapeChild gSubshapes[MAX_SPU_COMPOUND_SUBSHAPES]);+	ATTRIBUTE_ALIGNED16(char gSubshapeShape[MAX_SPU_COMPOUND_SUBSHAPES][MAX_SHAPE_SIZE]);+};++ATTRIBUTE_ALIGNED16(struct) bvhMeshShape_LocalStoreMemory+{+	//ATTRIBUTE_ALIGNED16(btOptimizedBvh	gOptimizedBvh);+	ATTRIBUTE_ALIGNED16(char gOptimizedBvh[sizeof(btOptimizedBvh)+16]);+	btOptimizedBvh*	getOptimizedBvh()+	{+		return (btOptimizedBvh*) gOptimizedBvh;+	}++	ATTRIBUTE_ALIGNED16(btTriangleIndexVertexArray	gTriangleMeshInterfaceStorage);+	btTriangleIndexVertexArray*	gTriangleMeshInterfacePtr;+	///only a single mesh part for now, we can add support for multiple parts, but quantized trees don't support this at the moment +	ATTRIBUTE_ALIGNED16(btIndexedMesh	gIndexMesh);+	#define MAX_SPU_SUBTREE_HEADERS 32+	//1024+	ATTRIBUTE_ALIGNED16(btBvhSubtreeInfo	gSubtreeHeaders[MAX_SPU_SUBTREE_HEADERS]);+	ATTRIBUTE_ALIGNED16(btQuantizedBvhNode	gSubtreeNodes[MAX_SUBTREE_SIZE_IN_BYTES/sizeof(btQuantizedBvhNode)]);+};+++void computeAabb (btVector3& aabbMin, btVector3& aabbMax, btConvexInternalShape* convexShape, ppu_address_t convexShapePtr, int shapeType, const btTransform& xform);+void dmaBvhShapeData (bvhMeshShape_LocalStoreMemory* bvhMeshShape, btBvhTriangleMeshShape* triMeshShape);+void dmaBvhIndexedMesh (btIndexedMesh* IndexMesh, IndexedMeshArray& indexArray, int index, uint32_t dmaTag);+void dmaBvhSubTreeHeaders (btBvhSubtreeInfo* subTreeHeaders, ppu_address_t subTreePtr, int batchSize, uint32_t dmaTag);+void dmaBvhSubTreeNodes (btQuantizedBvhNode* nodes, const btBvhSubtreeInfo& subtree, QuantizedNodeArray&	nodeArray, int dmaTag);++int  getShapeTypeSize(int shapeType);+void dmaConvexVertexData (SpuConvexPolyhedronVertexData* convexVertexData, btConvexHullShape* convexShapeSPU);+void dmaCollisionShape (void* collisionShapeLocation, ppu_address_t collisionShapePtr, uint32_t dmaTag, int shapeType);+void dmaCompoundShapeInfo (CompoundShape_LocalStoreMemory* compoundShapeLocation, btCompoundShape* spuCompoundShape, uint32_t dmaTag);+void dmaCompoundSubShapes (CompoundShape_LocalStoreMemory* compoundShapeLocation, btCompoundShape* spuCompoundShape, uint32_t dmaTag);+++#define USE_BRANCHFREE_TEST 1+#ifdef USE_BRANCHFREE_TEST+SIMD_FORCE_INLINE unsigned int spuTestQuantizedAabbAgainstQuantizedAabb(unsigned short int* aabbMin1,unsigned short int* aabbMax1,const unsigned short int* aabbMin2,const unsigned short int* aabbMax2)+{		+#if defined(__CELLOS_LV2__) && defined (__SPU__)+	vec_ushort8 vecMin = {aabbMin1[0],aabbMin2[0],aabbMin1[2],aabbMin2[2],aabbMin1[1],aabbMin2[1],0,0};+	vec_ushort8 vecMax = {aabbMax2[0],aabbMax1[0],aabbMax2[2],aabbMax1[2],aabbMax2[1],aabbMax1[1],0,0};+	vec_ushort8 isGt = spu_cmpgt(vecMin,vecMax);+	return spu_extract(spu_gather(isGt),0)==0;++#else+	return btSelect((unsigned)((aabbMin1[0] <= aabbMax2[0]) & (aabbMax1[0] >= aabbMin2[0])+		& (aabbMin1[2] <= aabbMax2[2]) & (aabbMax1[2] >= aabbMin2[2])+		& (aabbMin1[1] <= aabbMax2[1]) & (aabbMax1[1] >= aabbMin2[1])),+		1, 0);+#endif+}+#else++SIMD_FORCE_INLINE unsigned int spuTestQuantizedAabbAgainstQuantizedAabb(const unsigned short int* aabbMin1,const unsigned short int* aabbMax1,const unsigned short int* aabbMin2,const unsigned short int*  aabbMax2)+{+	unsigned int overlap = 1;+	overlap = (aabbMin1[0] > aabbMax2[0] || aabbMax1[0] < aabbMin2[0]) ? 0 : overlap;+	overlap = (aabbMin1[2] > aabbMax2[2] || aabbMax1[2] < aabbMin2[2]) ? 0 : overlap;+	overlap = (aabbMin1[1] > aabbMax2[1] || aabbMax1[1] < aabbMin2[1]) ? 0 : overlap;+	return overlap;+}+#endif++void	spuWalkStacklessQuantizedTree(btNodeOverlapCallback* nodeCallback,unsigned short int* quantizedQueryAabbMin,unsigned short int* quantizedQueryAabbMax,const btQuantizedBvhNode* rootNode,int startNodeIndex,int endNodeIndex);++#endif
+ bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuContactResult.h view
@@ -0,0 +1,106 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef SPU_CONTACT_RESULT2_H+#define SPU_CONTACT_RESULT2_H+++#ifndef _WIN32+#include <stdint.h>+#endif++++#include "../SpuDoubleBuffer.h"+++#include "LinearMath/btTransform.h"+++#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h"+#include "BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h"++class btCollisionShape;+++struct SpuCollisionPairInput+{+	ppu_address_t m_collisionShapes[2];+	btCollisionShape*	m_spuCollisionShapes[2];++	ppu_address_t m_persistentManifoldPtr;+	btVector3	m_primitiveDimensions0;+	btVector3	m_primitiveDimensions1;+	int		m_shapeType0;+	int		m_shapeType1;	+	float	m_collisionMargin0;+	float	m_collisionMargin1;++	btTransform	m_worldTransform0;+	btTransform m_worldTransform1;+	+	bool	m_isSwapped;+	bool    m_useEpa;+};+++struct SpuClosestPointInput : public btDiscreteCollisionDetectorInterface::ClosestPointInput+{+	struct SpuConvexPolyhedronVertexData* m_convexVertexData[2];+};++///SpuContactResult exports the contact points using double-buffered DMA transfers, only when needed+///So when an existing contact point is duplicated, no transfer/refresh is performed.+class SpuContactResult : public btDiscreteCollisionDetectorInterface::Result+{+    btTransform		m_rootWorldTransform0;+	btTransform		m_rootWorldTransform1;+	ppu_address_t	m_manifoldAddress;++    btPersistentManifold* m_spuManifold;+	bool m_RequiresWriteBack;+	btScalar	m_combinedFriction;+	btScalar	m_combinedRestitution;+	+	bool m_isSwapped;++	DoubleBuffer<btPersistentManifold, 1> g_manifoldDmaExport;++	public:+		SpuContactResult();+		virtual ~SpuContactResult();++		btPersistentManifold*	GetSpuManifold() const+		{+			return m_spuManifold;+		}++		virtual void setShapeIdentifiersA(int partId0,int index0);+		virtual void setShapeIdentifiersB(int partId1,int index1);++		void	setContactInfo(btPersistentManifold* spuManifold, ppu_address_t	manifoldAddress,const btTransform& worldTrans0,const btTransform& worldTrans1, btScalar restitution0,btScalar restitution1, btScalar friction0,btScalar friction01, bool isSwapped);+++        void writeDoubleBufferedManifold(btPersistentManifold* lsManifold, btPersistentManifold* mmManifold);++        virtual void addContactPoint(const btVector3& normalOnBInWorld,const btVector3& pointInWorld,btScalar depth);++		void flush();+};++++#endif //SPU_CONTACT_RESULT2_H+
+ bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuConvexPenetrationDepthSolver.h view
@@ -0,0 +1,51 @@++/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+++#ifndef SPU_CONVEX_PENETRATION_DEPTH_H+#define SPU_CONVEX_PENETRATION_DEPTH_H++++class btStackAlloc;+class btIDebugDraw;+#include "BulletCollision/NarrowphaseCollision/btConvexPenetrationDepthSolver.h"++#include "LinearMath/btTransform.h"+++///ConvexPenetrationDepthSolver provides an interface for penetration depth calculation.+class SpuConvexPenetrationDepthSolver : public btConvexPenetrationDepthSolver+{+public:	+	+	virtual ~SpuConvexPenetrationDepthSolver() {};+	virtual bool calcPenDepth( SpuVoronoiSimplexSolver& simplexSolver,+	        void* convexA,void* convexB,int shapeTypeA, int shapeTypeB, float marginA, float marginB,+            btTransform& transA,const btTransform& transB,+			btVector3& v, btVector3& pa, btVector3& pb,+			class btIDebugDraw* debugDraw,btStackAlloc* stackAlloc,+			struct SpuConvexPolyhedronVertexData* convexVertexDataA,+			struct SpuConvexPolyhedronVertexData* convexVertexDataB+			) const = 0;+++};++++#endif //SPU_CONVEX_PENETRATION_DEPTH_H+
+ bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.h view
@@ -0,0 +1,140 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef SPU_GATHERING_COLLISION_TASK_H+#define SPU_GATHERING_COLLISION_TASK_H++#include "../PlatformDefinitions.h"+//#define DEBUG_SPU_COLLISION_DETECTION 1+++///Task Description for SPU collision detection+struct SpuGatherAndProcessPairsTaskDesc +{+	ppu_address_t	m_inPairPtr;//m_pairArrayPtr;+	//mutex variable+	uint32_t	m_someMutexVariableInMainMemory;++	ppu_address_t	m_dispatcher;++	uint32_t	numOnLastPage;++	uint16_t numPages;+	uint16_t taskId;+	bool m_useEpa;++	struct	CollisionTask_LocalStoreMemory*	m_lsMemory; +}++#if  defined(__CELLOS_LV2__) || defined(USE_LIBSPE2)+__attribute__ ((aligned (128)))+#endif+;+++void	processCollisionTask(void* userPtr, void* lsMemory);++void*	createCollisionLocalStoreMemory();+++#if defined(USE_LIBSPE2) && defined(__SPU__)+#include "../SpuLibspe2Support.h"+#include <spu_intrinsics.h>+#include <spu_mfcio.h>+#include <SpuFakeDma.h>++//#define DEBUG_LIBSPE2_SPU_TASK++++int main(unsigned long long speid, addr64 argp, addr64 envp)+{+	printf("SPU: hello \n");+	+	ATTRIBUTE_ALIGNED128(btSpuStatus status);+	ATTRIBUTE_ALIGNED16( SpuGatherAndProcessPairsTaskDesc taskDesc ) ;+	unsigned int received_message = Spu_Mailbox_Event_Nothing;+    bool shutdown = false;++	cellDmaGet(&status, argp.ull, sizeof(btSpuStatus), DMA_TAG(3), 0, 0);+	cellDmaWaitTagStatusAll(DMA_MASK(3));++	status.m_status = Spu_Status_Free;+	status.m_lsMemory.p = createCollisionLocalStoreMemory();++	cellDmaLargePut(&status, argp.ull, sizeof(btSpuStatus), DMA_TAG(3), 0, 0);+	cellDmaWaitTagStatusAll(DMA_MASK(3));+	+	+	while ( btLikely( !shutdown ) )+	{+		+		received_message = spu_read_in_mbox();+		+		if( btLikely( received_message == Spu_Mailbox_Event_Task ))+		{+#ifdef DEBUG_LIBSPE2_SPU_TASK+			printf("SPU: received Spu_Mailbox_Event_Task\n");+#endif //DEBUG_LIBSPE2_SPU_TASK++			// refresh the status+			cellDmaGet(&status, argp.ull, sizeof(btSpuStatus), DMA_TAG(3), 0, 0);+			cellDmaWaitTagStatusAll(DMA_MASK(3));+		+			btAssert(status.m_status==Spu_Status_Occupied);+			+			cellDmaGet(&taskDesc, status.m_taskDesc.p, sizeof(SpuGatherAndProcessPairsTaskDesc), DMA_TAG(3), 0, 0);+			cellDmaWaitTagStatusAll(DMA_MASK(3));+#ifdef DEBUG_LIBSPE2_SPU_TASK		+			printf("SPU:processCollisionTask\n");	+#endif //DEBUG_LIBSPE2_SPU_TASK+			processCollisionTask((void*)&taskDesc, taskDesc.m_lsMemory);+			+#ifdef DEBUG_LIBSPE2_SPU_TASK+			printf("SPU:finished processCollisionTask\n");+#endif //DEBUG_LIBSPE2_SPU_TASK+		}+		else+		{+#ifdef DEBUG_LIBSPE2_SPU_TASK+			printf("SPU: received ShutDown\n");+#endif //DEBUG_LIBSPE2_SPU_TASK+			if( btLikely( received_message == Spu_Mailbox_Event_Shutdown ) )+			{+				shutdown = true;+			}+			else+			{+				//printf("SPU - Sth. recieved\n");+			}+		}++		// set to status free and wait for next task+		status.m_status = Spu_Status_Free;+		cellDmaLargePut(&status, argp.ull, sizeof(btSpuStatus), DMA_TAG(3), 0, 0);+		cellDmaWaitTagStatusAll(DMA_MASK(3));		+				+		+  	}++	printf("SPU: shutdown\n");+  	return 0;+}+#endif // USE_LIBSPE2+++#endif //SPU_GATHERING_COLLISION_TASK_H++
+ bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuLocalSupport.h view
@@ -0,0 +1,19 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+++++
+ bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.h view
@@ -0,0 +1,48 @@++/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef MINKOWSKI_PENETRATION_DEPTH_SOLVER_H+#define MINKOWSKI_PENETRATION_DEPTH_SOLVER_H+++#include "BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h"++class btStackAlloc;+class btIDebugDraw;+class btVoronoiSimplexSolver;+class btConvexShape;++///MinkowskiPenetrationDepthSolver implements bruteforce penetration depth estimation.+///Implementation is based on sampling the depth using support mapping, and using GJK step to get the witness points.+class SpuMinkowskiPenetrationDepthSolver : public btConvexPenetrationDepthSolver+{+public:+	SpuMinkowskiPenetrationDepthSolver() {}+	virtual ~SpuMinkowskiPenetrationDepthSolver() {};++		virtual bool calcPenDepth( btSimplexSolverInterface& simplexSolver,+		const btConvexShape* convexA,const btConvexShape* convexB,+					const btTransform& transA,const btTransform& transB,+				btVector3& v, btVector3& pa, btVector3& pb,+				class btIDebugDraw* debugDraw,btStackAlloc* stackAlloc+				);+++};+++#endif //MINKOWSKI_PENETRATION_DEPTH_SOLVER_H+
+ bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuPreferredPenetrationDirections.h view
@@ -0,0 +1,70 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2007 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef _SPU_PREFERRED_PENETRATION_DIRECTIONS_H+#define _SPU_PREFERRED_PENETRATION_DIRECTIONS_H+++#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h"++int		spuGetNumPreferredPenetrationDirections(int shapeType, void* shape)+{+	switch (shapeType)+    {+		case TRIANGLE_SHAPE_PROXYTYPE:+		{+			return 2;+			//spu_printf("2\n");+			break;+		}+		default:+			{+#if __ASSERT+        spu_printf("spuGetNumPreferredPenetrationDirections() - Unsupported bound type: %d.\n", shapeType);+#endif // __ASSERT+			}+	}++	return 0;	+}	++void	spuGetPreferredPenetrationDirection(int shapeType, void* shape, int index, btVector3& penetrationVector)+{+++	switch (shapeType)+    {+		case TRIANGLE_SHAPE_PROXYTYPE:+		{+			btVector3* vertices = (btVector3*)shape;+			///calcNormal+			penetrationVector = (vertices[1]-vertices[0]).cross(vertices[2]-vertices[0]);+			penetrationVector.normalize();+			if (index)+				penetrationVector *= btScalar(-1.);+			break;+		}+		default:+			{+					+#if __ASSERT+        spu_printf("spuGetNumPreferredPenetrationDirections() - Unsupported bound type: %d.\n", shapeType);+#endif // __ASSERT+			}+	}+		+}++#endif //_SPU_PREFERRED_PENETRATION_DIRECTIONS_H
+ bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/boxBoxDistance.h view
@@ -0,0 +1,65 @@+/*+   Copyright (C) 2006, 2008 Sony Computer Entertainment Inc.+   All rights reserved.++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.++*/+++#ifndef __BOXBOXDISTANCE_H__+#define __BOXBOXDISTANCE_H__+++#include "Box.h"+++//---------------------------------------------------------------------------+// boxBoxDistance:+//+// description:+//    this computes info that can be used for the collision response of two boxes.  when the boxes+//    do not overlap, the points are set to the closest points of the boxes, and a positive+//    distance between them is returned.  if the boxes do overlap, a negative distance is returned+//    and the points are set to two points that would touch after the boxes are translated apart.+//    the contact normal gives the direction to repel or separate the boxes when they touch or+//    overlap (it's being approximated here as one of the 15 "separating axis" directions).+//+// returns:+//    positive or negative distance between two boxes.+//+// args:+//    vmVector3& normal: set to a unit contact normal pointing from box A to box B.+//+//    BoxPoint& boxPointA, BoxPoint& boxPointB:+//       set to a closest point or point of penetration on each box.+//+//    Box boxA, Box boxB:+//       boxes, represented as 3 half-widths+//+//    const vmTransform3& transformA, const vmTransform3& transformB:+//       box transformations, in world coordinates+//+//    float distanceThreshold:+//       the algorithm will exit early if it finds that the boxes are more distant than this+//       threshold, and not compute a contact normal or points.  if this distance returned+//       exceeds the threshold, all the other output data may not have been computed.  by+//       default, this is set to MAX_FLOAT so it will have no effect.+//+//---------------------------------------------------------------------------++float+boxBoxDistance(vmVector3& normal, BoxPoint& boxPointA, BoxPoint& boxPointB,+			   PE_REF(Box) boxA, const vmTransform3 & transformA, PE_REF(Box) boxB,+			   const vmTransform3 & transformB,+			   float distanceThreshold = FLT_MAX );++#endif /* __BOXBOXDISTANCE_H__ */
+ bullet/BulletMultiThreaded/SpuSampleTask/SpuSampleTask.h view
@@ -0,0 +1,54 @@+/*+Bullet Continuous Collision Detection and Physics Library, Copyright (c) 2007 Erwin Coumans++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.++*/++#ifndef SPU_SAMPLE_TASK_H+#define SPU_SAMPLE_TASK_H++#include "../PlatformDefinitions.h"+#include "LinearMath/btScalar.h"+#include "LinearMath/btVector3.h"+#include "LinearMath/btMatrix3x3.h"++#include "LinearMath/btAlignedAllocator.h"+++enum+{+	CMD_SAMPLE_INTEGRATE_BODIES = 1,+	CMD_SAMPLE_PREDICT_MOTION_BODIES+};++++ATTRIBUTE_ALIGNED16(struct) SpuSampleTaskDesc+{+	BT_DECLARE_ALIGNED_ALLOCATOR();++	uint32_t						m_sampleCommand;+	uint32_t						m_taskId;++	uint64_t 	m_mainMemoryPtr;+	int			m_sampleValue;+	++};+++void	processSampleTask(void* userPtr, void* lsMemory);+void*	createSampleLocalStoreMemory();+++#endif //SPU_SAMPLE_TASK_H+
+ bullet/BulletMultiThreaded/SpuSampleTaskProcess.h view
@@ -0,0 +1,153 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2007 Erwin Coumans  http://bulletphysics.com++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_SPU_SAMPLE_TASK_PROCESS_H+#define BT_SPU_SAMPLE_TASK_PROCESS_H++#include <assert.h>+++#include "PlatformDefinitions.h"++#include <stdlib.h>++#include "LinearMath/btAlignedObjectArray.h"+++#include "SpuSampleTask/SpuSampleTask.h"+++//just add your commands here, try to keep them globally unique for debugging purposes+#define CMD_SAMPLE_TASK_COMMAND 10++++/// SpuSampleTaskProcess handles SPU processing of collision pairs.+/// When PPU issues a task, it will look for completed task buffers+/// PPU will do postprocessing, dependent on workunit output (not likely)+class SpuSampleTaskProcess+{+	// track task buffers that are being used, and total busy tasks+	btAlignedObjectArray<bool>	m_taskBusy;+	btAlignedObjectArray<SpuSampleTaskDesc>m_spuSampleTaskDesc;+	+	int   m_numBusyTasks;++	// the current task and the current entry to insert a new work unit+	int   m_currentTask;++	bool m_initialized;++	void postProcess(int taskId, int outputSize);+	+	class	btThreadSupportInterface*	m_threadInterface;++	int	m_maxNumOutstandingTasks;++++public:+	SpuSampleTaskProcess(btThreadSupportInterface*	threadInterface, int maxNumOutstandingTasks);+	+	~SpuSampleTaskProcess();+	+	///call initialize in the beginning of the frame, before addCollisionPairToTask+	void initialize();++	void issueTask(void* sampleMainMemPtr,int sampleValue,int sampleCommand);++	///call flush to submit potential outstanding work to SPUs and wait for all involved SPUs to be finished+	void flush();+};+++#if defined(USE_LIBSPE2) && defined(__SPU__)+////////////////////MAIN/////////////////////////////+#include "../SpuLibspe2Support.h"+#include <spu_intrinsics.h>+#include <spu_mfcio.h>+#include <SpuFakeDma.h>++void * SamplelsMemoryFunc();+void SampleThreadFunc(void* userPtr,void* lsMemory);++//#define DEBUG_LIBSPE2_MAINLOOP++int main(unsigned long long speid, addr64 argp, addr64 envp)+{+	printf("SPU is up \n");+	+	ATTRIBUTE_ALIGNED128(btSpuStatus status);+	ATTRIBUTE_ALIGNED16( SpuSampleTaskDesc taskDesc ) ;+	unsigned int received_message = Spu_Mailbox_Event_Nothing;+        bool shutdown = false;++	cellDmaGet(&status, argp.ull, sizeof(btSpuStatus), DMA_TAG(3), 0, 0);+	cellDmaWaitTagStatusAll(DMA_MASK(3));++	status.m_status = Spu_Status_Free;+	status.m_lsMemory.p = SamplelsMemoryFunc();++	cellDmaLargePut(&status, argp.ull, sizeof(btSpuStatus), DMA_TAG(3), 0, 0);+	cellDmaWaitTagStatusAll(DMA_MASK(3));+	+	+	while (!shutdown)+	{+		received_message = spu_read_in_mbox();+		++		+		switch(received_message)+		{+		case Spu_Mailbox_Event_Shutdown:+			shutdown = true;+			break; +		case Spu_Mailbox_Event_Task:+			// refresh the status+#ifdef DEBUG_LIBSPE2_MAINLOOP+			printf("SPU recieved Task \n");+#endif //DEBUG_LIBSPE2_MAINLOOP+			cellDmaGet(&status, argp.ull, sizeof(btSpuStatus), DMA_TAG(3), 0, 0);+			cellDmaWaitTagStatusAll(DMA_MASK(3));+		+			btAssert(status.m_status==Spu_Status_Occupied);+			+			cellDmaGet(&taskDesc, status.m_taskDesc.p, sizeof(SpuSampleTaskDesc), DMA_TAG(3), 0, 0);+			cellDmaWaitTagStatusAll(DMA_MASK(3));+			+			SampleThreadFunc((void*)&taskDesc, reinterpret_cast<void*> (taskDesc.m_mainMemoryPtr) );+			break;+		case Spu_Mailbox_Event_Nothing:+		default:+			break;+		}++		// set to status free and wait for next task+		status.m_status = Spu_Status_Free;+		cellDmaLargePut(&status, argp.ull, sizeof(btSpuStatus), DMA_TAG(3), 0, 0);+		cellDmaWaitTagStatusAll(DMA_MASK(3));		+				+		+  	}+  	return 0;+}+//////////////////////////////////////////////////////+#endif++++#endif // BT_SPU_SAMPLE_TASK_PROCESS_H+
+ bullet/BulletMultiThreaded/SpuSync.h view
@@ -0,0 +1,149 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2007 Starbreeze Studios++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.++Written by: Marten Svanfeldt+*/++#ifndef BT_SPU_SYNC_H+#define	BT_SPU_SYNC_H+++#include "PlatformDefinitions.h"+++#if defined(WIN32)++#define WIN32_LEAN_AND_MEAN+#ifdef _XBOX+#include <Xtl.h>+#else+#include <Windows.h>+#endif++///The btSpinlock is a structure to allow multi-platform synchronization. This allows to port the SPU tasks to other platforms.+class btSpinlock+{+public:+	//typedef volatile LONG SpinVariable;+	typedef CRITICAL_SECTION SpinVariable;++	btSpinlock (SpinVariable* var)+		: spinVariable (var)+	{}++	void Init ()+	{+		//*spinVariable = 0;+		InitializeCriticalSection(spinVariable);+	}++	void Lock ()+	{+		EnterCriticalSection(spinVariable);+	}++	void Unlock ()+	{+		LeaveCriticalSection(spinVariable);+	}++private:+	SpinVariable* spinVariable;+};+++#elif defined (__CELLOS_LV2__)++//#include <cell/atomic.h>+#include <cell/sync/mutex.h>++///The btSpinlock is a structure to allow multi-platform synchronization. This allows to port the SPU tasks to other platforms.+class btSpinlock+{+public:+	typedef CellSyncMutex SpinVariable;++	btSpinlock (SpinVariable* var)+		: spinVariable (var)+	{}++	void Init ()+	{+#ifndef __SPU__+		//*spinVariable = 1;+		cellSyncMutexInitialize(spinVariable);+#endif+	}++++	void Lock ()+	{+#ifdef __SPU__+		// lock semaphore+		/*while (cellAtomicTestAndDecr32(atomic_buf, (uint64_t)spinVariable) == 0) +		{++		};*/+		cellSyncMutexLock((uint64_t)spinVariable);+#endif+	}++	void Unlock ()+	{+#ifdef __SPU__+		//cellAtomicIncr32(atomic_buf, (uint64_t)spinVariable);+		cellSyncMutexUnlock((uint64_t)spinVariable);+#endif +	}+++private:+	SpinVariable*	spinVariable;+	ATTRIBUTE_ALIGNED128(uint32_t		atomic_buf[32]);+};++#else+//create a dummy implementation (without any locking) useful for serial processing+class btSpinlock+{+public:+	typedef int  SpinVariable;++	btSpinlock (SpinVariable* var)+		: spinVariable (var)+	{}++	void Init ()+	{+	}++	void Lock ()+	{+	}++	void Unlock ()+	{+	}++private:+	SpinVariable* spinVariable;+};+++#endif+++#endif //BT_SPU_SYNC_H+
+ bullet/BulletMultiThreaded/TrbDynBody.h view
@@ -0,0 +1,79 @@+/*
+   Copyright (C) 2009 Sony Computer Entertainment Inc.
+   All rights reserved.
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+Permission is granted to anyone to use this software for any purpose, 
+including commercial applications, and to alter it and redistribute it freely, 
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+
+*/
+
+#ifndef BT_RB_DYN_BODY_H__
+#define BT_RB_DYN_BODY_H__
+
+#include "vectormath/vmInclude.h"
+using namespace Vectormath::Aos;
+
+#include "TrbStateVec.h"
+
+class CollObject;
+
+class TrbDynBody
+{
+public:
+	TrbDynBody()
+	{
+		fMass   = 0.0f;
+		fCollObject = NULL;
+		fElasticity = 0.2f;
+		fFriction = 0.8f;
+	}
+
+	// Get methods
+	float          getMass() const {return fMass;};
+	float          getElasticity() const {return fElasticity;}
+	float          getFriction() const {return fFriction;}
+	CollObject*    getCollObject() const {return fCollObject;}
+	const Matrix3 &getBodyInertia() const {return fIBody;}
+	const Matrix3 &getBodyInertiaInv() const {return fIBodyInv;}
+	float          getMassInv() const {return fMassInv;}
+
+	// Set methods
+	void           setMass(float mass) {fMass=mass;fMassInv=mass>0.0f?1.0f/mass:0.0f;}
+	void           setBodyInertia(const Matrix3 bodyInertia) {fIBody = bodyInertia;fIBodyInv = inverse(bodyInertia);}
+	void           setElasticity(float elasticity) {fElasticity = elasticity;}
+	void           setFriction(float friction) {fFriction = friction;}
+	void           setCollObject(CollObject *collObj) {fCollObject = collObj;}
+	
+	void           setBodyInertiaInv(const Matrix3 bodyInertiaInv) 
+	{
+		fIBody = inverse(bodyInertiaInv);
+		fIBodyInv = bodyInertiaInv;
+	}
+	void           setMassInv(float invMass) {
+		fMass= invMass>0.0f ? 1.0f/invMass :0.0f;
+		fMassInv=invMass;
+	}
+
+
+private:
+	// Rigid Body constants
+	float          fMass;        // Rigid Body mass
+	float          fMassInv;     // Inverse of mass
+	Matrix3        fIBody;       // Inertia matrix in body's coords
+	Matrix3        fIBodyInv;    // Inertia matrix inverse in body's coords
+	float          fElasticity;  // Coefficient of restitution
+	float          fFriction;    // Coefficient of friction
+
+public:
+	CollObject*    fCollObject;  // Collision object corresponding the RB
+} __attribute__ ((aligned(16)));
+
+#endif //BT_RB_DYN_BODY_H__
+
+ bullet/BulletMultiThreaded/TrbStateVec.h view
@@ -0,0 +1,339 @@+/*
+   Copyright (C) 2009 Sony Computer Entertainment Inc.
+   All rights reserved.
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+Permission is granted to anyone to use this software for any purpose, 
+including commercial applications, and to alter it and redistribute it freely, 
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+
+*/
+
+#ifndef BT_TRBSTATEVEC_H__
+#define BT_TRBSTATEVEC_H__
+
+#include <stdlib.h>
+#ifdef PFX_USE_FREE_VECTORMATH
+#include "vecmath/vmInclude.h"
+#else
+#include "vectormath/vmInclude.h"
+#endif //PFX_USE_FREE_VECTORMATH
+
+
+#include "PlatformDefinitions.h"
+
+
+static inline vmVector3 read_Vector3(const float* p)
+{
+	vmVector3 v;
+	loadXYZ(v, p);
+	return v;
+}
+
+static inline vmQuat read_Quat(const float* p)
+{
+	vmQuat vq;
+	loadXYZW(vq, p);
+	return vq;
+}
+
+static inline void store_Vector3(const vmVector3 &src, float* p)
+{
+	vmVector3 v = src;
+	storeXYZ(v, p);
+}
+
+static inline void store_Quat(const vmQuat &src, float* p)
+{
+	vmQuat vq = src;
+	storeXYZW(vq, p);
+}
+
+// Motion Type
+enum {
+	PfxMotionTypeFixed = 0,
+	PfxMotionTypeActive,
+	PfxMotionTypeKeyframe,
+	PfxMotionTypeOneWay,
+	PfxMotionTypeTrigger,
+	PfxMotionTypeCount
+};
+
+#define PFX_MOTION_MASK_DYNAMIC 0x0a // Active,OneWay
+#define PFX_MOTION_MASK_STATIC  0x95 // Fixed,Keyframe,Trigger,Sleeping
+#define PFX_MOTION_MASK_SLEEP   0x0e // Can sleep
+#define PFX_MOTION_MASK_TYPE    0x7f
+
+//
+// Rigid Body state
+//
+
+#ifdef __CELLOS_LV2__
+ATTRIBUTE_ALIGNED128(class) TrbState
+#else
+ATTRIBUTE_ALIGNED16(class) TrbState
+#endif
+
+{
+public:
+	TrbState()
+	{
+		setMotionType(PfxMotionTypeActive);
+		contactFilterSelf=contactFilterTarget=0xffffffff;
+		deleted = 0;
+		mSleeping = 0;
+		useSleep = 1;
+		trbBodyIdx=0;
+		mSleepCount=0;
+		useCcd = 0;
+		useContactCallback = 0;
+		useSleepCallback = 0;
+		linearDamping = 1.0f;
+		angularDamping = 0.99f;
+	}
+
+	TrbState(const uint8_t m, const vmVector3& x, const vmQuat& q, const vmVector3& v, const vmVector3& omega );
+	
+	uint16_t	mSleepCount;
+	uint8_t		mMotionType;
+	uint8_t		deleted            : 1;
+	uint8_t		mSleeping           : 1;
+	uint8_t		useSleep           : 1;
+	uint8_t		useCcd		       : 1;
+	uint8_t		useContactCallback : 1;
+	uint8_t		useSleepCallback   : 1;
+
+	uint16_t	trbBodyIdx;
+	uint32_t	contactFilterSelf;
+	uint32_t	contactFilterTarget;
+
+	float		center[3];		// AABB center(World)
+	float		half[3];		// AABB half(World)
+
+	float		linearDamping;
+	float		angularDamping;
+	
+	float		deltaLinearVelocity[3];
+	float		deltaAngularVelocity[3];
+
+	float     fX[3];				// position
+	float     fQ[4];				// orientation
+	float     fV[3];				// velocity
+	float     fOmega[3];			// angular velocity
+
+	inline void setZero();      // Zeroes out the elements
+	inline void setIdentity();  // Sets the rotation to identity and zeroes out the other elements
+
+	bool		isDeleted() const {return deleted==1;}
+
+	uint16_t	getRigidBodyId() const {return trbBodyIdx;}
+	void		setRigidBodyId(uint16_t i) {trbBodyIdx = i;}
+
+
+	uint32_t	getContactFilterSelf() const {return contactFilterSelf;}
+	void		setContactFilterSelf(uint32_t filter) {contactFilterSelf = filter;}
+
+	uint32_t	getContactFilterTarget() const {return contactFilterTarget;}
+	void		setContactFilterTarget(uint32_t filter) {contactFilterTarget = filter;}
+
+	float getLinearDamping() const {return linearDamping;}
+	float getAngularDamping() const {return angularDamping;}
+
+	void setLinearDamping(float damping) {linearDamping=damping;}
+	void setAngularDamping(float damping) {angularDamping=damping;}
+
+
+	uint8_t		getMotionType() const {return mMotionType;}
+	void		setMotionType(uint8_t t) {mMotionType = t;mSleeping=0;mSleepCount=0;}
+
+	uint8_t		getMotionMask() const {return (1<<mMotionType)|(mSleeping<<7);}
+
+	bool		isAsleep() const {return mSleeping==1;}
+	bool		isAwake() const {return mSleeping==0;}
+
+	void		wakeup() {mSleeping=0;mSleepCount=0;}
+	void		sleep() {if(useSleep) {mSleeping=1;mSleepCount=0;}}
+
+	uint8_t		getUseSleep() const {return useSleep;}
+	void		setUseSleep(uint8_t b) {useSleep=b;}
+
+	uint8_t		getUseCcd() const {return useCcd;}
+	void		setUseCcd(uint8_t b) {useCcd=b;}
+
+	uint8_t		getUseContactCallback() const {return useContactCallback;}
+	void		setUseContactCallback(uint8_t b) {useContactCallback=b;}
+
+	uint8_t		getUseSleepCallback() const {return useSleepCallback;}
+	void		setUseSleepCallback(uint8_t b) {useSleepCallback=b;}
+
+	void	 	incrementSleepCount() {mSleepCount++;}
+	void		resetSleepCount() {mSleepCount=0;}
+	uint16_t	getSleepCount() const {return mSleepCount;}
+
+	vmVector3 getPosition() const {return read_Vector3(fX);}
+	vmQuat    getOrientation() const {return read_Quat(fQ);}
+	vmVector3 getLinearVelocity() const {return read_Vector3(fV);}
+	vmVector3 getAngularVelocity() const {return read_Vector3(fOmega);}
+	vmVector3 getDeltaLinearVelocity() const {return read_Vector3(deltaLinearVelocity);}
+	vmVector3 getDeltaAngularVelocity() const {return read_Vector3(deltaAngularVelocity);}
+
+	void setPosition(const vmVector3 &pos) {store_Vector3(pos, fX);}
+	void setLinearVelocity(const vmVector3 &vel) {store_Vector3(vel, fV);}
+	void setAngularVelocity(const vmVector3 &vel) {store_Vector3(vel, fOmega);}
+	void setDeltaLinearVelocity(const vmVector3 &vel) {store_Vector3(vel, deltaLinearVelocity);}
+	void setDeltaAngularVelocity(const vmVector3 &vel) {store_Vector3(vel, deltaAngularVelocity);}
+	void setOrientation(const vmQuat &rot) {store_Quat(rot, fQ);}
+
+	inline void setAuxils(const vmVector3 &centerLocal,const vmVector3 &halfLocal);
+	inline void	setAuxilsCcd(const vmVector3 &centerLocal,const vmVector3 &halfLocal,float timeStep);
+	inline	void reset();
+};
+
+inline
+TrbState::TrbState(const uint8_t m, const vmVector3& x, const vmQuat& q, const vmVector3& v, const vmVector3& omega)
+{
+	setMotionType(m);
+	fX[0] = x[0];
+	fX[1] = x[1];
+	fX[2] = x[2];
+	fQ[0] = q[0];
+	fQ[1] = q[1];
+	fQ[2] = q[2];
+	fQ[3] = q[3];
+	fV[0] = v[0];
+	fV[1] = v[1];
+	fV[2] = v[2];
+	fOmega[0] = omega[0];
+	fOmega[1] = omega[1];
+	fOmega[2] = omega[2];
+	contactFilterSelf=contactFilterTarget=0xffff;
+	trbBodyIdx=0;
+	mSleeping = 0;
+	deleted = 0;
+	useSleep = 1;
+	useCcd = 0;
+	useContactCallback = 0;
+	useSleepCallback = 0;
+	mSleepCount=0;
+	linearDamping = 1.0f;
+	angularDamping = 0.99f;
+}
+
+inline void
+TrbState::setIdentity()
+{
+	fX[0] = 0.0f;
+	fX[1] = 0.0f;
+	fX[2] = 0.0f;
+	fQ[0] = 0.0f;
+	fQ[1] = 0.0f;
+	fQ[2] = 0.0f;
+	fQ[3] = 1.0f;
+	fV[0] = 0.0f;
+	fV[1] = 0.0f;
+	fV[2] = 0.0f;
+	fOmega[0] = 0.0f;
+	fOmega[1] = 0.0f;
+	fOmega[2] = 0.0f;
+}
+
+inline void
+TrbState::setZero()
+{
+	fX[0] = 0.0f;
+	fX[1] = 0.0f;
+	fX[2] = 0.0f;
+	fQ[0] = 0.0f;
+	fQ[1] = 0.0f;
+	fQ[2] = 0.0f;
+	fQ[3] = 0.0f;
+	fV[0] = 0.0f;
+	fV[1] = 0.0f;
+	fV[2] = 0.0f;
+	fOmega[0] = 0.0f;
+	fOmega[1] = 0.0f;
+	fOmega[2] = 0.0f;
+}
+
+inline void
+TrbState::setAuxils(const vmVector3 &centerLocal,const vmVector3 &halfLocal)
+{
+	vmVector3 centerW = getPosition() + rotate(getOrientation(),centerLocal);
+	vmVector3 halfW = absPerElem(vmMatrix3(getOrientation())) * halfLocal;
+	center[0] = centerW[0];
+	center[1] = centerW[1];
+	center[2] = centerW[2];
+	half[0] = halfW[0];
+	half[1] = halfW[1];
+	half[2] = halfW[2];
+}
+
+inline void
+TrbState::setAuxilsCcd(const vmVector3 &centerLocal,const vmVector3 &halfLocal,float timeStep)
+{
+	vmVector3 centerW = getPosition() + rotate(getOrientation(),centerLocal);
+	vmVector3 halfW = absPerElem(vmMatrix3(getOrientation())) * halfLocal;
+
+	vmVector3 diffvec = getLinearVelocity()*timeStep;
+
+	vmVector3 newCenter = centerW + diffvec;
+	vmVector3 aabbMin = minPerElem(newCenter - halfW,centerW - halfW);
+	vmVector3 aabbMax = maxPerElem(newCenter + halfW,centerW + halfW);
+	
+	centerW = 0.5f * (aabbMin + aabbMax);
+	halfW =0.5f * (aabbMax - aabbMin);
+
+	center[0] = centerW[0];
+	center[1] = centerW[1];
+	center[2] = centerW[2];
+
+	half[0] = halfW[0];
+	half[1] = halfW[1];
+	half[2] = halfW[2];
+}
+
+inline
+void TrbState::reset()
+{
+#if 0
+	mSleepCount = 0;
+	mMotionType = PfxMotionTypeActive;
+	mDeleted = 0;
+	mSleeping = 0;
+	mUseSleep = 1;
+	mUseCcd = 0;
+	mUseContactCallback = 0;
+	mUseSleepCallback = 0;
+	mRigidBodyId = 0;
+	mContactFilterSelf = 0xffffffff;
+	mContactFilterTarget = 0xffffffff;
+	mLinearDamping = 1.0f;
+	mAngularDamping = 0.99f;
+	mPosition = vmVector3(0.0f);
+	mOrientation = vmQuat::identity();
+	mLinearVelocity = vmVector3(0.0f);
+	mAngularVelocity = vmVector3(0.0f);
+#endif
+
+	setMotionType(PfxMotionTypeActive);
+	contactFilterSelf=contactFilterTarget=0xffffffff;
+	deleted = 0;
+	mSleeping = 0;
+	useSleep = 1;
+	trbBodyIdx=0;
+	mSleepCount=0;
+	useCcd = 0;
+	useContactCallback = 0;
+	useSleepCallback = 0;
+	linearDamping = 1.0f;
+	angularDamping = 0.99f;
+}
+
+#endif //BT_TRBSTATEVEC_H__
+
+
+ bullet/BulletMultiThreaded/Win32ThreadSupport.h view
@@ -0,0 +1,138 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2007 Erwin Coumans  http://bulletphysics.com++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#include "LinearMath/btScalar.h"+#include "PlatformDefinitions.h"++#ifdef USE_WIN32_THREADING  //platform specific defines are defined in PlatformDefinitions.h++#ifndef BT_WIN32_THREAD_SUPPORT_H+#define BT_WIN32_THREAD_SUPPORT_H++#include "LinearMath/btAlignedObjectArray.h"++#include "btThreadSupportInterface.h"+++typedef void (*Win32ThreadFunc)(void* userPtr,void* lsMemory);+typedef void* (*Win32lsMemorySetupFunc)();+++///Win32ThreadSupport helps to initialize/shutdown libspe2, start/stop SPU tasks and communication+class Win32ThreadSupport : public btThreadSupportInterface +{+public:+	///placeholder, until libspe2 support is there+	struct	btSpuStatus+	{+		uint32_t	m_taskId;+		uint32_t	m_commandId;+		uint32_t	m_status;++		Win32ThreadFunc	m_userThreadFunc;+		void*	m_userPtr; //for taskDesc etc+		void*	m_lsMemory; //initialized using Win32LocalStoreMemorySetupFunc++		void*	m_threadHandle; //this one is calling 'Win32ThreadFunc'++		void*	m_eventStartHandle;+		char	m_eventStartHandleName[32];++		void*	m_eventCompletetHandle;+		char	m_eventCompletetHandleName[32];+		++	};+private:++	btAlignedObjectArray<btSpuStatus>	m_activeSpuStatus;+	btAlignedObjectArray<void*>			m_completeHandles;+	+	int m_maxNumTasks;+public:+	///Setup and initialize SPU/CELL/Libspe2++	struct	Win32ThreadConstructionInfo+	{+		Win32ThreadConstructionInfo(char* uniqueName,+									Win32ThreadFunc userThreadFunc,+									Win32lsMemorySetupFunc	lsMemoryFunc,+									int numThreads=1,+									int threadStackSize=65535+									)+									:m_uniqueName(uniqueName),+									m_userThreadFunc(userThreadFunc),+									m_lsMemoryFunc(lsMemoryFunc),+									m_numThreads(numThreads),+									m_threadStackSize(threadStackSize)+		{++		}++		char*					m_uniqueName;+		Win32ThreadFunc			m_userThreadFunc;+		Win32lsMemorySetupFunc	m_lsMemoryFunc;+		int						m_numThreads;+		int						m_threadStackSize;++	};++++	Win32ThreadSupport(const Win32ThreadConstructionInfo& threadConstructionInfo);++///cleanup/shutdown Libspe2+	virtual	~Win32ThreadSupport();++	void	startThreads(const Win32ThreadConstructionInfo&	threadInfo);+++///send messages to SPUs+	virtual	void sendRequest(uint32_t uiCommand, ppu_address_t uiArgument0, uint32_t uiArgument1);++///check for messages from SPUs+	virtual	void waitForResponse(unsigned int *puiArgument0, unsigned int *puiArgument1);++	virtual bool isTaskCompleted(unsigned int *puiArgument0, unsigned int *puiArgument1, int timeOutInMilliseconds);++///start the spus (can be called at the beginning of each frame, to make sure that the right SPU program is loaded)+	virtual	void startSPU();++///tell the task scheduler we are done with the SPU tasks+	virtual	void stopSPU();++	virtual	void	setNumTasks(int numTasks)+	{+		m_maxNumTasks = numTasks;+	}++	virtual int getNumTasks() const+	{+		return m_maxNumTasks;+	}++	virtual void*	getThreadLocalMemory(int taskId)+	{+		return m_activeSpuStatus[taskId].m_lsMemory;+	}+	virtual btBarrier*	createBarrier();++	virtual btCriticalSection* createCriticalSection();++};++#endif //BT_WIN32_THREAD_SUPPORT_H++#endif //USE_WIN32_THREADING
+ bullet/BulletMultiThreaded/btGpu3DGridBroadphase.h view
@@ -0,0 +1,138 @@+/*+Bullet Continuous Collision Detection and Physics Library, http://bulletphysics.org+Copyright (C) 2006, 2009 Sony Computer Entertainment Inc. ++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++//----------------------------------------------------------------------------------------++#ifndef BTGPU3DGRIDBROADPHASE_H+#define BTGPU3DGRIDBROADPHASE_H++//----------------------------------------------------------------------------------------++#include "BulletCollision/BroadphaseCollision/btSimpleBroadphase.h"++#include "btGpu3DGridBroadphaseSharedTypes.h"++//----------------------------------------------------------------------------------------++///The btGpu3DGridBroadphase uses GPU-style code compiled for CPU to compute overlapping pairs++class btGpu3DGridBroadphase : public btSimpleBroadphase+{+protected:+	bool			m_bInitialized;+    unsigned int	m_numBodies;+    unsigned int	m_numCells;+	unsigned int	m_maxPairsPerBody;+	btScalar		m_cellFactorAABB;+    unsigned int	m_maxBodiesPerCell;+	bt3DGridBroadphaseParams m_params;+	btScalar		m_maxRadius;+	// CPU data+    unsigned int*	m_hBodiesHash;+    unsigned int*	m_hCellStart;+	unsigned int*	m_hPairBuffStartCurr;+	bt3DGrid3F1U*		m_hAABB;+	unsigned int*	m_hPairBuff;+	unsigned int*	m_hPairScan;+	unsigned int*	m_hPairOut;+// large proxies+	int		m_numLargeHandles;						+	int		m_maxLargeHandles;						+	int		m_LastLargeHandleIndex;							+	btSimpleBroadphaseProxy* m_pLargeHandles;+	void* m_pLargeHandlesRawPtr;+	int		m_firstFreeLargeHandle;+	int allocLargeHandle()+	{+		btAssert(m_numLargeHandles < m_maxLargeHandles);+		int freeLargeHandle = m_firstFreeLargeHandle;+		m_firstFreeLargeHandle = m_pLargeHandles[freeLargeHandle].GetNextFree();+		m_numLargeHandles++;+		if(freeLargeHandle > m_LastLargeHandleIndex)+		{+			m_LastLargeHandleIndex = freeLargeHandle;+		}+		return freeLargeHandle;+	}+	void freeLargeHandle(btSimpleBroadphaseProxy* proxy)+	{+		int handle = int(proxy - m_pLargeHandles);+		btAssert((handle >= 0) && (handle < m_maxHandles));+		if(handle == m_LastLargeHandleIndex)+		{+			m_LastLargeHandleIndex--;+		}+		proxy->SetNextFree(m_firstFreeLargeHandle);+		m_firstFreeLargeHandle = handle;+		proxy->m_clientObject = 0;+		m_numLargeHandles--;+	}+	bool isLargeProxy(const btVector3& aabbMin,  const btVector3& aabbMax);+	bool isLargeProxy(btBroadphaseProxy* proxy);+// debug+	unsigned int	m_numPairsAdded;+	unsigned int	m_numPairsRemoved;+	unsigned int	m_numOverflows;+// +public:+	btGpu3DGridBroadphase(const btVector3& worldAabbMin,const btVector3& worldAabbMax, +					   int gridSizeX, int gridSizeY, int gridSizeZ, +					   int maxSmallProxies, int maxLargeProxies, int maxPairsPerBody,+					   int maxBodiesPerCell = 8,+					   btScalar cellFactorAABB = btScalar(1.0f));+	btGpu3DGridBroadphase(	btOverlappingPairCache* overlappingPairCache,+						const btVector3& worldAabbMin,const btVector3& worldAabbMax, +						int gridSizeX, int gridSizeY, int gridSizeZ, +						int maxSmallProxies, int maxLargeProxies, int maxPairsPerBody,+						int maxBodiesPerCell = 8,+						btScalar cellFactorAABB = btScalar(1.0f));+	virtual ~btGpu3DGridBroadphase();+	virtual void	calculateOverlappingPairs(btDispatcher* dispatcher);++	virtual btBroadphaseProxy*	createProxy(const btVector3& aabbMin,  const btVector3& aabbMax,int shapeType,void* userPtr ,short int collisionFilterGroup,short int collisionFilterMask, btDispatcher* dispatcher,void* multiSapProxy);+	virtual void	destroyProxy(btBroadphaseProxy* proxy,btDispatcher* dispatcher);+	virtual void	rayTest(const btVector3& rayFrom,const btVector3& rayTo, btBroadphaseRayCallback& rayCallback);+	virtual void	resetPool(btDispatcher* dispatcher);++protected:+	void _initialize(	const btVector3& worldAabbMin,const btVector3& worldAabbMax, +						int gridSizeX, int gridSizeY, int gridSizeZ, +						int maxSmallProxies, int maxLargeProxies, int maxPairsPerBody,+						int maxBodiesPerCell = 8,+						btScalar cellFactorAABB = btScalar(1.0f));+	void _finalize();+	void addPairsToCache(btDispatcher* dispatcher);+	void addLarge2LargePairsToCache(btDispatcher* dispatcher);++// overrides for CPU version+	virtual void setParameters(bt3DGridBroadphaseParams* hostParams);+	virtual void prepareAABB();+	virtual void calcHashAABB();+	virtual void sortHash();	+	virtual void findCellStart();+	virtual void findOverlappingPairs();+	virtual void findPairsLarge();+	virtual void computePairCacheChanges();+	virtual void scanOverlappingPairBuff();+	virtual void squeezeOverlappingPairBuff();+};++//----------------------------------------------------------------------------------------++#endif //BTGPU3DGRIDBROADPHASE_H++//----------------------------------------------------------------------------------------+//----------------------------------------------------------------------------------------+//----------------------------------------------------------------------------------------
+ bullet/BulletMultiThreaded/btGpu3DGridBroadphaseSharedCode.h view
@@ -0,0 +1,430 @@+/*+Bullet Continuous Collision Detection and Physics Library, http://bulletphysics.org+Copyright (C) 2006, 2009 Sony Computer Entertainment Inc. ++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++//----------------------------------------------------------------------------------------++//----------------------------------------------------------------------------------------+//----------------------------------------------------------------------------------------+//----------------------------------------------------------------------------------------+//----------------------------------------------------------------------------------------+//               K E R N E L    F U N C T I O N S +//----------------------------------------------------------------------------------------+//----------------------------------------------------------------------------------------+//----------------------------------------------------------------------------------------+//----------------------------------------------------------------------------------------+//----------------------------------------------------------------------------------------+//----------------------------------------------------------------------------------------++// calculate position in uniform grid+BT_GPU___device__ int3 bt3DGrid_calcGridPos(float4 p)+{+    int3 gridPos;+    gridPos.x = (int)floor((p.x - BT_GPU_params.m_worldOriginX) / BT_GPU_params.m_cellSizeX);+    gridPos.y = (int)floor((p.y - BT_GPU_params.m_worldOriginY) / BT_GPU_params.m_cellSizeY);+    gridPos.z = (int)floor((p.z - BT_GPU_params.m_worldOriginZ) / BT_GPU_params.m_cellSizeZ);+    return gridPos;+} // bt3DGrid_calcGridPos()++//----------------------------------------------------------------------------------------++// calculate address in grid from position (clamping to edges)+BT_GPU___device__ uint bt3DGrid_calcGridHash(int3 gridPos)+{+    gridPos.x = BT_GPU_max(0, BT_GPU_min(gridPos.x, (int)BT_GPU_params.m_gridSizeX - 1));+    gridPos.y = BT_GPU_max(0, BT_GPU_min(gridPos.y, (int)BT_GPU_params.m_gridSizeY - 1));+    gridPos.z = BT_GPU_max(0, BT_GPU_min(gridPos.z, (int)BT_GPU_params.m_gridSizeZ - 1));+    return BT_GPU___mul24(BT_GPU___mul24(gridPos.z, BT_GPU_params.m_gridSizeY), BT_GPU_params.m_gridSizeX) + BT_GPU___mul24(gridPos.y, BT_GPU_params.m_gridSizeX) + gridPos.x;+} // bt3DGrid_calcGridHash()++//----------------------------------------------------------------------------------------++// calculate grid hash value for each body using its AABB+BT_GPU___global__ void calcHashAABBD(bt3DGrid3F1U* pAABB, uint2* pHash, uint numBodies)+{+    int index = BT_GPU___mul24(BT_GPU_blockIdx.x, BT_GPU_blockDim.x) + BT_GPU_threadIdx.x;+    if(index >= (int)numBodies)+	{+		return;+	}+	bt3DGrid3F1U bbMin = pAABB[index*2];+	bt3DGrid3F1U bbMax = pAABB[index*2 + 1];+	float4 pos;+	pos.x = (bbMin.fx + bbMax.fx) * 0.5f;+	pos.y = (bbMin.fy + bbMax.fy) * 0.5f;+	pos.z = (bbMin.fz + bbMax.fz) * 0.5f;+    // get address in grid+    int3 gridPos = bt3DGrid_calcGridPos(pos);+    uint gridHash = bt3DGrid_calcGridHash(gridPos);+    // store grid hash and body index+    pHash[index] = BT_GPU_make_uint2(gridHash, index);+} // calcHashAABBD()++//----------------------------------------------------------------------------------------++BT_GPU___global__ void findCellStartD(uint2* pHash, uint* cellStart, uint numBodies)+{+    int index = BT_GPU___mul24(BT_GPU_blockIdx.x, BT_GPU_blockDim.x) + BT_GPU_threadIdx.x;+    if(index >= (int)numBodies)+	{+		return;+	}+    uint2 sortedData = pHash[index];+	// Load hash data into shared memory so that we can look +	// at neighboring body's hash value without loading+	// two hash values per thread+	BT_GPU___shared__ uint sharedHash[257];+	sharedHash[BT_GPU_threadIdx.x+1] = sortedData.x;+	if((index > 0) && (BT_GPU_threadIdx.x == 0))+	{+		// first thread in block must load neighbor body hash+		volatile uint2 prevData = pHash[index-1];+		sharedHash[0] = prevData.x;+	}+	BT_GPU___syncthreads();+	if((index == 0) || (sortedData.x != sharedHash[BT_GPU_threadIdx.x]))+	{+		cellStart[sortedData.x] = index;+	}+} // findCellStartD()++//----------------------------------------------------------------------------------------++BT_GPU___device__ uint cudaTestAABBOverlap(bt3DGrid3F1U min0, bt3DGrid3F1U max0, bt3DGrid3F1U min1, bt3DGrid3F1U max1)+{+	return	(min0.fx <= max1.fx)&& (min1.fx <= max0.fx) && +			(min0.fy <= max1.fy)&& (min1.fy <= max0.fy) && +			(min0.fz <= max1.fz)&& (min1.fz <= max0.fz); +} // cudaTestAABBOverlap()+ +//----------------------------------------------------------------------------------------++BT_GPU___device__ void findPairsInCell(	int3	gridPos,+										uint    index,+										uint2*  pHash,+										uint*   pCellStart,+										bt3DGrid3F1U* pAABB, +										uint*   pPairBuff,+										uint2*	pPairBuffStartCurr,+										uint	numBodies)+{+    if (	(gridPos.x < 0) || (gridPos.x > (int)BT_GPU_params.m_gridSizeX - 1)+		||	(gridPos.y < 0) || (gridPos.y > (int)BT_GPU_params.m_gridSizeY - 1)+		||  (gridPos.z < 0) || (gridPos.z > (int)BT_GPU_params.m_gridSizeZ - 1)) +    {+		return;+	}+    uint gridHash = bt3DGrid_calcGridHash(gridPos);+    // get start of bucket for this cell+    uint bucketStart = pCellStart[gridHash];+    if (bucketStart == 0xffffffff)+	{+        return;   // cell empty+	}+	// iterate over bodies in this cell+    uint2 sortedData = pHash[index];+	uint unsorted_indx = sortedData.y;+    bt3DGrid3F1U min0 = BT_GPU_FETCH(pAABB, unsorted_indx*2); +	bt3DGrid3F1U max0 = BT_GPU_FETCH(pAABB, unsorted_indx*2 + 1);+	uint handleIndex =  min0.uw;+	uint2 start_curr = pPairBuffStartCurr[handleIndex];+	uint start = start_curr.x;+	uint curr = start_curr.y;+	uint2 start_curr_next = pPairBuffStartCurr[handleIndex+1];+	uint curr_max = start_curr_next.x - start - 1;+	uint bucketEnd = bucketStart + BT_GPU_params.m_maxBodiesPerCell;+	bucketEnd = (bucketEnd > numBodies) ? numBodies : bucketEnd;+	for(uint index2 = bucketStart; index2 < bucketEnd; index2++) +	{+        uint2 cellData = pHash[index2];+        if (cellData.x != gridHash)+        {+			break;   // no longer in same bucket+		}+		uint unsorted_indx2 = cellData.y;+        if (unsorted_indx2 < unsorted_indx) // check not colliding with self+        {   +			bt3DGrid3F1U min1 = BT_GPU_FETCH(pAABB, unsorted_indx2*2);+			bt3DGrid3F1U max1 = BT_GPU_FETCH(pAABB, unsorted_indx2*2 + 1);+			if(cudaTestAABBOverlap(min0, max0, min1, max1))+			{+				uint handleIndex2 = min1.uw;+				uint k;+				for(k = 0; k < curr; k++)+				{+					uint old_pair = pPairBuff[start+k] & (~BT_3DGRID_PAIR_ANY_FLG);+					if(old_pair == handleIndex2)+					{+						pPairBuff[start+k] |= BT_3DGRID_PAIR_FOUND_FLG;+						break;+					}+				}+				if(k == curr)+				{+					if(curr >= curr_max) +					{ // not a good solution, but let's avoid crash+						break;+					}+					pPairBuff[start+curr] = handleIndex2 | BT_3DGRID_PAIR_NEW_FLG;+					curr++;+				}+			}+		}+	}+	pPairBuffStartCurr[handleIndex] = BT_GPU_make_uint2(start, curr);+    return;+} // findPairsInCell()++//----------------------------------------------------------------------------------------++BT_GPU___global__ void findOverlappingPairsD(	bt3DGrid3F1U*	pAABB, uint2* pHash, uint* pCellStart, +												uint* pPairBuff, uint2* pPairBuffStartCurr, uint numBodies)+{+    int index = BT_GPU___mul24(BT_GPU_blockIdx.x, BT_GPU_blockDim.x) + BT_GPU_threadIdx.x;+    if(index >= (int)numBodies)+	{+		return;+	}+    uint2 sortedData = pHash[index];+	uint unsorted_indx = sortedData.y;+	bt3DGrid3F1U bbMin = BT_GPU_FETCH(pAABB, unsorted_indx*2);+	bt3DGrid3F1U bbMax = BT_GPU_FETCH(pAABB, unsorted_indx*2 + 1);+	float4 pos;+	pos.x = (bbMin.fx + bbMax.fx) * 0.5f;+	pos.y = (bbMin.fy + bbMax.fy) * 0.5f;+	pos.z = (bbMin.fz + bbMax.fz) * 0.5f;+    // get address in grid+    int3 gridPos = bt3DGrid_calcGridPos(pos);+    // examine only neighbouring cells+    for(int z=-1; z<=1; z++) {+        for(int y=-1; y<=1; y++) {+            for(int x=-1; x<=1; x++) {+                findPairsInCell(gridPos + BT_GPU_make_int3(x, y, z), index, pHash, pCellStart, pAABB, pPairBuff, pPairBuffStartCurr, numBodies);+            }+        }+    }+} // findOverlappingPairsD()++//----------------------------------------------------------------------------------------++BT_GPU___global__ void findPairsLargeD(	bt3DGrid3F1U* pAABB, uint2* pHash, uint* pCellStart, uint* pPairBuff, +										uint2* pPairBuffStartCurr, uint numBodies, uint numLarge)+{+    int index = BT_GPU___mul24(BT_GPU_blockIdx.x, BT_GPU_blockDim.x) + BT_GPU_threadIdx.x;+    if(index >= (int)numBodies)+	{+		return;+	}+    uint2 sortedData = pHash[index];+	uint unsorted_indx = sortedData.y;+	bt3DGrid3F1U min0 = BT_GPU_FETCH(pAABB, unsorted_indx*2);+	bt3DGrid3F1U max0 = BT_GPU_FETCH(pAABB, unsorted_indx*2 + 1);+	uint handleIndex =  min0.uw;+	uint2 start_curr = pPairBuffStartCurr[handleIndex];+	uint start = start_curr.x;+	uint curr = start_curr.y;+	uint2 start_curr_next = pPairBuffStartCurr[handleIndex+1];+	uint curr_max = start_curr_next.x - start - 1;+    for(uint i = 0; i < numLarge; i++)+    {+		uint indx2 = numBodies + i;+		bt3DGrid3F1U min1 = BT_GPU_FETCH(pAABB, indx2*2);+		bt3DGrid3F1U max1 = BT_GPU_FETCH(pAABB, indx2*2 + 1);+		if(cudaTestAABBOverlap(min0, max0, min1, max1))+		{+			uint k;+			uint handleIndex2 =  min1.uw;+			for(k = 0; k < curr; k++)+			{+				uint old_pair = pPairBuff[start+k] & (~BT_3DGRID_PAIR_ANY_FLG);+				if(old_pair == handleIndex2)+				{+					pPairBuff[start+k] |= BT_3DGRID_PAIR_FOUND_FLG;+					break;+				}+			}+			if(k == curr)+			{+				pPairBuff[start+curr] = handleIndex2 | BT_3DGRID_PAIR_NEW_FLG;+				if(curr >= curr_max) +				{ // not a good solution, but let's avoid crash+					break;+				}+				curr++;+			}+		}+    }+	pPairBuffStartCurr[handleIndex] = BT_GPU_make_uint2(start, curr);+    return;+} // findPairsLargeD()++//----------------------------------------------------------------------------------------++BT_GPU___global__ void computePairCacheChangesD(uint* pPairBuff, uint2* pPairBuffStartCurr, +												uint* pPairScan, bt3DGrid3F1U* pAABB, uint numBodies)+{+    int index = BT_GPU___mul24(BT_GPU_blockIdx.x, BT_GPU_blockDim.x) + BT_GPU_threadIdx.x;+    if(index >= (int)numBodies)+	{+		return;+	}+	bt3DGrid3F1U bbMin = pAABB[index * 2];+	uint handleIndex = bbMin.uw;+	uint2 start_curr = pPairBuffStartCurr[handleIndex];+	uint start = start_curr.x;+	uint curr = start_curr.y;+	uint *pInp = pPairBuff + start;+	uint num_changes = 0;+	for(uint k = 0; k < curr; k++, pInp++)+	{+		if(!((*pInp) & BT_3DGRID_PAIR_FOUND_FLG))+		{+			num_changes++;+		}+	}+	pPairScan[index+1] = num_changes;+} // computePairCacheChangesD()++//----------------------------------------------------------------------------------------++BT_GPU___global__ void squeezeOverlappingPairBuffD(uint* pPairBuff, uint2* pPairBuffStartCurr, uint* pPairScan,+												   uint* pPairOut, bt3DGrid3F1U* pAABB, uint numBodies)+{+    int index = BT_GPU___mul24(BT_GPU_blockIdx.x, BT_GPU_blockDim.x) + BT_GPU_threadIdx.x;+    if(index >= (int)numBodies)+	{+		return;+	}+	bt3DGrid3F1U bbMin = pAABB[index * 2];+	uint handleIndex = bbMin.uw;+	uint2 start_curr = pPairBuffStartCurr[handleIndex];+	uint start = start_curr.x;+	uint curr = start_curr.y;+	uint* pInp = pPairBuff + start;+	uint* pOut = pPairOut + pPairScan[index];+	uint* pOut2 = pInp;+	uint num = 0; +	for(uint k = 0; k < curr; k++, pInp++)+	{+		if(!((*pInp) & BT_3DGRID_PAIR_FOUND_FLG))+		{+			*pOut = *pInp;+			pOut++;+		}+		if((*pInp) & BT_3DGRID_PAIR_ANY_FLG)+		{+			*pOut2 = (*pInp) & (~BT_3DGRID_PAIR_ANY_FLG);+			pOut2++;+			num++;+		}+	}+	pPairBuffStartCurr[handleIndex] = BT_GPU_make_uint2(start, num);+} // squeezeOverlappingPairBuffD()+++//----------------------------------------------------------------------------------------+//----------------------------------------------------------------------------------------+//----------------------------------------------------------------------------------------+//----------------------------------------------------------------------------------------+//               E N D   O F    K E R N E L    F U N C T I O N S +//----------------------------------------------------------------------------------------+//----------------------------------------------------------------------------------------+//----------------------------------------------------------------------------------------+//----------------------------------------------------------------------------------------++extern "C"+{++//----------------------------------------------------------------------------------------++void BT_GPU_PREF(calcHashAABB)(bt3DGrid3F1U* pAABB, unsigned int* hash,	unsigned int numBodies)+{+    int numThreads, numBlocks;+    BT_GPU_PREF(computeGridSize)(numBodies, 256, numBlocks, numThreads);+    // execute the kernel+    BT_GPU_EXECKERNEL(numBlocks, numThreads, calcHashAABBD, (pAABB, (uint2*)hash, numBodies));+    // check if kernel invocation generated an error+    BT_GPU_CHECK_ERROR("calcHashAABBD kernel execution failed");+} // calcHashAABB()++//----------------------------------------------------------------------------------------++void BT_GPU_PREF(findCellStart(unsigned int* hash, unsigned int* cellStart, unsigned int numBodies, unsigned int numCells))+{+    int numThreads, numBlocks;+    BT_GPU_PREF(computeGridSize)(numBodies, 256, numBlocks, numThreads);+	BT_GPU_SAFE_CALL(BT_GPU_Memset(cellStart, 0xffffffff, numCells*sizeof(uint)));+	BT_GPU_EXECKERNEL(numBlocks, numThreads, findCellStartD, ((uint2*)hash, (uint*)cellStart, numBodies));+    BT_GPU_CHECK_ERROR("Kernel execution failed: findCellStartD");+} // findCellStart()++//----------------------------------------------------------------------------------------++void BT_GPU_PREF(findOverlappingPairs(bt3DGrid3F1U* pAABB, unsigned int* pHash,	unsigned int* pCellStart, unsigned int*	pPairBuff, unsigned int*	pPairBuffStartCurr, unsigned int	numBodies))+{+#if B_CUDA_USE_TEX+    BT_GPU_SAFE_CALL(cudaBindTexture(0, pAABBTex, pAABB, numBodies * 2 * sizeof(bt3DGrid3F1U)));+#endif+    int numThreads, numBlocks;+    BT_GPU_PREF(computeGridSize)(numBodies, 64, numBlocks, numThreads);+    BT_GPU_EXECKERNEL(numBlocks, numThreads, findOverlappingPairsD, (pAABB,(uint2*)pHash,(uint*)pCellStart,(uint*)pPairBuff,(uint2*)pPairBuffStartCurr,numBodies));+    BT_GPU_CHECK_ERROR("Kernel execution failed: bt_CudaFindOverlappingPairsD");+#if B_CUDA_USE_TEX+    BT_GPU_SAFE_CALL(cudaUnbindTexture(pAABBTex));+#endif+} // findOverlappingPairs()++//----------------------------------------------------------------------------------------++void BT_GPU_PREF(findPairsLarge(bt3DGrid3F1U* pAABB, unsigned int* pHash, unsigned int* pCellStart, unsigned int* pPairBuff, unsigned int* pPairBuffStartCurr, unsigned int numBodies, unsigned int numLarge))+{+#if B_CUDA_USE_TEX+    BT_GPU_SAFE_CALL(cudaBindTexture(0, pAABBTex, pAABB, (numBodies+numLarge) * 2 * sizeof(bt3DGrid3F1U)));+#endif+    int numThreads, numBlocks;+    BT_GPU_PREF(computeGridSize)(numBodies, 64, numBlocks, numThreads);+    BT_GPU_EXECKERNEL(numBlocks, numThreads, findPairsLargeD, (pAABB,(uint2*)pHash,(uint*)pCellStart,(uint*)pPairBuff,(uint2*)pPairBuffStartCurr,numBodies,numLarge));+    BT_GPU_CHECK_ERROR("Kernel execution failed: btCuda_findPairsLargeD");+#if B_CUDA_USE_TEX+    BT_GPU_SAFE_CALL(cudaUnbindTexture(pAABBTex));+#endif+} // findPairsLarge()++//----------------------------------------------------------------------------------------++void BT_GPU_PREF(computePairCacheChanges(unsigned int* pPairBuff, unsigned int* pPairBuffStartCurr, unsigned int* pPairScan, bt3DGrid3F1U* pAABB, unsigned int numBodies))+{+    int numThreads, numBlocks;+    BT_GPU_PREF(computeGridSize)(numBodies, 256, numBlocks, numThreads);+    BT_GPU_EXECKERNEL(numBlocks, numThreads, computePairCacheChangesD, ((uint*)pPairBuff,(uint2*)pPairBuffStartCurr,(uint*)pPairScan,pAABB,numBodies));+    BT_GPU_CHECK_ERROR("Kernel execution failed: btCudaComputePairCacheChangesD");+} // computePairCacheChanges()++//----------------------------------------------------------------------------------------++void BT_GPU_PREF(squeezeOverlappingPairBuff(unsigned int* pPairBuff, unsigned int* pPairBuffStartCurr, unsigned int* pPairScan, unsigned int* pPairOut, bt3DGrid3F1U* pAABB, unsigned int numBodies))+{+    int numThreads, numBlocks;+    BT_GPU_PREF(computeGridSize)(numBodies, 256, numBlocks, numThreads);+    BT_GPU_EXECKERNEL(numBlocks, numThreads, squeezeOverlappingPairBuffD, ((uint*)pPairBuff,(uint2*)pPairBuffStartCurr,(uint*)pPairScan,(uint*)pPairOut,pAABB,numBodies));+    BT_GPU_CHECK_ERROR("Kernel execution failed: btCudaSqueezeOverlappingPairBuffD");+} // btCuda_squeezeOverlappingPairBuff()++//------------------------------------------------------------------------------------------------++} // extern "C"++//------------------------------------------------------------------------------------------------+//------------------------------------------------------------------------------------------------+//------------------------------------------------------------------------------------------------
+ bullet/BulletMultiThreaded/btGpu3DGridBroadphaseSharedDefs.h view
@@ -0,0 +1,61 @@+/*+Bullet Continuous Collision Detection and Physics Library, http://bulletphysics.org+Copyright (C) 2006, 2009 Sony Computer Entertainment Inc. ++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++//----------------------------------------------------------------------------------------++// Shared definitions for GPU-based 3D Grid collision detection broadphase++//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+//  Keep this file free from Bullet headers+//  it is included into both CUDA and CPU code+//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!++//----------------------------------------------------------------------------------------++#ifndef BTGPU3DGRIDBROADPHASESHAREDDEFS_H+#define BTGPU3DGRIDBROADPHASESHAREDDEFS_H++//----------------------------------------------------------------------------------------++#include "btGpu3DGridBroadphaseSharedTypes.h"++//----------------------------------------------------------------------------------------++extern "C"+{++//----------------------------------------------------------------------------------------++void BT_GPU_PREF(calcHashAABB)(bt3DGrid3F1U* pAABB, unsigned int* hash,	unsigned int numBodies);++void BT_GPU_PREF(findCellStart)(unsigned int* hash, unsigned int* cellStart, unsigned int numBodies, unsigned int numCells);++void BT_GPU_PREF(findOverlappingPairs)(bt3DGrid3F1U* pAABB, unsigned int* pHash,	unsigned int* pCellStart, unsigned int*	pPairBuff, unsigned int*	pPairBuffStartCurr, unsigned int	numBodies);++void BT_GPU_PREF(findPairsLarge)(bt3DGrid3F1U* pAABB, unsigned int* pHash, unsigned int* pCellStart, unsigned int* pPairBuff, unsigned int* pPairBuffStartCurr, unsigned int numBodies, unsigned int numLarge);++void BT_GPU_PREF(computePairCacheChanges)(unsigned int* pPairBuff, unsigned int* pPairBuffStartCurr, unsigned int* pPairScan, bt3DGrid3F1U* pAABB, unsigned int numBodies);++void BT_GPU_PREF(squeezeOverlappingPairBuff)(unsigned int* pPairBuff, unsigned int* pPairBuffStartCurr, unsigned int* pPairScan, unsigned int* pPairOut, bt3DGrid3F1U* pAABB, unsigned int numBodies);+++//----------------------------------------------------------------------------------------++} // extern "C"++//----------------------------------------------------------------------------------------++#endif // BTGPU3DGRIDBROADPHASESHAREDDEFS_H+
+ bullet/BulletMultiThreaded/btGpu3DGridBroadphaseSharedTypes.h view
@@ -0,0 +1,67 @@+/*+Bullet Continuous Collision Detection and Physics Library, http://bulletphysics.org+Copyright (C) 2006, 2009 Sony Computer Entertainment Inc. ++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++//----------------------------------------------------------------------------------------++// Shared definitions for GPU-based 3D Grid collision detection broadphase++//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+//  Keep this file free from Bullet headers+//  it is included into both CUDA and CPU code+//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!++//----------------------------------------------------------------------------------------++#ifndef BTGPU3DGRIDBROADPHASESHAREDTYPES_H+#define BTGPU3DGRIDBROADPHASESHAREDTYPES_H++//----------------------------------------------------------------------------------------++#define BT_3DGRID_PAIR_FOUND_FLG (0x40000000)+#define BT_3DGRID_PAIR_NEW_FLG   (0x20000000)+#define BT_3DGRID_PAIR_ANY_FLG   (BT_3DGRID_PAIR_FOUND_FLG | BT_3DGRID_PAIR_NEW_FLG)++//----------------------------------------------------------------------------------------++struct bt3DGridBroadphaseParams +{+	unsigned int	m_gridSizeX;+	unsigned int	m_gridSizeY;+	unsigned int	m_gridSizeZ;+	unsigned int	m_numCells;+	float			m_worldOriginX;+	float			m_worldOriginY;+	float			m_worldOriginZ;+	float			m_cellSizeX;+	float			m_cellSizeY;+	float			m_cellSizeZ;+	unsigned int	m_numBodies;+	unsigned int	m_maxBodiesPerCell;+};++//----------------------------------------------------------------------------------------++struct bt3DGrid3F1U+{+	float			fx;+	float			fy;+	float			fz;+	unsigned int	uw;+};++//----------------------------------------------------------------------------------------++#endif // BTGPU3DGRIDBROADPHASESHAREDTYPES_H+
+ bullet/BulletMultiThreaded/btGpuDefines.h view
@@ -0,0 +1,211 @@+/*+Bullet Continuous Collision Detection and Physics Library, http://bulletphysics.org+Copyright (C) 2006, 2009 Sony Computer Entertainment Inc. ++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++++// definitions for "GPU on CPU" code+++#ifndef BT_GPU_DEFINES_H+#define BT_GPU_DEFINES_H++typedef unsigned int uint;++struct int2+{+	int x, y;+};++struct uint2+{+	unsigned int x, y;+};++struct int3+{+	int x, y, z;+};++struct uint3+{+	unsigned int x, y, z;+};++struct float4+{+	float x, y, z, w;+};++struct float3+{+	float x, y, z;+};+++#define BT_GPU___device__ inline+#define BT_GPU___devdata__+#define BT_GPU___constant__+#define BT_GPU_max(a, b) ((a) > (b) ? (a) : (b))+#define BT_GPU_min(a, b) ((a) < (b) ? (a) : (b))+#define BT_GPU_params s3DGridBroadphaseParams+#define BT_GPU___mul24(a, b) ((a)*(b))+#define BT_GPU___global__ inline+#define BT_GPU___shared__ static+#define BT_GPU___syncthreads()+#define CUDART_PI_F SIMD_PI++static inline uint2 bt3dGrid_make_uint2(unsigned int x, unsigned int y)+{+  uint2 t; t.x = x; t.y = y; return t;+}+#define BT_GPU_make_uint2(x, y) bt3dGrid_make_uint2(x, y)++static inline int3 bt3dGrid_make_int3(int x, int y, int z)+{+  int3 t; t.x = x; t.y = y; t.z = z; return t;+}+#define BT_GPU_make_int3(x, y, z) bt3dGrid_make_int3(x, y, z)++static inline float3 bt3dGrid_make_float3(float x, float y, float z)+{+  float3 t; t.x = x; t.y = y; t.z = z; return t;+}+#define BT_GPU_make_float3(x, y, z) bt3dGrid_make_float3(x, y, z)++static inline float3 bt3dGrid_make_float34(float4 f)+{+  float3 t; t.x = f.x; t.y = f.y; t.z = f.z; return t;+}+#define BT_GPU_make_float34(f) bt3dGrid_make_float34(f)++static inline float3 bt3dGrid_make_float31(float f)+{+  float3 t; t.x = t.y = t.z = f; return t;+}+#define BT_GPU_make_float31(x) bt3dGrid_make_float31(x)++static inline float4 bt3dGrid_make_float42(float3 v, float f)+{+  float4 t; t.x = v.x; t.y = v.y; t.z = v.z; t.w = f; return t;+}+#define BT_GPU_make_float42(a, b) bt3dGrid_make_float42(a, b) ++static inline float4 bt3dGrid_make_float44(float a, float b, float c, float d)+{+  float4 t; t.x = a; t.y = b; t.z = c; t.w = d; return t;+}+#define BT_GPU_make_float44(a, b, c, d) bt3dGrid_make_float44(a, b, c, d) ++inline int3 operator+(int3 a, int3 b)+{+    return bt3dGrid_make_int3(a.x + b.x, a.y + b.y, a.z + b.z);+}++inline float4 operator+(const float4& a, const float4& b)+{+	float4 r; r.x = a.x+b.x; r.y = a.y+b.y; r.z = a.z+b.z; r.w = a.w+b.w; return r;+}+inline float4 operator*(const float4& a, float fact)+{+	float4 r; r.x = a.x*fact; r.y = a.y*fact; r.z = a.z*fact; r.w = a.w*fact; return r;+}+inline float4 operator*(float fact, float4& a)+{+	return (a * fact);+}+inline float4& operator*=(float4& a, float fact)+{+	a = fact * a;+	return a;+}+inline float4& operator+=(float4& a, const float4& b)+{+	a = a + b;+	return a;+}++inline float3 operator+(const float3& a, const float3& b)+{+	float3 r; r.x = a.x+b.x; r.y = a.y+b.y; r.z = a.z+b.z; return r;+}+inline float3 operator-(const float3& a, const float3& b)+{+	float3 r; r.x = a.x-b.x; r.y = a.y-b.y; r.z = a.z-b.z; return r;+}+static inline float bt3dGrid_dot(float3& a, float3& b)+{+	return a.x*b.x+a.y*b.y+a.z*b.z;+}+#define BT_GPU_dot(a,b) bt3dGrid_dot(a,b)++static inline float bt3dGrid_dot4(float4& a, float4& b)+{+	return a.x*b.x+a.y*b.y+a.z*b.z+a.w*b.w;+}+#define BT_GPU_dot4(a,b) bt3dGrid_dot4(a,b)++static inline float3 bt3dGrid_cross(const float3& a, const float3& b)+{+	float3 r; r.x = a.y*b.z-a.z*b.y; r.y = -a.x*b.z+a.z*b.x; r.z = a.x*b.y-a.y*b.x;	return r;+}+#define BT_GPU_cross(a,b) bt3dGrid_cross(a,b)+++inline float3 operator*(const float3& a, float fact)+{+	float3 r; r.x = a.x*fact; r.y = a.y*fact; r.z = a.z*fact; return r;+}+++inline float3& operator+=(float3& a, const float3& b)+{+	a = a + b;+	return a;+}+inline float3& operator-=(float3& a, const float3& b)+{+	a = a - b;+	return a;+}+inline float3& operator*=(float3& a, float fact)+{+	a = a * fact;+	return a;+}+inline float3 operator-(const float3& v)+{+	float3 r; r.x = -v.x; r.y = -v.y; r.z = -v.z; return r;+}+++#define BT_GPU_FETCH(a, b) a[b]+#define BT_GPU_FETCH4(a, b) a[b]+#define BT_GPU_PREF(func) btGpu_##func+#define BT_GPU_SAFE_CALL(func) func+#define BT_GPU_Memset memset+#define BT_GPU_MemcpyToSymbol(a, b, c) memcpy(&a, b, c)+#define BT_GPU_BindTexture(a, b, c, d)+#define BT_GPU_UnbindTexture(a)++static uint2 s_blockIdx, s_blockDim, s_threadIdx;+#define BT_GPU_blockIdx s_blockIdx+#define BT_GPU_blockDim s_blockDim+#define BT_GPU_threadIdx s_threadIdx+#define BT_GPU_EXECKERNEL(numb, numt, kfunc, args) {s_blockDim.x=numt;for(int nb=0;nb<numb;nb++){s_blockIdx.x=nb;for(int nt=0;nt<numt;nt++){s_threadIdx.x=nt;kfunc args;}}}++#define BT_GPU_CHECK_ERROR(s)+++#endif //BT_GPU_DEFINES_H
+ bullet/BulletMultiThreaded/btGpuUtilsSharedCode.h view
@@ -0,0 +1,55 @@+/*+Bullet Continuous Collision Detection and Physics Library, http://bulletphysics.org+Copyright (C) 2006, 2009 Sony Computer Entertainment Inc. ++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++//----------------------------------------------------------------------------------------++// Shared code for GPU-based utilities++//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+//  Keep this file free from Bullet headers+//  will be compiled by both CPU and CUDA compilers+//	file with definitions of BT_GPU_xxx should be included first+//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!++//----------------------------------------------------------------------------------------++#include "btGpuUtilsSharedDefs.h"++//----------------------------------------------------------------------------------------++extern "C"+{++//----------------------------------------------------------------------------------------++//Round a / b to nearest higher integer value+int BT_GPU_PREF(iDivUp)(int a, int b)+{+    return (a % b != 0) ? (a / b + 1) : (a / b);+} // iDivUp()++//----------------------------------------------------------------------------------------++// compute grid and thread block size for a given number of elements+void BT_GPU_PREF(computeGridSize)(int n, int blockSize, int &numBlocks, int &numThreads)+{+    numThreads = BT_GPU_min(blockSize, n);+    numBlocks = BT_GPU_PREF(iDivUp)(n, numThreads);+} // computeGridSize()++//----------------------------------------------------------------------------------------++} // extern "C"+
+ bullet/BulletMultiThreaded/btGpuUtilsSharedDefs.h view
@@ -0,0 +1,52 @@+/*+Bullet Continuous Collision Detection and Physics Library, http://bulletphysics.org+Copyright (C) 2006, 2007 Sony Computer Entertainment Inc. ++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++// Shared definitions for GPU-based utilities++//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+//  Keep this file free from Bullet headers+//  it is included into both CUDA and CPU code+//	file with definitions of BT_GPU_xxx should be included first+//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+++#ifndef BTGPUUTILSDHAREDDEFS_H+#define BTGPUUTILSDHAREDDEFS_H+++extern "C"+{+++//Round a / b to nearest higher integer value+int BT_GPU_PREF(iDivUp)(int a, int b);++// compute grid and thread block size for a given number of elements+void BT_GPU_PREF(computeGridSize)(int n, int blockSize, int &numBlocks, int &numThreads);++void BT_GPU_PREF(allocateArray)(void** devPtr, unsigned int size);+void BT_GPU_PREF(freeArray)(void* devPtr);+void BT_GPU_PREF(copyArrayFromDevice)(void* host, const void* device, unsigned int size);+void BT_GPU_PREF(copyArrayToDevice)(void* device, const void* host, unsigned int size);+void BT_GPU_PREF(registerGLBufferObject(unsigned int vbo));+void* BT_GPU_PREF(mapGLBufferObject(unsigned int vbo));+void BT_GPU_PREF(unmapGLBufferObject(unsigned int vbo));+++} // extern "C"+++#endif // BTGPUUTILSDHAREDDEFS_H+
+ bullet/BulletMultiThreaded/btParallelConstraintSolver.h view
@@ -0,0 +1,285 @@+/*+   Copyright (C) 2010 Sony Computer Entertainment Inc.+   All rights reserved.++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.++*/++#ifndef __BT_PARALLEL_CONSTRAINT_SOLVER_H+#define __BT_PARALLEL_CONSTRAINT_SOLVER_H++#include "BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h"+++++#include "LinearMath/btScalar.h"+#include "PlatformDefinitions.h"+++#define PFX_MAX_SOLVER_PHASES 64+#define PFX_MAX_SOLVER_BATCHES 16+#define PFX_MAX_SOLVER_PAIRS  128+#define PFX_MIN_SOLVER_PAIRS  16++#ifdef __CELLOS_LV2__+ATTRIBUTE_ALIGNED128(struct) PfxParallelBatch {+#else+ATTRIBUTE_ALIGNED16(struct) PfxParallelBatch {+#endif+	uint16_t pairIndices[PFX_MAX_SOLVER_PAIRS];+};++#ifdef __CELLOS_LV2__+ATTRIBUTE_ALIGNED128(struct) PfxParallelGroup {+#else+ATTRIBUTE_ALIGNED16(struct) PfxParallelGroup {+#endif+	uint16_t numPhases;+	uint16_t numBatches[PFX_MAX_SOLVER_PHASES];+	uint16_t numPairs[PFX_MAX_SOLVER_PHASES*PFX_MAX_SOLVER_BATCHES];+};++++ATTRIBUTE_ALIGNED16(struct) PfxSortData16 {+	union {+		uint8_t   i8data[16];+		uint16_t  i16data[8];+		uint32_t  i32data[4];+#ifdef __SPU__+		vec_uint4 vdata;+#endif+	};++#ifdef __SPU__+	void set8(int elem,uint8_t data)   {vdata=(vec_uint4)spu_insert(data,(vec_uchar16)vdata,elem);}+	void set16(int elem,uint16_t data) {vdata=(vec_uint4)spu_insert(data,(vec_ushort8)vdata,elem);}+	void set32(int elem,uint32_t data) {vdata=(vec_uint4)spu_insert(data,(vec_uint4)vdata,elem);}+	uint8_t get8(int elem)   const {return spu_extract((vec_uchar16)vdata,elem);}+	uint16_t get16(int elem) const {return spu_extract((vec_ushort8)vdata,elem);}+	uint32_t get32(int elem) const {return spu_extract((vec_uint4)vdata,elem);}+#else+	void set8(int elem,uint8_t data)   {i8data[elem] = data;}+	void set16(int elem,uint16_t data) {i16data[elem] = data;}+	void set32(int elem,uint32_t data) {i32data[elem] = data;}+	uint8_t get8(int elem)   const {return i8data[elem];}+	uint16_t get16(int elem) const {return i16data[elem];}+	uint32_t get32(int elem) const {return i32data[elem];}+#endif+};++typedef PfxSortData16 PfxConstraintPair;+++//J	PfxBroadphasePair‚Æ‹¤’Ê++SIMD_FORCE_INLINE void pfxSetConstraintId(PfxConstraintPair &pair,uint32_t i)	{pair.set32(2,i);}+SIMD_FORCE_INLINE void pfxSetNumConstraints(PfxConstraintPair &pair,uint8_t n)	{pair.set8(7,n);}++SIMD_FORCE_INLINE uint32_t pfxGetConstraintId1(const PfxConstraintPair &pair)	{return pair.get32(2);}+SIMD_FORCE_INLINE uint8_t  pfxGetNumConstraints(const PfxConstraintPair &pair)	{return pair.get8(7);}++typedef PfxSortData16 PfxBroadphasePair;++SIMD_FORCE_INLINE void pfxSetRigidBodyIdA(PfxBroadphasePair &pair,uint16_t i)	{pair.set16(0,i);}+SIMD_FORCE_INLINE void pfxSetRigidBodyIdB(PfxBroadphasePair &pair,uint16_t i)	{pair.set16(1,i);}+SIMD_FORCE_INLINE void pfxSetMotionMaskA(PfxBroadphasePair &pair,uint8_t i)		{pair.set8(4,i);}+SIMD_FORCE_INLINE void pfxSetMotionMaskB(PfxBroadphasePair &pair,uint8_t i)		{pair.set8(5,i);}+SIMD_FORCE_INLINE void pfxSetBroadphaseFlag(PfxBroadphasePair &pair,uint8_t f)	{pair.set8(6,(pair.get8(6)&0xf0)|(f&0x0f));}+SIMD_FORCE_INLINE void pfxSetActive(PfxBroadphasePair &pair,bool b)			{pair.set8(6,(pair.get8(6)&0x0f)|((b?1:0)<<4));}+SIMD_FORCE_INLINE void pfxSetContactId(PfxBroadphasePair &pair,uint32_t i)		{pair.set32(2,i);}++SIMD_FORCE_INLINE uint16_t pfxGetRigidBodyIdA(const PfxBroadphasePair &pair)	{return pair.get16(0);}+SIMD_FORCE_INLINE uint16_t pfxGetRigidBodyIdB(const PfxBroadphasePair &pair)	{return pair.get16(1);}+SIMD_FORCE_INLINE uint8_t  pfxGetMotionMaskA(const PfxBroadphasePair &pair)		{return pair.get8(4);}+SIMD_FORCE_INLINE uint8_t  pfxGetMotionMaskB(const PfxBroadphasePair &pair)		{return pair.get8(5);}+SIMD_FORCE_INLINE uint8_t  pfxGetBroadphaseFlag(const PfxBroadphasePair &pair)	{return pair.get8(6)&0x0f;}+SIMD_FORCE_INLINE bool     pfxGetActive(const PfxBroadphasePair &pair)			{return (pair.get8(6)>>4)!=0;}+SIMD_FORCE_INLINE uint32_t pfxGetContactId1(const PfxBroadphasePair &pair)		{return pair.get32(2);}++++#if defined(__PPU__) || defined (__SPU__)+ATTRIBUTE_ALIGNED128(struct) PfxSolverBody {+#else+ATTRIBUTE_ALIGNED16(struct) PfxSolverBody {+#endif+	vmVector3 mDeltaLinearVelocity;+	vmVector3 mDeltaAngularVelocity;+	vmMatrix3 mInertiaInv;+	vmQuat    mOrientation;+	float   mMassInv;+	float   friction;+	float   restitution;+	float   unused;+	float   unused2;+	float   unused3;+	float   unused4;+	float   unused5;+};+++#ifdef __PPU__+#include "SpuDispatch/BulletPE2ConstraintSolverSpursSupport.h"+#endif++static SIMD_FORCE_INLINE vmVector3 btReadVector3(const double* p)+{+	float tmp[3] = {float(p[0]),float(p[1]),float(p[2])};+	vmVector3 v;+	loadXYZ(v, tmp);+	return v;+}++static SIMD_FORCE_INLINE vmQuat btReadQuat(const double* p)+{+	float tmp[4] = {float(p[0]),float(p[1]),float(p[2]),float(p[4])};+	vmQuat vq;+	loadXYZW(vq, tmp);+	return vq;+}++static SIMD_FORCE_INLINE void btStoreVector3(const vmVector3 &src, double* p)+{+	float tmp[3];+	vmVector3 v = src;+	storeXYZ(v, tmp);+	p[0] = tmp[0];+	p[1] = tmp[1];+	p[2] = tmp[2];+}+++static SIMD_FORCE_INLINE vmVector3 btReadVector3(const float* p)+{+	vmVector3 v;+	loadXYZ(v, p);+	return v;+}++static SIMD_FORCE_INLINE vmQuat btReadQuat(const float* p)+{+	vmQuat vq;+	loadXYZW(vq, p);+	return vq;+}++static SIMD_FORCE_INLINE void btStoreVector3(const vmVector3 &src, float* p)+{+	vmVector3 v = src;+	storeXYZ(v, p);+}+++++class btPersistentManifold;++enum {+	PFX_CONSTRAINT_SOLVER_CMD_SETUP_SOLVER_BODIES,+	PFX_CONSTRAINT_SOLVER_CMD_SETUP_CONTACT_CONSTRAINTS,+	PFX_CONSTRAINT_SOLVER_CMD_SETUP_JOINT_CONSTRAINTS,+	PFX_CONSTRAINT_SOLVER_CMD_SOLVE_CONSTRAINTS,+	PFX_CONSTRAINT_SOLVER_CMD_POST_SOLVER+};+++struct PfxSetupContactConstraintsIO {+	PfxConstraintPair *offsetContactPairs;+	uint32_t numContactPairs1;+	btPersistentManifold*	offsetContactManifolds;+	class TrbState *offsetRigStates;+	struct PfxSolverBody *offsetSolverBodies;+	uint32_t numRigidBodies;+	float separateBias;+	float timeStep;+	class btCriticalSection* criticalSection;+};++++struct PfxSolveConstraintsIO {+	PfxParallelGroup *contactParallelGroup;+	PfxParallelBatch *contactParallelBatches;+	PfxConstraintPair *contactPairs;+	uint32_t numContactPairs;+	btPersistentManifold *offsetContactManifolds;+	PfxParallelGroup *jointParallelGroup;+	PfxParallelBatch *jointParallelBatches;+	PfxConstraintPair *jointPairs;+	uint32_t numJointPairs;+	struct btSolverConstraint* offsetSolverConstraints;+	TrbState *offsetRigStates1;+	PfxSolverBody *offsetSolverBodies;+	uint32_t numRigidBodies;+	uint32_t iteration;++	uint32_t	taskId;+	+	class btBarrier* barrier;++};++struct PfxPostSolverIO {+	TrbState *states;+	PfxSolverBody *solverBodies;+	uint32_t numRigidBodies;+};++ATTRIBUTE_ALIGNED16(struct) btConstraintSolverIO {+	uint8_t cmd;+	union {+		PfxSetupContactConstraintsIO setupContactConstraints;+		PfxSolveConstraintsIO solveConstraints;+		PfxPostSolverIO postSolver;+	};+	+	//SPU only+	uint32_t barrierAddr2;+	uint32_t criticalsectionAddr2;+	uint32_t maxTasks1;+};+++++void	SolverThreadFunc(void* userPtr,void* lsMemory);+void*	SolverlsMemoryFunc();+///The btParallelConstraintSolver performs computations on constraint rows in parallel+///Using the cross-platform threading it supports Windows, Linux, Mac OSX and PlayStation 3 Cell SPUs+class btParallelConstraintSolver : public btSequentialImpulseConstraintSolver+{+	+protected:+	struct btParallelSolverMemoryCache*	m_memoryCache;++	class btThreadSupportInterface*	m_solverThreadSupport;++	struct btConstraintSolverIO* m_solverIO;+	class btBarrier*			m_barrier;+	class btCriticalSection*	m_criticalSection;+++public:++	btParallelConstraintSolver(class btThreadSupportInterface* solverThreadSupport);+	+	virtual ~btParallelConstraintSolver();++	virtual btScalar solveGroup(btCollisionObject** bodies,int numBodies,btPersistentManifold** manifold,int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& info, btIDebugDraw* debugDrawer, btStackAlloc* stackAlloc,btDispatcher* dispatcher);++};++++#endif //__BT_PARALLEL_CONSTRAINT_SOLVER_H
+ bullet/BulletMultiThreaded/btThreadSupportInterface.h view
@@ -0,0 +1,85 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2007 Erwin Coumans  http://bulletphysics.com++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_THREAD_SUPPORT_INTERFACE_H+#define BT_THREAD_SUPPORT_INTERFACE_H+++#include <LinearMath/btScalar.h> //for ATTRIBUTE_ALIGNED16+#include "PlatformDefinitions.h"+#include "PpuAddressSpace.h"++class btBarrier {+public:+	btBarrier() {}+	virtual ~btBarrier() {}++	virtual void sync() = 0;+	virtual void setMaxCount(int n) = 0;+	virtual int  getMaxCount() = 0;+};++class btCriticalSection {+public:+	btCriticalSection() {}+	virtual ~btCriticalSection() {}++	ATTRIBUTE_ALIGNED16(unsigned int mCommonBuff[32]);++	virtual unsigned int getSharedParam(int i) = 0;+	virtual void setSharedParam(int i,unsigned int p) = 0;++	virtual void lock() = 0;+	virtual void unlock() = 0;+};+++class btThreadSupportInterface+{+public:++	virtual ~btThreadSupportInterface();++///send messages to SPUs+	virtual void sendRequest(uint32_t uiCommand, ppu_address_t uiArgument0, uint32_t uiArgument1) =0;++///check for messages from SPUs+	virtual	void waitForResponse(unsigned int *puiArgument0, unsigned int *puiArgument1) =0;+++	///non-blocking test if a task is completed. First implement all versions, and then enable this API+	///virtual bool isTaskCompleted(unsigned int *puiArgument0, unsigned int *puiArgument1, int timeOutInMilliseconds)=0;++///start the spus (can be called at the beginning of each frame, to make sure that the right SPU program is loaded)+	virtual	void startSPU() =0;++///tell the task scheduler we are done with the SPU tasks+	virtual	void stopSPU()=0;++	///tell the task scheduler to use no more than numTasks tasks+	virtual void	setNumTasks(int numTasks)=0;++	virtual int		getNumTasks() const = 0;++	virtual btBarrier*	createBarrier() = 0;++	virtual btCriticalSection* createCriticalSection() = 0;+	+	virtual void*	getThreadLocalMemory(int taskId) { return 0; }++};++#endif //BT_THREAD_SUPPORT_INTERFACE_H+
+ bullet/BulletMultiThreaded/vectormath2bullet.h view
@@ -0,0 +1,73 @@+/*+   Copyright (C) 2006, 2007 Sony Computer Entertainment Inc.+   All rights reserved.++   Redistribution and use in source and binary forms,+   with or without modification, are permitted provided that the+   following conditions are met:+    * Redistributions of source code must retain the above copyright+      notice, this list of conditions and the following disclaimer.+    * Redistributions in binary form must reproduce the above copyright+      notice, this list of conditions and the following disclaimer in the+      documentation and/or other materials provided with the distribution.+    * Neither the name of the Sony Computer Entertainment Inc nor the names+      of its contributors may be used to endorse or promote products derived+      from this software without specific prior written permission.++   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE+   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE+   POSSIBILITY OF SUCH DAMAGE.+*/++#ifndef BT_AOS_VECTORMATH_BULLET_CONVERT_H+#define BT_AOS_VECTORMATH_BULLET_CONVERT_H++#include "PlatformDefinitions.h"+#include "LinearMath/btVector3.h"+#include "LinearMath/btQuaternion.h"+#include "LinearMath/btMatrix3x3.h"++inline Vectormath::Aos::Vector3	getVmVector3(const btVector3& bulletVec)+{+	return Vectormath::Aos::Vector3(bulletVec.getX(),bulletVec.getY(),bulletVec.getZ());+}++inline btVector3 getBtVector3(const Vectormath::Aos::Vector3& vmVec)+{+	return btVector3(vmVec.getX(),vmVec.getY(),vmVec.getZ());+}+inline btVector3 getBtVector3(const Vectormath::Aos::Point3& vmVec)+{+	return btVector3(vmVec.getX(),vmVec.getY(),vmVec.getZ());+}++inline Vectormath::Aos::Quat	getVmQuat(const btQuaternion& bulletQuat)+{+	Vectormath::Aos::Quat vmQuat(bulletQuat.getX(),bulletQuat.getY(),bulletQuat.getZ(),bulletQuat.getW());+	return vmQuat;+}++inline btQuaternion	getBtQuat(const Vectormath::Aos::Quat& vmQuat)+{+	return btQuaternion (vmQuat.getX(),vmQuat.getY(),vmQuat.getZ(),vmQuat.getW());+}++inline Vectormath::Aos::Matrix3	getVmMatrix3(const btMatrix3x3& btMat)+{+	Vectormath::Aos::Matrix3 mat(+		getVmVector3(btMat.getColumn(0)),+		getVmVector3(btMat.getColumn(1)),+		getVmVector3(btMat.getColumn(2)));+		return mat;+}+++#endif //BT_AOS_VECTORMATH_BULLET_CONVERT_H
+ bullet/BulletSoftBody/btDefaultSoftBodySolver.h view
@@ -0,0 +1,63 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_SOFT_BODY_DEFAULT_SOLVER_H+#define BT_SOFT_BODY_DEFAULT_SOLVER_H+++#include "BulletSoftBody/btSoftBodySolvers.h"+#include "btSoftBodySolverVertexBuffer.h"+++class btDefaultSoftBodySolver : public btSoftBodySolver+{+protected:		+	/** Variable to define whether we need to update solver constants on the next iteration */+	bool m_updateSolverConstants;++	btAlignedObjectArray< btSoftBody * > m_softBodySet;+++public:+	btDefaultSoftBodySolver();+	+	virtual ~btDefaultSoftBodySolver();+	+	virtual SolverTypes getSolverType() const+	{+		return DEFAULT_SOLVER;+	}++	virtual bool checkInitialized();++	virtual void updateSoftBodies( );++	virtual void optimize( btAlignedObjectArray< btSoftBody * > &softBodies,bool forceUpdate=false );++	virtual void copyBackToSoftBodies();++	virtual void solveConstraints( float solverdt );++	virtual void predictMotion( float solverdt );++	virtual void copySoftBodyToVertexBuffer( const btSoftBody *const softBody, btVertexBufferDescriptor *vertexBuffer );++	virtual void processCollision( btSoftBody *, btCollisionObject* );++	virtual void processCollision( btSoftBody*, btSoftBody* );++};++#endif // #ifndef BT_ACCELERATED_SOFT_BODY_CPU_SOLVER_H
+ bullet/BulletSoftBody/btSoftBody.h view
@@ -0,0 +1,978 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose,+including commercial applications, and to alter it and redistribute it freely,+subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+///btSoftBody implementation by Nathanael Presson++#ifndef _BT_SOFT_BODY_H+#define _BT_SOFT_BODY_H++#include "LinearMath/btAlignedObjectArray.h"+#include "LinearMath/btTransform.h"+#include "LinearMath/btIDebugDraw.h"+#include "BulletDynamics/Dynamics/btRigidBody.h"++#include "BulletCollision/CollisionShapes/btConcaveShape.h"+#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h"+#include "btSparseSDF.h"+#include "BulletCollision/BroadphaseCollision/btDbvt.h"++//#ifdef BT_USE_DOUBLE_PRECISION+//#define btRigidBodyData	btRigidBodyDoubleData+//#define btRigidBodyDataName	"btRigidBodyDoubleData"+//#else+#define btSoftBodyData	btSoftBodyFloatData+#define btSoftBodyDataName	"btSoftBodyFloatData"+//#endif //BT_USE_DOUBLE_PRECISION++class btBroadphaseInterface;+class btDispatcher;+class btSoftBodySolver;++/* btSoftBodyWorldInfo	*/ +struct	btSoftBodyWorldInfo+{+	btScalar				air_density;+	btScalar				water_density;+	btScalar				water_offset;+	btVector3				water_normal;+	btBroadphaseInterface*	m_broadphase;+	btDispatcher*	m_dispatcher;+	btVector3				m_gravity;+	btSparseSdf<3>			m_sparsesdf;++	btSoftBodyWorldInfo()+		:air_density((btScalar)1.2),+		water_density(0),+		water_offset(0),+		water_normal(0,0,0),+		m_broadphase(0),+		m_dispatcher(0),+		m_gravity(0,-10,0)+	{+	}+};	+++///The btSoftBody is an class to simulate cloth and volumetric soft bodies. +///There is two-way interaction between btSoftBody and btRigidBody/btCollisionObject.+class	btSoftBody : public btCollisionObject+{+public:+	btAlignedObjectArray<class btCollisionObject*> m_collisionDisabledObjects;++	// The solver object that handles this soft body+	btSoftBodySolver *m_softBodySolver;++	//+	// Enumerations+	//++	///eAeroModel +	struct eAeroModel { enum _ {+		V_Point,	///Vertex normals are oriented toward velocity+		V_TwoSided,	///Vertex normals are fliped to match velocity	+		V_OneSided,	///Vertex normals are taken as it is	+		F_TwoSided,	///Face normals are fliped to match velocity+		F_OneSided,	///Face normals are taken as it is+		END+	};};++	///eVSolver : velocities solvers+	struct	eVSolver { enum _ {+		Linear,		///Linear solver+		END+	};};++	///ePSolver : positions solvers+	struct	ePSolver { enum _ {+		Linear,		///Linear solver+		Anchors,	///Anchor solver+		RContacts,	///Rigid contacts solver+		SContacts,	///Soft contacts solver+		END+	};};++	///eSolverPresets+	struct	eSolverPresets { enum _ {+		Positions,+		Velocities,+		Default	=	Positions,+		END+	};};++	///eFeature+	struct	eFeature { enum _ {+		None,+		Node,+		Link,+		Face,+		END+	};};++	typedef btAlignedObjectArray<eVSolver::_>	tVSolverArray;+	typedef btAlignedObjectArray<ePSolver::_>	tPSolverArray;++	//+	// Flags+	//++	///fCollision+	struct fCollision { enum _ {+		RVSmask	=	0x000f,	///Rigid versus soft mask+		SDF_RS	=	0x0001,	///SDF based rigid vs soft+		CL_RS	=	0x0002, ///Cluster vs convex rigid vs soft++		SVSmask	=	0x0030,	///Rigid versus soft mask		+		VF_SS	=	0x0010,	///Vertex vs face soft vs soft handling+		CL_SS	=	0x0020, ///Cluster vs cluster soft vs soft handling+		CL_SELF =	0x0040, ///Cluster soft body self collision+		/* presets	*/ +		Default	=	SDF_RS,+		END+	};};++	///fMaterial+	struct fMaterial { enum _ {+		DebugDraw	=	0x0001,	/// Enable debug draw+		/* presets	*/ +		Default		=	DebugDraw,+		END+	};};++	//+	// API Types+	//++	/* sRayCast		*/ +	struct sRayCast+	{+		btSoftBody*	body;		/// soft body+		eFeature::_	feature;	/// feature type+		int			index;		/// feature index+		btScalar	fraction;		/// time of impact fraction (rayorg+(rayto-rayfrom)*fraction)+	};++	/* ImplicitFn	*/ +	struct	ImplicitFn+	{+		virtual btScalar	Eval(const btVector3& x)=0;+	};++	//+	// Internal types+	//++	typedef btAlignedObjectArray<btScalar>	tScalarArray;+	typedef btAlignedObjectArray<btVector3>	tVector3Array;++	/* sCti is Softbody contact info	*/ +	struct	sCti+	{+		btCollisionObject*	m_colObj;		/* Rigid body			*/ +		btVector3		m_normal;	/* Outward normal		*/ +		btScalar		m_offset;	/* Offset from origin	*/ +	};	++	/* sMedium		*/ +	struct	sMedium+	{+		btVector3		m_velocity;	/* Velocity				*/ +		btScalar		m_pressure;	/* Pressure				*/ +		btScalar		m_density;	/* Density				*/ +	};++	/* Base type	*/ +	struct	Element+	{+		void*			m_tag;			// User data+		Element() : m_tag(0) {}+	};+	/* Material		*/ +	struct	Material : Element+	{+		btScalar				m_kLST;			// Linear stiffness coefficient [0,1]+		btScalar				m_kAST;			// Area/Angular stiffness coefficient [0,1]+		btScalar				m_kVST;			// Volume stiffness coefficient [0,1]+		int						m_flags;		// Flags+	};++	/* Feature		*/ +	struct	Feature : Element+	{+		Material*				m_material;		// Material+	};+	/* Node			*/ +	struct	Node : Feature+	{+		btVector3				m_x;			// Position+		btVector3				m_q;			// Previous step position+		btVector3				m_v;			// Velocity+		btVector3				m_f;			// Force accumulator+		btVector3				m_n;			// Normal+		btScalar				m_im;			// 1/mass+		btScalar				m_area;			// Area+		btDbvtNode*				m_leaf;			// Leaf data+		int						m_battach:1;	// Attached+	};+	/* Link			*/ +	struct	Link : Feature+	{+		Node*					m_n[2];			// Node pointers+		btScalar				m_rl;			// Rest length		+		int						m_bbending:1;	// Bending link+		btScalar				m_c0;			// (ima+imb)*kLST+		btScalar				m_c1;			// rl^2+		btScalar				m_c2;			// |gradient|^2/c0+		btVector3				m_c3;			// gradient+	};+	/* Face			*/ +	struct	Face : Feature+	{+		Node*					m_n[3];			// Node pointers+		btVector3				m_normal;		// Normal+		btScalar				m_ra;			// Rest area+		btDbvtNode*				m_leaf;			// Leaf data+	};+	/* Tetra		*/ +	struct	Tetra : Feature+	{+		Node*					m_n[4];			// Node pointers		+		btScalar				m_rv;			// Rest volume+		btDbvtNode*				m_leaf;			// Leaf data+		btVector3				m_c0[4];		// gradients+		btScalar				m_c1;			// (4*kVST)/(im0+im1+im2+im3)+		btScalar				m_c2;			// m_c1/sum(|g0..3|^2)+	};+	/* RContact		*/ +	struct	RContact+	{+		sCti		m_cti;			// Contact infos+		Node*					m_node;			// Owner node+		btMatrix3x3				m_c0;			// Impulse matrix+		btVector3				m_c1;			// Relative anchor+		btScalar				m_c2;			// ima*dt+		btScalar				m_c3;			// Friction+		btScalar				m_c4;			// Hardness+	};+	/* SContact		*/ +	struct	SContact+	{+		Node*					m_node;			// Node+		Face*					m_face;			// Face+		btVector3				m_weights;		// Weigths+		btVector3				m_normal;		// Normal+		btScalar				m_margin;		// Margin+		btScalar				m_friction;		// Friction+		btScalar				m_cfm[2];		// Constraint force mixing+	};+	/* Anchor		*/ +	struct	Anchor+	{+		Node*					m_node;			// Node pointer+		btVector3				m_local;		// Anchor position in body space+		btRigidBody*			m_body;			// Body+		btScalar				m_influence;+		btMatrix3x3				m_c0;			// Impulse matrix+		btVector3				m_c1;			// Relative anchor+		btScalar				m_c2;			// ima*dt+	};+	/* Note			*/ +	struct	Note : Element+	{+		const char*				m_text;			// Text+		btVector3				m_offset;		// Offset+		int						m_rank;			// Rank+		Node*					m_nodes[4];		// Nodes+		btScalar				m_coords[4];	// Coordinates+	};	+	/* Pose			*/ +	struct	Pose+	{+		bool					m_bvolume;		// Is valid+		bool					m_bframe;		// Is frame+		btScalar				m_volume;		// Rest volume+		tVector3Array			m_pos;			// Reference positions+		tScalarArray			m_wgh;			// Weights+		btVector3				m_com;			// COM+		btMatrix3x3				m_rot;			// Rotation+		btMatrix3x3				m_scl;			// Scale+		btMatrix3x3				m_aqq;			// Base scaling+	};+	/* Cluster		*/ +	struct	Cluster+	{+		tScalarArray				m_masses;+		btAlignedObjectArray<Node*>	m_nodes;		+		tVector3Array				m_framerefs;+		btTransform					m_framexform;+		btScalar					m_idmass;+		btScalar					m_imass;+		btMatrix3x3					m_locii;+		btMatrix3x3					m_invwi;+		btVector3					m_com;+		btVector3					m_vimpulses[2];+		btVector3					m_dimpulses[2];+		int							m_nvimpulses;+		int							m_ndimpulses;+		btVector3					m_lv;+		btVector3					m_av;+		btDbvtNode*					m_leaf;+		btScalar					m_ndamping;	/* Node damping		*/ +		btScalar					m_ldamping;	/* Linear damping	*/ +		btScalar					m_adamping;	/* Angular damping	*/ +		btScalar					m_matching;+		btScalar					m_maxSelfCollisionImpulse;+		btScalar					m_selfCollisionImpulseFactor;+		bool						m_containsAnchor;+		bool						m_collide;+		int							m_clusterIndex;+		Cluster() : m_leaf(0),m_ndamping(0),m_ldamping(0),m_adamping(0),m_matching(0) +		,m_maxSelfCollisionImpulse(100.f),+		m_selfCollisionImpulseFactor(0.01f),+		m_containsAnchor(false)+		{}+	};+	/* Impulse		*/ +	struct	Impulse+	{+		btVector3					m_velocity;+		btVector3					m_drift;+		int							m_asVelocity:1;+		int							m_asDrift:1;+		Impulse() : m_velocity(0,0,0),m_drift(0,0,0),m_asVelocity(0),m_asDrift(0)	{}+		Impulse						operator -() const+		{+			Impulse i=*this;+			i.m_velocity=-i.m_velocity;+			i.m_drift=-i.m_drift;+			return(i);+		}+		Impulse						operator*(btScalar x) const+		{+			Impulse i=*this;+			i.m_velocity*=x;+			i.m_drift*=x;+			return(i);+		}+	};+	/* Body			*/ +	struct	Body+	{+		Cluster*			m_soft;+		btRigidBody*		m_rigid;+		btCollisionObject*	m_collisionObject;++		Body() : m_soft(0),m_rigid(0),m_collisionObject(0)				{}+		Body(Cluster* p) : m_soft(p),m_rigid(0),m_collisionObject(0)	{}+		Body(btCollisionObject* colObj) : m_soft(0),m_collisionObject(colObj)+		{+			m_rigid = btRigidBody::upcast(m_collisionObject);+		}++		void						activate() const+		{+			if(m_rigid) +				m_rigid->activate();+			if (m_collisionObject)+				m_collisionObject->activate();++		}+		const btMatrix3x3&			invWorldInertia() const+		{+			static const btMatrix3x3	iwi(0,0,0,0,0,0,0,0,0);+			if(m_rigid) return(m_rigid->getInvInertiaTensorWorld());+			if(m_soft)	return(m_soft->m_invwi);+			return(iwi);+		}+		btScalar					invMass() const+		{+			if(m_rigid) return(m_rigid->getInvMass());+			if(m_soft)	return(m_soft->m_imass);+			return(0);+		}+		const btTransform&			xform() const+		{+			static const btTransform	identity=btTransform::getIdentity();		+			if(m_collisionObject) return(m_collisionObject->getWorldTransform());+			if(m_soft)	return(m_soft->m_framexform);+			return(identity);+		}+		btVector3					linearVelocity() const+		{+			if(m_rigid) return(m_rigid->getLinearVelocity());+			if(m_soft)	return(m_soft->m_lv);+			return(btVector3(0,0,0));+		}+		btVector3					angularVelocity(const btVector3& rpos) const+		{			+			if(m_rigid) return(btCross(m_rigid->getAngularVelocity(),rpos));+			if(m_soft)	return(btCross(m_soft->m_av,rpos));+			return(btVector3(0,0,0));+		}+		btVector3					angularVelocity() const+		{			+			if(m_rigid) return(m_rigid->getAngularVelocity());+			if(m_soft)	return(m_soft->m_av);+			return(btVector3(0,0,0));+		}+		btVector3					velocity(const btVector3& rpos) const+		{+			return(linearVelocity()+angularVelocity(rpos));+		}+		void						applyVImpulse(const btVector3& impulse,const btVector3& rpos) const+		{+			if(m_rigid)	m_rigid->applyImpulse(impulse,rpos);+			if(m_soft)	btSoftBody::clusterVImpulse(m_soft,rpos,impulse);+		}+		void						applyDImpulse(const btVector3& impulse,const btVector3& rpos) const+		{+			if(m_rigid)	m_rigid->applyImpulse(impulse,rpos);+			if(m_soft)	btSoftBody::clusterDImpulse(m_soft,rpos,impulse);+		}		+		void						applyImpulse(const Impulse& impulse,const btVector3& rpos) const+		{+			if(impulse.m_asVelocity)	+			{+//				printf("impulse.m_velocity = %f,%f,%f\n",impulse.m_velocity.getX(),impulse.m_velocity.getY(),impulse.m_velocity.getZ());+				applyVImpulse(impulse.m_velocity,rpos);+			}+			if(impulse.m_asDrift)		+			{+//				printf("impulse.m_drift = %f,%f,%f\n",impulse.m_drift.getX(),impulse.m_drift.getY(),impulse.m_drift.getZ());+				applyDImpulse(impulse.m_drift,rpos);+			}+		}+		void						applyVAImpulse(const btVector3& impulse) const+		{+			if(m_rigid)	m_rigid->applyTorqueImpulse(impulse);+			if(m_soft)	btSoftBody::clusterVAImpulse(m_soft,impulse);+		}+		void						applyDAImpulse(const btVector3& impulse) const+		{+			if(m_rigid)	m_rigid->applyTorqueImpulse(impulse);+			if(m_soft)	btSoftBody::clusterDAImpulse(m_soft,impulse);+		}+		void						applyAImpulse(const Impulse& impulse) const+		{+			if(impulse.m_asVelocity)	applyVAImpulse(impulse.m_velocity);+			if(impulse.m_asDrift)		applyDAImpulse(impulse.m_drift);+		}+		void						applyDCImpulse(const btVector3& impulse) const+		{+			if(m_rigid)	m_rigid->applyCentralImpulse(impulse);+			if(m_soft)	btSoftBody::clusterDCImpulse(m_soft,impulse);+		}+	};+	/* Joint		*/ +	struct	Joint+	{+		struct eType { enum _ {+			Linear=0,+			Angular,+			Contact+		};};+		struct Specs+		{+			Specs() : erp(1),cfm(1),split(1) {}+			btScalar	erp;+			btScalar	cfm;+			btScalar	split;+		};+		Body						m_bodies[2];+		btVector3					m_refs[2];+		btScalar					m_cfm;+		btScalar					m_erp;+		btScalar					m_split;+		btVector3					m_drift;+		btVector3					m_sdrift;+		btMatrix3x3					m_massmatrix;+		bool						m_delete;+		virtual						~Joint() {}+		Joint() : m_delete(false) {}+		virtual void				Prepare(btScalar dt,int iterations);+		virtual void				Solve(btScalar dt,btScalar sor)=0;+		virtual void				Terminate(btScalar dt)=0;+		virtual eType::_			Type() const=0;+	};+	/* LJoint		*/ +	struct	LJoint : Joint+	{+		struct Specs : Joint::Specs+		{+			btVector3	position;+		};		+		btVector3					m_rpos[2];+		void						Prepare(btScalar dt,int iterations);+		void						Solve(btScalar dt,btScalar sor);+		void						Terminate(btScalar dt);+		eType::_					Type() const { return(eType::Linear); }+	};+	/* AJoint		*/ +	struct	AJoint : Joint+	{+		struct IControl+		{+			virtual void			Prepare(AJoint*)				{}+			virtual btScalar		Speed(AJoint*,btScalar current) { return(current); }+			static IControl*		Default()						{ static IControl def;return(&def); }+		};+		struct Specs : Joint::Specs+		{+			Specs() : icontrol(IControl::Default()) {}+			btVector3	axis;+			IControl*	icontrol;+		};		+		btVector3					m_axis[2];+		IControl*					m_icontrol;+		void						Prepare(btScalar dt,int iterations);+		void						Solve(btScalar dt,btScalar sor);+		void						Terminate(btScalar dt);+		eType::_					Type() const { return(eType::Angular); }+	};+	/* CJoint		*/ +	struct	CJoint : Joint+	{		+		int							m_life;+		int							m_maxlife;+		btVector3					m_rpos[2];+		btVector3					m_normal;+		btScalar					m_friction;+		void						Prepare(btScalar dt,int iterations);+		void						Solve(btScalar dt,btScalar sor);+		void						Terminate(btScalar dt);+		eType::_					Type() const { return(eType::Contact); }+	};+	/* Config		*/ +	struct	Config+	{+		eAeroModel::_			aeromodel;		// Aerodynamic model (default: V_Point)+		btScalar				kVCF;			// Velocities correction factor (Baumgarte)+		btScalar				kDP;			// Damping coefficient [0,1]+		btScalar				kDG;			// Drag coefficient [0,+inf]+		btScalar				kLF;			// Lift coefficient [0,+inf]+		btScalar				kPR;			// Pressure coefficient [-inf,+inf]+		btScalar				kVC;			// Volume conversation coefficient [0,+inf]+		btScalar				kDF;			// Dynamic friction coefficient [0,1]+		btScalar				kMT;			// Pose matching coefficient [0,1]		+		btScalar				kCHR;			// Rigid contacts hardness [0,1]+		btScalar				kKHR;			// Kinetic contacts hardness [0,1]+		btScalar				kSHR;			// Soft contacts hardness [0,1]+		btScalar				kAHR;			// Anchors hardness [0,1]+		btScalar				kSRHR_CL;		// Soft vs rigid hardness [0,1] (cluster only)+		btScalar				kSKHR_CL;		// Soft vs kinetic hardness [0,1] (cluster only)+		btScalar				kSSHR_CL;		// Soft vs soft hardness [0,1] (cluster only)+		btScalar				kSR_SPLT_CL;	// Soft vs rigid impulse split [0,1] (cluster only)+		btScalar				kSK_SPLT_CL;	// Soft vs rigid impulse split [0,1] (cluster only)+		btScalar				kSS_SPLT_CL;	// Soft vs rigid impulse split [0,1] (cluster only)+		btScalar				maxvolume;		// Maximum volume ratio for pose+		btScalar				timescale;		// Time scale+		int						viterations;	// Velocities solver iterations+		int						piterations;	// Positions solver iterations+		int						diterations;	// Drift solver iterations+		int						citerations;	// Cluster solver iterations+		int						collisions;		// Collisions flags+		tVSolverArray			m_vsequence;	// Velocity solvers sequence+		tPSolverArray			m_psequence;	// Position solvers sequence+		tPSolverArray			m_dsequence;	// Drift solvers sequence+	};+	/* SolverState	*/ +	struct	SolverState+	{+		btScalar				sdt;			// dt*timescale+		btScalar				isdt;			// 1/sdt+		btScalar				velmrg;			// velocity margin+		btScalar				radmrg;			// radial margin+		btScalar				updmrg;			// Update margin+	};	+	/// RayFromToCaster takes a ray from, ray to (instead of direction!)+	struct	RayFromToCaster : btDbvt::ICollide+	{+		btVector3			m_rayFrom;+		btVector3			m_rayTo;+		btVector3			m_rayNormalizedDirection;+		btScalar			m_mint;+		Face*				m_face;+		int					m_tests;+		RayFromToCaster(const btVector3& rayFrom,const btVector3& rayTo,btScalar mxt);+		void					Process(const btDbvtNode* leaf);++		static inline btScalar	rayFromToTriangle(const btVector3& rayFrom,+			const btVector3& rayTo,+			const btVector3& rayNormalizedDirection,+			const btVector3& a,+			const btVector3& b,+			const btVector3& c,+			btScalar maxt=SIMD_INFINITY);+	};++	//+	// Typedefs+	//++	typedef void								(*psolver_t)(btSoftBody*,btScalar,btScalar);+	typedef void								(*vsolver_t)(btSoftBody*,btScalar);+	typedef btAlignedObjectArray<Cluster*>		tClusterArray;+	typedef btAlignedObjectArray<Note>			tNoteArray;+	typedef btAlignedObjectArray<Node>			tNodeArray;+	typedef btAlignedObjectArray<btDbvtNode*>	tLeafArray;+	typedef btAlignedObjectArray<Link>			tLinkArray;+	typedef btAlignedObjectArray<Face>			tFaceArray;+	typedef btAlignedObjectArray<Tetra>			tTetraArray;+	typedef btAlignedObjectArray<Anchor>		tAnchorArray;+	typedef btAlignedObjectArray<RContact>		tRContactArray;+	typedef btAlignedObjectArray<SContact>		tSContactArray;+	typedef btAlignedObjectArray<Material*>		tMaterialArray;+	typedef btAlignedObjectArray<Joint*>		tJointArray;+	typedef btAlignedObjectArray<btSoftBody*>	tSoftBodyArray;	++	//+	// Fields+	//++	Config					m_cfg;			// Configuration+	SolverState				m_sst;			// Solver state+	Pose					m_pose;			// Pose+	void*					m_tag;			// User data+	btSoftBodyWorldInfo*	m_worldInfo;	// World info+	tNoteArray				m_notes;		// Notes+	tNodeArray				m_nodes;		// Nodes+	tLinkArray				m_links;		// Links+	tFaceArray				m_faces;		// Faces+	tTetraArray				m_tetras;		// Tetras+	tAnchorArray			m_anchors;		// Anchors+	tRContactArray			m_rcontacts;	// Rigid contacts+	tSContactArray			m_scontacts;	// Soft contacts+	tJointArray				m_joints;		// Joints+	tMaterialArray			m_materials;	// Materials+	btScalar				m_timeacc;		// Time accumulator+	btVector3				m_bounds[2];	// Spatial bounds	+	bool					m_bUpdateRtCst;	// Update runtime constants+	btDbvt					m_ndbvt;		// Nodes tree+	btDbvt					m_fdbvt;		// Faces tree+	btDbvt					m_cdbvt;		// Clusters tree+	tClusterArray			m_clusters;		// Clusters++	btAlignedObjectArray<bool>m_clusterConnectivity;//cluster connectivity, for self-collision++	btTransform			m_initialWorldTransform;++	btVector3			m_windVelocity;+	//+	// Api+	//++	/* ctor																	*/ +	btSoftBody(	btSoftBodyWorldInfo* worldInfo,int node_count,		const btVector3* x,		const btScalar* m);++	/* ctor																	*/ +	btSoftBody(	btSoftBodyWorldInfo* worldInfo);++	void	initDefaults();++	/* dtor																	*/ +	virtual ~btSoftBody();+	/* Check for existing link												*/ ++	btAlignedObjectArray<int>	m_userIndexMapping;++	btSoftBodyWorldInfo*	getWorldInfo()+	{+		return m_worldInfo;+	}++	///@todo: avoid internal softbody shape hack and move collision code to collision library+	virtual void	setCollisionShape(btCollisionShape* collisionShape)+	{+		+	}++	bool				checkLink(	int node0,+		int node1) const;+	bool				checkLink(	const Node* node0,+		const Node* node1) const;+	/* Check for existring face												*/ +	bool				checkFace(	int node0,+		int node1,+		int node2) const;+	/* Append material														*/ +	Material*			appendMaterial();+	/* Append note															*/ +	void				appendNote(	const char* text,+		const btVector3& o,+		const btVector4& c=btVector4(1,0,0,0),+		Node* n0=0,+		Node* n1=0,+		Node* n2=0,+		Node* n3=0);+	void				appendNote(	const char* text,+		const btVector3& o,+		Node* feature);+	void				appendNote(	const char* text,+		const btVector3& o,+		Link* feature);+	void				appendNote(	const char* text,+		const btVector3& o,+		Face* feature);+	/* Append node															*/ +	void				appendNode(	const btVector3& x,btScalar m);+	/* Append link															*/ +	void				appendLink(int model=-1,Material* mat=0);+	void				appendLink(	int node0,+		int node1,+		Material* mat=0,+		bool bcheckexist=false);+	void				appendLink(	Node* node0,+		Node* node1,+		Material* mat=0,+		bool bcheckexist=false);+	/* Append face															*/ +	void				appendFace(int model=-1,Material* mat=0);+	void				appendFace(	int node0,+		int node1,+		int node2,+		Material* mat=0);+	void			appendTetra(int model,Material* mat);+	//+	void			appendTetra(int node0,+										int node1,+										int node2,+										int node3,+										Material* mat=0);+++	/* Append anchor														*/ +	void				appendAnchor(	int node,+		btRigidBody* body, bool disableCollisionBetweenLinkedBodies=false,btScalar influence = 1);+	void			appendAnchor(int node,btRigidBody* body, const btVector3& localPivot,bool disableCollisionBetweenLinkedBodies=false,btScalar influence = 1);+	/* Append linear joint													*/ +	void				appendLinearJoint(const LJoint::Specs& specs,Cluster* body0,Body body1);+	void				appendLinearJoint(const LJoint::Specs& specs,Body body=Body());+	void				appendLinearJoint(const LJoint::Specs& specs,btSoftBody* body);+	/* Append linear joint													*/ +	void				appendAngularJoint(const AJoint::Specs& specs,Cluster* body0,Body body1);+	void				appendAngularJoint(const AJoint::Specs& specs,Body body=Body());+	void				appendAngularJoint(const AJoint::Specs& specs,btSoftBody* body);+	/* Add force (or gravity) to the entire body							*/ +	void				addForce(		const btVector3& force);+	/* Add force (or gravity) to a node of the body							*/ +	void				addForce(		const btVector3& force,+		int node);+	/* Add velocity to the entire body										*/ +	void				addVelocity(	const btVector3& velocity);++	/* Set velocity for the entire body										*/ +	void				setVelocity(	const btVector3& velocity);++	/* Add velocity to a node of the body									*/ +	void				addVelocity(	const btVector3& velocity,+		int node);+	/* Set mass																*/ +	void				setMass(		int node,+		btScalar mass);+	/* Get mass																*/ +	btScalar			getMass(		int node) const;+	/* Get total mass														*/ +	btScalar			getTotalMass() const;+	/* Set total mass (weighted by previous masses)							*/ +	void				setTotalMass(	btScalar mass,+		bool fromfaces=false);+	/* Set total density													*/ +	void				setTotalDensity(btScalar density);+	/* Set volume mass (using tetrahedrons)									*/+	void				setVolumeMass(		btScalar mass);+	/* Set volume density (using tetrahedrons)								*/+	void				setVolumeDensity(	btScalar density);+	/* Transform															*/ +	void				transform(		const btTransform& trs);+	/* Translate															*/ +	void				translate(		const btVector3& trs);+	/* Rotate															*/ +	void				rotate(	const btQuaternion& rot);+	/* Scale																*/ +	void				scale(	const btVector3& scl);+	/* Set current state as pose											*/ +	void				setPose(		bool bvolume,+		bool bframe);+	/* Return the volume													*/ +	btScalar			getVolume() const;+	/* Cluster count														*/ +	int					clusterCount() const;+	/* Cluster center of mass												*/ +	static btVector3	clusterCom(const Cluster* cluster);+	btVector3			clusterCom(int cluster) const;+	/* Cluster velocity at rpos												*/ +	static btVector3	clusterVelocity(const Cluster* cluster,const btVector3& rpos);+	/* Cluster impulse														*/ +	static void			clusterVImpulse(Cluster* cluster,const btVector3& rpos,const btVector3& impulse);+	static void			clusterDImpulse(Cluster* cluster,const btVector3& rpos,const btVector3& impulse);+	static void			clusterImpulse(Cluster* cluster,const btVector3& rpos,const Impulse& impulse);+	static void			clusterVAImpulse(Cluster* cluster,const btVector3& impulse);+	static void			clusterDAImpulse(Cluster* cluster,const btVector3& impulse);+	static void			clusterAImpulse(Cluster* cluster,const Impulse& impulse);+	static void			clusterDCImpulse(Cluster* cluster,const btVector3& impulse);+	/* Generate bending constraints based on distance in the adjency graph	*/ +	int					generateBendingConstraints(	int distance,+		Material* mat=0);+	/* Randomize constraints to reduce solver bias							*/ +	void				randomizeConstraints();+	/* Release clusters														*/ +	void				releaseCluster(int index);+	void				releaseClusters();+	/* Generate clusters (K-mean)											*/ +	///generateClusters with k=0 will create a convex cluster for each tetrahedron or triangle+	///otherwise an approximation will be used (better performance)+	int					generateClusters(int k,int maxiterations=8192);+	/* Refine																*/ +	void				refine(ImplicitFn* ifn,btScalar accurary,bool cut);+	/* CutLink																*/ +	bool				cutLink(int node0,int node1,btScalar position);+	bool				cutLink(const Node* node0,const Node* node1,btScalar position);++	///Ray casting using rayFrom and rayTo in worldspace, (not direction!)+	bool				rayTest(const btVector3& rayFrom,+		const btVector3& rayTo,+		sRayCast& results);+	/* Solver presets														*/ +	void				setSolver(eSolverPresets::_ preset);+	/* predictMotion														*/ +	void				predictMotion(btScalar dt);+	/* solveConstraints														*/ +	void				solveConstraints();+	/* staticSolve															*/ +	void				staticSolve(int iterations);+	/* solveCommonConstraints												*/ +	static void			solveCommonConstraints(btSoftBody** bodies,int count,int iterations);+	/* solveClusters														*/ +	static void			solveClusters(const btAlignedObjectArray<btSoftBody*>& bodies);+	/* integrateMotion														*/ +	void				integrateMotion();+	/* defaultCollisionHandlers												*/ +	void				defaultCollisionHandler(btCollisionObject* pco);+	void				defaultCollisionHandler(btSoftBody* psb);++++	//+	// Functionality to deal with new accelerated solvers.+	//++	/**+	 * Set a wind velocity for interaction with the air.+	 */+	void setWindVelocity( const btVector3 &velocity );+++	/**+	 * Return the wind velocity for interaction with the air.+	 */+	const btVector3& getWindVelocity();++	//+	// Set the solver that handles this soft body+	// Should not be allowed to get out of sync with reality+	// Currently called internally on addition to the world+	void setSoftBodySolver( btSoftBodySolver *softBodySolver )+	{+		m_softBodySolver = softBodySolver;+	}++	//+	// Return the solver that handles this soft body+	// +	btSoftBodySolver *getSoftBodySolver()+	{+		return m_softBodySolver;+	}++	//+	// Return the solver that handles this soft body+	// +	btSoftBodySolver *getSoftBodySolver() const+	{+		return m_softBodySolver;+	}+++	//+	// Cast+	//++	static const btSoftBody*	upcast(const btCollisionObject* colObj)+	{+		if (colObj->getInternalType()==CO_SOFT_BODY)+			return (const btSoftBody*)colObj;+		return 0;+	}+	static btSoftBody*			upcast(btCollisionObject* colObj)+	{+		if (colObj->getInternalType()==CO_SOFT_BODY)+			return (btSoftBody*)colObj;+		return 0;+	}++	//+	// ::btCollisionObject+	//++	virtual void getAabb(btVector3& aabbMin,btVector3& aabbMax) const+	{+		aabbMin = m_bounds[0];+		aabbMax = m_bounds[1];+	}+	//+	// Private+	//+	void				pointersToIndices();+	void				indicesToPointers(const int* map=0);++	int					rayTest(const btVector3& rayFrom,const btVector3& rayTo,+		btScalar& mint,eFeature::_& feature,int& index,bool bcountonly) const;+	void				initializeFaceTree();+	btVector3			evaluateCom() const;+	bool				checkContact(btCollisionObject* colObj,const btVector3& x,btScalar margin,btSoftBody::sCti& cti) const;+	void				updateNormals();+	void				updateBounds();+	void				updatePose();+	void				updateConstants();+	void				initializeClusters();+	void				updateClusters();+	void				cleanupClusters();+	void				prepareClusters(int iterations);+	void				solveClusters(btScalar sor);+	void				applyClusters(bool drift);+	void				dampClusters();+	void				applyForces();	+	static void			PSolve_Anchors(btSoftBody* psb,btScalar kst,btScalar ti);+	static void			PSolve_RContacts(btSoftBody* psb,btScalar kst,btScalar ti);+	static void			PSolve_SContacts(btSoftBody* psb,btScalar,btScalar ti);+	static void			PSolve_Links(btSoftBody* psb,btScalar kst,btScalar ti);+	static void			VSolve_Links(btSoftBody* psb,btScalar kst);+	static psolver_t	getSolver(ePSolver::_ solver);+	static vsolver_t	getSolver(eVSolver::_ solver);+++	virtual	int	calculateSerializeBufferSize()	const;++	///fills the dataBuffer and returns the struct name (and 0 on failure)+	virtual	const char*	serialize(void* dataBuffer,  class btSerializer* serializer) const;++	//virtual void serializeSingleObject(class btSerializer* serializer) const;+++};+++++#endif //_BT_SOFT_BODY_H
+ bullet/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h view
@@ -0,0 +1,153 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_SOFT_BODY_CONCAVE_COLLISION_ALGORITHM_H+#define BT_SOFT_BODY_CONCAVE_COLLISION_ALGORITHM_H++#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h"+#include "BulletCollision/BroadphaseCollision/btDispatcher.h"+#include "BulletCollision/BroadphaseCollision/btBroadphaseInterface.h"+#include "BulletCollision/CollisionShapes/btTriangleCallback.h"+#include "BulletCollision/NarrowPhaseCollision/btPersistentManifold.h"+class btDispatcher;+#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h"+#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h"+class btSoftBody;+class btCollisionShape;++#include "LinearMath/btHashMap.h"++#include "BulletCollision/BroadphaseCollision/btQuantizedBvh.h" //for definition of MAX_NUM_PARTS_IN_BITS++struct btTriIndex+{+	int m_PartIdTriangleIndex;+	class btCollisionShape*	m_childShape;++	btTriIndex(int partId,int triangleIndex,btCollisionShape* shape)+	{+		m_PartIdTriangleIndex = (partId<<(31-MAX_NUM_PARTS_IN_BITS)) | triangleIndex;+		m_childShape = shape;+	}++	int	getTriangleIndex() const+	{+		// Get only the lower bits where the triangle index is stored+		return (m_PartIdTriangleIndex&~((~0)<<(31-MAX_NUM_PARTS_IN_BITS)));+	}+	int	getPartId() const+	{+		// Get only the highest bits where the part index is stored+		return (m_PartIdTriangleIndex>>(31-MAX_NUM_PARTS_IN_BITS));+	}+	int	getUid() const+	{+		return m_PartIdTriangleIndex;+	}+};+++///For each triangle in the concave mesh that overlaps with the AABB of a soft body (m_softBody), processTriangle is called.+class btSoftBodyTriangleCallback : public btTriangleCallback+{+	btSoftBody* m_softBody;+	btCollisionObject* m_triBody;++	btVector3	m_aabbMin;+	btVector3	m_aabbMax ;++	btManifoldResult* m_resultOut;++	btDispatcher*	m_dispatcher;+	const btDispatcherInfo* m_dispatchInfoPtr;+	btScalar m_collisionMarginTriangle;++	btHashMap<btHashKey<btTriIndex>,btTriIndex> m_shapeCache;++public:+	int	m_triangleCount;++	//	btPersistentManifold*	m_manifoldPtr;++	btSoftBodyTriangleCallback(btDispatcher* dispatcher,btCollisionObject* body0,btCollisionObject* body1,bool isSwapped);++	void	setTimeStepAndCounters(btScalar collisionMarginTriangle,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);++	virtual ~btSoftBodyTriangleCallback();++	virtual void processTriangle(btVector3* triangle, int partId, int triangleIndex);++	void clearCache();++	SIMD_FORCE_INLINE const btVector3& getAabbMin() const+	{+		return m_aabbMin;+	}+	SIMD_FORCE_INLINE const btVector3& getAabbMax() const+	{+		return m_aabbMax;+	}++};+++++/// btSoftBodyConcaveCollisionAlgorithm  supports collision between soft body shapes and (concave) trianges meshes.+class btSoftBodyConcaveCollisionAlgorithm  : public btCollisionAlgorithm+{++	bool	m_isSwapped;++	btSoftBodyTriangleCallback m_btSoftBodyTriangleCallback;++public:++	btSoftBodyConcaveCollisionAlgorithm( const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1,bool isSwapped);++	virtual ~btSoftBodyConcaveCollisionAlgorithm();++	virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);++	btScalar	calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);++	virtual	void	getAllContactManifolds(btManifoldArray&	manifoldArray)+	{+		//we don't add any manifolds+	}++	void	clearCache();++	struct CreateFunc :public 	btCollisionAlgorithmCreateFunc+	{+		virtual	btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1)+		{+			void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btSoftBodyConcaveCollisionAlgorithm));+			return new(mem) btSoftBodyConcaveCollisionAlgorithm(ci,body0,body1,false);+		}+	};++	struct SwappedCreateFunc :public 	btCollisionAlgorithmCreateFunc+	{+		virtual	btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1)+		{+			void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btSoftBodyConcaveCollisionAlgorithm));+			return new(mem) btSoftBodyConcaveCollisionAlgorithm(ci,body0,body1,true);+		}+	};++};++#endif //BT_SOFT_BODY_CONCAVE_COLLISION_ALGORITHM_H
+ bullet/BulletSoftBody/btSoftBodyData.h view
@@ -0,0 +1,217 @@+/*
+Bullet Continuous Collision Detection and Physics Library
+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it freely,
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+*/
+
+#ifndef BT_SOFTBODY_FLOAT_DATA
+#define BT_SOFTBODY_FLOAT_DATA
+
+#include "BulletCollision/CollisionDispatch/btCollisionObject.h"
+
+
+
+struct	SoftBodyMaterialData
+{
+	float	m_linearStiffness;
+	float	m_angularStiffness;
+	float	m_volumeStiffness;
+	int		m_flags;
+};
+
+struct	SoftBodyNodeData
+{
+	SoftBodyMaterialData		*m_material;
+	btVector3FloatData			m_position;
+	btVector3FloatData			m_previousPosition;
+	btVector3FloatData			m_velocity;
+	btVector3FloatData			m_accumulatedForce;
+	btVector3FloatData			m_normal;
+	float						m_inverseMass;
+	float						m_area;
+	int							m_attach;
+	int							m_pad;
+};
+
+struct	SoftBodyLinkData
+{
+	SoftBodyMaterialData	*m_material;
+	int						m_nodeIndices[2];			// Node pointers
+	float					m_restLength;			// Rest length		
+	int						m_bbending;		// Bending link
+};
+
+struct	SoftBodyFaceData
+{
+	btVector3FloatData		m_normal;		// Normal
+	SoftBodyMaterialData	*m_material;
+	int						m_nodeIndices[3];			// Node pointers
+	float					m_restArea;			// Rest area
+};	
+
+struct	SoftBodyTetraData
+{
+	btVector3FloatData		m_c0[4];		// gradients
+	SoftBodyMaterialData	*m_material;
+	int						m_nodeIndices[4];			// Node pointers		
+	float					m_restVolume;			// Rest volume
+	float					m_c1;			// (4*kVST)/(im0+im1+im2+im3)
+	float					m_c2;			// m_c1/sum(|g0..3|^2)
+	int						m_pad;
+};
+
+struct	SoftRigidAnchorData
+{
+	btMatrix3x3FloatData	m_c0;			// Impulse matrix
+	btVector3FloatData		m_c1;			// Relative anchor
+	btVector3FloatData		m_localFrame;		// Anchor position in body space
+	btRigidBodyData			*m_rigidBody;
+	int						m_nodeIndex;			// Node pointer
+	float					m_c2;			// ima*dt
+};
+
+
+
+struct	SoftBodyConfigData
+{
+	int					m_aeroModel;		// Aerodynamic model (default: V_Point)
+	float				m_baumgarte;			// Velocities correction factor (Baumgarte)
+	float				m_damping;			// Damping coefficient [0,1]
+	float				m_drag;			// Drag coefficient [0,+inf]
+	float				m_lift;			// Lift coefficient [0,+inf]
+	float				m_pressure;			// Pressure coefficient [-inf,+inf]
+	float				m_volume;			// Volume conversation coefficient [0,+inf]
+	float				m_dynamicFriction;			// Dynamic friction coefficient [0,1]
+	float				m_poseMatch;			// Pose matching coefficient [0,1]		
+	float				m_rigidContactHardness;			// Rigid contacts hardness [0,1]
+	float				m_kineticContactHardness;			// Kinetic contacts hardness [0,1]
+	float				m_softContactHardness;			// Soft contacts hardness [0,1]
+	float				m_anchorHardness;			// Anchors hardness [0,1]
+	float				m_softRigidClusterHardness;		// Soft vs rigid hardness [0,1] (cluster only)
+	float				m_softKineticClusterHardness;		// Soft vs kinetic hardness [0,1] (cluster only)
+	float				m_softSoftClusterHardness;		// Soft vs soft hardness [0,1] (cluster only)
+	float				m_softRigidClusterImpulseSplit;	// Soft vs rigid impulse split [0,1] (cluster only)
+	float				m_softKineticClusterImpulseSplit;	// Soft vs rigid impulse split [0,1] (cluster only)
+	float				m_softSoftClusterImpulseSplit;	// Soft vs rigid impulse split [0,1] (cluster only)
+	float				m_maxVolume;		// Maximum volume ratio for pose
+	float				m_timeScale;		// Time scale
+	int					m_velocityIterations;	// Velocities solver iterations
+	int					m_positionIterations;	// Positions solver iterations
+	int					m_driftIterations;	// Drift solver iterations
+	int					m_clusterIterations;	// Cluster solver iterations
+	int					m_collisionFlags;	// Collisions flags
+};
+
+struct	SoftBodyPoseData
+{
+	btMatrix3x3FloatData	m_rot;			// Rotation
+	btMatrix3x3FloatData	m_scale;			// Scale
+	btMatrix3x3FloatData	m_aqq;			// Base scaling
+	btVector3FloatData		m_com;			// COM
+
+	btVector3FloatData		*m_positions;			// Reference positions
+	float					*m_weights;	// Weights
+	int						m_numPositions;
+	int						m_numWeigts;
+
+	int						m_bvolume;		// Is valid
+	int						m_bframe;		// Is frame
+	float					m_restVolume;		// Rest volume
+	int						m_pad;
+};
+
+struct	SoftBodyClusterData
+{
+		btTransformFloatData		m_framexform;
+		btMatrix3x3FloatData		m_locii;
+		btMatrix3x3FloatData		m_invwi;
+		btVector3FloatData			m_com;
+		btVector3FloatData			m_vimpulses[2];
+		btVector3FloatData			m_dimpulses[2];
+		btVector3FloatData			m_lv;
+		btVector3FloatData			m_av;
+		
+		btVector3FloatData			*m_framerefs;
+		int							*m_nodeIndices;
+		float						*m_masses;
+
+		int							m_numFrameRefs;
+		int							m_numNodes;
+		int							m_numMasses;
+
+		float						m_idmass;
+		float						m_imass;
+		int							m_nvimpulses;
+		int							m_ndimpulses;
+		float						m_ndamping;
+		float						m_ldamping;
+		float						m_adamping;
+		float						m_matching;
+		float						m_maxSelfCollisionImpulse;
+		float						m_selfCollisionImpulseFactor;
+		int							m_containsAnchor;
+		int							m_collide;
+		int							m_clusterIndex;
+};
+
+
+enum	btSoftJointBodyType
+{
+	BT_JOINT_SOFT_BODY_CLUSTER=1,
+	BT_JOINT_RIGID_BODY,
+	BT_JOINT_COLLISION_OBJECT
+};
+
+struct	btSoftBodyJointData
+{
+	void						*m_bodyA;
+	void						*m_bodyB;
+	btVector3FloatData			m_refs[2];
+	float						m_cfm;
+	float						m_erp;
+	float						m_split;
+	int							m_delete;
+	btVector3FloatData			m_relPosition[2];//linear
+	int							m_bodyAtype;
+	int							m_bodyBtype;
+	int							m_jointType;
+	int							m_pad;
+};
+
+///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64
+struct	btSoftBodyFloatData
+{
+	btCollisionObjectFloatData	m_collisionObjectData;
+
+	SoftBodyPoseData		*m_pose;
+	SoftBodyMaterialData	**m_materials;
+	SoftBodyNodeData		*m_nodes;
+	SoftBodyLinkData		*m_links;
+	SoftBodyFaceData		*m_faces;
+	SoftBodyTetraData		*m_tetrahedra;
+	SoftRigidAnchorData		*m_anchors;
+	SoftBodyClusterData		*m_clusters;
+	btSoftBodyJointData		*m_joints;
+
+	int						m_numMaterials;
+	int						m_numNodes;
+	int						m_numLinks;
+	int						m_numFaces;
+	int						m_numTetrahedra;
+	int						m_numAnchors;
+	int						m_numClusters;
+	int						m_numJoints;
+	SoftBodyConfigData		m_config;
+};
+
+#endif //BT_SOFTBODY_FLOAT_DATA
+
+ bullet/BulletSoftBody/btSoftBodyHelpers.h view
@@ -0,0 +1,143 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2008 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_SOFT_BODY_HELPERS_H+#define BT_SOFT_BODY_HELPERS_H++#include "btSoftBody.h"++//+// Helpers+//++/* fDrawFlags															*/ +struct	fDrawFlags { enum _ {+	Nodes		=	0x0001,+	Links		=	0x0002,+	Faces		=	0x0004,+	Tetras		=	0x0008,+	Normals		=	0x0010,+	Contacts	=	0x0020,+	Anchors		=	0x0040,+	Notes		=	0x0080,+	Clusters	=	0x0100,+	NodeTree	=	0x0200,+	FaceTree	=	0x0400,+	ClusterTree	=	0x0800,+	Joints		=	0x1000,+	/* presets	*/ +	Std			=	Links+Faces+Tetras+Anchors+Notes+Joints,+	StdTetra	=	Std-Faces+Tetras+};};++struct	btSoftBodyHelpers+{+	/* Draw body															*/ +	static void				Draw(		btSoftBody* psb,+		btIDebugDraw* idraw,+		int drawflags=fDrawFlags::Std);+	/* Draw body infos														*/ +	static	void			DrawInfos(	btSoftBody* psb,+		btIDebugDraw* idraw,+		bool masses,+		bool areas,+		bool stress);+	/* Draw node tree														*/ +	static void				DrawNodeTree(	btSoftBody* psb,+		btIDebugDraw* idraw,+		int mindepth=0,+		int maxdepth=-1);+	/* Draw face tree														*/ +	static void				DrawFaceTree(	btSoftBody* psb,+		btIDebugDraw* idraw,+		int mindepth=0,+		int maxdepth=-1);+	/* Draw cluster tree													*/ +	static void				DrawClusterTree(btSoftBody* psb,+		btIDebugDraw* idraw,+		int mindepth=0,+		int maxdepth=-1);+	/* Draw rigid frame														*/ +	static	void			DrawFrame(		btSoftBody* psb,+		btIDebugDraw* idraw);+	/* Create a rope														*/ +	static	btSoftBody*		CreateRope( btSoftBodyWorldInfo& worldInfo,+		const btVector3& from,+		const btVector3& to,+		int res,+		int fixeds);+	/* Create a patch														*/ +	static	btSoftBody*		CreatePatch(btSoftBodyWorldInfo& worldInfo,+		const btVector3& corner00,+		const btVector3& corner10,+		const btVector3& corner01,+		const btVector3& corner11,+		int resx,+		int resy,+		int fixeds,+		bool gendiags);+	/* Create a patch with UV Texture Coordinates	*/ +	static	btSoftBody*		CreatePatchUV(btSoftBodyWorldInfo& worldInfo,+		const btVector3& corner00,+		const btVector3& corner10,+		const btVector3& corner01,+		const btVector3& corner11,+		int resx,+		int resy,+		int fixeds,+		bool gendiags,+		float* tex_coords=0);+	static	float	CalculateUV(int resx,int resy,int ix,int iy,int id);+	/* Create an ellipsoid													*/ +	static	btSoftBody*		CreateEllipsoid(btSoftBodyWorldInfo& worldInfo,+		const btVector3& center,+		const btVector3& radius,+		int res);	+	/* Create from trimesh													*/ +	static	btSoftBody*		CreateFromTriMesh(	btSoftBodyWorldInfo& worldInfo,+		const btScalar*	vertices,+		const int* triangles,+		int ntriangles,+		bool randomizeConstraints = true);+	/* Create from convex-hull												*/ +	static	btSoftBody*		CreateFromConvexHull(	btSoftBodyWorldInfo& worldInfo,+		const btVector3* vertices,+		int nvertices,+		bool randomizeConstraints = true);+++	/* Export TetGen compatible .smesh file									*/ +//	static void				ExportAsSMeshFile(	btSoftBody* psb,+//												const char* filename);	+	/* Create from TetGen .ele, .face, .node files							*/ +//	static btSoftBody*		CreateFromTetGenFile(	btSoftBodyWorldInfo& worldInfo,+//													const char* ele,+//													const char* face,+//													const char* node,+//													bool bfacelinks,+//													bool btetralinks,+//													bool bfacesfromtetras);+	/* Create from TetGen .ele, .face, .node data							*/ +	static btSoftBody*		CreateFromTetGenData(	btSoftBodyWorldInfo& worldInfo,+													const char* ele,+													const char* face,+													const char* node,+													bool bfacelinks,+													bool btetralinks,+													bool bfacesfromtetras);+	+};++#endif //BT_SOFT_BODY_HELPERS_H
+ bullet/BulletSoftBody/btSoftBodyInternals.h view
@@ -0,0 +1,916 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose,+including commercial applications, and to alter it and redistribute it freely,+subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+///btSoftBody implementation by Nathanael Presson++#ifndef _BT_SOFT_BODY_INTERNALS_H+#define _BT_SOFT_BODY_INTERNALS_H++#include "btSoftBody.h"+++#include "LinearMath/btQuickprof.h"+#include "BulletCollision/BroadphaseCollision/btBroadphaseInterface.h"+#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h"+#include "BulletCollision/CollisionShapes/btConvexInternalShape.h"+#include "BulletCollision/NarrowPhaseCollision/btGjkEpa2.h"+#include <string.h> //for memset+//+// btSymMatrix+//+template <typename T>+struct btSymMatrix+{+	btSymMatrix() : dim(0)					{}+	btSymMatrix(int n,const T& init=T())	{ resize(n,init); }+	void					resize(int n,const T& init=T())			{ dim=n;store.resize((n*(n+1))/2,init); }+	int						index(int c,int r) const				{ if(c>r) btSwap(c,r);btAssert(r<dim);return((r*(r+1))/2+c); }+	T&						operator()(int c,int r)					{ return(store[index(c,r)]); }+	const T&				operator()(int c,int r) const			{ return(store[index(c,r)]); }+	btAlignedObjectArray<T>	store;+	int						dim;+};	++//+// btSoftBodyCollisionShape+//+class btSoftBodyCollisionShape : public btConcaveShape+{+public:+	btSoftBody*						m_body;++	btSoftBodyCollisionShape(btSoftBody* backptr)+	{+		m_shapeType = SOFTBODY_SHAPE_PROXYTYPE;+		m_body=backptr;+	}++	virtual ~btSoftBodyCollisionShape()+	{++	}++	void	processAllTriangles(btTriangleCallback* /*callback*/,const btVector3& /*aabbMin*/,const btVector3& /*aabbMax*/) const+	{+		//not yet+		btAssert(0);+	}++	///getAabb returns the axis aligned bounding box in the coordinate frame of the given transform t.+	virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const+	{+		/* t should be identity */ +		aabbMin=m_body->m_bounds[0];+		aabbMax=m_body->m_bounds[1];+	}+++	virtual void	setLocalScaling(const btVector3& /*scaling*/)+	{		+		///na+	}+	virtual const btVector3& getLocalScaling() const+	{+		static const btVector3 dummy(1,1,1);+		return dummy;+	}+	virtual void	calculateLocalInertia(btScalar /*mass*/,btVector3& /*inertia*/) const+	{+		///not yet+		btAssert(0);+	}+	virtual const char*	getName()const+	{+		return "SoftBody";+	}++};++//+// btSoftClusterCollisionShape+//+class btSoftClusterCollisionShape : public btConvexInternalShape+{+public:+	const btSoftBody::Cluster*	m_cluster;++	btSoftClusterCollisionShape (const btSoftBody::Cluster* cluster) : m_cluster(cluster) { setMargin(0); }+++	virtual btVector3	localGetSupportingVertex(const btVector3& vec) const+	{+		btSoftBody::Node* const *						n=&m_cluster->m_nodes[0];+		btScalar										d=btDot(vec,n[0]->m_x);+		int												j=0;+		for(int i=1,ni=m_cluster->m_nodes.size();i<ni;++i)+		{+			const btScalar	k=btDot(vec,n[i]->m_x);+			if(k>d) { d=k;j=i; }+		}+		return(n[j]->m_x);+	}+	virtual btVector3	localGetSupportingVertexWithoutMargin(const btVector3& vec)const+	{+		return(localGetSupportingVertex(vec));+	}+	//notice that the vectors should be unit length+	virtual void	batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const+	{}+++	virtual void	calculateLocalInertia(btScalar mass,btVector3& inertia) const+	{}++	virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const+	{}++	virtual int	getShapeType() const { return SOFTBODY_SHAPE_PROXYTYPE; }++	//debugging+	virtual const char*	getName()const {return "SOFTCLUSTER";}++	virtual void	setMargin(btScalar margin)+	{+		btConvexInternalShape::setMargin(margin);+	}+	virtual btScalar	getMargin() const+	{+		return getMargin();+	}+};++//+// Inline's+//++//+template <typename T>+static inline void			ZeroInitialize(T& value)+{+	memset(&value,0,sizeof(T));+}+//+template <typename T>+static inline bool			CompLess(const T& a,const T& b)+{ return(a<b); }+//+template <typename T>+static inline bool			CompGreater(const T& a,const T& b)+{ return(a>b); }+//+template <typename T>+static inline T				Lerp(const T& a,const T& b,btScalar t)+{ return(a+(b-a)*t); }+//+template <typename T>+static inline T				InvLerp(const T& a,const T& b,btScalar t)+{ return((b+a*t-b*t)/(a*b)); }+//+static inline btMatrix3x3	Lerp(	const btMatrix3x3& a,+								 const btMatrix3x3& b,+								 btScalar t)+{+	btMatrix3x3	r;+	r[0]=Lerp(a[0],b[0],t);+	r[1]=Lerp(a[1],b[1],t);+	r[2]=Lerp(a[2],b[2],t);+	return(r);+}+//+static inline btVector3		Clamp(const btVector3& v,btScalar maxlength)+{+	const btScalar sql=v.length2();+	if(sql>(maxlength*maxlength))+		return((v*maxlength)/btSqrt(sql));+	else+		return(v);+}+//+template <typename T>+static inline T				Clamp(const T& x,const T& l,const T& h)+{ return(x<l?l:x>h?h:x); }+//+template <typename T>+static inline T				Sq(const T& x)+{ return(x*x); }+//+template <typename T>+static inline T				Cube(const T& x)+{ return(x*x*x); }+//+template <typename T>+static inline T				Sign(const T& x)+{ return((T)(x<0?-1:+1)); }+//+template <typename T>+static inline bool			SameSign(const T& x,const T& y)+{ return((x*y)>0); }+//+static inline btScalar		ClusterMetric(const btVector3& x,const btVector3& y)+{+	const btVector3	d=x-y;+	return(btFabs(d[0])+btFabs(d[1])+btFabs(d[2]));+}+//+static inline btMatrix3x3	ScaleAlongAxis(const btVector3& a,btScalar s)+{+	const btScalar	xx=a.x()*a.x();+	const btScalar	yy=a.y()*a.y();+	const btScalar	zz=a.z()*a.z();+	const btScalar	xy=a.x()*a.y();+	const btScalar	yz=a.y()*a.z();+	const btScalar	zx=a.z()*a.x();+	btMatrix3x3		m;+	m[0]=btVector3(1-xx+xx*s,xy*s-xy,zx*s-zx);+	m[1]=btVector3(xy*s-xy,1-yy+yy*s,yz*s-yz);+	m[2]=btVector3(zx*s-zx,yz*s-yz,1-zz+zz*s);+	return(m);+}+//+static inline btMatrix3x3	Cross(const btVector3& v)+{+	btMatrix3x3	m;+	m[0]=btVector3(0,-v.z(),+v.y());+	m[1]=btVector3(+v.z(),0,-v.x());+	m[2]=btVector3(-v.y(),+v.x(),0);+	return(m);+}+//+static inline btMatrix3x3	Diagonal(btScalar x)+{+	btMatrix3x3	m;+	m[0]=btVector3(x,0,0);+	m[1]=btVector3(0,x,0);+	m[2]=btVector3(0,0,x);+	return(m);+}+//+static inline btMatrix3x3	Add(const btMatrix3x3& a,+								const btMatrix3x3& b)+{+	btMatrix3x3	r;+	for(int i=0;i<3;++i) r[i]=a[i]+b[i];+	return(r);+}+//+static inline btMatrix3x3	Sub(const btMatrix3x3& a,+								const btMatrix3x3& b)+{+	btMatrix3x3	r;+	for(int i=0;i<3;++i) r[i]=a[i]-b[i];+	return(r);+}+//+static inline btMatrix3x3	Mul(const btMatrix3x3& a,+								btScalar b)+{+	btMatrix3x3	r;+	for(int i=0;i<3;++i) r[i]=a[i]*b;+	return(r);+}+//+static inline void			Orthogonalize(btMatrix3x3& m)+{+	m[2]=btCross(m[0],m[1]).normalized();+	m[1]=btCross(m[2],m[0]).normalized();+	m[0]=btCross(m[1],m[2]).normalized();+}+//+static inline btMatrix3x3	MassMatrix(btScalar im,const btMatrix3x3& iwi,const btVector3& r)+{+	const btMatrix3x3	cr=Cross(r);+	return(Sub(Diagonal(im),cr*iwi*cr));+}++//+static inline btMatrix3x3	ImpulseMatrix(	btScalar dt,+										  btScalar ima,+										  btScalar imb,+										  const btMatrix3x3& iwi,+										  const btVector3& r)+{+	return(Diagonal(1/dt)*Add(Diagonal(ima),MassMatrix(imb,iwi,r)).inverse());+}++//+static inline btMatrix3x3	ImpulseMatrix(	btScalar ima,const btMatrix3x3& iia,const btVector3& ra,+										  btScalar imb,const btMatrix3x3& iib,const btVector3& rb)	+{+	return(Add(MassMatrix(ima,iia,ra),MassMatrix(imb,iib,rb)).inverse());+}++//+static inline btMatrix3x3	AngularImpulseMatrix(	const btMatrix3x3& iia,+												 const btMatrix3x3& iib)+{+	return(Add(iia,iib).inverse());+}++//+static inline btVector3		ProjectOnAxis(	const btVector3& v,+										  const btVector3& a)+{+	return(a*btDot(v,a));+}+//+static inline btVector3		ProjectOnPlane(	const btVector3& v,+										   const btVector3& a)+{+	return(v-ProjectOnAxis(v,a));+}++//+static inline void			ProjectOrigin(	const btVector3& a,+										  const btVector3& b,+										  btVector3& prj,+										  btScalar& sqd)+{+	const btVector3	d=b-a;+	const btScalar	m2=d.length2();+	if(m2>SIMD_EPSILON)+	{	+		const btScalar	t=Clamp<btScalar>(-btDot(a,d)/m2,0,1);+		const btVector3	p=a+d*t;+		const btScalar	l2=p.length2();+		if(l2<sqd)+		{+			prj=p;+			sqd=l2;+		}+	}+}+//+static inline void			ProjectOrigin(	const btVector3& a,+										  const btVector3& b,+										  const btVector3& c,+										  btVector3& prj,+										  btScalar& sqd)+{+	const btVector3&	q=btCross(b-a,c-a);+	const btScalar		m2=q.length2();+	if(m2>SIMD_EPSILON)+	{+		const btVector3	n=q/btSqrt(m2);+		const btScalar	k=btDot(a,n);+		const btScalar	k2=k*k;+		if(k2<sqd)+		{+			const btVector3	p=n*k;+			if(	(btDot(btCross(a-p,b-p),q)>0)&&+				(btDot(btCross(b-p,c-p),q)>0)&&+				(btDot(btCross(c-p,a-p),q)>0))+			{			+				prj=p;+				sqd=k2;+			}+			else+			{+				ProjectOrigin(a,b,prj,sqd);+				ProjectOrigin(b,c,prj,sqd);+				ProjectOrigin(c,a,prj,sqd);+			}+		}+	}+}++//+template <typename T>+static inline T				BaryEval(		const T& a,+									 const T& b,+									 const T& c,+									 const btVector3& coord)+{+	return(a*coord.x()+b*coord.y()+c*coord.z());+}+//+static inline btVector3		BaryCoord(	const btVector3& a,+									  const btVector3& b,+									  const btVector3& c,+									  const btVector3& p)+{+	const btScalar	w[]={	btCross(a-p,b-p).length(),+		btCross(b-p,c-p).length(),+		btCross(c-p,a-p).length()};+	const btScalar	isum=1/(w[0]+w[1]+w[2]);+	return(btVector3(w[1]*isum,w[2]*isum,w[0]*isum));+}++//+static btScalar				ImplicitSolve(	btSoftBody::ImplicitFn* fn,+										  const btVector3& a,+										  const btVector3& b,+										  const btScalar accuracy,+										  const int maxiterations=256)+{+	btScalar	span[2]={0,1};+	btScalar	values[2]={fn->Eval(a),fn->Eval(b)};+	if(values[0]>values[1])+	{+		btSwap(span[0],span[1]);+		btSwap(values[0],values[1]);+	}+	if(values[0]>-accuracy) return(-1);+	if(values[1]<+accuracy) return(-1);+	for(int i=0;i<maxiterations;++i)+	{+		const btScalar	t=Lerp(span[0],span[1],values[0]/(values[0]-values[1]));+		const btScalar	v=fn->Eval(Lerp(a,b,t));+		if((t<=0)||(t>=1))		break;+		if(btFabs(v)<accuracy)	return(t);+		if(v<0)+		{ span[0]=t;values[0]=v; }+		else+		{ span[1]=t;values[1]=v; }+	}+	return(-1);+}++//+static inline btVector3		NormalizeAny(const btVector3& v)+{+	const btScalar l=v.length();+	if(l>SIMD_EPSILON)+		return(v/l);+	else+		return(btVector3(0,0,0));+}++//+static inline btDbvtVolume	VolumeOf(	const btSoftBody::Face& f,+									 btScalar margin)+{+	const btVector3*	pts[]={	&f.m_n[0]->m_x,+		&f.m_n[1]->m_x,+		&f.m_n[2]->m_x};+	btDbvtVolume		vol=btDbvtVolume::FromPoints(pts,3);+	vol.Expand(btVector3(margin,margin,margin));+	return(vol);+}++//+static inline btVector3			CenterOf(	const btSoftBody::Face& f)+{+	return((f.m_n[0]->m_x+f.m_n[1]->m_x+f.m_n[2]->m_x)/3);+}++//+static inline btScalar			AreaOf(		const btVector3& x0,+									   const btVector3& x1,+									   const btVector3& x2)+{+	const btVector3	a=x1-x0;+	const btVector3	b=x2-x0;+	const btVector3	cr=btCross(a,b);+	const btScalar	area=cr.length();+	return(area);+}++//+static inline btScalar		VolumeOf(	const btVector3& x0,+									 const btVector3& x1,+									 const btVector3& x2,+									 const btVector3& x3)+{+	const btVector3	a=x1-x0;+	const btVector3	b=x2-x0;+	const btVector3	c=x3-x0;+	return(btDot(a,btCross(b,c)));+}++//+static void					EvaluateMedium(	const btSoftBodyWorldInfo* wfi,+										   const btVector3& x,+										   btSoftBody::sMedium& medium)+{+	medium.m_velocity	=	btVector3(0,0,0);+	medium.m_pressure	=	0;+	medium.m_density	=	wfi->air_density;+	if(wfi->water_density>0)+	{+		const btScalar	depth=-(btDot(x,wfi->water_normal)+wfi->water_offset);+		if(depth>0)+		{+			medium.m_density	=	wfi->water_density;+			medium.m_pressure	=	depth*wfi->water_density*wfi->m_gravity.length();+		}+	}+}++//+static inline void			ApplyClampedForce(	btSoftBody::Node& n,+											  const btVector3& f,+											  btScalar dt)+{+	const btScalar	dtim=dt*n.m_im;+	if((f*dtim).length2()>n.m_v.length2())+	{/* Clamp	*/ +		n.m_f-=ProjectOnAxis(n.m_v,f.normalized())/dtim;						+	}+	else+	{/* Apply	*/ +		n.m_f+=f;+	}+}++//+static inline int		MatchEdge(	const btSoftBody::Node* a,+								  const btSoftBody::Node* b,+								  const btSoftBody::Node* ma,+								  const btSoftBody::Node* mb)+{+	if((a==ma)&&(b==mb)) return(0);+	if((a==mb)&&(b==ma)) return(1);+	return(-1);+}++//+// btEigen : Extract eigen system,+// straitforward implementation of http://math.fullerton.edu/mathews/n2003/JacobiMethodMod.html+// outputs are NOT sorted.+//+struct	btEigen+{+	static int			system(btMatrix3x3& a,btMatrix3x3* vectors,btVector3* values=0)+	{+		static const int		maxiterations=16;+		static const btScalar	accuracy=(btScalar)0.0001;+		btMatrix3x3&			v=*vectors;+		int						iterations=0;+		vectors->setIdentity();+		do	{+			int				p=0,q=1;+			if(btFabs(a[p][q])<btFabs(a[0][2])) { p=0;q=2; }+			if(btFabs(a[p][q])<btFabs(a[1][2])) { p=1;q=2; }+			if(btFabs(a[p][q])>accuracy)+			{+				const btScalar	w=(a[q][q]-a[p][p])/(2*a[p][q]);+				const btScalar	z=btFabs(w);+				const btScalar	t=w/(z*(btSqrt(1+w*w)+z));+				if(t==t)/* [WARNING] let hope that one does not get thrown aways by some compilers... */ +				{+					const btScalar	c=1/btSqrt(t*t+1);+					const btScalar	s=c*t;+					mulPQ(a,c,s,p,q);+					mulTPQ(a,c,s,p,q);+					mulPQ(v,c,s,p,q);+				} else break;+			} else break;+		} while((++iterations)<maxiterations);+		if(values)+		{+			*values=btVector3(a[0][0],a[1][1],a[2][2]);+		}+		return(iterations);+	}+private:+	static inline void	mulTPQ(btMatrix3x3& a,btScalar c,btScalar s,int p,int q)+	{+		const btScalar	m[2][3]={	{a[p][0],a[p][1],a[p][2]},+		{a[q][0],a[q][1],a[q][2]}};+		int i;++		for(i=0;i<3;++i) a[p][i]=c*m[0][i]-s*m[1][i];+		for(i=0;i<3;++i) a[q][i]=c*m[1][i]+s*m[0][i];+	}+	static inline void	mulPQ(btMatrix3x3& a,btScalar c,btScalar s,int p,int q)+	{+		const btScalar	m[2][3]={	{a[0][p],a[1][p],a[2][p]},+		{a[0][q],a[1][q],a[2][q]}};+		int i;++		for(i=0;i<3;++i) a[i][p]=c*m[0][i]-s*m[1][i];+		for(i=0;i<3;++i) a[i][q]=c*m[1][i]+s*m[0][i];+	}+};++//+// Polar decomposition,+// "Computing the Polar Decomposition with Applications", Nicholas J. Higham, 1986.+//+static inline int			PolarDecompose(	const btMatrix3x3& m,btMatrix3x3& q,btMatrix3x3& s)+{+	static const btScalar	half=(btScalar)0.5;+	static const btScalar	accuracy=(btScalar)0.0001;+	static const int		maxiterations=16;+	int						i=0;+	btScalar				det=0;+	q	=	Mul(m,1/btVector3(m[0][0],m[1][1],m[2][2]).length());+	det	=	q.determinant();+	if(!btFuzzyZero(det))+	{+		for(;i<maxiterations;++i)+		{+			q=Mul(Add(q,Mul(q.adjoint(),1/det).transpose()),half);+			const btScalar	ndet=q.determinant();+			if(Sq(ndet-det)>accuracy) det=ndet; else break;+		}+		/* Final orthogonalization	*/ +		Orthogonalize(q);+		/* Compute 'S'				*/ +		s=q.transpose()*m;+	}+	else+	{+		q.setIdentity();+		s.setIdentity();+	}+	return(i);+}++//+// btSoftColliders+//+struct btSoftColliders+{+	//+	// ClusterBase+	//+	struct	ClusterBase : btDbvt::ICollide+	{+		btScalar			erp;+		btScalar			idt;+		btScalar			m_margin;+		btScalar			friction;+		btScalar			threshold;+		ClusterBase()+		{+			erp			=(btScalar)1;+			idt			=0;+			m_margin		=0;+			friction	=0;+			threshold	=(btScalar)0;+		}+		bool				SolveContact(	const btGjkEpaSolver2::sResults& res,+			btSoftBody::Body ba,btSoftBody::Body bb,+			btSoftBody::CJoint& joint)+		{+			if(res.distance<m_margin)+			{+				btVector3 norm = res.normal;+				norm.normalize();//is it necessary?++				const btVector3		ra=res.witnesses[0]-ba.xform().getOrigin();+				const btVector3		rb=res.witnesses[1]-bb.xform().getOrigin();+				const btVector3		va=ba.velocity(ra);+				const btVector3		vb=bb.velocity(rb);+				const btVector3		vrel=va-vb;+				const btScalar		rvac=btDot(vrel,norm);+				 btScalar		depth=res.distance-m_margin;+				+//				printf("depth=%f\n",depth);+				const btVector3		iv=norm*rvac;+				const btVector3		fv=vrel-iv;+				joint.m_bodies[0]	=	ba;+				joint.m_bodies[1]	=	bb;+				joint.m_refs[0]		=	ra*ba.xform().getBasis();+				joint.m_refs[1]		=	rb*bb.xform().getBasis();+				joint.m_rpos[0]		=	ra;+				joint.m_rpos[1]		=	rb;+				joint.m_cfm			=	1;+				joint.m_erp			=	1;+				joint.m_life		=	0;+				joint.m_maxlife		=	0;+				joint.m_split		=	1;+				+				joint.m_drift		=	depth*norm;++				joint.m_normal		=	norm;+//				printf("normal=%f,%f,%f\n",res.normal.getX(),res.normal.getY(),res.normal.getZ());+				joint.m_delete		=	false;+				joint.m_friction	=	fv.length2()<(-rvac*friction)?1:friction;+				joint.m_massmatrix	=	ImpulseMatrix(	ba.invMass(),ba.invWorldInertia(),joint.m_rpos[0],+					bb.invMass(),bb.invWorldInertia(),joint.m_rpos[1]);++				return(true);+			}+			return(false);+		}+	};+	//+	// CollideCL_RS+	//+	struct	CollideCL_RS : ClusterBase+	{+		btSoftBody*		psb;+		+		btCollisionObject*	m_colObj;+		void		Process(const btDbvtNode* leaf)+		{+			btSoftBody::Cluster*		cluster=(btSoftBody::Cluster*)leaf->data;+			btSoftClusterCollisionShape	cshape(cluster);+			+			const btConvexShape*		rshape=(const btConvexShape*)m_colObj->getCollisionShape();++			///don't collide an anchored cluster with a static/kinematic object+			if(m_colObj->isStaticOrKinematicObject() && cluster->m_containsAnchor)+				return;++			btGjkEpaSolver2::sResults	res;		+			if(btGjkEpaSolver2::SignedDistance(	&cshape,btTransform::getIdentity(),+				rshape,m_colObj->getWorldTransform(),+				btVector3(1,0,0),res))+			{+				btSoftBody::CJoint	joint;+				if(SolveContact(res,cluster,m_colObj,joint))//prb,joint))+				{+					btSoftBody::CJoint*	pj=new(btAlignedAlloc(sizeof(btSoftBody::CJoint),16)) btSoftBody::CJoint();+					*pj=joint;psb->m_joints.push_back(pj);+					if(m_colObj->isStaticOrKinematicObject())+					{+						pj->m_erp	*=	psb->m_cfg.kSKHR_CL;+						pj->m_split	*=	psb->m_cfg.kSK_SPLT_CL;+					}+					else+					{+						pj->m_erp	*=	psb->m_cfg.kSRHR_CL;+						pj->m_split	*=	psb->m_cfg.kSR_SPLT_CL;+					}+				}+			}+		}+		void		Process(btSoftBody* ps,btCollisionObject* colOb)+		{+			psb			=	ps;+			m_colObj			=	colOb;+			idt			=	ps->m_sst.isdt;+			m_margin		=	m_colObj->getCollisionShape()->getMargin()+psb->getCollisionShape()->getMargin();+			///Bullet rigid body uses multiply instead of minimum to determine combined friction. Some customization would be useful.+			friction	=	btMin(psb->m_cfg.kDF,m_colObj->getFriction());+			btVector3			mins;+			btVector3			maxs;++			ATTRIBUTE_ALIGNED16(btDbvtVolume)		volume;+			colOb->getCollisionShape()->getAabb(colOb->getWorldTransform(),mins,maxs);+			volume=btDbvtVolume::FromMM(mins,maxs);+			volume.Expand(btVector3(1,1,1)*m_margin);+			ps->m_cdbvt.collideTV(ps->m_cdbvt.m_root,volume,*this);+		}	+	};+	//+	// CollideCL_SS+	//+	struct	CollideCL_SS : ClusterBase+	{+		btSoftBody*	bodies[2];+		void		Process(const btDbvtNode* la,const btDbvtNode* lb)+		{+			btSoftBody::Cluster*		cla=(btSoftBody::Cluster*)la->data;+			btSoftBody::Cluster*		clb=(btSoftBody::Cluster*)lb->data;+++			bool connected=false;+			if ((bodies[0]==bodies[1])&&(bodies[0]->m_clusterConnectivity.size()))+			{+				connected = bodies[0]->m_clusterConnectivity[cla->m_clusterIndex+bodies[0]->m_clusters.size()*clb->m_clusterIndex];+			}++			if (!connected)+			{+				btSoftClusterCollisionShape	csa(cla);+				btSoftClusterCollisionShape	csb(clb);+				btGjkEpaSolver2::sResults	res;		+				if(btGjkEpaSolver2::SignedDistance(	&csa,btTransform::getIdentity(),+					&csb,btTransform::getIdentity(),+					cla->m_com-clb->m_com,res))+				{+					btSoftBody::CJoint	joint;+					if(SolveContact(res,cla,clb,joint))+					{+						btSoftBody::CJoint*	pj=new(btAlignedAlloc(sizeof(btSoftBody::CJoint),16)) btSoftBody::CJoint();+						*pj=joint;bodies[0]->m_joints.push_back(pj);+						pj->m_erp	*=	btMax(bodies[0]->m_cfg.kSSHR_CL,bodies[1]->m_cfg.kSSHR_CL);+						pj->m_split	*=	(bodies[0]->m_cfg.kSS_SPLT_CL+bodies[1]->m_cfg.kSS_SPLT_CL)/2;+					}+				}+			} else+			{+				static int count=0;+				count++;+				//printf("count=%d\n",count);+				+			}+		}+		void		Process(btSoftBody* psa,btSoftBody* psb)+		{+			idt			=	psa->m_sst.isdt;+			//m_margin		=	(psa->getCollisionShape()->getMargin()+psb->getCollisionShape()->getMargin())/2;+			m_margin		=	(psa->getCollisionShape()->getMargin()+psb->getCollisionShape()->getMargin());+			friction	=	btMin(psa->m_cfg.kDF,psb->m_cfg.kDF);+			bodies[0]	=	psa;+			bodies[1]	=	psb;+			psa->m_cdbvt.collideTT(psa->m_cdbvt.m_root,psb->m_cdbvt.m_root,*this);+		}	+	};+	//+	// CollideSDF_RS+	//+	struct	CollideSDF_RS : btDbvt::ICollide+	{+		void		Process(const btDbvtNode* leaf)+		{+			btSoftBody::Node*	node=(btSoftBody::Node*)leaf->data;+			DoNode(*node);+		}+		void		DoNode(btSoftBody::Node& n) const+		{+			const btScalar			m=n.m_im>0?dynmargin:stamargin;+			btSoftBody::RContact	c;+			if(	(!n.m_battach)&&+				psb->checkContact(m_colObj1,n.m_x,m,c.m_cti))+			{+				const btScalar	ima=n.m_im;+				const btScalar	imb= m_rigidBody? m_rigidBody->getInvMass() : 0.f;+				const btScalar	ms=ima+imb;+				if(ms>0)+				{+					const btTransform&	wtr=m_rigidBody?m_rigidBody->getWorldTransform() : m_colObj1->getWorldTransform();+					static const btMatrix3x3	iwiStatic(0,0,0,0,0,0,0,0,0);+					const btMatrix3x3&	iwi=m_rigidBody?m_rigidBody->getInvInertiaTensorWorld() : iwiStatic;+					const btVector3		ra=n.m_x-wtr.getOrigin();+					const btVector3		va=m_rigidBody ? m_rigidBody->getVelocityInLocalPoint(ra)*psb->m_sst.sdt : btVector3(0,0,0);+					const btVector3		vb=n.m_x-n.m_q;	+					const btVector3		vr=vb-va;+					const btScalar		dn=btDot(vr,c.m_cti.m_normal);+					const btVector3		fv=vr-c.m_cti.m_normal*dn;+					const btScalar		fc=psb->m_cfg.kDF*m_colObj1->getFriction();+					c.m_node	=	&n;+					c.m_c0		=	ImpulseMatrix(psb->m_sst.sdt,ima,imb,iwi,ra);+					c.m_c1		=	ra;+					c.m_c2		=	ima*psb->m_sst.sdt;+					c.m_c3		=	fv.length2()<(btFabs(dn)*fc)?0:1-fc;+					c.m_c4		=	m_colObj1->isStaticOrKinematicObject()?psb->m_cfg.kKHR:psb->m_cfg.kCHR;+					psb->m_rcontacts.push_back(c);+					if (m_rigidBody)+						m_rigidBody->activate();+				}+			}+		}+		btSoftBody*		psb;+		btCollisionObject*	m_colObj1;+		btRigidBody*	m_rigidBody;+		btScalar		dynmargin;+		btScalar		stamargin;+	};+	//+	// CollideVF_SS+	//+	struct	CollideVF_SS : btDbvt::ICollide+	{+		void		Process(const btDbvtNode* lnode,+			const btDbvtNode* lface)+		{+			btSoftBody::Node*	node=(btSoftBody::Node*)lnode->data;+			btSoftBody::Face*	face=(btSoftBody::Face*)lface->data;+			btVector3			o=node->m_x;+			btVector3			p;+			btScalar			d=SIMD_INFINITY;+			ProjectOrigin(	face->m_n[0]->m_x-o,+				face->m_n[1]->m_x-o,+				face->m_n[2]->m_x-o,+				p,d);+			const btScalar	m=mrg+(o-node->m_q).length()*2;+			if(d<(m*m))+			{+				const btSoftBody::Node*	n[]={face->m_n[0],face->m_n[1],face->m_n[2]};+				const btVector3			w=BaryCoord(n[0]->m_x,n[1]->m_x,n[2]->m_x,p+o);+				const btScalar			ma=node->m_im;+				btScalar				mb=BaryEval(n[0]->m_im,n[1]->m_im,n[2]->m_im,w);+				if(	(n[0]->m_im<=0)||+					(n[1]->m_im<=0)||+					(n[2]->m_im<=0))+				{+					mb=0;+				}+				const btScalar	ms=ma+mb;+				if(ms>0)+				{+					btSoftBody::SContact	c;+					c.m_normal		=	p/-btSqrt(d);+					c.m_margin		=	m;+					c.m_node		=	node;+					c.m_face		=	face;+					c.m_weights		=	w;+					c.m_friction	=	btMax(psb[0]->m_cfg.kDF,psb[1]->m_cfg.kDF);+					c.m_cfm[0]		=	ma/ms*psb[0]->m_cfg.kSHR;+					c.m_cfm[1]		=	mb/ms*psb[1]->m_cfg.kSHR;+					psb[0]->m_scontacts.push_back(c);+				}+			}	+		}+		btSoftBody*		psb[2];+		btScalar		mrg;+	};+};++#endif //_BT_SOFT_BODY_INTERNALS_H
+ bullet/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h view
@@ -0,0 +1,48 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_SOFTBODY_RIGIDBODY_COLLISION_CONFIGURATION+#define BT_SOFTBODY_RIGIDBODY_COLLISION_CONFIGURATION++#include "BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h"++class btVoronoiSimplexSolver;+class btGjkEpaPenetrationDepthSolver;+++///btSoftBodyRigidBodyCollisionConfiguration add softbody interaction on top of btDefaultCollisionConfiguration+class	btSoftBodyRigidBodyCollisionConfiguration : public btDefaultCollisionConfiguration+{++	//default CreationFunctions, filling the m_doubleDispatch table+	btCollisionAlgorithmCreateFunc*	m_softSoftCreateFunc;+	btCollisionAlgorithmCreateFunc*	m_softRigidConvexCreateFunc;+	btCollisionAlgorithmCreateFunc*	m_swappedSoftRigidConvexCreateFunc;+	btCollisionAlgorithmCreateFunc*	m_softRigidConcaveCreateFunc;+	btCollisionAlgorithmCreateFunc*	m_swappedSoftRigidConcaveCreateFunc;++public:++	btSoftBodyRigidBodyCollisionConfiguration(const btDefaultCollisionConstructionInfo& constructionInfo = btDefaultCollisionConstructionInfo());++	virtual ~btSoftBodyRigidBodyCollisionConfiguration();++	///creation of soft-soft and soft-rigid, and otherwise fallback to base class implementation+	virtual btCollisionAlgorithmCreateFunc* getCollisionAlgorithmCreateFunc(int proxyType0,int proxyType1);++};++#endif //BT_SOFTBODY_RIGIDBODY_COLLISION_CONFIGURATION+
+ bullet/BulletSoftBody/btSoftBodySolverVertexBuffer.h view
@@ -0,0 +1,165 @@+/*
+Bullet Continuous Collision Detection and Physics Library
+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+Permission is granted to anyone to use this software for any purpose, 
+including commercial applications, and to alter it and redistribute it freely, 
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+*/
+
+#ifndef BT_SOFT_BODY_SOLVER_VERTEX_BUFFER_H
+#define BT_SOFT_BODY_SOLVER_VERTEX_BUFFER_H
+
+
+class btVertexBufferDescriptor
+{
+public:
+	enum BufferTypes
+	{
+		CPU_BUFFER,
+		DX11_BUFFER,
+		OPENGL_BUFFER
+	};
+
+protected:	
+
+	bool m_hasVertexPositions;
+	bool m_hasNormals;
+
+	int m_vertexOffset;
+	int m_vertexStride;
+
+	int m_normalOffset;
+	int m_normalStride;
+
+public:
+	btVertexBufferDescriptor()
+	{
+		m_hasVertexPositions = false;
+		m_hasNormals = false;
+		m_vertexOffset = 0;
+		m_vertexStride = 0;
+		m_normalOffset = 0;
+		m_normalStride = 0;
+	}
+
+	virtual ~btVertexBufferDescriptor()
+	{
+
+	}
+
+	virtual bool hasVertexPositions() const
+	{
+		return m_hasVertexPositions;
+	}
+
+	virtual bool hasNormals() const
+	{
+		return m_hasNormals;
+	}
+
+	/**
+	 * Return the type of the vertex buffer descriptor.
+	 */
+	virtual BufferTypes getBufferType() const = 0;
+
+	/**
+	 * Return the vertex offset in floats from the base pointer.
+	 */
+	virtual int getVertexOffset() const
+	{
+		return m_vertexOffset;
+	}
+
+	/**
+	 * Return the vertex stride in number of floats between vertices.
+	 */
+	virtual int getVertexStride() const
+	{
+		return m_vertexStride;
+	}
+
+	/**
+	 * Return the vertex offset in floats from the base pointer.
+	 */
+	virtual int getNormalOffset() const
+	{
+		return m_normalOffset;
+	}
+
+	/**
+	 * Return the vertex stride in number of floats between vertices.
+	 */
+	virtual int getNormalStride() const
+	{
+		return m_normalStride;
+	}
+};
+
+
+class btCPUVertexBufferDescriptor : public btVertexBufferDescriptor
+{
+protected:
+	float *m_basePointer;
+
+public:
+	/**
+	 * vertexBasePointer is pointer to beginning of the buffer.
+	 * vertexOffset is the offset in floats to the first vertex.
+	 * vertexStride is the stride in floats between vertices.
+	 */
+	btCPUVertexBufferDescriptor( float *basePointer, int vertexOffset, int vertexStride )
+	{
+		m_basePointer = basePointer;
+		m_vertexOffset = vertexOffset;
+		m_vertexStride = vertexStride;
+		m_hasVertexPositions = true;
+	}
+
+	/**
+	 * vertexBasePointer is pointer to beginning of the buffer.
+	 * vertexOffset is the offset in floats to the first vertex.
+	 * vertexStride is the stride in floats between vertices.
+	 */
+	btCPUVertexBufferDescriptor( float *basePointer, int vertexOffset, int vertexStride, int normalOffset, int normalStride )
+	{
+		m_basePointer = basePointer;
+
+		m_vertexOffset = vertexOffset;
+		m_vertexStride = vertexStride;
+		m_hasVertexPositions = true;
+
+		m_normalOffset = normalOffset;
+		m_normalStride = normalStride;
+		m_hasNormals = true;
+	}
+
+	virtual ~btCPUVertexBufferDescriptor()
+	{
+
+	}
+
+	/**
+	 * Return the type of the vertex buffer descriptor.
+	 */
+	virtual BufferTypes getBufferType() const
+	{
+		return CPU_BUFFER;
+	}
+
+	/**
+	 * Return the base pointer in memory to the first vertex.
+	 */
+	virtual float *getBasePointer() const
+	{
+		return m_basePointer;
+	}
+};
+
+#endif // #ifndef BT_SOFT_BODY_SOLVER_VERTEX_BUFFER_H
+ bullet/BulletSoftBody/btSoftBodySolvers.h view
@@ -0,0 +1,154 @@+/*
+Bullet Continuous Collision Detection and Physics Library
+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+Permission is granted to anyone to use this software for any purpose, 
+including commercial applications, and to alter it and redistribute it freely, 
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+*/
+
+#ifndef BT_SOFT_BODY_SOLVERS_H
+#define BT_SOFT_BODY_SOLVERS_H
+
+#include "BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h"
+
+
+class btSoftBodyTriangleData;
+class btSoftBodyLinkData;
+class btSoftBodyVertexData;
+class btVertexBufferDescriptor;
+class btCollisionObject;
+class btSoftBody;
+
+
+class btSoftBodySolver
+{
+public:
+	enum SolverTypes
+	{
+		DEFAULT_SOLVER,
+		CPU_SOLVER,
+		CL_SOLVER,
+		CL_SIMD_SOLVER,
+		DX_SOLVER,
+		DX_SIMD_SOLVER
+	};
+
+
+protected:
+	int m_numberOfPositionIterations;
+	int m_numberOfVelocityIterations;
+	// Simulation timescale
+	float m_timeScale;
+	
+public:
+	btSoftBodySolver() :
+		m_numberOfPositionIterations( 10 ),
+		m_timeScale( 1 )
+	{
+		m_numberOfVelocityIterations = 0;
+		m_numberOfPositionIterations = 5;
+	}
+
+	virtual ~btSoftBodySolver()
+	{
+	}
+	
+	/**
+	 * Return the type of the solver.
+	 */
+	virtual SolverTypes getSolverType() const = 0;
+
+
+	/** Ensure that this solver is initialized. */
+	virtual bool checkInitialized() = 0;
+
+	/** Optimize soft bodies in this solver. */
+	virtual void optimize( btAlignedObjectArray< btSoftBody * > &softBodies , bool forceUpdate=false) = 0;
+
+	/** Copy necessary data back to the original soft body source objects. */
+	virtual void copyBackToSoftBodies() = 0;
+
+	/** Predict motion of soft bodies into next timestep */
+	virtual void predictMotion( float solverdt ) = 0;
+
+	/** Solve constraints for a set of soft bodies */
+	virtual void solveConstraints( float solverdt ) = 0;
+
+	/** Perform necessary per-step updates of soft bodies such as recomputing normals and bounding boxes */
+	virtual void updateSoftBodies() = 0;
+
+	/** Process a collision between one of the world's soft bodies and another collision object */
+	virtual void processCollision( btSoftBody *, btCollisionObject* ) = 0;
+
+	/** Process a collision between two soft bodies */
+	virtual void processCollision( btSoftBody*, btSoftBody* ) = 0;
+
+	/** Set the number of velocity constraint solver iterations this solver uses. */
+	virtual void setNumberOfPositionIterations( int iterations )
+	{
+		m_numberOfPositionIterations = iterations;
+	}
+
+	/** Get the number of velocity constraint solver iterations this solver uses. */
+	virtual int getNumberOfPositionIterations()
+	{
+		return m_numberOfPositionIterations;
+	}
+
+	/** Set the number of velocity constraint solver iterations this solver uses. */
+	virtual void setNumberOfVelocityIterations( int iterations )
+	{
+		m_numberOfVelocityIterations = iterations;
+	}
+
+	/** Get the number of velocity constraint solver iterations this solver uses. */
+	virtual int getNumberOfVelocityIterations()
+	{
+		return m_numberOfVelocityIterations;
+	}
+
+	/** Return the timescale that the simulation is using */
+	float getTimeScale()
+	{
+		return m_timeScale;
+	}
+
+#if 0
+	/**
+	 * Add a collision object to be used by the indicated softbody.
+	 */
+	virtual void addCollisionObjectForSoftBody( int clothIdentifier, btCollisionObject *collisionObject ) = 0;
+#endif
+};
+
+/** 
+ * Class to manage movement of data from a solver to a given target.
+ * This version is abstract. Subclasses will have custom pairings for different combinations.
+ */
+class btSoftBodySolverOutput
+{
+protected:
+
+public:
+	btSoftBodySolverOutput()
+	{
+	}
+
+	virtual ~btSoftBodySolverOutput()
+	{
+	}
+
+
+	/** Output current computed vertex data to the vertex buffers for all cloths in the solver. */
+	virtual void copySoftBodyToVertexBuffer( const btSoftBody * const softBody, btVertexBufferDescriptor *vertexBuffer ) = 0;
+};
+
+
+#endif // #ifndef BT_SOFT_BODY_SOLVERS_H
+ bullet/BulletSoftBody/btSoftRigidCollisionAlgorithm.h view
@@ -0,0 +1,75 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_SOFT_RIGID_COLLISION_ALGORITHM_H+#define BT_SOFT_RIGID_COLLISION_ALGORITHM_H++#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h"+#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h"+#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h"+class btPersistentManifold;+#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h"++#include "LinearMath/btVector3.h"+class btSoftBody;++/// btSoftRigidCollisionAlgorithm  provides collision detection between btSoftBody and btRigidBody+class btSoftRigidCollisionAlgorithm : public btCollisionAlgorithm+{+	//	bool	m_ownManifold;+	//	btPersistentManifold*	m_manifoldPtr;++	btSoftBody*				m_softBody;+	btCollisionObject*		m_rigidCollisionObject;++	///for rigid versus soft (instead of soft versus rigid), we use this swapped boolean+	bool	m_isSwapped;++public:++	btSoftRigidCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* col0,btCollisionObject* col1, bool isSwapped);++	virtual ~btSoftRigidCollisionAlgorithm();++	virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);++	virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);++	virtual	void	getAllContactManifolds(btManifoldArray&	manifoldArray)+	{+		//we don't add any manifolds+	}+++	struct CreateFunc :public 	btCollisionAlgorithmCreateFunc+	{+		virtual	btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1)+		{+			void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btSoftRigidCollisionAlgorithm));+			if (!m_swapped)+			{+				return new(mem) btSoftRigidCollisionAlgorithm(0,ci,body0,body1,false);+			} else+			{+				return new(mem) btSoftRigidCollisionAlgorithm(0,ci,body0,body1,true);+			}+		}+	};++};++#endif //BT_SOFT_RIGID_COLLISION_ALGORITHM_H++
+ bullet/BulletSoftBody/btSoftRigidDynamicsWorld.h view
@@ -0,0 +1,107 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_SOFT_RIGID_DYNAMICS_WORLD_H+#define BT_SOFT_RIGID_DYNAMICS_WORLD_H++#include "BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h"+#include "btSoftBody.h"++typedef	btAlignedObjectArray<btSoftBody*> btSoftBodyArray;++class btSoftBodySolver;++class btSoftRigidDynamicsWorld : public btDiscreteDynamicsWorld+{++	btSoftBodyArray	m_softBodies;+	int				m_drawFlags;+	bool			m_drawNodeTree;+	bool			m_drawFaceTree;+	bool			m_drawClusterTree;+	btSoftBodyWorldInfo m_sbi;+	///Solver classes that encapsulate multiple soft bodies for solving+	btSoftBodySolver *m_softBodySolver;+	bool			m_ownsSolver;++protected:++	virtual void	predictUnconstraintMotion(btScalar timeStep);++	virtual void	internalSingleStepSimulation( btScalar timeStep);++	void	solveSoftBodiesConstraints( btScalar timeStep );++	void	serializeSoftBodies(btSerializer* serializer);++public:++	btSoftRigidDynamicsWorld(btDispatcher* dispatcher,btBroadphaseInterface* pairCache,btConstraintSolver* constraintSolver, btCollisionConfiguration* collisionConfiguration, btSoftBodySolver *softBodySolver = 0 );++	virtual ~btSoftRigidDynamicsWorld();++	virtual void	debugDrawWorld();++	void	addSoftBody(btSoftBody* body,short int collisionFilterGroup=btBroadphaseProxy::DefaultFilter,short int collisionFilterMask=btBroadphaseProxy::AllFilter);++	void	removeSoftBody(btSoftBody* body);++	///removeCollisionObject will first check if it is a rigid body, if so call removeRigidBody otherwise call btDiscreteDynamicsWorld::removeCollisionObject+	virtual void	removeCollisionObject(btCollisionObject* collisionObject);++	int		getDrawFlags() const { return(m_drawFlags); }+	void	setDrawFlags(int f)	{ m_drawFlags=f; }++	btSoftBodyWorldInfo&	getWorldInfo()+	{+		return m_sbi;+	}+	const btSoftBodyWorldInfo&	getWorldInfo() const+	{+		return m_sbi;+	}++	virtual btDynamicsWorldType	getWorldType() const+	{+		return	BT_SOFT_RIGID_DYNAMICS_WORLD;+	}++	btSoftBodyArray& getSoftBodyArray()+	{+		return m_softBodies;+	}++	const btSoftBodyArray& getSoftBodyArray() const+	{+		return m_softBodies;+	}+++	virtual void rayTest(const btVector3& rayFromWorld, const btVector3& rayToWorld, RayResultCallback& resultCallback) const; ++	/// rayTestSingle performs a raycast call and calls the resultCallback. It is used internally by rayTest.+	/// In a future implementation, we consider moving the ray test as a virtual method in btCollisionShape.+	/// This allows more customization.+	static void	rayTestSingle(const btTransform& rayFromTrans,const btTransform& rayToTrans,+					  btCollisionObject* collisionObject,+					  const btCollisionShape* collisionShape,+					  const btTransform& colObjWorldTransform,+					  RayResultCallback& resultCallback);++	virtual	void	serialize(btSerializer* serializer);++};++#endif //BT_SOFT_RIGID_DYNAMICS_WORLD_H
+ bullet/BulletSoftBody/btSoftSoftCollisionAlgorithm.h view
@@ -0,0 +1,69 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_SOFT_SOFT_COLLISION_ALGORITHM_H+#define BT_SOFT_SOFT_COLLISION_ALGORITHM_H++#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h"+#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h"+#include "BulletCollision/BroadphaseCollision/btDispatcher.h"+#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h"++class btPersistentManifold;+class btSoftBody;++///collision detection between two btSoftBody shapes+class btSoftSoftCollisionAlgorithm : public btCollisionAlgorithm+{+	bool	m_ownManifold;+	btPersistentManifold*	m_manifoldPtr;++	btSoftBody*	m_softBody0;+	btSoftBody*	m_softBody1;+++public:+	btSoftSoftCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci)+		: btCollisionAlgorithm(ci) {}++	virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);++	virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);++	virtual	void	getAllContactManifolds(btManifoldArray&	manifoldArray)+	{+		if (m_manifoldPtr && m_ownManifold)+			manifoldArray.push_back(m_manifoldPtr);+	}++	btSoftSoftCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1);++	virtual ~btSoftSoftCollisionAlgorithm();++	struct CreateFunc :public 	btCollisionAlgorithmCreateFunc+	{+		virtual	btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1)+		{+			int bbsize = sizeof(btSoftSoftCollisionAlgorithm);+			void* ptr = ci.m_dispatcher1->allocateCollisionAlgorithm(bbsize);+			return new(ptr) btSoftSoftCollisionAlgorithm(0,ci,body0,body1);+		}+	};++};++#endif //BT_SOFT_SOFT_COLLISION_ALGORITHM_H++
+ bullet/BulletSoftBody/btSparseSDF.h view
@@ -0,0 +1,306 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose,+including commercial applications, and to alter it and redistribute it freely,+subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+///btSparseSdf implementation by Nathanael Presson++#ifndef BT_SPARSE_SDF_H+#define BT_SPARSE_SDF_H++#include "BulletCollision/CollisionDispatch/btCollisionObject.h"+#include "BulletCollision/NarrowPhaseCollision/btGjkEpa2.h"++// Modified Paul Hsieh hash+template <const int DWORDLEN>+unsigned int HsiehHash(const void* pdata)+{+	const unsigned short*	data=(const unsigned short*)pdata;+	unsigned				hash=DWORDLEN<<2,tmp;+	for(int i=0;i<DWORDLEN;++i)+	{+		hash	+=	data[0];+		tmp		=	(data[1]<<11)^hash;+		hash	=	(hash<<16)^tmp;+		data	+=	2;+		hash	+=	hash>>11;+	}+	hash^=hash<<3;hash+=hash>>5;+	hash^=hash<<4;hash+=hash>>17;+	hash^=hash<<25;hash+=hash>>6;+	return(hash);+}++template <const int CELLSIZE>+struct	btSparseSdf+{+	//+	// Inner types+	//+	struct IntFrac+	{+		int					b;+		int					i;+		btScalar			f;+	};+	struct	Cell+	{+		btScalar			d[CELLSIZE+1][CELLSIZE+1][CELLSIZE+1];+		int					c[3];+		int					puid;+		unsigned			hash;+		btCollisionShape*	pclient;+		Cell*				next;+	};+	//+	// Fields+	//++	btAlignedObjectArray<Cell*>		cells;	+	btScalar						voxelsz;+	int								puid;+	int								ncells;+	int								nprobes;+	int								nqueries;	++	//+	// Methods+	//++	//+	void					Initialize(int hashsize=2383)+	{+		cells.resize(hashsize,0);+		Reset();		+	}+	//+	void					Reset()+	{+		for(int i=0,ni=cells.size();i<ni;++i)+		{+			Cell*	pc=cells[i];+			cells[i]=0;+			while(pc)+			{+				Cell*	pn=pc->next;+				delete pc;+				pc=pn;+			}+		}+		voxelsz		=0.25;+		puid		=0;+		ncells		=0;+		nprobes		=1;+		nqueries	=1;+	}+	//+	void					GarbageCollect(int lifetime=256)+	{+		const int life=puid-lifetime;+		for(int i=0;i<cells.size();++i)+		{+			Cell*&	root=cells[i];+			Cell*	pp=0;+			Cell*	pc=root;+			while(pc)+			{+				Cell*	pn=pc->next;+				if(pc->puid<life)+				{+					if(pp) pp->next=pn; else root=pn;+					delete pc;pc=pp;--ncells;+				}+				pp=pc;pc=pn;+			}+		}+		//printf("GC[%d]: %d cells, PpQ: %f\r\n",puid,ncells,nprobes/(btScalar)nqueries);+		nqueries=1;+		nprobes=1;+		++puid;	///@todo: Reset puid's when int range limit is reached	*/ +		/* else setup a priority list...						*/ +	}+	//+	int						RemoveReferences(btCollisionShape* pcs)+	{+		int	refcount=0;+		for(int i=0;i<cells.size();++i)+		{+			Cell*&	root=cells[i];+			Cell*	pp=0;+			Cell*	pc=root;+			while(pc)+			{+				Cell*	pn=pc->next;+				if(pc->pclient==pcs)+				{+					if(pp) pp->next=pn; else root=pn;+					delete pc;pc=pp;++refcount;+				}+				pp=pc;pc=pn;+			}+		}+		return(refcount);+	}+	//+	btScalar				Evaluate(	const btVector3& x,+		btCollisionShape* shape,+		btVector3& normal,+		btScalar margin)+	{+		/* Lookup cell			*/ +		const btVector3	scx=x/voxelsz;+		const IntFrac	ix=Decompose(scx.x());+		const IntFrac	iy=Decompose(scx.y());+		const IntFrac	iz=Decompose(scx.z());+		const unsigned	h=Hash(ix.b,iy.b,iz.b,shape);+		Cell*&			root=cells[static_cast<int>(h%cells.size())];+		Cell*			c=root;+		++nqueries;+		while(c)+		{+			++nprobes;+			if(	(c->hash==h)	&&+				(c->c[0]==ix.b)	&&+				(c->c[1]==iy.b)	&&+				(c->c[2]==iz.b)	&&+				(c->pclient==shape))+			{ break; }+			else+			{ c=c->next; }+		}+		if(!c)+		{+			++nprobes;		+			++ncells;+			c=new Cell();+			c->next=root;root=c;+			c->pclient=shape;+			c->hash=h;+			c->c[0]=ix.b;c->c[1]=iy.b;c->c[2]=iz.b;+			BuildCell(*c);+		}+		c->puid=puid;+		/* Extract infos		*/ +		const int		o[]={	ix.i,iy.i,iz.i};+		const btScalar	d[]={	c->d[o[0]+0][o[1]+0][o[2]+0],+			c->d[o[0]+1][o[1]+0][o[2]+0],+			c->d[o[0]+1][o[1]+1][o[2]+0],+			c->d[o[0]+0][o[1]+1][o[2]+0],+			c->d[o[0]+0][o[1]+0][o[2]+1],+			c->d[o[0]+1][o[1]+0][o[2]+1],+			c->d[o[0]+1][o[1]+1][o[2]+1],+			c->d[o[0]+0][o[1]+1][o[2]+1]};+		/* Normal	*/ +#if 1+		const btScalar	gx[]={	d[1]-d[0],d[2]-d[3],+			d[5]-d[4],d[6]-d[7]};+		const btScalar	gy[]={	d[3]-d[0],d[2]-d[1],+			d[7]-d[4],d[6]-d[5]};+		const btScalar	gz[]={	d[4]-d[0],d[5]-d[1],+			d[7]-d[3],d[6]-d[2]};+		normal.setX(Lerp(	Lerp(gx[0],gx[1],iy.f),+			Lerp(gx[2],gx[3],iy.f),iz.f));+		normal.setY(Lerp(	Lerp(gy[0],gy[1],ix.f),+			Lerp(gy[2],gy[3],ix.f),iz.f));+		normal.setZ(Lerp(	Lerp(gz[0],gz[1],ix.f),+			Lerp(gz[2],gz[3],ix.f),iy.f));+		normal		=	normal.normalized();+#else+		normal		=	btVector3(d[1]-d[0],d[3]-d[0],d[4]-d[0]).normalized();+#endif+		/* Distance	*/ +		const btScalar	d0=Lerp(Lerp(d[0],d[1],ix.f),+			Lerp(d[3],d[2],ix.f),iy.f);+		const btScalar	d1=Lerp(Lerp(d[4],d[5],ix.f),+			Lerp(d[7],d[6],ix.f),iy.f);+		return(Lerp(d0,d1,iz.f)-margin);+	}+	//+	void					BuildCell(Cell& c)+	{+		const btVector3	org=btVector3(	(btScalar)c.c[0],+			(btScalar)c.c[1],+			(btScalar)c.c[2])	*+			CELLSIZE*voxelsz;+		for(int k=0;k<=CELLSIZE;++k)+		{+			const btScalar	z=voxelsz*k+org.z();+			for(int j=0;j<=CELLSIZE;++j)+			{+				const btScalar	y=voxelsz*j+org.y();+				for(int i=0;i<=CELLSIZE;++i)+				{+					const btScalar	x=voxelsz*i+org.x();+					c.d[i][j][k]=DistanceToShape(	btVector3(x,y,z),+						c.pclient);+				}+			}+		}+	}+	//+	static inline btScalar	DistanceToShape(const btVector3& x,+		btCollisionShape* shape)+	{+		btTransform	unit;+		unit.setIdentity();+		if(shape->isConvex())+		{+			btGjkEpaSolver2::sResults	res;+			btConvexShape*				csh=static_cast<btConvexShape*>(shape);+			return(btGjkEpaSolver2::SignedDistance(x,0,csh,unit,res));+		}+		return(0);+	}+	//+	static inline IntFrac	Decompose(btScalar x)+	{+		/* That one need a lot of improvements...	*/+		/* Remove test, faster floor...				*/ +		IntFrac			r;+		x/=CELLSIZE;+		const int		o=x<0?(int)(-x+1):0;+		x+=o;r.b=(int)x;+		const btScalar	k=(x-r.b)*CELLSIZE;+		r.i=(int)k;r.f=k-r.i;r.b-=o;+		return(r);+	}+	//+	static inline btScalar	Lerp(btScalar a,btScalar b,btScalar t)+	{+		return(a+(b-a)*t);+	}++++	//+	static inline unsigned int	Hash(int x,int y,int z,btCollisionShape* shape)+	{+		struct btS+		{ +			int x,y,z;+			void* p;+		};++		btS myset;++		myset.x=x;myset.y=y;myset.z=z;myset.p=shape;+		const void* ptr = &myset;++		unsigned int result = HsiehHash<sizeof(btS)/4> (ptr);+++		return result;+	}+};+++#endif //BT_SPARSE_SDF_H
+ bullet/LICENSE view
@@ -0,0 +1,19 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose,+including commercial applications, and to alter it and redistribute it freely,+subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++All files in the Bullet/src folder are under this Zlib license.+Optional Extras/GIMPACT and Extras/GIMPACTBullet is also under ZLib license. Other optional external libraries in  Extras/Demos have own license,see respective files.++This means Bullet can freely be used in any software, including commercial and console software. A Playstation 3 optimized version is available through Sony.
+ bullet/LinearMath/btAabbUtil2.h view
@@ -0,0 +1,236 @@+/*+Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++++#ifndef BT_AABB_UTIL2+#define BT_AABB_UTIL2++#include "btTransform.h"+#include "btVector3.h"+#include "btMinMax.h"++++SIMD_FORCE_INLINE void AabbExpand (btVector3& aabbMin,+								   btVector3& aabbMax,+								   const btVector3& expansionMin,+								   const btVector3& expansionMax)+{+	aabbMin = aabbMin + expansionMin;+	aabbMax = aabbMax + expansionMax;+}++/// conservative test for overlap between two aabbs+SIMD_FORCE_INLINE bool TestPointAgainstAabb2(const btVector3 &aabbMin1, const btVector3 &aabbMax1,+								const btVector3 &point)+{+	bool overlap = true;+	overlap = (aabbMin1.getX() > point.getX() || aabbMax1.getX() < point.getX()) ? false : overlap;+	overlap = (aabbMin1.getZ() > point.getZ() || aabbMax1.getZ() < point.getZ()) ? false : overlap;+	overlap = (aabbMin1.getY() > point.getY() || aabbMax1.getY() < point.getY()) ? false : overlap;+	return overlap;+}+++/// conservative test for overlap between two aabbs+SIMD_FORCE_INLINE bool TestAabbAgainstAabb2(const btVector3 &aabbMin1, const btVector3 &aabbMax1,+								const btVector3 &aabbMin2, const btVector3 &aabbMax2)+{+	bool overlap = true;+	overlap = (aabbMin1.getX() > aabbMax2.getX() || aabbMax1.getX() < aabbMin2.getX()) ? false : overlap;+	overlap = (aabbMin1.getZ() > aabbMax2.getZ() || aabbMax1.getZ() < aabbMin2.getZ()) ? false : overlap;+	overlap = (aabbMin1.getY() > aabbMax2.getY() || aabbMax1.getY() < aabbMin2.getY()) ? false : overlap;+	return overlap;+}++/// conservative test for overlap between triangle and aabb+SIMD_FORCE_INLINE bool TestTriangleAgainstAabb2(const btVector3 *vertices,+									const btVector3 &aabbMin, const btVector3 &aabbMax)+{+	const btVector3 &p1 = vertices[0];+	const btVector3 &p2 = vertices[1];+	const btVector3 &p3 = vertices[2];++	if (btMin(btMin(p1[0], p2[0]), p3[0]) > aabbMax[0]) return false;+	if (btMax(btMax(p1[0], p2[0]), p3[0]) < aabbMin[0]) return false;++	if (btMin(btMin(p1[2], p2[2]), p3[2]) > aabbMax[2]) return false;+	if (btMax(btMax(p1[2], p2[2]), p3[2]) < aabbMin[2]) return false;+  +	if (btMin(btMin(p1[1], p2[1]), p3[1]) > aabbMax[1]) return false;+	if (btMax(btMax(p1[1], p2[1]), p3[1]) < aabbMin[1]) return false;+	return true;+}+++SIMD_FORCE_INLINE int	btOutcode(const btVector3& p,const btVector3& halfExtent) +{+	return (p.getX()  < -halfExtent.getX() ? 0x01 : 0x0) |    +		   (p.getX() >  halfExtent.getX() ? 0x08 : 0x0) |+		   (p.getY() < -halfExtent.getY() ? 0x02 : 0x0) |    +		   (p.getY() >  halfExtent.getY() ? 0x10 : 0x0) |+		   (p.getZ() < -halfExtent.getZ() ? 0x4 : 0x0) |    +		   (p.getZ() >  halfExtent.getZ() ? 0x20 : 0x0);+}++++SIMD_FORCE_INLINE bool btRayAabb2(const btVector3& rayFrom,+								  const btVector3& rayInvDirection,+								  const unsigned int raySign[3],+								  const btVector3 bounds[2],+								  btScalar& tmin,+								  btScalar lambda_min,+								  btScalar lambda_max)+{+	btScalar tmax, tymin, tymax, tzmin, tzmax;+	tmin = (bounds[raySign[0]].getX() - rayFrom.getX()) * rayInvDirection.getX();+	tmax = (bounds[1-raySign[0]].getX() - rayFrom.getX()) * rayInvDirection.getX();+	tymin = (bounds[raySign[1]].getY() - rayFrom.getY()) * rayInvDirection.getY();+	tymax = (bounds[1-raySign[1]].getY() - rayFrom.getY()) * rayInvDirection.getY();++	if ( (tmin > tymax) || (tymin > tmax) )+		return false;++	if (tymin > tmin)+		tmin = tymin;++	if (tymax < tmax)+		tmax = tymax;++	tzmin = (bounds[raySign[2]].getZ() - rayFrom.getZ()) * rayInvDirection.getZ();+	tzmax = (bounds[1-raySign[2]].getZ() - rayFrom.getZ()) * rayInvDirection.getZ();++	if ( (tmin > tzmax) || (tzmin > tmax) )+		return false;+	if (tzmin > tmin)+		tmin = tzmin;+	if (tzmax < tmax)+		tmax = tzmax;+	return ( (tmin < lambda_max) && (tmax > lambda_min) );+}++SIMD_FORCE_INLINE bool btRayAabb(const btVector3& rayFrom, +								 const btVector3& rayTo, +								 const btVector3& aabbMin, +								 const btVector3& aabbMax,+					  btScalar& param, btVector3& normal) +{+	btVector3 aabbHalfExtent = (aabbMax-aabbMin)* btScalar(0.5);+	btVector3 aabbCenter = (aabbMax+aabbMin)* btScalar(0.5);+	btVector3	source = rayFrom - aabbCenter;+	btVector3	target = rayTo - aabbCenter;+	int	sourceOutcode = btOutcode(source,aabbHalfExtent);+	int targetOutcode = btOutcode(target,aabbHalfExtent);+	if ((sourceOutcode & targetOutcode) == 0x0)+	{+		btScalar lambda_enter = btScalar(0.0);+		btScalar lambda_exit  = param;+		btVector3 r = target - source;+		int i;+		btScalar	normSign = 1;+		btVector3	hitNormal(0,0,0);+		int bit=1;++		for (int j=0;j<2;j++)+		{+			for (i = 0; i != 3; ++i)+			{+				if (sourceOutcode & bit)+				{+					btScalar lambda = (-source[i] - aabbHalfExtent[i]*normSign) / r[i];+					if (lambda_enter <= lambda)+					{+						lambda_enter = lambda;+						hitNormal.setValue(0,0,0);+						hitNormal[i] = normSign;+					}+				}+				else if (targetOutcode & bit) +				{+					btScalar lambda = (-source[i] - aabbHalfExtent[i]*normSign) / r[i];+					btSetMin(lambda_exit, lambda);+				}+				bit<<=1;+			}+			normSign = btScalar(-1.);+		}+		if (lambda_enter <= lambda_exit)+		{+			param = lambda_enter;+			normal = hitNormal;+			return true;+		}+	}+	return false;+}++++SIMD_FORCE_INLINE	void btTransformAabb(const btVector3& halfExtents, btScalar margin,const btTransform& t,btVector3& aabbMinOut,btVector3& aabbMaxOut)+{+	btVector3 halfExtentsWithMargin = halfExtents+btVector3(margin,margin,margin);+	btMatrix3x3 abs_b = t.getBasis().absolute();  +	btVector3 center = t.getOrigin();+	btVector3 extent = btVector3(abs_b[0].dot(halfExtentsWithMargin),+		   abs_b[1].dot(halfExtentsWithMargin),+		  abs_b[2].dot(halfExtentsWithMargin));+	aabbMinOut = center - extent;+	aabbMaxOut = center + extent;+}+++SIMD_FORCE_INLINE	void btTransformAabb(const btVector3& localAabbMin,const btVector3& localAabbMax, btScalar margin,const btTransform& trans,btVector3& aabbMinOut,btVector3& aabbMaxOut)+{+		btAssert(localAabbMin.getX() <= localAabbMax.getX());+		btAssert(localAabbMin.getY() <= localAabbMax.getY());+		btAssert(localAabbMin.getZ() <= localAabbMax.getZ());+		btVector3 localHalfExtents = btScalar(0.5)*(localAabbMax-localAabbMin);+		localHalfExtents+=btVector3(margin,margin,margin);++		btVector3 localCenter = btScalar(0.5)*(localAabbMax+localAabbMin);+		btMatrix3x3 abs_b = trans.getBasis().absolute();  +		btVector3 center = trans(localCenter);+		btVector3 extent = btVector3(abs_b[0].dot(localHalfExtents),+			   abs_b[1].dot(localHalfExtents),+			  abs_b[2].dot(localHalfExtents));+		aabbMinOut = center-extent;+		aabbMaxOut = center+extent;+}++#define USE_BANCHLESS 1+#ifdef USE_BANCHLESS+	//This block replaces the block below and uses no branches, and replaces the 8 bit return with a 32 bit return for improved performance (~3x on XBox 360)+	SIMD_FORCE_INLINE unsigned testQuantizedAabbAgainstQuantizedAabb(const unsigned short int* aabbMin1,const unsigned short int* aabbMax1,const unsigned short int* aabbMin2,const unsigned short int* aabbMax2)+	{		+		return static_cast<unsigned int>(btSelect((unsigned)((aabbMin1[0] <= aabbMax2[0]) & (aabbMax1[0] >= aabbMin2[0])+			& (aabbMin1[2] <= aabbMax2[2]) & (aabbMax1[2] >= aabbMin2[2])+			& (aabbMin1[1] <= aabbMax2[1]) & (aabbMax1[1] >= aabbMin2[1])),+			1, 0));+	}+#else+	SIMD_FORCE_INLINE bool testQuantizedAabbAgainstQuantizedAabb(const unsigned short int* aabbMin1,const unsigned short int* aabbMax1,const unsigned short int* aabbMin2,const unsigned short int* aabbMax2)+	{+		bool overlap = true;+		overlap = (aabbMin1[0] > aabbMax2[0] || aabbMax1[0] < aabbMin2[0]) ? false : overlap;+		overlap = (aabbMin1[2] > aabbMax2[2] || aabbMax1[2] < aabbMin2[2]) ? false : overlap;+		overlap = (aabbMin1[1] > aabbMax2[1] || aabbMax1[1] < aabbMin2[1]) ? false : overlap;+		return overlap;+	}+#endif //USE_BANCHLESS++#endif //BT_AABB_UTIL2++
+ bullet/LinearMath/btAlignedAllocator.h view
@@ -0,0 +1,107 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose,+including commercial applications, and to alter it and redistribute it freely,+subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_ALIGNED_ALLOCATOR+#define BT_ALIGNED_ALLOCATOR++///we probably replace this with our own aligned memory allocator+///so we replace _aligned_malloc and _aligned_free with our own+///that is better portable and more predictable++#include "btScalar.h"+//#define BT_DEBUG_MEMORY_ALLOCATIONS 1+#ifdef BT_DEBUG_MEMORY_ALLOCATIONS++#define btAlignedAlloc(a,b) \+		btAlignedAllocInternal(a,b,__LINE__,__FILE__)++#define btAlignedFree(ptr) \+		btAlignedFreeInternal(ptr,__LINE__,__FILE__)++void*	btAlignedAllocInternal	(size_t size, int alignment,int line,char* filename);++void	btAlignedFreeInternal	(void* ptr,int line,char* filename);++#else+	void*	btAlignedAllocInternal	(size_t size, int alignment);+	void	btAlignedFreeInternal	(void* ptr);++	#define btAlignedAlloc(size,alignment) btAlignedAllocInternal(size,alignment)+	#define btAlignedFree(ptr) btAlignedFreeInternal(ptr)++#endif+typedef int	size_type;++typedef void *(btAlignedAllocFunc)(size_t size, int alignment);+typedef void (btAlignedFreeFunc)(void *memblock);+typedef void *(btAllocFunc)(size_t size);+typedef void (btFreeFunc)(void *memblock);++///The developer can let all Bullet memory allocations go through a custom memory allocator, using btAlignedAllocSetCustom+void btAlignedAllocSetCustom(btAllocFunc *allocFunc, btFreeFunc *freeFunc);+///If the developer has already an custom aligned allocator, then btAlignedAllocSetCustomAligned can be used. The default aligned allocator pre-allocates extra memory using the non-aligned allocator, and instruments it.+void btAlignedAllocSetCustomAligned(btAlignedAllocFunc *allocFunc, btAlignedFreeFunc *freeFunc);+++///The btAlignedAllocator is a portable class for aligned memory allocations.+///Default implementations for unaligned and aligned allocations can be overridden by a custom allocator using btAlignedAllocSetCustom and btAlignedAllocSetCustomAligned.+template < typename T , unsigned Alignment >+class btAlignedAllocator {+	+	typedef btAlignedAllocator< T , Alignment > self_type;+	+public:++	//just going down a list:+	btAlignedAllocator() {}+	/*+	btAlignedAllocator( const self_type & ) {}+	*/++	template < typename Other >+	btAlignedAllocator( const btAlignedAllocator< Other , Alignment > & ) {}++	typedef const T*         const_pointer;+	typedef const T&         const_reference;+	typedef T*               pointer;+	typedef T&               reference;+	typedef T                value_type;++	pointer       address   ( reference        ref ) const                           { return &ref; }+	const_pointer address   ( const_reference  ref ) const                           { return &ref; }+	pointer       allocate  ( size_type        n   , const_pointer *      hint = 0 ) {+		(void)hint;+		return reinterpret_cast< pointer >(btAlignedAlloc( sizeof(value_type) * n , Alignment ));+	}+	void          construct ( pointer          ptr , const value_type &   value    ) { new (ptr) value_type( value ); }+	void          deallocate( pointer          ptr ) {+		btAlignedFree( reinterpret_cast< void * >( ptr ) );+	}+	void          destroy   ( pointer          ptr )                                 { ptr->~value_type(); }+	++	template < typename O > struct rebind {+		typedef btAlignedAllocator< O , Alignment > other;+	};+	template < typename O >+	self_type & operator=( const btAlignedAllocator< O , Alignment > & ) { return *this; }++	friend bool operator==( const self_type & , const self_type & ) { return true; }+};++++#endif //BT_ALIGNED_ALLOCATOR+
+ bullet/LinearMath/btAlignedObjectArray.h view
@@ -0,0 +1,471 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+++#ifndef BT_OBJECT_ARRAY__+#define BT_OBJECT_ARRAY__++#include "btScalar.h" // has definitions like SIMD_FORCE_INLINE+#include "btAlignedAllocator.h"++///If the platform doesn't support placement new, you can disable BT_USE_PLACEMENT_NEW+///then the btAlignedObjectArray doesn't support objects with virtual methods, and non-trivial constructors/destructors+///You can enable BT_USE_MEMCPY, then swapping elements in the array will use memcpy instead of operator=+///see discussion here: http://continuousphysics.com/Bullet/phpBB2/viewtopic.php?t=1231 and+///http://www.continuousphysics.com/Bullet/phpBB2/viewtopic.php?t=1240++#define BT_USE_PLACEMENT_NEW 1+//#define BT_USE_MEMCPY 1 //disable, because it is cumbersome to find out for each platform where memcpy is defined. It can be in <memory.h> or <string.h> or otherwise...++#ifdef BT_USE_MEMCPY+#include <memory.h>+#include <string.h>+#endif //BT_USE_MEMCPY++#ifdef BT_USE_PLACEMENT_NEW+#include <new> //for placement new+#endif //BT_USE_PLACEMENT_NEW+++///The btAlignedObjectArray template class uses a subset of the stl::vector interface for its methods+///It is developed to replace stl::vector to avoid portability issues, including STL alignment issues to add SIMD/SSE data+template <typename T> +//template <class T> +class btAlignedObjectArray+{+	btAlignedAllocator<T , 16>	m_allocator;++	int					m_size;+	int					m_capacity;+	T*					m_data;+	//PCK: added this line+	bool				m_ownsMemory;++	protected:+		SIMD_FORCE_INLINE	int	allocSize(int size)+		{+			return (size ? size*2 : 1);+		}+		SIMD_FORCE_INLINE	void	copy(int start,int end, T* dest) const+		{+			int i;+			for (i=start;i<end;++i)+#ifdef BT_USE_PLACEMENT_NEW+				new (&dest[i]) T(m_data[i]);+#else+				dest[i] = m_data[i];+#endif //BT_USE_PLACEMENT_NEW+		}++		SIMD_FORCE_INLINE	void	init()+		{+			//PCK: added this line+			m_ownsMemory = true;+			m_data = 0;+			m_size = 0;+			m_capacity = 0;+		}+		SIMD_FORCE_INLINE	void	destroy(int first,int last)+		{+			int i;+			for (i=first; i<last;i++)+			{+				m_data[i].~T();+			}+		}++		SIMD_FORCE_INLINE	void* allocate(int size)+		{+			if (size)+				return m_allocator.allocate(size);+			return 0;+		}++		SIMD_FORCE_INLINE	void	deallocate()+		{+			if(m_data)	{+				//PCK: enclosed the deallocation in this block+				if (m_ownsMemory)+				{+					m_allocator.deallocate(m_data);+				}+				m_data = 0;+			}+		}++	+++	public:+		+		btAlignedObjectArray()+		{+			init();+		}++		~btAlignedObjectArray()+		{+			clear();+		}++		///Generally it is best to avoid using the copy constructor of an btAlignedObjectArray, and use a (const) reference to the array instead.+		btAlignedObjectArray(const btAlignedObjectArray& otherArray)+		{+			init();++			int otherSize = otherArray.size();+			resize (otherSize);+			otherArray.copy(0, otherSize, m_data);+		}++		+		+		/// return the number of elements in the array+		SIMD_FORCE_INLINE	int size() const+		{	+			return m_size;+		}+		+		SIMD_FORCE_INLINE const T& at(int n) const+		{+			return m_data[n];+		}++		SIMD_FORCE_INLINE T& at(int n)+		{+			return m_data[n];+		}++		SIMD_FORCE_INLINE const T& operator[](int n) const+		{+			return m_data[n];+		}++		SIMD_FORCE_INLINE T& operator[](int n)+		{+			return m_data[n];+		}+		++		///clear the array, deallocated memory. Generally it is better to use array.resize(0), to reduce performance overhead of run-time memory (de)allocations.+		SIMD_FORCE_INLINE	void	clear()+		{+			destroy(0,size());+			+			deallocate();+			+			init();+		}++		SIMD_FORCE_INLINE	void	pop_back()+		{+			m_size--;+			m_data[m_size].~T();+		}++		///resize changes the number of elements in the array. If the new size is larger, the new elements will be constructed using the optional second argument.+		///when the new number of elements is smaller, the destructor will be called, but memory will not be freed, to reduce performance overhead of run-time memory (de)allocations.+		SIMD_FORCE_INLINE	void	resize(int newsize, const T& fillData=T())+		{+			int curSize = size();++			if (newsize < curSize)+			{+				for(int i = newsize; i < curSize; i++)+				{+					m_data[i].~T();+				}+			} else+			{+				if (newsize > size())+				{+					reserve(newsize);+				}+#ifdef BT_USE_PLACEMENT_NEW+				for (int i=curSize;i<newsize;i++)+				{+					new ( &m_data[i]) T(fillData);+				}+#endif //BT_USE_PLACEMENT_NEW++			}++			m_size = newsize;+		}+	+		SIMD_FORCE_INLINE	T&  expandNonInitializing( )+		{	+			int sz = size();+			if( sz == capacity() )+			{+				reserve( allocSize(size()) );+			}+			m_size++;++			return m_data[sz];		+		}+++		SIMD_FORCE_INLINE	T&  expand( const T& fillValue=T())+		{	+			int sz = size();+			if( sz == capacity() )+			{+				reserve( allocSize(size()) );+			}+			m_size++;+#ifdef BT_USE_PLACEMENT_NEW+			new (&m_data[sz]) T(fillValue); //use the in-place new (not really allocating heap memory)+#endif++			return m_data[sz];		+		}+++		SIMD_FORCE_INLINE	void push_back(const T& _Val)+		{	+			int sz = size();+			if( sz == capacity() )+			{+				reserve( allocSize(size()) );+			}+			+#ifdef BT_USE_PLACEMENT_NEW+			new ( &m_data[m_size] ) T(_Val);+#else+			m_data[size()] = _Val;			+#endif //BT_USE_PLACEMENT_NEW++			m_size++;+		}++	+		/// return the pre-allocated (reserved) elements, this is at least as large as the total number of elements,see size() and reserve()+		SIMD_FORCE_INLINE	int capacity() const+		{	+			return m_capacity;+		}+		+		SIMD_FORCE_INLINE	void reserve(int _Count)+		{	// determine new minimum length of allocated storage+			if (capacity() < _Count)+			{	// not enough room, reallocate+				T*	s = (T*)allocate(_Count);++				copy(0, size(), s);++				destroy(0,size());++				deallocate();+				+				//PCK: added this line+				m_ownsMemory = true;++				m_data = s;+				+				m_capacity = _Count;++			}+		}+++		class less+		{+			public:++				bool operator() ( const T& a, const T& b )+				{+					return ( a < b );+				}+		};+	+		template <typename L>+		void quickSortInternal(L CompareFunc,int lo, int hi)+		{+		//  lo is the lower index, hi is the upper index+		//  of the region of array a that is to be sorted+			int i=lo, j=hi;+			T x=m_data[(lo+hi)/2];++			//  partition+			do+			{    +				while (CompareFunc(m_data[i],x)) +					i++; +				while (CompareFunc(x,m_data[j])) +					j--;+				if (i<=j)+				{+					swap(i,j);+					i++; j--;+				}+			} while (i<=j);++			//  recursion+			if (lo<j) +				quickSortInternal( CompareFunc, lo, j);+			if (i<hi) +				quickSortInternal( CompareFunc, i, hi);+		}+++		template <typename L>+		void quickSort(L CompareFunc)+		{+			//don't sort 0 or 1 elements+			if (size()>1)+			{+				quickSortInternal(CompareFunc,0,size()-1);+			}+		}+++		///heap sort from http://www.csse.monash.edu.au/~lloyd/tildeAlgDS/Sort/Heap/+		template <typename L>+		void downHeap(T *pArr, int k, int n,L CompareFunc)+		{+			/*  PRE: a[k+1..N] is a heap */+			/* POST:  a[k..N]  is a heap */+			+			T temp = pArr[k - 1];+			/* k has child(s) */+			while (k <= n/2) +			{+				int child = 2*k;+				+				if ((child < n) && CompareFunc(pArr[child - 1] , pArr[child]))+				{+					child++;+				}+				/* pick larger child */+				if (CompareFunc(temp , pArr[child - 1]))+				{+					/* move child up */+					pArr[k - 1] = pArr[child - 1];+					k = child;+				}+				else+				{+					break;+				}+			}+			pArr[k - 1] = temp;+		} /*downHeap*/++		void	swap(int index0,int index1)+		{+#ifdef BT_USE_MEMCPY+			char	temp[sizeof(T)];+			memcpy(temp,&m_data[index0],sizeof(T));+			memcpy(&m_data[index0],&m_data[index1],sizeof(T));+			memcpy(&m_data[index1],temp,sizeof(T));+#else+			T temp = m_data[index0];+			m_data[index0] = m_data[index1];+			m_data[index1] = temp;+#endif //BT_USE_PLACEMENT_NEW++		}++	template <typename L>+	void heapSort(L CompareFunc)+	{+		/* sort a[0..N-1],  N.B. 0 to N-1 */+		int k;+		int n = m_size;+		for (k = n/2; k > 0; k--) +		{+			downHeap(m_data, k, n, CompareFunc);+		}++		/* a[1..N] is now a heap */+		while ( n>=1 ) +		{+			swap(0,n-1); /* largest of a[0..n-1] */+++			n = n - 1;+			/* restore a[1..i-1] heap */+			downHeap(m_data, 1, n, CompareFunc);+		} +	}++	///non-recursive binary search, assumes sorted array+	int	findBinarySearch(const T& key) const+	{+		int first = 0;+		int last = size()-1;++		//assume sorted array+		while (first <= last) {+			int mid = (first + last) / 2;  // compute mid point.+			if (key > m_data[mid]) +				first = mid + 1;  // repeat search in top half.+			else if (key < m_data[mid]) +				last = mid - 1; // repeat search in bottom half.+			else+				return mid;     // found it. return position /////+		}+		return size();    // failed to find key+	}+++	int	findLinearSearch(const T& key) const+	{+		int index=size();+		int i;++		for (i=0;i<size();i++)+		{+			if (m_data[i] == key)+			{+				index = i;+				break;+			}+		}+		return index;+	}++	void	remove(const T& key)+	{++		int findIndex = findLinearSearch(key);+		if (findIndex<size())+		{+			swap( findIndex,size()-1);+			pop_back();+		}+	}++	//PCK: whole function+	void initializeFromBuffer(void *buffer, int size, int capacity)+	{+		clear();+		m_ownsMemory = false;+		m_data = (T*)buffer;+		m_size = size;+		m_capacity = capacity;+	}++	void copyFromArray(const btAlignedObjectArray& otherArray)+	{+		int otherSize = otherArray.size();+		resize (otherSize);+		otherArray.copy(0, otherSize, m_data);+	}++};++#endif //BT_OBJECT_ARRAY__
+ bullet/LinearMath/btConvexHull.h view
@@ -0,0 +1,241 @@++/*+Stan Melax Convex Hull Computation+Copyright (c) 2008 Stan Melax http://www.melax.com/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++///includes modifications/improvements by John Ratcliff, see BringOutYourDead below.++#ifndef BT_CD_HULL_H+#define BT_CD_HULL_H++#include "btVector3.h"+#include "btAlignedObjectArray.h"++typedef btAlignedObjectArray<unsigned int> TUIntArray;++class HullResult+{+public:+	HullResult(void)+	{+		mPolygons = true;+		mNumOutputVertices = 0;+		mNumFaces = 0;+		mNumIndices = 0;+	}+	bool                    mPolygons;                  // true if indices represents polygons, false indices are triangles+	unsigned int            mNumOutputVertices;         // number of vertices in the output hull+	btAlignedObjectArray<btVector3>	m_OutputVertices;            // array of vertices+	unsigned int            mNumFaces;                  // the number of faces produced+	unsigned int            mNumIndices;                // the total number of indices+	btAlignedObjectArray<unsigned int>    m_Indices;                   // pointer to indices.++// If triangles, then indices are array indexes into the vertex list.+// If polygons, indices are in the form (number of points in face) (p1, p2, p3, ..) etc..+};++enum HullFlag+{+	QF_TRIANGLES         = (1<<0),             // report results as triangles, not polygons.+	QF_REVERSE_ORDER     = (1<<1),             // reverse order of the triangle indices.+	QF_DEFAULT           = QF_TRIANGLES+};+++class HullDesc+{+public:+	HullDesc(void)+	{+		mFlags          = QF_DEFAULT;+		mVcount         = 0;+		mVertices       = 0;+		mVertexStride   = sizeof(btVector3);+		mNormalEpsilon  = 0.001f;+		mMaxVertices	= 4096; // maximum number of points to be considered for a convex hull.+		mMaxFaces	= 4096;+	};++	HullDesc(HullFlag flag,+		 unsigned int vcount,+		 const btVector3 *vertices,+		 unsigned int stride = sizeof(btVector3))+	{+		mFlags          = flag;+		mVcount         = vcount;+		mVertices       = vertices;+		mVertexStride   = stride;+		mNormalEpsilon  = btScalar(0.001);+		mMaxVertices    = 4096;+	}++	bool HasHullFlag(HullFlag flag) const+	{+		if ( mFlags & flag ) return true;+		return false;+	}++	void SetHullFlag(HullFlag flag)+	{+		mFlags|=flag;+	}++	void ClearHullFlag(HullFlag flag)+	{+		mFlags&=~flag;+	}++	unsigned int      mFlags;           // flags to use when generating the convex hull.+	unsigned int      mVcount;          // number of vertices in the input point cloud+	const btVector3  *mVertices;        // the array of vertices.+	unsigned int      mVertexStride;    // the stride of each vertex, in bytes.+	btScalar             mNormalEpsilon;   // the epsilon for removing duplicates.  This is a normalized value, if normalized bit is on.+	unsigned int      mMaxVertices;     // maximum number of vertices to be considered for the hull!+	unsigned int      mMaxFaces;+};++enum HullError+{+	QE_OK,            // success!+	QE_FAIL           // failed.+};++class btPlane+{+	public:+	btVector3	normal;+	btScalar	dist;   // distance below origin - the D from plane equasion Ax+By+Cz+D=0+			btPlane(const btVector3 &n,btScalar d):normal(n),dist(d){}+			btPlane():normal(),dist(0){}+	+};++++class ConvexH +{+  public:+	class HalfEdge+	{+	  public:+		short ea;         // the other half of the edge (index into edges list)+		unsigned char v;  // the vertex at the start of this edge (index into vertices list)+		unsigned char p;  // the facet on which this edge lies (index into facets list)+		HalfEdge(){}+		HalfEdge(short _ea,unsigned char _v, unsigned char _p):ea(_ea),v(_v),p(_p){}+	};+	ConvexH()+	{+	}+	~ConvexH()+	{+	}+	btAlignedObjectArray<btVector3> vertices;+	btAlignedObjectArray<HalfEdge> edges;+	btAlignedObjectArray<btPlane>  facets;+	ConvexH(int vertices_size,int edges_size,int facets_size);+};+++class int4+{+public:+	int x,y,z,w;+	int4(){};+	int4(int _x,int _y, int _z,int _w){x=_x;y=_y;z=_z;w=_w;}+	const int& operator[](int i) const {return (&x)[i];}+	int& operator[](int i) {return (&x)[i];}+};++class PHullResult+{+public:++	PHullResult(void)+	{+		mVcount = 0;+		mIndexCount = 0;+		mFaceCount = 0;+		mVertices = 0;+	}++	unsigned int mVcount;+	unsigned int mIndexCount;+	unsigned int mFaceCount;+	btVector3*   mVertices;+	TUIntArray m_Indices;+};++++///The HullLibrary class can create a convex hull from a collection of vertices, using the ComputeHull method.+///The btShapeHull class uses this HullLibrary to create a approximate convex mesh given a general (non-polyhedral) convex shape.+class HullLibrary+{++	btAlignedObjectArray<class btHullTriangle*> m_tris;++public:++	btAlignedObjectArray<int> m_vertexIndexMapping;+++	HullError CreateConvexHull(const HullDesc& desc, // describes the input request+				   HullResult&     result);        // contains the resulst+	HullError ReleaseResult(HullResult &result); // release memory allocated for this result, we are done with it.++private:++	bool ComputeHull(unsigned int vcount,const btVector3 *vertices,PHullResult &result,unsigned int vlimit);++	class btHullTriangle*	allocateTriangle(int a,int b,int c);+	void	deAllocateTriangle(btHullTriangle*);+	void b2bfix(btHullTriangle* s,btHullTriangle*t);++	void removeb2b(btHullTriangle* s,btHullTriangle*t);++	void checkit(btHullTriangle *t);++	btHullTriangle* extrudable(btScalar epsilon);++	int calchull(btVector3 *verts,int verts_count, TUIntArray& tris_out, int &tris_count,int vlimit);++	int calchullgen(btVector3 *verts,int verts_count, int vlimit);++	int4 FindSimplex(btVector3 *verts,int verts_count,btAlignedObjectArray<int> &allow);++	class ConvexH* ConvexHCrop(ConvexH& convex,const btPlane& slice);++	void extrude(class btHullTriangle* t0,int v);++	ConvexH* test_cube();++	//BringOutYourDead (John Ratcliff): When you create a convex hull you hand it a large input set of vertices forming a 'point cloud'. +	//After the hull is generated it give you back a set of polygon faces which index the *original* point cloud.+	//The thing is, often times, there are many 'dead vertices' in the point cloud that are on longer referenced by the hull.+	//The routine 'BringOutYourDead' find only the referenced vertices, copies them to an new buffer, and re-indexes the hull so that it is a minimal representation.+	void BringOutYourDead(const btVector3* verts,unsigned int vcount, btVector3* overts,unsigned int &ocount,unsigned int* indices,unsigned indexcount);++	bool CleanupVertices(unsigned int svcount,+			     const btVector3* svertices,+			     unsigned int stride,+			     unsigned int &vcount, // output number of vertices+			     btVector3* vertices, // location to store the results.+			     btScalar  normalepsilon,+			     btVector3& scale);+};+++#endif //BT_CD_HULL_H+
+ bullet/LinearMath/btConvexHullComputer.h view
@@ -0,0 +1,103 @@+/*
+Copyright (c) 2011 Ole Kniemeyer, MAXON, www.maxon.net
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+Permission is granted to anyone to use this software for any purpose, 
+including commercial applications, and to alter it and redistribute it freely, 
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+*/
+
+#ifndef BT_CONVEX_HULL_COMPUTER_H
+#define BT_CONVEX_HULL_COMPUTER_H
+
+#include "btVector3.h"
+#include "btAlignedObjectArray.h"
+
+/// Convex hull implementation based on Preparata and Hong
+/// See http://code.google.com/p/bullet/issues/detail?id=275
+/// Ole Kniemeyer, MAXON Computer GmbH
+class btConvexHullComputer
+{
+	private:
+		btScalar compute(const void* coords, bool doubleCoords, int stride, int count, btScalar shrink, btScalar shrinkClamp);
+
+	public:
+
+		class Edge
+		{
+			private:
+				int next;
+				int reverse;
+				int targetVertex;
+
+				friend class btConvexHullComputer;
+
+			public:
+				int getSourceVertex() const
+				{
+					return (this + reverse)->targetVertex;
+				}
+
+				int getTargetVertex() const
+				{
+					return targetVertex;
+				}
+
+				const Edge* getNextEdgeOfVertex() const // counter-clockwise list of all edges of a vertex
+				{
+					return this + next;
+				}
+
+				const Edge* getNextEdgeOfFace() const // clockwise list of all edges of a face
+				{
+					return (this + reverse)->getNextEdgeOfVertex();
+				}
+
+				const Edge* getReverseEdge() const
+				{
+					return this + reverse;
+				}
+		};
+
+
+		// Vertices of the output hull
+		btAlignedObjectArray<btVector3> vertices;
+
+		// Edges of the output hull
+		btAlignedObjectArray<Edge> edges;
+
+		// Faces of the convex hull. Each entry is an index into the "edges" array pointing to an edge of the face. Faces are planar n-gons
+		btAlignedObjectArray<int> faces;
+
+		/*
+		Compute convex hull of "count" vertices stored in "coords". "stride" is the difference in bytes
+		between the addresses of consecutive vertices. If "shrink" is positive, the convex hull is shrunken
+		by that amount (each face is moved by "shrink" length units towards the center along its normal).
+		If "shrinkClamp" is positive, "shrink" is clamped to not exceed "shrinkClamp * innerRadius", where "innerRadius"
+		is the minimum distance of a face to the center of the convex hull.
+
+		The returned value is the amount by which the hull has been shrunken. If it is negative, the amount was so large
+		that the resulting convex hull is empty.
+
+		The output convex hull can be found in the member variables "vertices", "edges", "faces".
+		*/
+		btScalar compute(const float* coords, int stride, int count, btScalar shrink, btScalar shrinkClamp)
+		{
+			return compute(coords, false, stride, count, shrink, shrinkClamp);
+		}
+
+		// same as above, but double precision
+		btScalar compute(const double* coords, int stride, int count, btScalar shrink, btScalar shrinkClamp)
+		{
+			return compute(coords, true, stride, count, shrink, shrinkClamp);
+		}
+};
+
+
+#endif //BT_CONVEX_HULL_COMPUTER_H
+
+ bullet/LinearMath/btDefaultMotionState.h view
@@ -0,0 +1,40 @@+#ifndef BT_DEFAULT_MOTION_STATE_H+#define BT_DEFAULT_MOTION_STATE_H++#include "btMotionState.h"++///The btDefaultMotionState provides a common implementation to synchronize world transforms with offsets.+struct	btDefaultMotionState : public btMotionState+{+	btTransform m_graphicsWorldTrans;+	btTransform	m_centerOfMassOffset;+	btTransform m_startWorldTrans;+	void*		m_userPointer;++	btDefaultMotionState(const btTransform& startTrans = btTransform::getIdentity(),const btTransform& centerOfMassOffset = btTransform::getIdentity())+		: m_graphicsWorldTrans(startTrans),+		m_centerOfMassOffset(centerOfMassOffset),+		m_startWorldTrans(startTrans),+		m_userPointer(0)++	{+	}++	///synchronizes world transform from user to physics+	virtual void	getWorldTransform(btTransform& centerOfMassWorldTrans ) const +	{+			centerOfMassWorldTrans = 	m_centerOfMassOffset.inverse() * m_graphicsWorldTrans ;+	}++	///synchronizes world transform from physics to user+	///Bullet only calls the update of worldtransform for active objects+	virtual void	setWorldTransform(const btTransform& centerOfMassWorldTrans)+	{+			m_graphicsWorldTrans = centerOfMassWorldTrans * m_centerOfMassOffset ;+	}++	++};++#endif //BT_DEFAULT_MOTION_STATE_H
+ bullet/LinearMath/btGeometryUtil.h view
@@ -0,0 +1,42 @@+/*+Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+++#ifndef BT_GEOMETRY_UTIL_H+#define BT_GEOMETRY_UTIL_H++#include "btVector3.h"+#include "btAlignedObjectArray.h"++///The btGeometryUtil helper class provides a few methods to convert between plane equations and vertices.+class btGeometryUtil+{+	public:+	+	+		static void	getPlaneEquationsFromVertices(btAlignedObjectArray<btVector3>& vertices, btAlignedObjectArray<btVector3>& planeEquationsOut );++		static void	getVerticesFromPlaneEquations(const btAlignedObjectArray<btVector3>& planeEquations , btAlignedObjectArray<btVector3>& verticesOut );+	+		static bool	isInside(const btAlignedObjectArray<btVector3>& vertices, const btVector3& planeNormal, btScalar	margin);+		+		static bool	isPointInsidePlanes(const btAlignedObjectArray<btVector3>& planeEquations, const btVector3& point, btScalar	margin);++		static bool	areVerticesBehindPlane(const btVector3& planeNormal, const btAlignedObjectArray<btVector3>& vertices, btScalar	margin);++};+++#endif //BT_GEOMETRY_UTIL_H+
+ bullet/LinearMath/btHashMap.h view
@@ -0,0 +1,450 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+++#ifndef BT_HASH_MAP_H+#define BT_HASH_MAP_H++#include "btAlignedObjectArray.h"++///very basic hashable string implementation, compatible with btHashMap+struct btHashString+{+	const char* m_string;+	unsigned int	m_hash;++	SIMD_FORCE_INLINE	unsigned int getHash()const+	{+		return m_hash;+	}++	btHashString(const char* name)+		:m_string(name)+	{+		/* magic numbers from http://www.isthe.com/chongo/tech/comp/fnv/ */+		static const unsigned int  InitialFNV = 2166136261u;+		static const unsigned int FNVMultiple = 16777619u;++		/* Fowler / Noll / Vo (FNV) Hash */+		unsigned int hash = InitialFNV;+		+		for(int i = 0; m_string[i]; i++)+		{+			hash = hash ^ (m_string[i]);       /* xor  the low 8 bits */+			hash = hash * FNVMultiple;  /* multiply by the magic number */+		}+		m_hash = hash;+	}++	int portableStringCompare(const char* src,	const char* dst) const+	{+			int ret = 0 ;++			while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)+					++src, ++dst;++			if ( ret < 0 )+					ret = -1 ;+			else if ( ret > 0 )+					ret = 1 ;++			return( ret );+	}++	bool equals(const btHashString& other) const+	{+		return (m_string == other.m_string) ||+			(0==portableStringCompare(m_string,other.m_string));++	}++};++const int BT_HASH_NULL=0xffffffff;+++class btHashInt+{+	int	m_uid;+public:+	btHashInt(int uid)	:m_uid(uid)+	{+	}++	int	getUid1() const+	{+		return m_uid;+	}++	void	setUid1(int uid)+	{+		m_uid = uid;+	}++	bool equals(const btHashInt& other) const+	{+		return getUid1() == other.getUid1();+	}+	//to our success+	SIMD_FORCE_INLINE	unsigned int getHash()const+	{+		int key = m_uid;+		// Thomas Wang's hash+		key += ~(key << 15);	key ^=  (key >> 10);	key +=  (key << 3);	key ^=  (key >> 6);	key += ~(key << 11);	key ^=  (key >> 16);+		return key;+	}+};++++class btHashPtr+{++	union+	{+		const void*	m_pointer;+		int	m_hashValues[2];+	};++public:++	btHashPtr(const void* ptr)+		:m_pointer(ptr)+	{+	}++	const void*	getPointer() const+	{+		return m_pointer;+	}++	bool equals(const btHashPtr& other) const+	{+		return getPointer() == other.getPointer();+	}++	//to our success+	SIMD_FORCE_INLINE	unsigned int getHash()const+	{+		const bool VOID_IS_8 = ((sizeof(void*)==8));+		+		int key = VOID_IS_8? m_hashValues[0]+m_hashValues[1] : m_hashValues[0];+	+		// Thomas Wang's hash+		key += ~(key << 15);	key ^=  (key >> 10);	key +=  (key << 3);	key ^=  (key >> 6);	key += ~(key << 11);	key ^=  (key >> 16);+		return key;+	}++	+};+++template <class Value>+class btHashKeyPtr+{+        int     m_uid;+public:++        btHashKeyPtr(int uid)    :m_uid(uid)+        {+        }++        int     getUid1() const+        {+                return m_uid;+        }++        bool equals(const btHashKeyPtr<Value>& other) const+        {+                return getUid1() == other.getUid1();+        }++        //to our success+        SIMD_FORCE_INLINE       unsigned int getHash()const+        {+                int key = m_uid;+                // Thomas Wang's hash+                key += ~(key << 15);	key ^=  (key >> 10);	key +=  (key << 3);	key ^=  (key >> 6);	key += ~(key << 11);	key ^=  (key >> 16);+                return key;+        }++        +};+++template <class Value>+class btHashKey+{+	int	m_uid;+public:++	btHashKey(int uid)	:m_uid(uid)+	{+	}++	int	getUid1() const+	{+		return m_uid;+	}++	bool equals(const btHashKey<Value>& other) const+	{+		return getUid1() == other.getUid1();+	}+	//to our success+	SIMD_FORCE_INLINE	unsigned int getHash()const+	{+		int key = m_uid;+		// Thomas Wang's hash+		key += ~(key << 15);	key ^=  (key >> 10);	key +=  (key << 3);	key ^=  (key >> 6);	key += ~(key << 11);	key ^=  (key >> 16);+		return key;+	}+};+++///The btHashMap template class implements a generic and lightweight hashmap.+///A basic sample of how to use btHashMap is located in Demos\BasicDemo\main.cpp+template <class Key, class Value>+class btHashMap+{++protected:+	btAlignedObjectArray<int>		m_hashTable;+	btAlignedObjectArray<int>		m_next;+	+	btAlignedObjectArray<Value>		m_valueArray;+	btAlignedObjectArray<Key>		m_keyArray;++	void	growTables(const Key& /*key*/)+	{+		int newCapacity = m_valueArray.capacity();++		if (m_hashTable.size() < newCapacity)+		{+			//grow hashtable and next table+			int curHashtableSize = m_hashTable.size();++			m_hashTable.resize(newCapacity);+			m_next.resize(newCapacity);++			int i;++			for (i= 0; i < newCapacity; ++i)+			{+				m_hashTable[i] = BT_HASH_NULL;+			}+			for (i = 0; i < newCapacity; ++i)+			{+				m_next[i] = BT_HASH_NULL;+			}++			for(i=0;i<curHashtableSize;i++)+			{+				//const Value& value = m_valueArray[i];+				//const Key& key = m_keyArray[i];++				int	hashValue = m_keyArray[i].getHash() & (m_valueArray.capacity()-1);	// New hash value with new mask+				m_next[i] = m_hashTable[hashValue];+				m_hashTable[hashValue] = i;+			}+++		}+	}++	public:++	void insert(const Key& key, const Value& value) {+		int hash = key.getHash() & (m_valueArray.capacity()-1);++		//replace value if the key is already there+		int index = findIndex(key);+		if (index != BT_HASH_NULL)+		{+			m_valueArray[index]=value;+			return;+		}++		int count = m_valueArray.size();+		int oldCapacity = m_valueArray.capacity();+		m_valueArray.push_back(value);+		m_keyArray.push_back(key);++		int newCapacity = m_valueArray.capacity();+		if (oldCapacity < newCapacity)+		{+			growTables(key);+			//hash with new capacity+			hash = key.getHash() & (m_valueArray.capacity()-1);+		}+		m_next[count] = m_hashTable[hash];+		m_hashTable[hash] = count;+	}++	void remove(const Key& key) {++		int hash = key.getHash() & (m_valueArray.capacity()-1);++		int pairIndex = findIndex(key);+		+		if (pairIndex ==BT_HASH_NULL)+		{+			return;+		}++		// Remove the pair from the hash table.+		int index = m_hashTable[hash];+		btAssert(index != BT_HASH_NULL);++		int previous = BT_HASH_NULL;+		while (index != pairIndex)+		{+			previous = index;+			index = m_next[index];+		}++		if (previous != BT_HASH_NULL)+		{+			btAssert(m_next[previous] == pairIndex);+			m_next[previous] = m_next[pairIndex];+		}+		else+		{+			m_hashTable[hash] = m_next[pairIndex];+		}++		// We now move the last pair into spot of the+		// pair being removed. We need to fix the hash+		// table indices to support the move.++		int lastPairIndex = m_valueArray.size() - 1;++		// If the removed pair is the last pair, we are done.+		if (lastPairIndex == pairIndex)+		{+			m_valueArray.pop_back();+			m_keyArray.pop_back();+			return;+		}++		// Remove the last pair from the hash table.+		int lastHash = m_keyArray[lastPairIndex].getHash() & (m_valueArray.capacity()-1);++		index = m_hashTable[lastHash];+		btAssert(index != BT_HASH_NULL);++		previous = BT_HASH_NULL;+		while (index != lastPairIndex)+		{+			previous = index;+			index = m_next[index];+		}++		if (previous != BT_HASH_NULL)+		{+			btAssert(m_next[previous] == lastPairIndex);+			m_next[previous] = m_next[lastPairIndex];+		}+		else+		{+			m_hashTable[lastHash] = m_next[lastPairIndex];+		}++		// Copy the last pair into the remove pair's spot.+		m_valueArray[pairIndex] = m_valueArray[lastPairIndex];+		m_keyArray[pairIndex] = m_keyArray[lastPairIndex];++		// Insert the last pair into the hash table+		m_next[pairIndex] = m_hashTable[lastHash];+		m_hashTable[lastHash] = pairIndex;++		m_valueArray.pop_back();+		m_keyArray.pop_back();++	}+++	int size() const+	{+		return m_valueArray.size();+	}++	const Value* getAtIndex(int index) const+	{+		btAssert(index < m_valueArray.size());++		return &m_valueArray[index];+	}++	Value* getAtIndex(int index)+	{+		btAssert(index < m_valueArray.size());++		return &m_valueArray[index];+	}++	Value* operator[](const Key& key) {+		return find(key);+	}++	const Value*	find(const Key& key) const+	{+		int index = findIndex(key);+		if (index == BT_HASH_NULL)+		{+			return NULL;+		}+		return &m_valueArray[index];+	}++	Value*	find(const Key& key)+	{+		int index = findIndex(key);+		if (index == BT_HASH_NULL)+		{+			return NULL;+		}+		return &m_valueArray[index];+	}+++	int	findIndex(const Key& key) const+	{+		unsigned int hash = key.getHash() & (m_valueArray.capacity()-1);++		if (hash >= (unsigned int)m_hashTable.size())+		{+			return BT_HASH_NULL;+		}++		int index = m_hashTable[hash];+		while ((index != BT_HASH_NULL) && key.equals(m_keyArray[index]) == false)+		{+			index = m_next[index];+		}+		return index;+	}++	void	clear()+	{+		m_hashTable.clear();+		m_next.clear();+		m_valueArray.clear();+		m_keyArray.clear();+	}++};++#endif //BT_HASH_MAP_H
+ bullet/LinearMath/btIDebugDraw.h view
@@ -0,0 +1,417 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+++#ifndef BT_IDEBUG_DRAW__H+#define BT_IDEBUG_DRAW__H++#include "btVector3.h"+#include "btTransform.h"+++///The btIDebugDraw interface class allows hooking up a debug renderer to visually debug simulations.+///Typical use case: create a debug drawer object, and assign it to a btCollisionWorld or btDynamicsWorld using setDebugDrawer and call debugDrawWorld.+///A class that implements the btIDebugDraw interface has to implement the drawLine method at a minimum.+///For color arguments the X,Y,Z components refer to Red, Green and Blue each in the range [0..1]+class	btIDebugDraw+{+	public:++	enum	DebugDrawModes+	{+		DBG_NoDebug=0,+		DBG_DrawWireframe = 1,+		DBG_DrawAabb=2,+		DBG_DrawFeaturesText=4,+		DBG_DrawContactPoints=8,+		DBG_NoDeactivation=16,+		DBG_NoHelpText = 32,+		DBG_DrawText=64,+		DBG_ProfileTimings = 128,+		DBG_EnableSatComparison = 256,+		DBG_DisableBulletLCP = 512,+		DBG_EnableCCD = 1024,+		DBG_DrawConstraints = (1 << 11),+		DBG_DrawConstraintLimits = (1 << 12),+		DBG_FastWireframe = (1<<13),+		DBG_MAX_DEBUG_DRAW_MODE+	};++	virtual ~btIDebugDraw() {};++	virtual void	drawLine(const btVector3& from,const btVector3& to,const btVector3& color)=0;+		+	virtual void    drawLine(const btVector3& from,const btVector3& to, const btVector3& fromColor, const btVector3& toColor)+	{+        (void) toColor;+		drawLine (from, to, fromColor);+	}++	virtual void	drawSphere(btScalar radius, const btTransform& transform, const btVector3& color)+	{+		btVector3 start = transform.getOrigin();++		const btVector3 xoffs = transform.getBasis() * btVector3(radius,0,0);+		const btVector3 yoffs = transform.getBasis() * btVector3(0,radius,0);+		const btVector3 zoffs = transform.getBasis() * btVector3(0,0,radius);++		// XY +		drawLine(start-xoffs, start+yoffs, color);+		drawLine(start+yoffs, start+xoffs, color);+		drawLine(start+xoffs, start-yoffs, color);+		drawLine(start-yoffs, start-xoffs, color);++		// XZ+		drawLine(start-xoffs, start+zoffs, color);+		drawLine(start+zoffs, start+xoffs, color);+		drawLine(start+xoffs, start-zoffs, color);+		drawLine(start-zoffs, start-xoffs, color);++		// YZ+		drawLine(start-yoffs, start+zoffs, color);+		drawLine(start+zoffs, start+yoffs, color);+		drawLine(start+yoffs, start-zoffs, color);+		drawLine(start-zoffs, start-yoffs, color);+	}+	+	virtual void	drawSphere (const btVector3& p, btScalar radius, const btVector3& color)+	{+		btTransform tr;+		tr.setIdentity();+		tr.setOrigin(p);+		drawSphere(radius,tr,color);+	}+	+	virtual	void	drawTriangle(const btVector3& v0,const btVector3& v1,const btVector3& v2,const btVector3& /*n0*/,const btVector3& /*n1*/,const btVector3& /*n2*/,const btVector3& color, btScalar alpha)+	{+		drawTriangle(v0,v1,v2,color,alpha);+	}+	virtual	void	drawTriangle(const btVector3& v0,const btVector3& v1,const btVector3& v2,const btVector3& color, btScalar /*alpha*/)+	{+		drawLine(v0,v1,color);+		drawLine(v1,v2,color);+		drawLine(v2,v0,color);+	}++	virtual void	drawContactPoint(const btVector3& PointOnB,const btVector3& normalOnB,btScalar distance,int lifeTime,const btVector3& color)=0;++	virtual void	reportErrorWarning(const char* warningString) = 0;++	virtual void	draw3dText(const btVector3& location,const char* textString) = 0;+	+	virtual void	setDebugMode(int debugMode) =0;+	+	virtual int		getDebugMode() const = 0;++	virtual void drawAabb(const btVector3& from,const btVector3& to,const btVector3& color)+	{++		btVector3 halfExtents = (to-from)* 0.5f;+		btVector3 center = (to+from) *0.5f;+		int i,j;++		btVector3 edgecoord(1.f,1.f,1.f),pa,pb;+		for (i=0;i<4;i++)+		{+			for (j=0;j<3;j++)+			{+				pa = btVector3(edgecoord[0]*halfExtents[0], edgecoord[1]*halfExtents[1],		+					edgecoord[2]*halfExtents[2]);+				pa+=center;++				int othercoord = j%3;+				edgecoord[othercoord]*=-1.f;+				pb = btVector3(edgecoord[0]*halfExtents[0], edgecoord[1]*halfExtents[1],	+					edgecoord[2]*halfExtents[2]);+				pb+=center;++				drawLine(pa,pb,color);+			}+			edgecoord = btVector3(-1.f,-1.f,-1.f);+			if (i<3)+				edgecoord[i]*=-1.f;+		}+	}+	virtual void drawTransform(const btTransform& transform, btScalar orthoLen)+	{+		btVector3 start = transform.getOrigin();+		drawLine(start, start+transform.getBasis() * btVector3(orthoLen, 0, 0), btVector3(0.7f,0,0));+		drawLine(start, start+transform.getBasis() * btVector3(0, orthoLen, 0), btVector3(0,0.7f,0));+		drawLine(start, start+transform.getBasis() * btVector3(0, 0, orthoLen), btVector3(0,0,0.7f));+	}++	virtual void drawArc(const btVector3& center, const btVector3& normal, const btVector3& axis, btScalar radiusA, btScalar radiusB, btScalar minAngle, btScalar maxAngle, +				const btVector3& color, bool drawSect, btScalar stepDegrees = btScalar(10.f))+	{+		const btVector3& vx = axis;+		btVector3 vy = normal.cross(axis);+		btScalar step = stepDegrees * SIMD_RADS_PER_DEG;+		int nSteps = (int)((maxAngle - minAngle) / step);+		if(!nSteps) nSteps = 1;+		btVector3 prev = center + radiusA * vx * btCos(minAngle) + radiusB * vy * btSin(minAngle);+		if(drawSect)+		{+			drawLine(center, prev, color);+		}+		for(int i = 1; i <= nSteps; i++)+		{+			btScalar angle = minAngle + (maxAngle - minAngle) * btScalar(i) / btScalar(nSteps);+			btVector3 next = center + radiusA * vx * btCos(angle) + radiusB * vy * btSin(angle);+			drawLine(prev, next, color);+			prev = next;+		}+		if(drawSect)+		{+			drawLine(center, prev, color);+		}+	}+	virtual void drawSpherePatch(const btVector3& center, const btVector3& up, const btVector3& axis, btScalar radius, +		btScalar minTh, btScalar maxTh, btScalar minPs, btScalar maxPs, const btVector3& color, btScalar stepDegrees = btScalar(10.f))+	{+		btVector3 vA[74];+		btVector3 vB[74];+		btVector3 *pvA = vA, *pvB = vB, *pT;+		btVector3 npole = center + up * radius;+		btVector3 spole = center - up * radius;+		btVector3 arcStart;+		btScalar step = stepDegrees * SIMD_RADS_PER_DEG;+		const btVector3& kv = up;+		const btVector3& iv = axis;+		btVector3 jv = kv.cross(iv);+		bool drawN = false;+		bool drawS = false;+		if(minTh <= -SIMD_HALF_PI)+		{+			minTh = -SIMD_HALF_PI + step;+			drawN = true;+		}+		if(maxTh >= SIMD_HALF_PI)+		{+			maxTh = SIMD_HALF_PI - step;+			drawS = true;+		}+		if(minTh > maxTh)+		{+			minTh = -SIMD_HALF_PI + step;+			maxTh =  SIMD_HALF_PI - step;+			drawN = drawS = true;+		}+		int n_hor = (int)((maxTh - minTh) / step) + 1;+		if(n_hor < 2) n_hor = 2;+		btScalar step_h = (maxTh - minTh) / btScalar(n_hor - 1);+		bool isClosed = false;+		if(minPs > maxPs)+		{+			minPs = -SIMD_PI + step;+			maxPs =  SIMD_PI;+			isClosed = true;+		}+		else if((maxPs - minPs) >= SIMD_PI * btScalar(2.f))+		{+			isClosed = true;+		}+		else+		{+			isClosed = false;+		}+		int n_vert = (int)((maxPs - minPs) / step) + 1;+		if(n_vert < 2) n_vert = 2;+		btScalar step_v = (maxPs - minPs) / btScalar(n_vert - 1);+		for(int i = 0; i < n_hor; i++)+		{+			btScalar th = minTh + btScalar(i) * step_h;+			btScalar sth = radius * btSin(th);+			btScalar cth = radius * btCos(th);+			for(int j = 0; j < n_vert; j++)+			{+				btScalar psi = minPs + btScalar(j) * step_v;+				btScalar sps = btSin(psi);+				btScalar cps = btCos(psi);+				pvB[j] = center + cth * cps * iv + cth * sps * jv + sth * kv;+				if(i)+				{+					drawLine(pvA[j], pvB[j], color);+				}+				else if(drawS)+				{+					drawLine(spole, pvB[j], color);+				}+				if(j)+				{+					drawLine(pvB[j-1], pvB[j], color);+				}+				else+				{+					arcStart = pvB[j];+				}+				if((i == (n_hor - 1)) && drawN)+				{+					drawLine(npole, pvB[j], color);+				}+				if(isClosed)+				{+					if(j == (n_vert-1))+					{+						drawLine(arcStart, pvB[j], color);+					}+				}+				else+				{+					if(((!i) || (i == (n_hor-1))) && ((!j) || (j == (n_vert-1))))+					{+						drawLine(center, pvB[j], color);+					}+				}+			}+			pT = pvA; pvA = pvB; pvB = pT;+		}+	}+	+	virtual void drawBox(const btVector3& bbMin, const btVector3& bbMax, const btVector3& color)+	{+		drawLine(btVector3(bbMin[0], bbMin[1], bbMin[2]), btVector3(bbMax[0], bbMin[1], bbMin[2]), color);+		drawLine(btVector3(bbMax[0], bbMin[1], bbMin[2]), btVector3(bbMax[0], bbMax[1], bbMin[2]), color);+		drawLine(btVector3(bbMax[0], bbMax[1], bbMin[2]), btVector3(bbMin[0], bbMax[1], bbMin[2]), color);+		drawLine(btVector3(bbMin[0], bbMax[1], bbMin[2]), btVector3(bbMin[0], bbMin[1], bbMin[2]), color);+		drawLine(btVector3(bbMin[0], bbMin[1], bbMin[2]), btVector3(bbMin[0], bbMin[1], bbMax[2]), color);+		drawLine(btVector3(bbMax[0], bbMin[1], bbMin[2]), btVector3(bbMax[0], bbMin[1], bbMax[2]), color);+		drawLine(btVector3(bbMax[0], bbMax[1], bbMin[2]), btVector3(bbMax[0], bbMax[1], bbMax[2]), color);+		drawLine(btVector3(bbMin[0], bbMax[1], bbMin[2]), btVector3(bbMin[0], bbMax[1], bbMax[2]), color);+		drawLine(btVector3(bbMin[0], bbMin[1], bbMax[2]), btVector3(bbMax[0], bbMin[1], bbMax[2]), color);+		drawLine(btVector3(bbMax[0], bbMin[1], bbMax[2]), btVector3(bbMax[0], bbMax[1], bbMax[2]), color);+		drawLine(btVector3(bbMax[0], bbMax[1], bbMax[2]), btVector3(bbMin[0], bbMax[1], bbMax[2]), color);+		drawLine(btVector3(bbMin[0], bbMax[1], bbMax[2]), btVector3(bbMin[0], bbMin[1], bbMax[2]), color);+	}+	virtual void drawBox(const btVector3& bbMin, const btVector3& bbMax, const btTransform& trans, const btVector3& color)+	{+		drawLine(trans * btVector3(bbMin[0], bbMin[1], bbMin[2]), trans * btVector3(bbMax[0], bbMin[1], bbMin[2]), color);+		drawLine(trans * btVector3(bbMax[0], bbMin[1], bbMin[2]), trans * btVector3(bbMax[0], bbMax[1], bbMin[2]), color);+		drawLine(trans * btVector3(bbMax[0], bbMax[1], bbMin[2]), trans * btVector3(bbMin[0], bbMax[1], bbMin[2]), color);+		drawLine(trans * btVector3(bbMin[0], bbMax[1], bbMin[2]), trans * btVector3(bbMin[0], bbMin[1], bbMin[2]), color);+		drawLine(trans * btVector3(bbMin[0], bbMin[1], bbMin[2]), trans * btVector3(bbMin[0], bbMin[1], bbMax[2]), color);+		drawLine(trans * btVector3(bbMax[0], bbMin[1], bbMin[2]), trans * btVector3(bbMax[0], bbMin[1], bbMax[2]), color);+		drawLine(trans * btVector3(bbMax[0], bbMax[1], bbMin[2]), trans * btVector3(bbMax[0], bbMax[1], bbMax[2]), color);+		drawLine(trans * btVector3(bbMin[0], bbMax[1], bbMin[2]), trans * btVector3(bbMin[0], bbMax[1], bbMax[2]), color);+		drawLine(trans * btVector3(bbMin[0], bbMin[1], bbMax[2]), trans * btVector3(bbMax[0], bbMin[1], bbMax[2]), color);+		drawLine(trans * btVector3(bbMax[0], bbMin[1], bbMax[2]), trans * btVector3(bbMax[0], bbMax[1], bbMax[2]), color);+		drawLine(trans * btVector3(bbMax[0], bbMax[1], bbMax[2]), trans * btVector3(bbMin[0], bbMax[1], bbMax[2]), color);+		drawLine(trans * btVector3(bbMin[0], bbMax[1], bbMax[2]), trans * btVector3(bbMin[0], bbMin[1], bbMax[2]), color);+	}++	virtual void drawCapsule(btScalar radius, btScalar halfHeight, int upAxis, const btTransform& transform, const btVector3& color)+	{+		btVector3 capStart(0.f,0.f,0.f);+		capStart[upAxis] = -halfHeight;++		btVector3 capEnd(0.f,0.f,0.f);+		capEnd[upAxis] = halfHeight;++		// Draw the ends+		{++			btTransform childTransform = transform;+			childTransform.getOrigin() = transform * capStart;+			drawSphere(radius, childTransform, color);+		}++		{+			btTransform childTransform = transform;+			childTransform.getOrigin() = transform * capEnd;+			drawSphere(radius, childTransform, color);+		}++		// Draw some additional lines+		btVector3 start = transform.getOrigin();++		capStart[(upAxis+1)%3] = radius;+		capEnd[(upAxis+1)%3] = radius;+		drawLine(start+transform.getBasis() * capStart,start+transform.getBasis() * capEnd, color);+		capStart[(upAxis+1)%3] = -radius;+		capEnd[(upAxis+1)%3] = -radius;+		drawLine(start+transform.getBasis() * capStart,start+transform.getBasis() * capEnd, color);++		capStart[(upAxis+1)%3] = 0.f;+		capEnd[(upAxis+1)%3] = 0.f;++		capStart[(upAxis+2)%3] = radius;+		capEnd[(upAxis+2)%3] = radius;+		drawLine(start+transform.getBasis() * capStart,start+transform.getBasis() * capEnd, color);+		capStart[(upAxis+2)%3] = -radius;+		capEnd[(upAxis+2)%3] = -radius;+		drawLine(start+transform.getBasis() * capStart,start+transform.getBasis() * capEnd, color);+	}++	virtual void drawCylinder(btScalar radius, btScalar halfHeight, int upAxis, const btTransform& transform, const btVector3& color)+	{+		btVector3 start = transform.getOrigin();+		btVector3	offsetHeight(0,0,0);+		offsetHeight[upAxis] = halfHeight;+		btVector3	offsetRadius(0,0,0);+		offsetRadius[(upAxis+1)%3] = radius;+		drawLine(start+transform.getBasis() * (offsetHeight+offsetRadius),start+transform.getBasis() * (-offsetHeight+offsetRadius),color);+		drawLine(start+transform.getBasis() * (offsetHeight-offsetRadius),start+transform.getBasis() * (-offsetHeight-offsetRadius),color);++		// Drawing top and bottom caps of the cylinder+		btVector3 yaxis(0,0,0);+		yaxis[upAxis] = btScalar(1.0);+		btVector3 xaxis(0,0,0);+		xaxis[(upAxis+1)%3] = btScalar(1.0);+		drawArc(start-transform.getBasis()*(offsetHeight),transform.getBasis()*yaxis,transform.getBasis()*xaxis,radius,radius,0,SIMD_2_PI,color,false,btScalar(10.0));+		drawArc(start+transform.getBasis()*(offsetHeight),transform.getBasis()*yaxis,transform.getBasis()*xaxis,radius,radius,0,SIMD_2_PI,color,false,btScalar(10.0));+	}++	virtual void drawCone(btScalar radius, btScalar height, int upAxis, const btTransform& transform, const btVector3& color)+	{++		btVector3 start = transform.getOrigin();++		btVector3	offsetHeight(0,0,0);+		offsetHeight[upAxis] = height * btScalar(0.5);+		btVector3	offsetRadius(0,0,0);+		offsetRadius[(upAxis+1)%3] = radius;+		btVector3	offset2Radius(0,0,0);+		offset2Radius[(upAxis+2)%3] = radius;++		drawLine(start+transform.getBasis() * (offsetHeight),start+transform.getBasis() * (-offsetHeight+offsetRadius),color);+		drawLine(start+transform.getBasis() * (offsetHeight),start+transform.getBasis() * (-offsetHeight-offsetRadius),color);+		drawLine(start+transform.getBasis() * (offsetHeight),start+transform.getBasis() * (-offsetHeight+offset2Radius),color);+		drawLine(start+transform.getBasis() * (offsetHeight),start+transform.getBasis() * (-offsetHeight-offset2Radius),color);++		// Drawing the base of the cone+		btVector3 yaxis(0,0,0);+		yaxis[upAxis] = btScalar(1.0);+		btVector3 xaxis(0,0,0);+		xaxis[(upAxis+1)%3] = btScalar(1.0);+		drawArc(start-transform.getBasis()*(offsetHeight),transform.getBasis()*yaxis,transform.getBasis()*xaxis,radius,radius,0,SIMD_2_PI,color,false,10.0);+	}++	virtual void drawPlane(const btVector3& planeNormal, btScalar planeConst, const btTransform& transform, const btVector3& color)+	{+		btVector3 planeOrigin = planeNormal * planeConst;+		btVector3 vec0,vec1;+		btPlaneSpace1(planeNormal,vec0,vec1);+		btScalar vecLen = 100.f;+		btVector3 pt0 = planeOrigin + vec0*vecLen;+		btVector3 pt1 = planeOrigin - vec0*vecLen;+		btVector3 pt2 = planeOrigin + vec1*vecLen;+		btVector3 pt3 = planeOrigin - vec1*vecLen;+		drawLine(transform*pt0,transform*pt1,color);+		drawLine(transform*pt2,transform*pt3,color);+	}+};+++#endif //BT_IDEBUG_DRAW__H+
+ bullet/LinearMath/btList.h view
@@ -0,0 +1,73 @@+/*+Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++++#ifndef BT_GEN_LIST_H+#define BT_GEN_LIST_H++class btGEN_Link {+public:+    btGEN_Link() : m_next(0), m_prev(0) {}+    btGEN_Link(btGEN_Link *next, btGEN_Link *prev) : m_next(next), m_prev(prev) {}+    +    btGEN_Link *getNext() const { return m_next; }  +    btGEN_Link *getPrev() const { return m_prev; }  ++    bool isHead() const { return m_prev == 0; }+    bool isTail() const { return m_next == 0; }++    void insertBefore(btGEN_Link *link) {+        m_next         = link;+        m_prev         = link->m_prev;+        m_next->m_prev = this;+        m_prev->m_next = this;+    } ++    void insertAfter(btGEN_Link *link) {+        m_next         = link->m_next;+        m_prev         = link;+        m_next->m_prev = this;+        m_prev->m_next = this;+    } ++    void remove() { +        m_next->m_prev = m_prev; +        m_prev->m_next = m_next;+    }++private:  +    btGEN_Link  *m_next;+    btGEN_Link  *m_prev;+};++class btGEN_List {+public:+    btGEN_List() : m_head(&m_tail, 0), m_tail(0, &m_head) {}++    btGEN_Link *getHead() const { return m_head.getNext(); } +    btGEN_Link *getTail() const { return m_tail.getPrev(); } ++    void addHead(btGEN_Link *link) { link->insertAfter(&m_head); }+    void addTail(btGEN_Link *link) { link->insertBefore(&m_tail); }+    +private:+    btGEN_Link m_head;+    btGEN_Link m_tail;+};++#endif //BT_GEN_LIST_H+++
+ bullet/LinearMath/btMatrix3x3.h view
@@ -0,0 +1,771 @@+/*+Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+++#ifndef	BT_MATRIX3x3_H+#define BT_MATRIX3x3_H++#include "btVector3.h"+#include "btQuaternion.h"++#ifdef BT_USE_DOUBLE_PRECISION+#define btMatrix3x3Data	btMatrix3x3DoubleData +#else+#define btMatrix3x3Data	btMatrix3x3FloatData+#endif //BT_USE_DOUBLE_PRECISION+++/**@brief The btMatrix3x3 class implements a 3x3 rotation matrix, to perform linear algebra in combination with btQuaternion, btTransform and btVector3.+* Make sure to only include a pure orthogonal matrix without scaling. */+class btMatrix3x3 {++	///Data storage for the matrix, each vector is a row of the matrix+	btVector3 m_el[3];++public:+	/** @brief No initializaion constructor */+	btMatrix3x3 () {}++	//		explicit btMatrix3x3(const btScalar *m) { setFromOpenGLSubMatrix(m); }++	/**@brief Constructor from Quaternion */+	explicit btMatrix3x3(const btQuaternion& q) { setRotation(q); }+	/*+	template <typename btScalar>+	Matrix3x3(const btScalar& yaw, const btScalar& pitch, const btScalar& roll)+	{ +	setEulerYPR(yaw, pitch, roll);+	}+	*/+	/** @brief Constructor with row major formatting */+	btMatrix3x3(const btScalar& xx, const btScalar& xy, const btScalar& xz,+		const btScalar& yx, const btScalar& yy, const btScalar& yz,+		const btScalar& zx, const btScalar& zy, const btScalar& zz)+	{ +		setValue(xx, xy, xz, +			yx, yy, yz, +			zx, zy, zz);+	}+	/** @brief Copy constructor */+	SIMD_FORCE_INLINE btMatrix3x3 (const btMatrix3x3& other)+	{+		m_el[0] = other.m_el[0];+		m_el[1] = other.m_el[1];+		m_el[2] = other.m_el[2];+	}+	/** @brief Assignment Operator */+	SIMD_FORCE_INLINE btMatrix3x3& operator=(const btMatrix3x3& other)+	{+		m_el[0] = other.m_el[0];+		m_el[1] = other.m_el[1];+		m_el[2] = other.m_el[2];+		return *this;+	}++	/** @brief Get a column of the matrix as a vector +	*  @param i Column number 0 indexed */+	SIMD_FORCE_INLINE btVector3 getColumn(int i) const+	{+		return btVector3(m_el[0][i],m_el[1][i],m_el[2][i]);+	}+++	/** @brief Get a row of the matrix as a vector +	*  @param i Row number 0 indexed */+	SIMD_FORCE_INLINE const btVector3& getRow(int i) const+	{+		btFullAssert(0 <= i && i < 3);+		return m_el[i];+	}++	/** @brief Get a mutable reference to a row of the matrix as a vector +	*  @param i Row number 0 indexed */+	SIMD_FORCE_INLINE btVector3&  operator[](int i)+	{ +		btFullAssert(0 <= i && i < 3);+		return m_el[i]; +	}++	/** @brief Get a const reference to a row of the matrix as a vector +	*  @param i Row number 0 indexed */+	SIMD_FORCE_INLINE const btVector3& operator[](int i) const+	{+		btFullAssert(0 <= i && i < 3);+		return m_el[i]; +	}++	/** @brief Multiply by the target matrix on the right+	*  @param m Rotation matrix to be applied +	* Equivilant to this = this * m */+	btMatrix3x3& operator*=(const btMatrix3x3& m); ++	/** @brief Adds by the target matrix on the right+	*  @param m matrix to be applied +	* Equivilant to this = this + m */+	btMatrix3x3& operator+=(const btMatrix3x3& m); ++	/** @brief Substractss by the target matrix on the right+	*  @param m matrix to be applied +	* Equivilant to this = this - m */+	btMatrix3x3& operator-=(const btMatrix3x3& m); ++	/** @brief Set from the rotational part of a 4x4 OpenGL matrix+	*  @param m A pointer to the beginning of the array of scalars*/+	void setFromOpenGLSubMatrix(const btScalar *m)+	{+		m_el[0].setValue(m[0],m[4],m[8]);+		m_el[1].setValue(m[1],m[5],m[9]);+		m_el[2].setValue(m[2],m[6],m[10]);++	}+	/** @brief Set the values of the matrix explicitly (row major)+	*  @param xx Top left+	*  @param xy Top Middle+	*  @param xz Top Right+	*  @param yx Middle Left+	*  @param yy Middle Middle+	*  @param yz Middle Right+	*  @param zx Bottom Left+	*  @param zy Bottom Middle+	*  @param zz Bottom Right*/+	void setValue(const btScalar& xx, const btScalar& xy, const btScalar& xz, +		const btScalar& yx, const btScalar& yy, const btScalar& yz, +		const btScalar& zx, const btScalar& zy, const btScalar& zz)+	{+		m_el[0].setValue(xx,xy,xz);+		m_el[1].setValue(yx,yy,yz);+		m_el[2].setValue(zx,zy,zz);+	}++	/** @brief Set the matrix from a quaternion+	*  @param q The Quaternion to match */  +	void setRotation(const btQuaternion& q) +	{+		btScalar d = q.length2();+		btFullAssert(d != btScalar(0.0));+		btScalar s = btScalar(2.0) / d;+		btScalar xs = q.x() * s,   ys = q.y() * s,   zs = q.z() * s;+		btScalar wx = q.w() * xs,  wy = q.w() * ys,  wz = q.w() * zs;+		btScalar xx = q.x() * xs,  xy = q.x() * ys,  xz = q.x() * zs;+		btScalar yy = q.y() * ys,  yz = q.y() * zs,  zz = q.z() * zs;+		setValue(btScalar(1.0) - (yy + zz), xy - wz, xz + wy,+			xy + wz, btScalar(1.0) - (xx + zz), yz - wx,+			xz - wy, yz + wx, btScalar(1.0) - (xx + yy));+	}+++	/** @brief Set the matrix from euler angles using YPR around YXZ respectively+	*  @param yaw Yaw about Y axis+	*  @param pitch Pitch about X axis+	*  @param roll Roll about Z axis +	*/+	void setEulerYPR(const btScalar& yaw, const btScalar& pitch, const btScalar& roll) +	{+		setEulerZYX(roll, pitch, yaw);+	}++	/** @brief Set the matrix from euler angles YPR around ZYX axes+	* @param eulerX Roll about X axis+	* @param eulerY Pitch around Y axis+	* @param eulerZ Yaw aboud Z axis+	* +	* These angles are used to produce a rotation matrix. The euler+	* angles are applied in ZYX order. I.e a vector is first rotated +	* about X then Y and then Z+	**/+	void setEulerZYX(btScalar eulerX,btScalar eulerY,btScalar eulerZ) { +		///@todo proposed to reverse this since it's labeled zyx but takes arguments xyz and it will match all other parts of the code+		btScalar ci ( btCos(eulerX)); +		btScalar cj ( btCos(eulerY)); +		btScalar ch ( btCos(eulerZ)); +		btScalar si ( btSin(eulerX)); +		btScalar sj ( btSin(eulerY)); +		btScalar sh ( btSin(eulerZ)); +		btScalar cc = ci * ch; +		btScalar cs = ci * sh; +		btScalar sc = si * ch; +		btScalar ss = si * sh;++		setValue(cj * ch, sj * sc - cs, sj * cc + ss,+			cj * sh, sj * ss + cc, sj * cs - sc, +			-sj,      cj * si,      cj * ci);+	}++	/**@brief Set the matrix to the identity */+	void setIdentity()+	{ +		setValue(btScalar(1.0), btScalar(0.0), btScalar(0.0), +			btScalar(0.0), btScalar(1.0), btScalar(0.0), +			btScalar(0.0), btScalar(0.0), btScalar(1.0)); +	}++	static const btMatrix3x3&	getIdentity()+	{+		static const btMatrix3x3 identityMatrix(btScalar(1.0), btScalar(0.0), btScalar(0.0), +			btScalar(0.0), btScalar(1.0), btScalar(0.0), +			btScalar(0.0), btScalar(0.0), btScalar(1.0));+		return identityMatrix;+	}++	/**@brief Fill the rotational part of an OpenGL matrix and clear the shear/perspective+	* @param m The array to be filled */+	void getOpenGLSubMatrix(btScalar *m) const +	{+		m[0]  = btScalar(m_el[0].x()); +		m[1]  = btScalar(m_el[1].x());+		m[2]  = btScalar(m_el[2].x());+		m[3]  = btScalar(0.0); +		m[4]  = btScalar(m_el[0].y());+		m[5]  = btScalar(m_el[1].y());+		m[6]  = btScalar(m_el[2].y());+		m[7]  = btScalar(0.0); +		m[8]  = btScalar(m_el[0].z()); +		m[9]  = btScalar(m_el[1].z());+		m[10] = btScalar(m_el[2].z());+		m[11] = btScalar(0.0); +	}++	/**@brief Get the matrix represented as a quaternion +	* @param q The quaternion which will be set */+	void getRotation(btQuaternion& q) const+	{+		btScalar trace = m_el[0].x() + m_el[1].y() + m_el[2].z();+		btScalar temp[4];++		if (trace > btScalar(0.0)) +		{+			btScalar s = btSqrt(trace + btScalar(1.0));+			temp[3]=(s * btScalar(0.5));+			s = btScalar(0.5) / s;++			temp[0]=((m_el[2].y() - m_el[1].z()) * s);+			temp[1]=((m_el[0].z() - m_el[2].x()) * s);+			temp[2]=((m_el[1].x() - m_el[0].y()) * s);+		} +		else +		{+			int i = m_el[0].x() < m_el[1].y() ? +				(m_el[1].y() < m_el[2].z() ? 2 : 1) :+				(m_el[0].x() < m_el[2].z() ? 2 : 0); +			int j = (i + 1) % 3;  +			int k = (i + 2) % 3;++			btScalar s = btSqrt(m_el[i][i] - m_el[j][j] - m_el[k][k] + btScalar(1.0));+			temp[i] = s * btScalar(0.5);+			s = btScalar(0.5) / s;++			temp[3] = (m_el[k][j] - m_el[j][k]) * s;+			temp[j] = (m_el[j][i] + m_el[i][j]) * s;+			temp[k] = (m_el[k][i] + m_el[i][k]) * s;+		}+		q.setValue(temp[0],temp[1],temp[2],temp[3]);+	}++	/**@brief Get the matrix represented as euler angles around YXZ, roundtrip with setEulerYPR+	* @param yaw Yaw around Y axis+	* @param pitch Pitch around X axis+	* @param roll around Z axis */	+	void getEulerYPR(btScalar& yaw, btScalar& pitch, btScalar& roll) const+	{++		// first use the normal calculus+		yaw = btScalar(btAtan2(m_el[1].x(), m_el[0].x()));+		pitch = btScalar(btAsin(-m_el[2].x()));+		roll = btScalar(btAtan2(m_el[2].y(), m_el[2].z()));++		// on pitch = +/-HalfPI+		if (btFabs(pitch)==SIMD_HALF_PI)+		{+			if (yaw>0)+				yaw-=SIMD_PI;+			else+				yaw+=SIMD_PI;++			if (roll>0)+				roll-=SIMD_PI;+			else+				roll+=SIMD_PI;+		}+	};+++	/**@brief Get the matrix represented as euler angles around ZYX+	* @param yaw Yaw around X axis+	* @param pitch Pitch around Y axis+	* @param roll around X axis +	* @param solution_number Which solution of two possible solutions ( 1 or 2) are possible values*/	+	void getEulerZYX(btScalar& yaw, btScalar& pitch, btScalar& roll, unsigned int solution_number = 1) const+	{+		struct Euler+		{+			btScalar yaw;+			btScalar pitch;+			btScalar roll;+		};++		Euler euler_out;+		Euler euler_out2; //second solution+		//get the pointer to the raw data++		// Check that pitch is not at a singularity+		if (btFabs(m_el[2].x()) >= 1)+		{+			euler_out.yaw = 0;+			euler_out2.yaw = 0;++			// From difference of angles formula+			btScalar delta = btAtan2(m_el[0].x(),m_el[0].z());+			if (m_el[2].x() > 0)  //gimbal locked up+			{+				euler_out.pitch = SIMD_PI / btScalar(2.0);+				euler_out2.pitch = SIMD_PI / btScalar(2.0);+				euler_out.roll = euler_out.pitch + delta;+				euler_out2.roll = euler_out.pitch + delta;+			}+			else // gimbal locked down+			{+				euler_out.pitch = -SIMD_PI / btScalar(2.0);+				euler_out2.pitch = -SIMD_PI / btScalar(2.0);+				euler_out.roll = -euler_out.pitch + delta;+				euler_out2.roll = -euler_out.pitch + delta;+			}+		}+		else+		{+			euler_out.pitch = - btAsin(m_el[2].x());+			euler_out2.pitch = SIMD_PI - euler_out.pitch;++			euler_out.roll = btAtan2(m_el[2].y()/btCos(euler_out.pitch), +				m_el[2].z()/btCos(euler_out.pitch));+			euler_out2.roll = btAtan2(m_el[2].y()/btCos(euler_out2.pitch), +				m_el[2].z()/btCos(euler_out2.pitch));++			euler_out.yaw = btAtan2(m_el[1].x()/btCos(euler_out.pitch), +				m_el[0].x()/btCos(euler_out.pitch));+			euler_out2.yaw = btAtan2(m_el[1].x()/btCos(euler_out2.pitch), +				m_el[0].x()/btCos(euler_out2.pitch));+		}++		if (solution_number == 1)+		{ +			yaw = euler_out.yaw; +			pitch = euler_out.pitch;+			roll = euler_out.roll;+		}+		else+		{ +			yaw = euler_out2.yaw; +			pitch = euler_out2.pitch;+			roll = euler_out2.roll;+		}+	}++	/**@brief Create a scaled copy of the matrix +	* @param s Scaling vector The elements of the vector will scale each column */++	btMatrix3x3 scaled(const btVector3& s) const+	{+		return btMatrix3x3(m_el[0].x() * s.x(), m_el[0].y() * s.y(), m_el[0].z() * s.z(),+			m_el[1].x() * s.x(), m_el[1].y() * s.y(), m_el[1].z() * s.z(),+			m_el[2].x() * s.x(), m_el[2].y() * s.y(), m_el[2].z() * s.z());+	}++	/**@brief Return the determinant of the matrix */+	btScalar            determinant() const;+	/**@brief Return the adjoint of the matrix */+	btMatrix3x3 adjoint() const;+	/**@brief Return the matrix with all values non negative */+	btMatrix3x3 absolute() const;+	/**@brief Return the transpose of the matrix */+	btMatrix3x3 transpose() const;+	/**@brief Return the inverse of the matrix */+	btMatrix3x3 inverse() const; ++	btMatrix3x3 transposeTimes(const btMatrix3x3& m) const;+	btMatrix3x3 timesTranspose(const btMatrix3x3& m) const;++	SIMD_FORCE_INLINE btScalar tdotx(const btVector3& v) const +	{+		return m_el[0].x() * v.x() + m_el[1].x() * v.y() + m_el[2].x() * v.z();+	}+	SIMD_FORCE_INLINE btScalar tdoty(const btVector3& v) const +	{+		return m_el[0].y() * v.x() + m_el[1].y() * v.y() + m_el[2].y() * v.z();+	}+	SIMD_FORCE_INLINE btScalar tdotz(const btVector3& v) const +	{+		return m_el[0].z() * v.x() + m_el[1].z() * v.y() + m_el[2].z() * v.z();+	}+++	/**@brief diagonalizes this matrix by the Jacobi method.+	* @param rot stores the rotation from the coordinate system in which the matrix is diagonal to the original+	* coordinate system, i.e., old_this = rot * new_this * rot^T. +	* @param threshold See iteration+	* @param iteration The iteration stops when all off-diagonal elements are less than the threshold multiplied +	* by the sum of the absolute values of the diagonal, or when maxSteps have been executed. +	* +	* Note that this matrix is assumed to be symmetric. +	*/+	void diagonalize(btMatrix3x3& rot, btScalar threshold, int maxSteps)+	{+		rot.setIdentity();+		for (int step = maxSteps; step > 0; step--)+		{+			// find off-diagonal element [p][q] with largest magnitude+			int p = 0;+			int q = 1;+			int r = 2;+			btScalar max = btFabs(m_el[0][1]);+			btScalar v = btFabs(m_el[0][2]);+			if (v > max)+			{+				q = 2;+				r = 1;+				max = v;+			}+			v = btFabs(m_el[1][2]);+			if (v > max)+			{+				p = 1;+				q = 2;+				r = 0;+				max = v;+			}++			btScalar t = threshold * (btFabs(m_el[0][0]) + btFabs(m_el[1][1]) + btFabs(m_el[2][2]));+			if (max <= t)+			{+				if (max <= SIMD_EPSILON * t)+				{+					return;+				}+				step = 1;+			}++			// compute Jacobi rotation J which leads to a zero for element [p][q] +			btScalar mpq = m_el[p][q];+			btScalar theta = (m_el[q][q] - m_el[p][p]) / (2 * mpq);+			btScalar theta2 = theta * theta;+			btScalar cos;+			btScalar sin;+			if (theta2 * theta2 < btScalar(10 / SIMD_EPSILON))+			{+				t = (theta >= 0) ? 1 / (theta + btSqrt(1 + theta2))+					: 1 / (theta - btSqrt(1 + theta2));+				cos = 1 / btSqrt(1 + t * t);+				sin = cos * t;+			}+			else+			{+				// approximation for large theta-value, i.e., a nearly diagonal matrix+				t = 1 / (theta * (2 + btScalar(0.5) / theta2));+				cos = 1 - btScalar(0.5) * t * t;+				sin = cos * t;+			}++			// apply rotation to matrix (this = J^T * this * J)+			m_el[p][q] = m_el[q][p] = 0;+			m_el[p][p] -= t * mpq;+			m_el[q][q] += t * mpq;+			btScalar mrp = m_el[r][p];+			btScalar mrq = m_el[r][q];+			m_el[r][p] = m_el[p][r] = cos * mrp - sin * mrq;+			m_el[r][q] = m_el[q][r] = cos * mrq + sin * mrp;++			// apply rotation to rot (rot = rot * J)+			for (int i = 0; i < 3; i++)+			{+				btVector3& row = rot[i];+				mrp = row[p];+				mrq = row[q];+				row[p] = cos * mrp - sin * mrq;+				row[q] = cos * mrq + sin * mrp;+			}+		}+	}+++++	/**@brief Calculate the matrix cofactor +	* @param r1 The first row to use for calculating the cofactor+	* @param c1 The first column to use for calculating the cofactor+	* @param r1 The second row to use for calculating the cofactor+	* @param c1 The second column to use for calculating the cofactor+	* See http://en.wikipedia.org/wiki/Cofactor_(linear_algebra) for more details+	*/+	btScalar cofac(int r1, int c1, int r2, int c2) const +	{+		return m_el[r1][c1] * m_el[r2][c2] - m_el[r1][c2] * m_el[r2][c1];+	}++	void	serialize(struct	btMatrix3x3Data& dataOut) const;++	void	serializeFloat(struct	btMatrix3x3FloatData& dataOut) const;++	void	deSerialize(const struct	btMatrix3x3Data& dataIn);++	void	deSerializeFloat(const struct	btMatrix3x3FloatData& dataIn);++	void	deSerializeDouble(const struct	btMatrix3x3DoubleData& dataIn);++};+++SIMD_FORCE_INLINE btMatrix3x3& +btMatrix3x3::operator*=(const btMatrix3x3& m)+{+	setValue(m.tdotx(m_el[0]), m.tdoty(m_el[0]), m.tdotz(m_el[0]),+		m.tdotx(m_el[1]), m.tdoty(m_el[1]), m.tdotz(m_el[1]),+		m.tdotx(m_el[2]), m.tdoty(m_el[2]), m.tdotz(m_el[2]));+	return *this;+}++SIMD_FORCE_INLINE btMatrix3x3& +btMatrix3x3::operator+=(const btMatrix3x3& m)+{+	setValue(+		m_el[0][0]+m.m_el[0][0], +		m_el[0][1]+m.m_el[0][1],+		m_el[0][2]+m.m_el[0][2],+		m_el[1][0]+m.m_el[1][0], +		m_el[1][1]+m.m_el[1][1],+		m_el[1][2]+m.m_el[1][2],+		m_el[2][0]+m.m_el[2][0], +		m_el[2][1]+m.m_el[2][1],+		m_el[2][2]+m.m_el[2][2]);+	return *this;+}++SIMD_FORCE_INLINE btMatrix3x3+operator*(const btMatrix3x3& m, const btScalar & k)+{+	return btMatrix3x3(+		m[0].x()*k,m[0].y()*k,m[0].z()*k,+		m[1].x()*k,m[1].y()*k,m[1].z()*k,+		m[2].x()*k,m[2].y()*k,m[2].z()*k);+}++ SIMD_FORCE_INLINE btMatrix3x3 +operator+(const btMatrix3x3& m1, const btMatrix3x3& m2)+{+	return btMatrix3x3(+	m1[0][0]+m2[0][0], +	m1[0][1]+m2[0][1],+	m1[0][2]+m2[0][2],+	m1[1][0]+m2[1][0], +	m1[1][1]+m2[1][1],+	m1[1][2]+m2[1][2],+	m1[2][0]+m2[2][0], +	m1[2][1]+m2[2][1],+	m1[2][2]+m2[2][2]);+}++SIMD_FORCE_INLINE btMatrix3x3 +operator-(const btMatrix3x3& m1, const btMatrix3x3& m2)+{+	return btMatrix3x3(+	m1[0][0]-m2[0][0], +	m1[0][1]-m2[0][1],+	m1[0][2]-m2[0][2],+	m1[1][0]-m2[1][0], +	m1[1][1]-m2[1][1],+	m1[1][2]-m2[1][2],+	m1[2][0]-m2[2][0], +	m1[2][1]-m2[2][1],+	m1[2][2]-m2[2][2]);+}+++SIMD_FORCE_INLINE btMatrix3x3& +btMatrix3x3::operator-=(const btMatrix3x3& m)+{+	setValue(+	m_el[0][0]-m.m_el[0][0], +	m_el[0][1]-m.m_el[0][1],+	m_el[0][2]-m.m_el[0][2],+	m_el[1][0]-m.m_el[1][0], +	m_el[1][1]-m.m_el[1][1],+	m_el[1][2]-m.m_el[1][2],+	m_el[2][0]-m.m_el[2][0], +	m_el[2][1]-m.m_el[2][1],+	m_el[2][2]-m.m_el[2][2]);+	return *this;+}+++SIMD_FORCE_INLINE btScalar +btMatrix3x3::determinant() const+{ +	return btTriple((*this)[0], (*this)[1], (*this)[2]);+}+++SIMD_FORCE_INLINE btMatrix3x3 +btMatrix3x3::absolute() const+{+	return btMatrix3x3(+		btFabs(m_el[0].x()), btFabs(m_el[0].y()), btFabs(m_el[0].z()),+		btFabs(m_el[1].x()), btFabs(m_el[1].y()), btFabs(m_el[1].z()),+		btFabs(m_el[2].x()), btFabs(m_el[2].y()), btFabs(m_el[2].z()));+}++SIMD_FORCE_INLINE btMatrix3x3 +btMatrix3x3::transpose() const +{+	return btMatrix3x3(m_el[0].x(), m_el[1].x(), m_el[2].x(),+		m_el[0].y(), m_el[1].y(), m_el[2].y(),+		m_el[0].z(), m_el[1].z(), m_el[2].z());+}++SIMD_FORCE_INLINE btMatrix3x3 +btMatrix3x3::adjoint() const +{+	return btMatrix3x3(cofac(1, 1, 2, 2), cofac(0, 2, 2, 1), cofac(0, 1, 1, 2),+		cofac(1, 2, 2, 0), cofac(0, 0, 2, 2), cofac(0, 2, 1, 0),+		cofac(1, 0, 2, 1), cofac(0, 1, 2, 0), cofac(0, 0, 1, 1));+}++SIMD_FORCE_INLINE btMatrix3x3 +btMatrix3x3::inverse() const+{+	btVector3 co(cofac(1, 1, 2, 2), cofac(1, 2, 2, 0), cofac(1, 0, 2, 1));+	btScalar det = (*this)[0].dot(co);+	btFullAssert(det != btScalar(0.0));+	btScalar s = btScalar(1.0) / det;+	return btMatrix3x3(co.x() * s, cofac(0, 2, 2, 1) * s, cofac(0, 1, 1, 2) * s,+		co.y() * s, cofac(0, 0, 2, 2) * s, cofac(0, 2, 1, 0) * s,+		co.z() * s, cofac(0, 1, 2, 0) * s, cofac(0, 0, 1, 1) * s);+}++SIMD_FORCE_INLINE btMatrix3x3 +btMatrix3x3::transposeTimes(const btMatrix3x3& m) const+{+	return btMatrix3x3(+		m_el[0].x() * m[0].x() + m_el[1].x() * m[1].x() + m_el[2].x() * m[2].x(),+		m_el[0].x() * m[0].y() + m_el[1].x() * m[1].y() + m_el[2].x() * m[2].y(),+		m_el[0].x() * m[0].z() + m_el[1].x() * m[1].z() + m_el[2].x() * m[2].z(),+		m_el[0].y() * m[0].x() + m_el[1].y() * m[1].x() + m_el[2].y() * m[2].x(),+		m_el[0].y() * m[0].y() + m_el[1].y() * m[1].y() + m_el[2].y() * m[2].y(),+		m_el[0].y() * m[0].z() + m_el[1].y() * m[1].z() + m_el[2].y() * m[2].z(),+		m_el[0].z() * m[0].x() + m_el[1].z() * m[1].x() + m_el[2].z() * m[2].x(),+		m_el[0].z() * m[0].y() + m_el[1].z() * m[1].y() + m_el[2].z() * m[2].y(),+		m_el[0].z() * m[0].z() + m_el[1].z() * m[1].z() + m_el[2].z() * m[2].z());+}++SIMD_FORCE_INLINE btMatrix3x3 +btMatrix3x3::timesTranspose(const btMatrix3x3& m) const+{+	return btMatrix3x3(+		m_el[0].dot(m[0]), m_el[0].dot(m[1]), m_el[0].dot(m[2]),+		m_el[1].dot(m[0]), m_el[1].dot(m[1]), m_el[1].dot(m[2]),+		m_el[2].dot(m[0]), m_el[2].dot(m[1]), m_el[2].dot(m[2]));++}++SIMD_FORCE_INLINE btVector3 +operator*(const btMatrix3x3& m, const btVector3& v) +{+	return btVector3(m[0].dot(v), m[1].dot(v), m[2].dot(v));+}+++SIMD_FORCE_INLINE btVector3+operator*(const btVector3& v, const btMatrix3x3& m)+{+	return btVector3(m.tdotx(v), m.tdoty(v), m.tdotz(v));+}++SIMD_FORCE_INLINE btMatrix3x3 +operator*(const btMatrix3x3& m1, const btMatrix3x3& m2)+{+	return btMatrix3x3(+		m2.tdotx( m1[0]), m2.tdoty( m1[0]), m2.tdotz( m1[0]),+		m2.tdotx( m1[1]), m2.tdoty( m1[1]), m2.tdotz( m1[1]),+		m2.tdotx( m1[2]), m2.tdoty( m1[2]), m2.tdotz( m1[2]));+}++/*+SIMD_FORCE_INLINE btMatrix3x3 btMultTransposeLeft(const btMatrix3x3& m1, const btMatrix3x3& m2) {+return btMatrix3x3(+m1[0][0] * m2[0][0] + m1[1][0] * m2[1][0] + m1[2][0] * m2[2][0],+m1[0][0] * m2[0][1] + m1[1][0] * m2[1][1] + m1[2][0] * m2[2][1],+m1[0][0] * m2[0][2] + m1[1][0] * m2[1][2] + m1[2][0] * m2[2][2],+m1[0][1] * m2[0][0] + m1[1][1] * m2[1][0] + m1[2][1] * m2[2][0],+m1[0][1] * m2[0][1] + m1[1][1] * m2[1][1] + m1[2][1] * m2[2][1],+m1[0][1] * m2[0][2] + m1[1][1] * m2[1][2] + m1[2][1] * m2[2][2],+m1[0][2] * m2[0][0] + m1[1][2] * m2[1][0] + m1[2][2] * m2[2][0],+m1[0][2] * m2[0][1] + m1[1][2] * m2[1][1] + m1[2][2] * m2[2][1],+m1[0][2] * m2[0][2] + m1[1][2] * m2[1][2] + m1[2][2] * m2[2][2]);+}+*/++/**@brief Equality operator between two matrices+* It will test all elements are equal.  */+SIMD_FORCE_INLINE bool operator==(const btMatrix3x3& m1, const btMatrix3x3& m2)+{+	return ( m1[0][0] == m2[0][0] && m1[1][0] == m2[1][0] && m1[2][0] == m2[2][0] &&+		m1[0][1] == m2[0][1] && m1[1][1] == m2[1][1] && m1[2][1] == m2[2][1] &&+		m1[0][2] == m2[0][2] && m1[1][2] == m2[1][2] && m1[2][2] == m2[2][2] );+}++///for serialization+struct	btMatrix3x3FloatData+{+	btVector3FloatData m_el[3];+};++///for serialization+struct	btMatrix3x3DoubleData+{+	btVector3DoubleData m_el[3];+};+++	++SIMD_FORCE_INLINE	void	btMatrix3x3::serialize(struct	btMatrix3x3Data& dataOut) const+{+	for (int i=0;i<3;i++)+		m_el[i].serialize(dataOut.m_el[i]);+}++SIMD_FORCE_INLINE	void	btMatrix3x3::serializeFloat(struct	btMatrix3x3FloatData& dataOut) const+{+	for (int i=0;i<3;i++)+		m_el[i].serializeFloat(dataOut.m_el[i]);+}+++SIMD_FORCE_INLINE	void	btMatrix3x3::deSerialize(const struct	btMatrix3x3Data& dataIn)+{+	for (int i=0;i<3;i++)+		m_el[i].deSerialize(dataIn.m_el[i]);+}++SIMD_FORCE_INLINE	void	btMatrix3x3::deSerializeFloat(const struct	btMatrix3x3FloatData& dataIn)+{+	for (int i=0;i<3;i++)+		m_el[i].deSerializeFloat(dataIn.m_el[i]);+}++SIMD_FORCE_INLINE	void	btMatrix3x3::deSerializeDouble(const struct	btMatrix3x3DoubleData& dataIn)+{+	for (int i=0;i<3;i++)+		m_el[i].deSerializeDouble(dataIn.m_el[i]);+}++#endif //BT_MATRIX3x3_H+
+ bullet/LinearMath/btMinMax.h view
@@ -0,0 +1,71 @@+/*+Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++++#ifndef BT_GEN_MINMAX_H+#define BT_GEN_MINMAX_H++#include "LinearMath/btScalar.h"++template <class T>+SIMD_FORCE_INLINE const T& btMin(const T& a, const T& b) +{+  return a < b ? a : b ;+}++template <class T>+SIMD_FORCE_INLINE const T& btMax(const T& a, const T& b) +{+  return  a > b ? a : b;+}++template <class T>+SIMD_FORCE_INLINE const T& btClamped(const T& a, const T& lb, const T& ub) +{+	return a < lb ? lb : (ub < a ? ub : a); +}++template <class T>+SIMD_FORCE_INLINE void btSetMin(T& a, const T& b) +{+    if (b < a) +	{+		a = b;+	}+}++template <class T>+SIMD_FORCE_INLINE void btSetMax(T& a, const T& b) +{+    if (a < b) +	{+		a = b;+	}+}++template <class T>+SIMD_FORCE_INLINE void btClamp(T& a, const T& lb, const T& ub) +{+	if (a < lb) +	{+		a = lb; +	}+	else if (ub < a) +	{+		a = ub;+	}+}++#endif //BT_GEN_MINMAX_H
+ bullet/LinearMath/btMotionState.h view
@@ -0,0 +1,40 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_MOTIONSTATE_H+#define BT_MOTIONSTATE_H++#include "btTransform.h"++///The btMotionState interface class allows the dynamics world to synchronize and interpolate the updated world transforms with graphics+///For optimizations, potentially only moving objects get synchronized (using setWorldPosition/setWorldOrientation)+class	btMotionState+{+	public:+		+		virtual ~btMotionState()+		{+			+		}+		+		virtual void	getWorldTransform(btTransform& worldTrans ) const =0;++		//Bullet only calls the update of worldtransform for active objects+		virtual void	setWorldTransform(const btTransform& worldTrans)=0;+		+	+};++#endif //BT_MOTIONSTATE_H
+ bullet/LinearMath/btPoolAllocator.h view
@@ -0,0 +1,121 @@+/*+Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+++#ifndef _BT_POOL_ALLOCATOR_H+#define _BT_POOL_ALLOCATOR_H++#include "btScalar.h"+#include "btAlignedAllocator.h"++///The btPoolAllocator class allows to efficiently allocate a large pool of objects, instead of dynamically allocating them separately.+class btPoolAllocator+{+	int				m_elemSize;+	int				m_maxElements;+	int				m_freeCount;+	void*			m_firstFree;+	unsigned char*	m_pool;++public:++	btPoolAllocator(int elemSize, int maxElements)+		:m_elemSize(elemSize),+		m_maxElements(maxElements)+	{+		m_pool = (unsigned char*) btAlignedAlloc( static_cast<unsigned int>(m_elemSize*m_maxElements),16);++		unsigned char* p = m_pool;+        m_firstFree = p;+        m_freeCount = m_maxElements;+        int count = m_maxElements;+        while (--count) {+            *(void**)p = (p + m_elemSize);+            p += m_elemSize;+        }+        *(void**)p = 0;+    }++	~btPoolAllocator()+	{+		btAlignedFree( m_pool);+	}++	int	getFreeCount() const+	{+		return m_freeCount;+	}++	int getUsedCount() const+	{+		return m_maxElements - m_freeCount;+	}++	int getMaxCount() const+	{+		return m_maxElements;+	}++	void*	allocate(int size)+	{+		// release mode fix+		(void)size;+		btAssert(!size || size<=m_elemSize);+		btAssert(m_freeCount>0);+        void* result = m_firstFree;+        m_firstFree = *(void**)m_firstFree;+        --m_freeCount;+        return result;+	}++	bool validPtr(void* ptr)+	{+		if (ptr) {+			if (((unsigned char*)ptr >= m_pool && (unsigned char*)ptr < m_pool + m_maxElements * m_elemSize))+			{+				return true;+			}+		}+		return false;+	}++	void	freeMemory(void* ptr)+	{+		 if (ptr) {+            btAssert((unsigned char*)ptr >= m_pool && (unsigned char*)ptr < m_pool + m_maxElements * m_elemSize);++            *(void**)ptr = m_firstFree;+            m_firstFree = ptr;+            ++m_freeCount;+        }+	}++	int	getElementSize() const+	{+		return m_elemSize;+	}++	unsigned char*	getPoolAddress()+	{+		return m_pool;+	}++	const unsigned char*	getPoolAddress() const+	{+		return m_pool;+	}++};++#endif //_BT_POOL_ALLOCATOR_H
+ bullet/LinearMath/btQuadWord.h view
@@ -0,0 +1,180 @@+/*+Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+++#ifndef BT_SIMD_QUADWORD_H+#define BT_SIMD_QUADWORD_H++#include "btScalar.h"+#include "btMinMax.h"+++#if defined (__CELLOS_LV2) && defined (__SPU__)+#include <altivec.h>+#endif++/**@brief The btQuadWord class is base class for btVector3 and btQuaternion. + * Some issues under PS3 Linux with IBM 2.1 SDK, gcc compiler prevent from using aligned quadword.+ */+#ifndef USE_LIBSPE2+ATTRIBUTE_ALIGNED16(class) btQuadWord+#else+class btQuadWord+#endif+{+protected:++#if defined (__SPU__) && defined (__CELLOS_LV2__)+	union {+		vec_float4 mVec128;+		btScalar	m_floats[4];+	};+public:+	vec_float4	get128() const+	{+		return mVec128;+	}+protected:+#else //__CELLOS_LV2__ __SPU__+	btScalar	m_floats[4];+#endif //__CELLOS_LV2__ __SPU__++	public:+  ++  /**@brief Return the x value */+		SIMD_FORCE_INLINE const btScalar& getX() const { return m_floats[0]; }+  /**@brief Return the y value */+		SIMD_FORCE_INLINE const btScalar& getY() const { return m_floats[1]; }+  /**@brief Return the z value */+		SIMD_FORCE_INLINE const btScalar& getZ() const { return m_floats[2]; }+  /**@brief Set the x value */+		SIMD_FORCE_INLINE void	setX(btScalar x) { m_floats[0] = x;};+  /**@brief Set the y value */+		SIMD_FORCE_INLINE void	setY(btScalar y) { m_floats[1] = y;};+  /**@brief Set the z value */+		SIMD_FORCE_INLINE void	setZ(btScalar z) { m_floats[2] = z;};+  /**@brief Set the w value */+		SIMD_FORCE_INLINE void	setW(btScalar w) { m_floats[3] = w;};+  /**@brief Return the x value */+		SIMD_FORCE_INLINE const btScalar& x() const { return m_floats[0]; }+  /**@brief Return the y value */+		SIMD_FORCE_INLINE const btScalar& y() const { return m_floats[1]; }+  /**@brief Return the z value */+		SIMD_FORCE_INLINE const btScalar& z() const { return m_floats[2]; }+  /**@brief Return the w value */+		SIMD_FORCE_INLINE const btScalar& w() const { return m_floats[3]; }++	//SIMD_FORCE_INLINE btScalar&       operator[](int i)       { return (&m_floats[0])[i];	}      +	//SIMD_FORCE_INLINE const btScalar& operator[](int i) const { return (&m_floats[0])[i]; }+	///operator btScalar*() replaces operator[], using implicit conversion. We added operator != and operator == to avoid pointer comparisons.+	SIMD_FORCE_INLINE	operator       btScalar *()       { return &m_floats[0]; }+	SIMD_FORCE_INLINE	operator const btScalar *() const { return &m_floats[0]; }++	SIMD_FORCE_INLINE	bool	operator==(const btQuadWord& other) const+	{+		return ((m_floats[3]==other.m_floats[3]) && (m_floats[2]==other.m_floats[2]) && (m_floats[1]==other.m_floats[1]) && (m_floats[0]==other.m_floats[0]));+	}++	SIMD_FORCE_INLINE	bool	operator!=(const btQuadWord& other) const+	{+		return !(*this == other);+	}++  /**@brief Set x,y,z and zero w +   * @param x Value of x+   * @param y Value of y+   * @param z Value of z+   */+		SIMD_FORCE_INLINE void 	setValue(const btScalar& x, const btScalar& y, const btScalar& z)+		{+			m_floats[0]=x;+			m_floats[1]=y;+			m_floats[2]=z;+			m_floats[3] = 0.f;+		}++/*		void getValue(btScalar *m) const +		{+			m[0] = m_floats[0];+			m[1] = m_floats[1];+			m[2] = m_floats[2];+		}+*/+/**@brief Set the values +   * @param x Value of x+   * @param y Value of y+   * @param z Value of z+   * @param w Value of w+   */+		SIMD_FORCE_INLINE void	setValue(const btScalar& x, const btScalar& y, const btScalar& z,const btScalar& w)+		{+			m_floats[0]=x;+			m_floats[1]=y;+			m_floats[2]=z;+			m_floats[3]=w;+		}+  /**@brief No initialization constructor */+		SIMD_FORCE_INLINE btQuadWord()+		//	:m_floats[0](btScalar(0.)),m_floats[1](btScalar(0.)),m_floats[2](btScalar(0.)),m_floats[3](btScalar(0.))+		{+		}+ +  /**@brief Three argument constructor (zeros w)+   * @param x Value of x+   * @param y Value of y+   * @param z Value of z+   */+		SIMD_FORCE_INLINE btQuadWord(const btScalar& x, const btScalar& y, const btScalar& z)		+		{+			m_floats[0] = x, m_floats[1] = y, m_floats[2] = z, m_floats[3] = 0.0f;+		}++/**@brief Initializing constructor+   * @param x Value of x+   * @param y Value of y+   * @param z Value of z+   * @param w Value of w+   */+		SIMD_FORCE_INLINE btQuadWord(const btScalar& x, const btScalar& y, const btScalar& z,const btScalar& w) +		{+			m_floats[0] = x, m_floats[1] = y, m_floats[2] = z, m_floats[3] = w;+		}++  /**@brief Set each element to the max of the current values and the values of another btQuadWord+   * @param other The other btQuadWord to compare with +   */+		SIMD_FORCE_INLINE void	setMax(const btQuadWord& other)+		{+			btSetMax(m_floats[0], other.m_floats[0]);+			btSetMax(m_floats[1], other.m_floats[1]);+			btSetMax(m_floats[2], other.m_floats[2]);+			btSetMax(m_floats[3], other.m_floats[3]);+		}+  /**@brief Set each element to the min of the current values and the values of another btQuadWord+   * @param other The other btQuadWord to compare with +   */+		SIMD_FORCE_INLINE void	setMin(const btQuadWord& other)+		{+			btSetMin(m_floats[0], other.m_floats[0]);+			btSetMin(m_floats[1], other.m_floats[1]);+			btSetMin(m_floats[2], other.m_floats[2]);+			btSetMin(m_floats[3], other.m_floats[3]);+		}++++};++#endif //BT_SIMD_QUADWORD_H
+ bullet/LinearMath/btQuaternion.h view
@@ -0,0 +1,433 @@+/*+Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++++#ifndef BT_SIMD__QUATERNION_H_+#define BT_SIMD__QUATERNION_H_+++#include "btVector3.h"+#include "btQuadWord.h"++/**@brief The btQuaternion implements quaternion to perform linear algebra rotations in combination with btMatrix3x3, btVector3 and btTransform. */+class btQuaternion : public btQuadWord {+public:+  /**@brief No initialization constructor */+	btQuaternion() {}++	//		template <typename btScalar>+	//		explicit Quaternion(const btScalar *v) : Tuple4<btScalar>(v) {}+  /**@brief Constructor from scalars */+	btQuaternion(const btScalar& x, const btScalar& y, const btScalar& z, const btScalar& w) +		: btQuadWord(x, y, z, w) +	{}+  /**@brief Axis angle Constructor+   * @param axis The axis which the rotation is around+   * @param angle The magnitude of the rotation around the angle (Radians) */+	btQuaternion(const btVector3& axis, const btScalar& angle) +	{ +		setRotation(axis, angle); +	}+  /**@brief Constructor from Euler angles+   * @param yaw Angle around Y unless BT_EULER_DEFAULT_ZYX defined then Z+   * @param pitch Angle around X unless BT_EULER_DEFAULT_ZYX defined then Y+   * @param roll Angle around Z unless BT_EULER_DEFAULT_ZYX defined then X */+	btQuaternion(const btScalar& yaw, const btScalar& pitch, const btScalar& roll)+	{ +#ifndef BT_EULER_DEFAULT_ZYX+		setEuler(yaw, pitch, roll); +#else+		setEulerZYX(yaw, pitch, roll); +#endif +	}+  /**@brief Set the rotation using axis angle notation +   * @param axis The axis around which to rotate+   * @param angle The magnitude of the rotation in Radians */+	void setRotation(const btVector3& axis, const btScalar& angle)+	{+		btScalar d = axis.length();+		btAssert(d != btScalar(0.0));+		btScalar s = btSin(angle * btScalar(0.5)) / d;+		setValue(axis.x() * s, axis.y() * s, axis.z() * s, +			btCos(angle * btScalar(0.5)));+	}+  /**@brief Set the quaternion using Euler angles+   * @param yaw Angle around Y+   * @param pitch Angle around X+   * @param roll Angle around Z */+	void setEuler(const btScalar& yaw, const btScalar& pitch, const btScalar& roll)+	{+		btScalar halfYaw = btScalar(yaw) * btScalar(0.5);  +		btScalar halfPitch = btScalar(pitch) * btScalar(0.5);  +		btScalar halfRoll = btScalar(roll) * btScalar(0.5);  +		btScalar cosYaw = btCos(halfYaw);+		btScalar sinYaw = btSin(halfYaw);+		btScalar cosPitch = btCos(halfPitch);+		btScalar sinPitch = btSin(halfPitch);+		btScalar cosRoll = btCos(halfRoll);+		btScalar sinRoll = btSin(halfRoll);+		setValue(cosRoll * sinPitch * cosYaw + sinRoll * cosPitch * sinYaw,+			cosRoll * cosPitch * sinYaw - sinRoll * sinPitch * cosYaw,+			sinRoll * cosPitch * cosYaw - cosRoll * sinPitch * sinYaw,+			cosRoll * cosPitch * cosYaw + sinRoll * sinPitch * sinYaw);+	}+  /**@brief Set the quaternion using euler angles +   * @param yaw Angle around Z+   * @param pitch Angle around Y+   * @param roll Angle around X */+	void setEulerZYX(const btScalar& yaw, const btScalar& pitch, const btScalar& roll)+	{+		btScalar halfYaw = btScalar(yaw) * btScalar(0.5);  +		btScalar halfPitch = btScalar(pitch) * btScalar(0.5);  +		btScalar halfRoll = btScalar(roll) * btScalar(0.5);  +		btScalar cosYaw = btCos(halfYaw);+		btScalar sinYaw = btSin(halfYaw);+		btScalar cosPitch = btCos(halfPitch);+		btScalar sinPitch = btSin(halfPitch);+		btScalar cosRoll = btCos(halfRoll);+		btScalar sinRoll = btSin(halfRoll);+		setValue(sinRoll * cosPitch * cosYaw - cosRoll * sinPitch * sinYaw, //x+                         cosRoll * sinPitch * cosYaw + sinRoll * cosPitch * sinYaw, //y+                         cosRoll * cosPitch * sinYaw - sinRoll * sinPitch * cosYaw, //z+                         cosRoll * cosPitch * cosYaw + sinRoll * sinPitch * sinYaw); //formerly yzx+	}+  /**@brief Add two quaternions+   * @param q The quaternion to add to this one */+	SIMD_FORCE_INLINE	btQuaternion& operator+=(const btQuaternion& q)+	{+		m_floats[0] += q.x(); m_floats[1] += q.y(); m_floats[2] += q.z(); m_floats[3] += q.m_floats[3];+		return *this;+	}++  /**@brief Subtract out a quaternion+   * @param q The quaternion to subtract from this one */+	btQuaternion& operator-=(const btQuaternion& q) +	{+		m_floats[0] -= q.x(); m_floats[1] -= q.y(); m_floats[2] -= q.z(); m_floats[3] -= q.m_floats[3];+		return *this;+	}++  /**@brief Scale this quaternion+   * @param s The scalar to scale by */+	btQuaternion& operator*=(const btScalar& s)+	{+		m_floats[0] *= s; m_floats[1] *= s; m_floats[2] *= s; m_floats[3] *= s;+		return *this;+	}++  /**@brief Multiply this quaternion by q on the right+   * @param q The other quaternion +   * Equivilant to this = this * q */+	btQuaternion& operator*=(const btQuaternion& q)+	{+		setValue(m_floats[3] * q.x() + m_floats[0] * q.m_floats[3] + m_floats[1] * q.z() - m_floats[2] * q.y(),+			m_floats[3] * q.y() + m_floats[1] * q.m_floats[3] + m_floats[2] * q.x() - m_floats[0] * q.z(),+			m_floats[3] * q.z() + m_floats[2] * q.m_floats[3] + m_floats[0] * q.y() - m_floats[1] * q.x(),+			m_floats[3] * q.m_floats[3] - m_floats[0] * q.x() - m_floats[1] * q.y() - m_floats[2] * q.z());+		return *this;+	}+  /**@brief Return the dot product between this quaternion and another+   * @param q The other quaternion */+	btScalar dot(const btQuaternion& q) const+	{+		return m_floats[0] * q.x() + m_floats[1] * q.y() + m_floats[2] * q.z() + m_floats[3] * q.m_floats[3];+	}++  /**@brief Return the length squared of the quaternion */+	btScalar length2() const+	{+		return dot(*this);+	}++  /**@brief Return the length of the quaternion */+	btScalar length() const+	{+		return btSqrt(length2());+	}++  /**@brief Normalize the quaternion +   * Such that x^2 + y^2 + z^2 +w^2 = 1 */+	btQuaternion& normalize() +	{+		return *this /= length();+	}++  /**@brief Return a scaled version of this quaternion+   * @param s The scale factor */+	SIMD_FORCE_INLINE btQuaternion+	operator*(const btScalar& s) const+	{+		return btQuaternion(x() * s, y() * s, z() * s, m_floats[3] * s);+	}+++  /**@brief Return an inversely scaled versionof this quaternion+   * @param s The inverse scale factor */+	btQuaternion operator/(const btScalar& s) const+	{+		btAssert(s != btScalar(0.0));+		return *this * (btScalar(1.0) / s);+	}++  /**@brief Inversely scale this quaternion+   * @param s The scale factor */+	btQuaternion& operator/=(const btScalar& s) +	{+		btAssert(s != btScalar(0.0));+		return *this *= btScalar(1.0) / s;+	}++  /**@brief Return a normalized version of this quaternion */+	btQuaternion normalized() const +	{+		return *this / length();+	} +  /**@brief Return the angle between this quaternion and the other +   * @param q The other quaternion */+	btScalar angle(const btQuaternion& q) const +	{+		btScalar s = btSqrt(length2() * q.length2());+		btAssert(s != btScalar(0.0));+		return btAcos(dot(q) / s);+	}+  /**@brief Return the angle of rotation represented by this quaternion */+	btScalar getAngle() const +	{+		btScalar s = btScalar(2.) * btAcos(m_floats[3]);+		return s;+	}++	/**@brief Return the axis of the rotation represented by this quaternion */+	btVector3 getAxis() const+	{+		btScalar s_squared = btScalar(1.) - btPow(m_floats[3], btScalar(2.));+		if (s_squared < btScalar(10.) * SIMD_EPSILON) //Check for divide by zero+			return btVector3(1.0, 0.0, 0.0);  // Arbitrary+		btScalar s = btSqrt(s_squared);+		return btVector3(m_floats[0] / s, m_floats[1] / s, m_floats[2] / s);+	}++	/**@brief Return the inverse of this quaternion */+	btQuaternion inverse() const+	{+		return btQuaternion(-m_floats[0], -m_floats[1], -m_floats[2], m_floats[3]);+	}++  /**@brief Return the sum of this quaternion and the other +   * @param q2 The other quaternion */+	SIMD_FORCE_INLINE btQuaternion+	operator+(const btQuaternion& q2) const+	{+		const btQuaternion& q1 = *this;+		return btQuaternion(q1.x() + q2.x(), q1.y() + q2.y(), q1.z() + q2.z(), q1.m_floats[3] + q2.m_floats[3]);+	}++  /**@brief Return the difference between this quaternion and the other +   * @param q2 The other quaternion */+	SIMD_FORCE_INLINE btQuaternion+	operator-(const btQuaternion& q2) const+	{+		const btQuaternion& q1 = *this;+		return btQuaternion(q1.x() - q2.x(), q1.y() - q2.y(), q1.z() - q2.z(), q1.m_floats[3] - q2.m_floats[3]);+	}++  /**@brief Return the negative of this quaternion +   * This simply negates each element */+	SIMD_FORCE_INLINE btQuaternion operator-() const+	{+		const btQuaternion& q2 = *this;+		return btQuaternion( - q2.x(), - q2.y(),  - q2.z(),  - q2.m_floats[3]);+	}+  /**@todo document this and it's use */+	SIMD_FORCE_INLINE btQuaternion farthest( const btQuaternion& qd) const +	{+		btQuaternion diff,sum;+		diff = *this - qd;+		sum = *this + qd;+		if( diff.dot(diff) > sum.dot(sum) )+			return qd;+		return (-qd);+	}++	/**@todo document this and it's use */+	SIMD_FORCE_INLINE btQuaternion nearest( const btQuaternion& qd) const +	{+		btQuaternion diff,sum;+		diff = *this - qd;+		sum = *this + qd;+		if( diff.dot(diff) < sum.dot(sum) )+			return qd;+		return (-qd);+	}+++  /**@brief Return the quaternion which is the result of Spherical Linear Interpolation between this and the other quaternion+   * @param q The other quaternion to interpolate with +   * @param t The ratio between this and q to interpolate.  If t = 0 the result is this, if t=1 the result is q.+   * Slerp interpolates assuming constant velocity.  */+	btQuaternion slerp(const btQuaternion& q, const btScalar& t) const+	{+		btScalar theta = angle(q);+		if (theta != btScalar(0.0))+		{+			btScalar d = btScalar(1.0) / btSin(theta);+			btScalar s0 = btSin((btScalar(1.0) - t) * theta);+			btScalar s1 = btSin(t * theta);   +                        if (dot(q) < 0) // Take care of long angle case see http://en.wikipedia.org/wiki/Slerp+                          return btQuaternion((m_floats[0] * s0 + -q.x() * s1) * d,+                                              (m_floats[1] * s0 + -q.y() * s1) * d,+                                              (m_floats[2] * s0 + -q.z() * s1) * d,+                                              (m_floats[3] * s0 + -q.m_floats[3] * s1) * d);+                        else+                          return btQuaternion((m_floats[0] * s0 + q.x() * s1) * d,+                                              (m_floats[1] * s0 + q.y() * s1) * d,+                                              (m_floats[2] * s0 + q.z() * s1) * d,+                                              (m_floats[3] * s0 + q.m_floats[3] * s1) * d);+                        +		}+		else+		{+			return *this;+		}+	}++	static const btQuaternion&	getIdentity()+	{+		static const btQuaternion identityQuat(btScalar(0.),btScalar(0.),btScalar(0.),btScalar(1.));+		return identityQuat;+	}++	SIMD_FORCE_INLINE const btScalar& getW() const { return m_floats[3]; }++	+};+++/**@brief Return the negative of a quaternion */+SIMD_FORCE_INLINE btQuaternion+operator-(const btQuaternion& q)+{+	return btQuaternion(-q.x(), -q.y(), -q.z(), -q.w());+}++++/**@brief Return the product of two quaternions */+SIMD_FORCE_INLINE btQuaternion+operator*(const btQuaternion& q1, const btQuaternion& q2) {+	return btQuaternion(q1.w() * q2.x() + q1.x() * q2.w() + q1.y() * q2.z() - q1.z() * q2.y(),+		q1.w() * q2.y() + q1.y() * q2.w() + q1.z() * q2.x() - q1.x() * q2.z(),+		q1.w() * q2.z() + q1.z() * q2.w() + q1.x() * q2.y() - q1.y() * q2.x(),+		q1.w() * q2.w() - q1.x() * q2.x() - q1.y() * q2.y() - q1.z() * q2.z()); +}++SIMD_FORCE_INLINE btQuaternion+operator*(const btQuaternion& q, const btVector3& w)+{+	return btQuaternion( q.w() * w.x() + q.y() * w.z() - q.z() * w.y(),+		q.w() * w.y() + q.z() * w.x() - q.x() * w.z(),+		q.w() * w.z() + q.x() * w.y() - q.y() * w.x(),+		-q.x() * w.x() - q.y() * w.y() - q.z() * w.z()); +}++SIMD_FORCE_INLINE btQuaternion+operator*(const btVector3& w, const btQuaternion& q)+{+	return btQuaternion( w.x() * q.w() + w.y() * q.z() - w.z() * q.y(),+		w.y() * q.w() + w.z() * q.x() - w.x() * q.z(),+		w.z() * q.w() + w.x() * q.y() - w.y() * q.x(),+		-w.x() * q.x() - w.y() * q.y() - w.z() * q.z()); +}++/**@brief Calculate the dot product between two quaternions */+SIMD_FORCE_INLINE btScalar +dot(const btQuaternion& q1, const btQuaternion& q2) +{ +	return q1.dot(q2); +}+++/**@brief Return the length of a quaternion */+SIMD_FORCE_INLINE btScalar+length(const btQuaternion& q) +{ +	return q.length(); +}++/**@brief Return the angle between two quaternions*/+SIMD_FORCE_INLINE btScalar+angle(const btQuaternion& q1, const btQuaternion& q2) +{ +	return q1.angle(q2); +}++/**@brief Return the inverse of a quaternion*/+SIMD_FORCE_INLINE btQuaternion+inverse(const btQuaternion& q) +{+	return q.inverse();+}++/**@brief Return the result of spherical linear interpolation betwen two quaternions + * @param q1 The first quaternion+ * @param q2 The second quaternion + * @param t The ration between q1 and q2.  t = 0 return q1, t=1 returns q2 + * Slerp assumes constant velocity between positions. */+SIMD_FORCE_INLINE btQuaternion+slerp(const btQuaternion& q1, const btQuaternion& q2, const btScalar& t) +{+	return q1.slerp(q2, t);+}++SIMD_FORCE_INLINE btVector3 +quatRotate(const btQuaternion& rotation, const btVector3& v) +{+	btQuaternion q = rotation * v;+	q *= rotation.inverse();+	return btVector3(q.getX(),q.getY(),q.getZ());+}++SIMD_FORCE_INLINE btQuaternion +shortestArcQuat(const btVector3& v0, const btVector3& v1) // Game Programming Gems 2.10. make sure v0,v1 are normalized+{+	btVector3 c = v0.cross(v1);+	btScalar  d = v0.dot(v1);++	if (d < -1.0 + SIMD_EPSILON)+	{+		btVector3 n,unused;+		btPlaneSpace1(v0,n,unused);+		return btQuaternion(n.x(),n.y(),n.z(),0.0f); // just pick any vector that is orthogonal to v0+	}++	btScalar  s = btSqrt((1.0f + d) * 2.0f);+	btScalar rs = 1.0f / s;++	return btQuaternion(c.getX()*rs,c.getY()*rs,c.getZ()*rs,s * 0.5f);+}++SIMD_FORCE_INLINE btQuaternion +shortestArcQuatNormalize2(btVector3& v0,btVector3& v1)+{+	v0.normalize();+	v1.normalize();+	return shortestArcQuat(v0,v1);+}++#endif //BT_SIMD__QUATERNION_H_++++
+ bullet/LinearMath/btQuickprof.h view
@@ -0,0 +1,196 @@++/***************************************************************************************************+**+** Real-Time Hierarchical Profiling for Game Programming Gems 3+**+** by Greg Hjelstrom & Byon Garrabrant+**+***************************************************************************************************/++// Credits: The Clock class was inspired by the Timer classes in +// Ogre (www.ogre3d.org).++++#ifndef BT_QUICK_PROF_H+#define BT_QUICK_PROF_H++//To disable built-in profiling, please comment out next line+//#define BT_NO_PROFILE 1+#ifndef BT_NO_PROFILE+#include <stdio.h>//@todo remove this, backwards compatibility+#include "btScalar.h"+#include "btAlignedAllocator.h"+#include <new>++++++#define USE_BT_CLOCK 1++#ifdef USE_BT_CLOCK++///The btClock is a portable basic clock that measures accurate time in seconds, use for profiling.+class btClock+{+public:+	btClock();++	btClock(const btClock& other);+	btClock& operator=(const btClock& other);++	~btClock();++	/// Resets the initial reference time.+	void reset();++	/// Returns the time in ms since the last call to reset or since +	/// the btClock was created.+	unsigned long int getTimeMilliseconds();++	/// Returns the time in us since the last call to reset or since +	/// the Clock was created.+	unsigned long int getTimeMicroseconds();+private:+	struct btClockData* m_data;+};++#endif //USE_BT_CLOCK+++++///A node in the Profile Hierarchy Tree+class	CProfileNode {++public:+	CProfileNode( const char * name, CProfileNode * parent );+	~CProfileNode( void );++	CProfileNode * Get_Sub_Node( const char * name );++	CProfileNode * Get_Parent( void )		{ return Parent; }+	CProfileNode * Get_Sibling( void )		{ return Sibling; }+	CProfileNode * Get_Child( void )			{ return Child; }++	void				CleanupMemory();+	void				Reset( void );+	void				Call( void );+	bool				Return( void );++	const char *	Get_Name( void )				{ return Name; }+	int				Get_Total_Calls( void )		{ return TotalCalls; }+	float				Get_Total_Time( void )		{ return TotalTime; }++protected:++	const char *	Name;+	int				TotalCalls;+	float				TotalTime;+	unsigned long int			StartTime;+	int				RecursionCounter;++	CProfileNode *	Parent;+	CProfileNode *	Child;+	CProfileNode *	Sibling;+};++///An iterator to navigate through the tree+class CProfileIterator+{+public:+	// Access all the children of the current parent+	void				First(void);+	void				Next(void);+	bool				Is_Done(void);+	bool                Is_Root(void) { return (CurrentParent->Get_Parent() == 0); }++	void				Enter_Child( int index );		// Make the given child the new parent+	void				Enter_Largest_Child( void );	// Make the largest child the new parent+	void				Enter_Parent( void );			// Make the current parent's parent the new parent++	// Access the current child+	const char *	Get_Current_Name( void )			{ return CurrentChild->Get_Name(); }+	int				Get_Current_Total_Calls( void )	{ return CurrentChild->Get_Total_Calls(); }+	float				Get_Current_Total_Time( void )	{ return CurrentChild->Get_Total_Time(); }++	// Access the current parent+	const char *	Get_Current_Parent_Name( void )			{ return CurrentParent->Get_Name(); }+	int				Get_Current_Parent_Total_Calls( void )	{ return CurrentParent->Get_Total_Calls(); }+	float				Get_Current_Parent_Total_Time( void )	{ return CurrentParent->Get_Total_Time(); }++protected:++	CProfileNode *	CurrentParent;+	CProfileNode *	CurrentChild;++	CProfileIterator( CProfileNode * start );+	friend	class		CProfileManager;+};+++///The Manager for the Profile system+class	CProfileManager {+public:+	static	void						Start_Profile( const char * name );+	static	void						Stop_Profile( void );++	static	void						CleanupMemory(void)+	{+		Root.CleanupMemory();+	}++	static	void						Reset( void );+	static	void						Increment_Frame_Counter( void );+	static	int						Get_Frame_Count_Since_Reset( void )		{ return FrameCounter; }+	static	float						Get_Time_Since_Reset( void );++	static	CProfileIterator *	Get_Iterator( void )	+	{ +		+		return new CProfileIterator( &Root ); +	}+	static	void						Release_Iterator( CProfileIterator * iterator ) { delete ( iterator); }++	static void	dumpRecursive(CProfileIterator* profileIterator, int spacing);++	static void	dumpAll();++private:+	static	CProfileNode			Root;+	static	CProfileNode *			CurrentNode;+	static	int						FrameCounter;+	static	unsigned long int					ResetTime;+};+++///ProfileSampleClass is a simple way to profile a function's scope+///Use the BT_PROFILE macro at the start of scope to time+class	CProfileSample {+public:+	CProfileSample( const char * name )+	{ +		CProfileManager::Start_Profile( name ); +	}++	~CProfileSample( void )					+	{ +		CProfileManager::Stop_Profile(); +	}+};+++#define	BT_PROFILE( name )			CProfileSample __profile( name )++#else++#define	BT_PROFILE( name )++#endif //#ifndef BT_NO_PROFILE++++#endif //BT_QUICK_PROF_H++
+ bullet/LinearMath/btRandom.h view
@@ -0,0 +1,42 @@+/*+Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++++#ifndef BT_GEN_RANDOM_H+#define BT_GEN_RANDOM_H++#ifdef MT19937++#include <limits.h>+#include <mt19937.h>++#define GEN_RAND_MAX UINT_MAX++SIMD_FORCE_INLINE void         GEN_srand(unsigned int seed) { init_genrand(seed); }+SIMD_FORCE_INLINE unsigned int GEN_rand()                   { return genrand_int32(); }++#else++#include <stdlib.h>++#define GEN_RAND_MAX RAND_MAX++SIMD_FORCE_INLINE void         GEN_srand(unsigned int seed) { srand(seed); } +SIMD_FORCE_INLINE unsigned int GEN_rand()                   { return rand(); }++#endif++#endif //BT_GEN_RANDOM_H+
+ bullet/LinearMath/btScalar.h view
@@ -0,0 +1,522 @@+/*+Copyright (c) 2003-2009 Erwin Coumans  http://bullet.googlecode.com++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++++#ifndef BT_SCALAR_H+#define BT_SCALAR_H++#ifdef BT_MANAGED_CODE+//Aligned data types not supported in managed code+#pragma unmanaged+#endif+++#include <math.h>+#include <stdlib.h>//size_t for MSVC 6.0+#include <float.h>++/* SVN $Revision$ on $Date$ from http://bullet.googlecode.com*/+#define BT_BULLET_VERSION 278++inline int	btGetVersion()+{+	return BT_BULLET_VERSION;+}++#if defined(DEBUG) || defined (_DEBUG)+#define BT_DEBUG+#endif+++#ifdef _WIN32++		#if defined(__MINGW32__) || defined(__CYGWIN__) || (defined (_MSC_VER) && _MSC_VER < 1300)++			#define SIMD_FORCE_INLINE inline+			#define ATTRIBUTE_ALIGNED16(a) a+			#define ATTRIBUTE_ALIGNED64(a) a+			#define ATTRIBUTE_ALIGNED128(a) a+		#else+			//#define BT_HAS_ALIGNED_ALLOCATOR+			#pragma warning(disable : 4324) // disable padding warning+//			#pragma warning(disable:4530) // Disable the exception disable but used in MSCV Stl warning.+//			#pragma warning(disable:4996) //Turn off warnings about deprecated C routines+//			#pragma warning(disable:4786) // Disable the "debug name too long" warning++			#define SIMD_FORCE_INLINE __forceinline+			#define ATTRIBUTE_ALIGNED16(a) __declspec(align(16)) a+			#define ATTRIBUTE_ALIGNED64(a) __declspec(align(64)) a+			#define ATTRIBUTE_ALIGNED128(a) __declspec (align(128)) a+		#ifdef _XBOX+			#define BT_USE_VMX128++			#include <ppcintrinsics.h>+ 			#define BT_HAVE_NATIVE_FSEL+ 			#define btFsel(a,b,c) __fsel((a),(b),(c))+		#else++#if (defined (_WIN32) && (_MSC_VER) && _MSC_VER >= 1400) && (!defined (BT_USE_DOUBLE_PRECISION))+			#define BT_USE_SSE+			#include <emmintrin.h>+#endif++		#endif//_XBOX++		#endif //__MINGW32__++		#include <assert.h>+#ifdef BT_DEBUG+		#define btAssert assert+#else+		#define btAssert(x)+#endif+		//btFullAssert is optional, slows down a lot+		#define btFullAssert(x)++		#define btLikely(_c)  _c+		#define btUnlikely(_c) _c++#else+	+#if defined	(__CELLOS_LV2__)+		#define SIMD_FORCE_INLINE inline __attribute__((always_inline))+		#define ATTRIBUTE_ALIGNED16(a) a __attribute__ ((aligned (16)))+		#define ATTRIBUTE_ALIGNED64(a) a __attribute__ ((aligned (64)))+		#define ATTRIBUTE_ALIGNED128(a) a __attribute__ ((aligned (128)))+		#ifndef assert+		#include <assert.h>+		#endif+#ifdef BT_DEBUG+#ifdef __SPU__+#include <spu_printf.h>+#define printf spu_printf+	#define btAssert(x) {if(!(x)){printf("Assert "__FILE__ ":%u ("#x")\n", __LINE__);spu_hcmpeq(0,0);}}+#else+	#define btAssert assert+#endif+	+#else+		#define btAssert(x)+#endif+		//btFullAssert is optional, slows down a lot+		#define btFullAssert(x)++		#define btLikely(_c)  _c+		#define btUnlikely(_c) _c++#else++#ifdef USE_LIBSPE2++		#define SIMD_FORCE_INLINE __inline+		#define ATTRIBUTE_ALIGNED16(a) a __attribute__ ((aligned (16)))+		#define ATTRIBUTE_ALIGNED64(a) a __attribute__ ((aligned (64)))+		#define ATTRIBUTE_ALIGNED128(a) a __attribute__ ((aligned (128)))+		#ifndef assert+		#include <assert.h>+		#endif+#ifdef BT_DEBUG+		#define btAssert assert+#else+		#define btAssert(x)+#endif+		//btFullAssert is optional, slows down a lot+		#define btFullAssert(x)+++		#define btLikely(_c)   __builtin_expect((_c), 1)+		#define btUnlikely(_c) __builtin_expect((_c), 0)+		++#else+	//non-windows systems++#if (defined (__APPLE__) && defined (__i386__) && (!defined (BT_USE_DOUBLE_PRECISION)))+	#define BT_USE_SSE+	#include <emmintrin.h>++	#define SIMD_FORCE_INLINE inline+///@todo: check out alignment methods for other platforms/compilers+	#define ATTRIBUTE_ALIGNED16(a) a __attribute__ ((aligned (16)))+	#define ATTRIBUTE_ALIGNED64(a) a __attribute__ ((aligned (64)))+	#define ATTRIBUTE_ALIGNED128(a) a __attribute__ ((aligned (128)))+	#ifndef assert+	#include <assert.h>+	#endif++	#if defined(DEBUG) || defined (_DEBUG)+		#define btAssert assert+	#else+		#define btAssert(x)+	#endif++	//btFullAssert is optional, slows down a lot+	#define btFullAssert(x)+	#define btLikely(_c)  _c+	#define btUnlikely(_c) _c++#else++		#define SIMD_FORCE_INLINE inline+		///@todo: check out alignment methods for other platforms/compilers+		///#define ATTRIBUTE_ALIGNED16(a) a __attribute__ ((aligned (16)))+		///#define ATTRIBUTE_ALIGNED64(a) a __attribute__ ((aligned (64)))+		///#define ATTRIBUTE_ALIGNED128(a) a __attribute__ ((aligned (128)))+		#define ATTRIBUTE_ALIGNED16(a) a+		#define ATTRIBUTE_ALIGNED64(a) a+		#define ATTRIBUTE_ALIGNED128(a) a+		#ifndef assert+		#include <assert.h>+		#endif++#if defined(DEBUG) || defined (_DEBUG)+		#define btAssert assert+#else+		#define btAssert(x)+#endif++		//btFullAssert is optional, slows down a lot+		#define btFullAssert(x)+		#define btLikely(_c)  _c+		#define btUnlikely(_c) _c+#endif //__APPLE__ ++#endif // LIBSPE2++#endif	//__CELLOS_LV2__+#endif+++///The btScalar type abstracts floating point numbers, to easily switch between double and single floating point precision.+#if defined(BT_USE_DOUBLE_PRECISION)+typedef double btScalar;+//this number could be bigger in double precision+#define BT_LARGE_FLOAT 1e30+#else+typedef float btScalar;+//keep BT_LARGE_FLOAT*BT_LARGE_FLOAT < FLT_MAX+#define BT_LARGE_FLOAT 1e18f+#endif++++#define BT_DECLARE_ALIGNED_ALLOCATOR() \+   SIMD_FORCE_INLINE void* operator new(size_t sizeInBytes)   { return btAlignedAlloc(sizeInBytes,16); }   \+   SIMD_FORCE_INLINE void  operator delete(void* ptr)         { btAlignedFree(ptr); }   \+   SIMD_FORCE_INLINE void* operator new(size_t, void* ptr)   { return ptr; }   \+   SIMD_FORCE_INLINE void  operator delete(void*, void*)      { }   \+   SIMD_FORCE_INLINE void* operator new[](size_t sizeInBytes)   { return btAlignedAlloc(sizeInBytes,16); }   \+   SIMD_FORCE_INLINE void  operator delete[](void* ptr)         { btAlignedFree(ptr); }   \+   SIMD_FORCE_INLINE void* operator new[](size_t, void* ptr)   { return ptr; }   \+   SIMD_FORCE_INLINE void  operator delete[](void*, void*)      { }   \++++#if defined(BT_USE_DOUBLE_PRECISION) || defined(BT_FORCE_DOUBLE_FUNCTIONS)+		+SIMD_FORCE_INLINE btScalar btSqrt(btScalar x) { return sqrt(x); }+SIMD_FORCE_INLINE btScalar btFabs(btScalar x) { return fabs(x); }+SIMD_FORCE_INLINE btScalar btCos(btScalar x) { return cos(x); }+SIMD_FORCE_INLINE btScalar btSin(btScalar x) { return sin(x); }+SIMD_FORCE_INLINE btScalar btTan(btScalar x) { return tan(x); }+SIMD_FORCE_INLINE btScalar btAcos(btScalar x) { if (x<btScalar(-1))	x=btScalar(-1); if (x>btScalar(1))	x=btScalar(1); return acos(x); }+SIMD_FORCE_INLINE btScalar btAsin(btScalar x) { if (x<btScalar(-1))	x=btScalar(-1); if (x>btScalar(1))	x=btScalar(1); return asin(x); }+SIMD_FORCE_INLINE btScalar btAtan(btScalar x) { return atan(x); }+SIMD_FORCE_INLINE btScalar btAtan2(btScalar x, btScalar y) { return atan2(x, y); }+SIMD_FORCE_INLINE btScalar btExp(btScalar x) { return exp(x); }+SIMD_FORCE_INLINE btScalar btLog(btScalar x) { return log(x); }+SIMD_FORCE_INLINE btScalar btPow(btScalar x,btScalar y) { return pow(x,y); }+SIMD_FORCE_INLINE btScalar btFmod(btScalar x,btScalar y) { return fmod(x,y); }++#else+		+SIMD_FORCE_INLINE btScalar btSqrt(btScalar y) +{ +#ifdef USE_APPROXIMATION+    double x, z, tempf;+    unsigned long *tfptr = ((unsigned long *)&tempf) + 1;++	tempf = y;+	*tfptr = (0xbfcdd90a - *tfptr)>>1; /* estimate of 1/sqrt(y) */+	x =  tempf;+	z =  y*btScalar(0.5);+	x = (btScalar(1.5)*x)-(x*x)*(x*z);         /* iteration formula     */+	x = (btScalar(1.5)*x)-(x*x)*(x*z);+	x = (btScalar(1.5)*x)-(x*x)*(x*z);+	x = (btScalar(1.5)*x)-(x*x)*(x*z);+	x = (btScalar(1.5)*x)-(x*x)*(x*z);+	return x*y;+#else+	return sqrtf(y); +#endif+}+SIMD_FORCE_INLINE btScalar btFabs(btScalar x) { return fabsf(x); }+SIMD_FORCE_INLINE btScalar btCos(btScalar x) { return cosf(x); }+SIMD_FORCE_INLINE btScalar btSin(btScalar x) { return sinf(x); }+SIMD_FORCE_INLINE btScalar btTan(btScalar x) { return tanf(x); }+SIMD_FORCE_INLINE btScalar btAcos(btScalar x) { +	if (x<btScalar(-1))	+		x=btScalar(-1); +	if (x>btScalar(1))	+		x=btScalar(1);+	return acosf(x); +}+SIMD_FORCE_INLINE btScalar btAsin(btScalar x) { +	if (x<btScalar(-1))	+		x=btScalar(-1); +	if (x>btScalar(1))	+		x=btScalar(1);+	return asinf(x); +}+SIMD_FORCE_INLINE btScalar btAtan(btScalar x) { return atanf(x); }+SIMD_FORCE_INLINE btScalar btAtan2(btScalar x, btScalar y) { return atan2f(x, y); }+SIMD_FORCE_INLINE btScalar btExp(btScalar x) { return expf(x); }+SIMD_FORCE_INLINE btScalar btLog(btScalar x) { return logf(x); }+SIMD_FORCE_INLINE btScalar btPow(btScalar x,btScalar y) { return powf(x,y); }+SIMD_FORCE_INLINE btScalar btFmod(btScalar x,btScalar y) { return fmodf(x,y); }+	+#endif++#define SIMD_2_PI         btScalar(6.283185307179586232)+#define SIMD_PI           (SIMD_2_PI * btScalar(0.5))+#define SIMD_HALF_PI      (SIMD_2_PI * btScalar(0.25))+#define SIMD_RADS_PER_DEG (SIMD_2_PI / btScalar(360.0))+#define SIMD_DEGS_PER_RAD  (btScalar(360.0) / SIMD_2_PI)+#define SIMDSQRT12 btScalar(0.7071067811865475244008443621048490)++#define btRecipSqrt(x) ((btScalar)(btScalar(1.0)/btSqrt(btScalar(x))))		/* reciprocal square root */+++#ifdef BT_USE_DOUBLE_PRECISION+#define SIMD_EPSILON      DBL_EPSILON+#define SIMD_INFINITY     DBL_MAX+#else+#define SIMD_EPSILON      FLT_EPSILON+#define SIMD_INFINITY     FLT_MAX+#endif++SIMD_FORCE_INLINE btScalar btAtan2Fast(btScalar y, btScalar x) +{+	btScalar coeff_1 = SIMD_PI / 4.0f;+	btScalar coeff_2 = 3.0f * coeff_1;+	btScalar abs_y = btFabs(y);+	btScalar angle;+	if (x >= 0.0f) {+		btScalar r = (x - abs_y) / (x + abs_y);+		angle = coeff_1 - coeff_1 * r;+	} else {+		btScalar r = (x + abs_y) / (abs_y - x);+		angle = coeff_2 - coeff_1 * r;+	}+	return (y < 0.0f) ? -angle : angle;+}++SIMD_FORCE_INLINE bool      btFuzzyZero(btScalar x) { return btFabs(x) < SIMD_EPSILON; }++SIMD_FORCE_INLINE bool	btEqual(btScalar a, btScalar eps) {+	return (((a) <= eps) && !((a) < -eps));+}+SIMD_FORCE_INLINE bool	btGreaterEqual (btScalar a, btScalar eps) {+	return (!((a) <= eps));+}+++SIMD_FORCE_INLINE int       btIsNegative(btScalar x) {+    return x < btScalar(0.0) ? 1 : 0;+}++SIMD_FORCE_INLINE btScalar btRadians(btScalar x) { return x * SIMD_RADS_PER_DEG; }+SIMD_FORCE_INLINE btScalar btDegrees(btScalar x) { return x * SIMD_DEGS_PER_RAD; }++#define BT_DECLARE_HANDLE(name) typedef struct name##__ { int unused; } *name++#ifndef btFsel+SIMD_FORCE_INLINE btScalar btFsel(btScalar a, btScalar b, btScalar c)+{+	return a >= 0 ? b : c;+}+#endif+#define btFsels(a,b,c) (btScalar)btFsel(a,b,c)+++SIMD_FORCE_INLINE bool btMachineIsLittleEndian()+{+   long int i = 1;+   const char *p = (const char *) &i;+   if (p[0] == 1)  // Lowest address contains the least significant byte+	   return true;+   else+	   return false;+}++++///btSelect avoids branches, which makes performance much better for consoles like Playstation 3 and XBox 360+///Thanks Phil Knight. See also http://www.cellperformance.com/articles/2006/04/more_techniques_for_eliminatin_1.html+SIMD_FORCE_INLINE unsigned btSelect(unsigned condition, unsigned valueIfConditionNonZero, unsigned valueIfConditionZero) +{+    // Set testNz to 0xFFFFFFFF if condition is nonzero, 0x00000000 if condition is zero+    // Rely on positive value or'ed with its negative having sign bit on+    // and zero value or'ed with its negative (which is still zero) having sign bit off +    // Use arithmetic shift right, shifting the sign bit through all 32 bits+    unsigned testNz = (unsigned)(((int)condition | -(int)condition) >> 31);+    unsigned testEqz = ~testNz;+    return ((valueIfConditionNonZero & testNz) | (valueIfConditionZero & testEqz)); +}+SIMD_FORCE_INLINE int btSelect(unsigned condition, int valueIfConditionNonZero, int valueIfConditionZero)+{+    unsigned testNz = (unsigned)(((int)condition | -(int)condition) >> 31);+    unsigned testEqz = ~testNz; +    return static_cast<int>((valueIfConditionNonZero & testNz) | (valueIfConditionZero & testEqz));+}+SIMD_FORCE_INLINE float btSelect(unsigned condition, float valueIfConditionNonZero, float valueIfConditionZero)+{+#ifdef BT_HAVE_NATIVE_FSEL+    return (float)btFsel((btScalar)condition - btScalar(1.0f), valueIfConditionNonZero, valueIfConditionZero);+#else+    return (condition != 0) ? valueIfConditionNonZero : valueIfConditionZero; +#endif+}++template<typename T> SIMD_FORCE_INLINE void btSwap(T& a, T& b)+{+	T tmp = a;+	a = b;+	b = tmp;+}+++//PCK: endian swapping functions+SIMD_FORCE_INLINE unsigned btSwapEndian(unsigned val)+{+	return (((val & 0xff000000) >> 24) | ((val & 0x00ff0000) >> 8) | ((val & 0x0000ff00) << 8)  | ((val & 0x000000ff) << 24));+}++SIMD_FORCE_INLINE unsigned short btSwapEndian(unsigned short val)+{+	return static_cast<unsigned short>(((val & 0xff00) >> 8) | ((val & 0x00ff) << 8));+}++SIMD_FORCE_INLINE unsigned btSwapEndian(int val)+{+	return btSwapEndian((unsigned)val);+}++SIMD_FORCE_INLINE unsigned short btSwapEndian(short val)+{+	return btSwapEndian((unsigned short) val);+}++///btSwapFloat uses using char pointers to swap the endianness+////btSwapFloat/btSwapDouble will NOT return a float, because the machine might 'correct' invalid floating point values+///Not all values of sign/exponent/mantissa are valid floating point numbers according to IEEE 754. +///When a floating point unit is faced with an invalid value, it may actually change the value, or worse, throw an exception. +///In most systems, running user mode code, you wouldn't get an exception, but instead the hardware/os/runtime will 'fix' the number for you. +///so instead of returning a float/double, we return integer/long long integer+SIMD_FORCE_INLINE unsigned int  btSwapEndianFloat(float d)+{+    unsigned int a = 0;+    unsigned char *dst = (unsigned char *)&a;+    unsigned char *src = (unsigned char *)&d;++    dst[0] = src[3];+    dst[1] = src[2];+    dst[2] = src[1];+    dst[3] = src[0];+    return a;+}++// unswap using char pointers+SIMD_FORCE_INLINE float btUnswapEndianFloat(unsigned int a) +{+    float d = 0.0f;+    unsigned char *src = (unsigned char *)&a;+    unsigned char *dst = (unsigned char *)&d;++    dst[0] = src[3];+    dst[1] = src[2];+    dst[2] = src[1];+    dst[3] = src[0];++    return d;+}+++// swap using char pointers+SIMD_FORCE_INLINE void  btSwapEndianDouble(double d, unsigned char* dst)+{+    unsigned char *src = (unsigned char *)&d;++    dst[0] = src[7];+    dst[1] = src[6];+    dst[2] = src[5];+    dst[3] = src[4];+    dst[4] = src[3];+    dst[5] = src[2];+    dst[6] = src[1];+    dst[7] = src[0];++}++// unswap using char pointers+SIMD_FORCE_INLINE double btUnswapEndianDouble(const unsigned char *src) +{+    double d = 0.0;+    unsigned char *dst = (unsigned char *)&d;++    dst[0] = src[7];+    dst[1] = src[6];+    dst[2] = src[5];+    dst[3] = src[4];+    dst[4] = src[3];+    dst[5] = src[2];+    dst[6] = src[1];+    dst[7] = src[0];++	return d;+}++// returns normalized value in range [-SIMD_PI, SIMD_PI]+SIMD_FORCE_INLINE btScalar btNormalizeAngle(btScalar angleInRadians) +{+	angleInRadians = btFmod(angleInRadians, SIMD_2_PI);+	if(angleInRadians < -SIMD_PI)+	{+		return angleInRadians + SIMD_2_PI;+	}+	else if(angleInRadians > SIMD_PI)+	{+		return angleInRadians - SIMD_2_PI;+	}+	else+	{+		return angleInRadians;+	}+}++///rudimentary class to provide type info+struct btTypedObject+{+	btTypedObject(int objectType)+		:m_objectType(objectType)+	{+	}+	int	m_objectType;+	inline int getObjectType() const+	{+		return m_objectType;+	}+};+#endif //BT_SCALAR_H
+ bullet/LinearMath/btSerializer.h view
@@ -0,0 +1,655 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BT_SERIALIZER_H+#define BT_SERIALIZER_H++#include "btScalar.h" // has definitions like SIMD_FORCE_INLINE+#include "btStackAlloc.h"+#include "btHashMap.h"++#if !defined( __CELLOS_LV2__) && !defined(__MWERKS__)+#include <memory.h>+#endif+#include <string.h>++++///only the 32bit versions for now+extern unsigned char sBulletDNAstr[];+extern int sBulletDNAlen;+extern unsigned char sBulletDNAstr64[];+extern int sBulletDNAlen64;++SIMD_FORCE_INLINE	int btStrLen(const char* str) +{+    if (!str) +		return(0);+	int len = 0;+    +	while (*str != 0)+	{+        str++;+        len++;+    }++    return len;+}+++class btChunk+{+public:+	int		m_chunkCode;+	int		m_length;+	void	*m_oldPtr;+	int		m_dna_nr;+	int		m_number;+};++enum	btSerializationFlags+{+	BT_SERIALIZE_NO_BVH = 1,+	BT_SERIALIZE_NO_TRIANGLEINFOMAP = 2,+	BT_SERIALIZE_NO_DUPLICATE_ASSERT = 4+};++class	btSerializer+{++public:++	virtual ~btSerializer() {}++	virtual	const unsigned char*		getBufferPointer() const = 0;++	virtual	int		getCurrentBufferSize() const = 0;++	virtual	btChunk*	allocate(size_t size, int numElements) = 0;++	virtual	void	finalizeChunk(btChunk* chunk, const char* structType, int chunkCode,void* oldPtr)= 0;++	virtual	 void*	findPointer(void* oldPtr)  = 0;++	virtual	void*	getUniquePointer(void*oldPtr) = 0;++	virtual	void	startSerialization() = 0;+	+	virtual	void	finishSerialization() = 0;++	virtual	const char*	findNameForPointer(const void* ptr) const = 0;++	virtual	void	registerNameForPointer(const void* ptr, const char* name) = 0;++	virtual void	serializeName(const char* ptr) = 0;++	virtual int		getSerializationFlags() const = 0;++	virtual void	setSerializationFlags(int flags) = 0;+++};++++#define BT_HEADER_LENGTH 12+#if defined(__sgi) || defined (__sparc) || defined (__sparc__) || defined (__PPC__) || defined (__ppc__) || defined (__BIG_ENDIAN__)+#	define MAKE_ID(a,b,c,d) ( (int)(a)<<24 | (int)(b)<<16 | (c)<<8 | (d) )+#else+#	define MAKE_ID(a,b,c,d) ( (int)(d)<<24 | (int)(c)<<16 | (b)<<8 | (a) )+#endif++#define BT_SOFTBODY_CODE		MAKE_ID('S','B','D','Y')+#define BT_COLLISIONOBJECT_CODE MAKE_ID('C','O','B','J')+#define BT_RIGIDBODY_CODE		MAKE_ID('R','B','D','Y')+#define BT_CONSTRAINT_CODE		MAKE_ID('C','O','N','S')+#define BT_BOXSHAPE_CODE		MAKE_ID('B','O','X','S')+#define BT_QUANTIZED_BVH_CODE	MAKE_ID('Q','B','V','H')+#define BT_TRIANLGE_INFO_MAP	MAKE_ID('T','M','A','P')+#define BT_SHAPE_CODE			MAKE_ID('S','H','A','P')+#define BT_ARRAY_CODE			MAKE_ID('A','R','A','Y')+#define BT_SBMATERIAL_CODE		MAKE_ID('S','B','M','T')+#define BT_SBNODE_CODE			MAKE_ID('S','B','N','D')+#define BT_DNA_CODE				MAKE_ID('D','N','A','1')+++struct	btPointerUid+{+	union+	{+		void*	m_ptr;+		int		m_uniqueIds[2];+	};+};++///The btDefaultSerializer is the main Bullet serialization class.+///The constructor takes an optional argument for backwards compatibility, it is recommended to leave this empty/zero.+class btDefaultSerializer	:	public btSerializer+{+++	btAlignedObjectArray<char*>			mTypes;+	btAlignedObjectArray<short*>			mStructs;+	btAlignedObjectArray<short>			mTlens;+	btHashMap<btHashInt, int>			mStructReverse;+	btHashMap<btHashString,int>	mTypeLookup;++	+	btHashMap<btHashPtr,void*>	m_chunkP;+	+	btHashMap<btHashPtr,const char*>	m_nameMap;++	btHashMap<btHashPtr,btPointerUid>	m_uniquePointers;+	int	m_uniqueIdGenerator;++	int					m_totalSize;+	unsigned char*		m_buffer;+	int					m_currentSize;+	void*				m_dna;+	int					m_dnaLength;++	int					m_serializationFlags;+++	btAlignedObjectArray<btChunk*>	m_chunkPtrs;+	+protected:++	virtual	void*	findPointer(void* oldPtr) +	{+		void** ptr = m_chunkP.find(oldPtr);+		if (ptr && *ptr)+			return *ptr;+		return 0;+	}++	++++		void	writeDNA()+		{+			btChunk* dnaChunk = allocate(m_dnaLength,1);+			memcpy(dnaChunk->m_oldPtr,m_dna,m_dnaLength);+			finalizeChunk(dnaChunk,"DNA1",BT_DNA_CODE, m_dna);+		}++		int getReverseType(const char *type) const+		{++			btHashString key(type);+			const int* valuePtr = mTypeLookup.find(key);+			if (valuePtr)+				return *valuePtr;+			+			return -1;+		}++		void initDNA(const char* bdnaOrg,int dnalen)+		{+			///was already initialized+			if (m_dna)+				return;++			int littleEndian= 1;+			littleEndian= ((char*)&littleEndian)[0];+			++			m_dna = btAlignedAlloc(dnalen,16);+			memcpy(m_dna,bdnaOrg,dnalen);+			m_dnaLength = dnalen;++			int *intPtr=0;+			short *shtPtr=0;+			char *cp = 0;int dataLen =0;long nr=0;+			intPtr = (int*)m_dna;++			/*+				SDNA (4 bytes) (magic number)+				NAME (4 bytes)+				<nr> (4 bytes) amount of names (int)+				<string>+				<string>+			*/++			if (strncmp((const char*)m_dna, "SDNA", 4)==0)+			{+				// skip ++ NAME+				intPtr++; intPtr++;+			}++			// Parse names+			if (!littleEndian)+				*intPtr = btSwapEndian(*intPtr);+				+			dataLen = *intPtr;+			+			intPtr++;++			cp = (char*)intPtr;+			int i;+			for ( i=0; i<dataLen; i++)+			{+				+				while (*cp)cp++;+				cp++;+			}+			{+				nr= (long)cp;+			//	long mask=3;+				nr= ((nr+3)&~3)-nr;+				while (nr--)+				{+					cp++;+				}+			}++			/*+				TYPE (4 bytes)+				<nr> amount of types (int)+				<string>+				<string>+			*/++			intPtr = (int*)cp;+			assert(strncmp(cp, "TYPE", 4)==0); intPtr++;++			if (!littleEndian)+				*intPtr =  btSwapEndian(*intPtr);+			+			dataLen = *intPtr;+			intPtr++;++			+			cp = (char*)intPtr;+			for (i=0; i<dataLen; i++)+			{+				mTypes.push_back(cp);+				while (*cp)cp++;+				cp++;+			}++		{+				nr= (long)cp;+			//	long mask=3;+				nr= ((nr+3)&~3)-nr;+				while (nr--)+				{+					cp++;+				}+			}+++			/*+				TLEN (4 bytes)+				<len> (short) the lengths of types+				<len>+			*/++			// Parse type lens+			intPtr = (int*)cp;+			assert(strncmp(cp, "TLEN", 4)==0); intPtr++;++			dataLen = (int)mTypes.size();++			shtPtr = (short*)intPtr;+			for (i=0; i<dataLen; i++, shtPtr++)+			{+				if (!littleEndian)+					shtPtr[0] = btSwapEndian(shtPtr[0]);+				mTlens.push_back(shtPtr[0]);+			}++			if (dataLen & 1) shtPtr++;++			/*+				STRC (4 bytes)+				<nr> amount of structs (int)+				<typenr>+				<nr_of_elems>+				<typenr>+				<namenr>+				<typenr>+				<namenr>+			*/++			intPtr = (int*)shtPtr;+			cp = (char*)intPtr;+			assert(strncmp(cp, "STRC", 4)==0); intPtr++;++			if (!littleEndian)+				*intPtr = btSwapEndian(*intPtr);+			dataLen = *intPtr ; +			intPtr++;+++			shtPtr = (short*)intPtr;+			for (i=0; i<dataLen; i++)+			{+				mStructs.push_back (shtPtr);+				+				if (!littleEndian)+				{+					shtPtr[0]= btSwapEndian(shtPtr[0]);+					shtPtr[1]= btSwapEndian(shtPtr[1]);++					int len = shtPtr[1];+					shtPtr+= 2;++					for (int a=0; a<len; a++, shtPtr+=2)+					{+							shtPtr[0]= btSwapEndian(shtPtr[0]);+							shtPtr[1]= btSwapEndian(shtPtr[1]);+					}++				} else+				{+					shtPtr+= (2*shtPtr[1])+2;+				}+			}++			// build reverse lookups+			for (i=0; i<(int)mStructs.size(); i++)+			{+				short *strc = mStructs.at(i);+				mStructReverse.insert(strc[0], i);+				mTypeLookup.insert(btHashString(mTypes[strc[0]]),i);+			}+		}++public:	+	++	++		btDefaultSerializer(int totalSize=0)+			:m_totalSize(totalSize),+			m_currentSize(0),+			m_dna(0),+			m_dnaLength(0),+			m_serializationFlags(0)+		{+			m_buffer = m_totalSize?(unsigned char*)btAlignedAlloc(totalSize,16):0;+			+			const bool VOID_IS_8 = ((sizeof(void*)==8));++#ifdef BT_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES+			if (VOID_IS_8)+			{+#if _WIN64+				initDNA((const char*)sBulletDNAstr64,sBulletDNAlen64);+#else+				btAssert(0);+#endif+			} else+			{+#ifndef _WIN64+				initDNA((const char*)sBulletDNAstr,sBulletDNAlen);+#else+				btAssert(0);+#endif+			}+	+#else //BT_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES+			if (VOID_IS_8)+			{+				initDNA((const char*)sBulletDNAstr64,sBulletDNAlen64);+			} else+			{+				initDNA((const char*)sBulletDNAstr,sBulletDNAlen);+			}+#endif //BT_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES+	+		}++		virtual ~btDefaultSerializer() +		{+			if (m_buffer)+				btAlignedFree(m_buffer);+			if (m_dna)+				btAlignedFree(m_dna);+		}++		void	writeHeader(unsigned char* buffer) const+		{+			++#ifdef  BT_USE_DOUBLE_PRECISION+			memcpy(buffer, "BULLETd", 7);+#else+			memcpy(buffer, "BULLETf", 7);+#endif //BT_USE_DOUBLE_PRECISION+	+			int littleEndian= 1;+			littleEndian= ((char*)&littleEndian)[0];++			if (sizeof(void*)==8)+			{+				buffer[7] = '-';+			} else+			{+				buffer[7] = '_';+			}++			if (littleEndian)+			{+				buffer[8]='v';				+			} else+			{+				buffer[8]='V';+			}+++			buffer[9] = '2';+			buffer[10] = '7';+			buffer[11] = '8';++		}++		virtual	void	startSerialization()+		{+			m_uniqueIdGenerator= 1;+			if (m_totalSize)+			{+				unsigned char* buffer = internalAlloc(BT_HEADER_LENGTH);+				writeHeader(buffer);+			}+			+		}++		virtual	void	finishSerialization()+		{+			writeDNA();++			//if we didn't pre-allocate a buffer, we need to create a contiguous buffer now+			int mysize = 0;+			if (!m_totalSize)+			{+				if (m_buffer)+					btAlignedFree(m_buffer);++				m_currentSize += BT_HEADER_LENGTH;+				m_buffer = (unsigned char*)btAlignedAlloc(m_currentSize,16);++				unsigned char* currentPtr = m_buffer;+				writeHeader(m_buffer);+				currentPtr += BT_HEADER_LENGTH;+				mysize+=BT_HEADER_LENGTH;+				for (int i=0;i<	m_chunkPtrs.size();i++)+				{+					int curLength = sizeof(btChunk)+m_chunkPtrs[i]->m_length;+					memcpy(currentPtr,m_chunkPtrs[i], curLength);+					btAlignedFree(m_chunkPtrs[i]);+					currentPtr+=curLength;+					mysize+=curLength;+				}+			}++			mTypes.clear();+			mStructs.clear();+			mTlens.clear();+			mStructReverse.clear();+			mTypeLookup.clear();+			m_chunkP.clear();+			m_nameMap.clear();+			m_uniquePointers.clear();+			m_chunkPtrs.clear();+		}++		virtual	void*	getUniquePointer(void*oldPtr)+		{+			if (!oldPtr)+				return 0;++			btPointerUid* uptr = (btPointerUid*)m_uniquePointers.find(oldPtr);+			if (uptr)+			{+				return uptr->m_ptr;+			}+			m_uniqueIdGenerator++;+			+			btPointerUid uid;+			uid.m_uniqueIds[0] = m_uniqueIdGenerator;+			uid.m_uniqueIds[1] = m_uniqueIdGenerator;+			m_uniquePointers.insert(oldPtr,uid);+			return uid.m_ptr;++		}++		virtual	const unsigned char*		getBufferPointer() const+		{+			return m_buffer;+		}++		virtual	int					getCurrentBufferSize() const+		{+			return	m_currentSize;+		}++		virtual	void	finalizeChunk(btChunk* chunk, const char* structType, int chunkCode,void* oldPtr)+		{+			if (!(m_serializationFlags&BT_SERIALIZE_NO_DUPLICATE_ASSERT))+			{+				btAssert(!findPointer(oldPtr));+			}++			chunk->m_dna_nr = getReverseType(structType);+			+			chunk->m_chunkCode = chunkCode;+			+			void* uniquePtr = getUniquePointer(oldPtr);+			+			m_chunkP.insert(oldPtr,uniquePtr);//chunk->m_oldPtr);+			chunk->m_oldPtr = uniquePtr;//oldPtr;+			+		}++		+		virtual unsigned char* internalAlloc(size_t size)+		{+			unsigned char* ptr = 0;++			if (m_totalSize)+			{+				ptr = m_buffer+m_currentSize;+				m_currentSize += int(size);+				btAssert(m_currentSize<m_totalSize);+			} else+			{+				ptr = (unsigned char*)btAlignedAlloc(size,16);+				m_currentSize += int(size);+			}+			return ptr;+		}++		++		virtual	btChunk*	allocate(size_t size, int numElements)+		{++			unsigned char* ptr = internalAlloc(int(size)*numElements+sizeof(btChunk));++			unsigned char* data = ptr + sizeof(btChunk);+			+			btChunk* chunk = (btChunk*)ptr;+			chunk->m_chunkCode = 0;+			chunk->m_oldPtr = data;+			chunk->m_length = int(size)*numElements;+			chunk->m_number = numElements;+			+			m_chunkPtrs.push_back(chunk);+			++			return chunk;+		}++		virtual	const char*	findNameForPointer(const void* ptr) const+		{+			const char*const * namePtr = m_nameMap.find(ptr);+			if (namePtr && *namePtr)+				return *namePtr;+			return 0;++		}++		virtual	void	registerNameForPointer(const void* ptr, const char* name)+		{+			m_nameMap.insert(ptr,name);+		}++		virtual void	serializeName(const char* name)+		{+			if (name)+			{+				//don't serialize name twice+				if (findPointer((void*)name))+					return;++				int len = btStrLen(name);+				if (len)+				{++					int newLen = len+1;+					int padding = ((newLen+3)&~3)-newLen;+					newLen += padding;++					//serialize name string now+					btChunk* chunk = allocate(sizeof(char),newLen);+					char* destinationName = (char*)chunk->m_oldPtr;+					for (int i=0;i<len;i++)+					{+						destinationName[i] = name[i];+					}+					destinationName[len] = 0;+					finalizeChunk(chunk,"char",BT_ARRAY_CODE,(void*)name);+				}+			}+		}++		virtual int		getSerializationFlags() const+		{+			return m_serializationFlags;+		}++		virtual void	setSerializationFlags(int flags)+		{+			m_serializationFlags = flags;+		}++};+++#endif //BT_SERIALIZER_H+
+ bullet/LinearMath/btStackAlloc.h view
@@ -0,0 +1,116 @@+/*+Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++/*+StackAlloc extracted from GJK-EPA collision solver by Nathanael Presson+Nov.2006+*/++#ifndef BT_STACK_ALLOC+#define BT_STACK_ALLOC++#include "btScalar.h" //for btAssert+#include "btAlignedAllocator.h"++///The btBlock class is an internal structure for the btStackAlloc memory allocator.+struct btBlock+{+	btBlock*			previous;+	unsigned char*		address;+};++///The StackAlloc class provides some fast stack-based memory allocator (LIFO last-in first-out)+class btStackAlloc+{+public:++	btStackAlloc(unsigned int size)	{ ctor();create(size); }+	~btStackAlloc()		{ destroy(); }+	+	inline void		create(unsigned int size)+	{+		destroy();+		data		=  (unsigned char*) btAlignedAlloc(size,16);+		totalsize	=	size;+	}+	inline void		destroy()+	{+		btAssert(usedsize==0);+		//Raise(L"StackAlloc is still in use");++		if(usedsize==0)+		{+			if(!ischild && data)		+				btAlignedFree(data);++			data				=	0;+			usedsize			=	0;+		}+		+	}++	int	getAvailableMemory() const+	{+		return static_cast<int>(totalsize - usedsize);+	}++	unsigned char*			allocate(unsigned int size)+	{+		const unsigned int	nus(usedsize+size);+		if(nus<totalsize)+		{+			usedsize=nus;+			return(data+(usedsize-size));+		}+		btAssert(0);+		//&& (L"Not enough memory"));+		+		return(0);+	}+	SIMD_FORCE_INLINE btBlock*		beginBlock()+	{+		btBlock*	pb = (btBlock*)allocate(sizeof(btBlock));+		pb->previous	=	current;+		pb->address		=	data+usedsize;+		current			=	pb;+		return(pb);+	}+	SIMD_FORCE_INLINE void		endBlock(btBlock* block)+	{+		btAssert(block==current);+		//Raise(L"Unmatched blocks");+		if(block==current)+		{+			current		=	block->previous;+			usedsize	=	(unsigned int)((block->address-data)-sizeof(btBlock));+		}+	}++private:+	void		ctor()+	{+		data		=	0;+		totalsize	=	0;+		usedsize	=	0;+		current		=	0;+		ischild		=	false;+	}+	unsigned char*		data;+	unsigned int		totalsize;+	unsigned int		usedsize;+	btBlock*	current;+	bool		ischild;+};++#endif //BT_STACK_ALLOC
+ bullet/LinearMath/btTransform.h view
@@ -0,0 +1,307 @@+/*+Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++++#ifndef BT_TRANSFORM_H+#define BT_TRANSFORM_H+++#include "btMatrix3x3.h"++#ifdef BT_USE_DOUBLE_PRECISION+#define btTransformData btTransformDoubleData+#else+#define btTransformData btTransformFloatData+#endif+++++/**@brief The btTransform class supports rigid transforms with only translation and rotation and no scaling/shear.+ *It can be used in combination with btVector3, btQuaternion and btMatrix3x3 linear algebra classes. */+class btTransform {+	+  ///Storage for the rotation+	btMatrix3x3 m_basis;+  ///Storage for the translation+	btVector3   m_origin;++public:+	+  /**@brief No initialization constructor */+	btTransform() {}+  /**@brief Constructor from btQuaternion (optional btVector3 )+   * @param q Rotation from quaternion +   * @param c Translation from Vector (default 0,0,0) */+	explicit SIMD_FORCE_INLINE btTransform(const btQuaternion& q, +		const btVector3& c = btVector3(btScalar(0), btScalar(0), btScalar(0))) +		: m_basis(q),+		m_origin(c)+	{}++  /**@brief Constructor from btMatrix3x3 (optional btVector3)+   * @param b Rotation from Matrix +   * @param c Translation from Vector default (0,0,0)*/+	explicit SIMD_FORCE_INLINE btTransform(const btMatrix3x3& b, +		const btVector3& c = btVector3(btScalar(0), btScalar(0), btScalar(0)))+		: m_basis(b),+		m_origin(c)+	{}+  /**@brief Copy constructor */+	SIMD_FORCE_INLINE btTransform (const btTransform& other)+		: m_basis(other.m_basis),+		m_origin(other.m_origin)+	{+	}+  /**@brief Assignment Operator */+	SIMD_FORCE_INLINE btTransform& operator=(const btTransform& other)+	{+		m_basis = other.m_basis;+		m_origin = other.m_origin;+		return *this;+	}+++  /**@brief Set the current transform as the value of the product of two transforms+   * @param t1 Transform 1+   * @param t2 Transform 2+   * This = Transform1 * Transform2 */+		SIMD_FORCE_INLINE void mult(const btTransform& t1, const btTransform& t2) {+			m_basis = t1.m_basis * t2.m_basis;+			m_origin = t1(t2.m_origin);+		}++/*		void multInverseLeft(const btTransform& t1, const btTransform& t2) {+			btVector3 v = t2.m_origin - t1.m_origin;+			m_basis = btMultTransposeLeft(t1.m_basis, t2.m_basis);+			m_origin = v * t1.m_basis;+		}+		*/++/**@brief Return the transform of the vector */+	SIMD_FORCE_INLINE btVector3 operator()(const btVector3& x) const+	{+		return btVector3(m_basis[0].dot(x) + m_origin.x(), +			m_basis[1].dot(x) + m_origin.y(), +			m_basis[2].dot(x) + m_origin.z());+	}++  /**@brief Return the transform of the vector */+	SIMD_FORCE_INLINE btVector3 operator*(const btVector3& x) const+	{+		return (*this)(x);+	}++  /**@brief Return the transform of the btQuaternion */+	SIMD_FORCE_INLINE btQuaternion operator*(const btQuaternion& q) const+	{+		return getRotation() * q;+	}++  /**@brief Return the basis matrix for the rotation */+	SIMD_FORCE_INLINE btMatrix3x3&       getBasis()          { return m_basis; }+  /**@brief Return the basis matrix for the rotation */+	SIMD_FORCE_INLINE const btMatrix3x3& getBasis()    const { return m_basis; }++  /**@brief Return the origin vector translation */+	SIMD_FORCE_INLINE btVector3&         getOrigin()         { return m_origin; }+  /**@brief Return the origin vector translation */+	SIMD_FORCE_INLINE const btVector3&   getOrigin()   const { return m_origin; }++  /**@brief Return a quaternion representing the rotation */+	btQuaternion getRotation() const { +		btQuaternion q;+		m_basis.getRotation(q);+		return q;+	}+	+	+  /**@brief Set from an array +   * @param m A pointer to a 15 element array (12 rotation(row major padded on the right by 1), and 3 translation */+	void setFromOpenGLMatrix(const btScalar *m)+	{+		m_basis.setFromOpenGLSubMatrix(m);+		m_origin.setValue(m[12],m[13],m[14]);+	}++  /**@brief Fill an array representation+   * @param m A pointer to a 15 element array (12 rotation(row major padded on the right by 1), and 3 translation */+	void getOpenGLMatrix(btScalar *m) const +	{+		m_basis.getOpenGLSubMatrix(m);+		m[12] = m_origin.x();+		m[13] = m_origin.y();+		m[14] = m_origin.z();+		m[15] = btScalar(1.0);+	}++  /**@brief Set the translational element+   * @param origin The vector to set the translation to */+	SIMD_FORCE_INLINE void setOrigin(const btVector3& origin) +	{ +		m_origin = origin;+	}++	SIMD_FORCE_INLINE btVector3 invXform(const btVector3& inVec) const;+++  /**@brief Set the rotational element by btMatrix3x3 */+	SIMD_FORCE_INLINE void setBasis(const btMatrix3x3& basis)+	{ +		m_basis = basis;+	}++  /**@brief Set the rotational element by btQuaternion */+	SIMD_FORCE_INLINE void setRotation(const btQuaternion& q)+	{+		m_basis.setRotation(q);+	}+++  /**@brief Set this transformation to the identity */+	void setIdentity()+	{+		m_basis.setIdentity();+		m_origin.setValue(btScalar(0.0), btScalar(0.0), btScalar(0.0));+	}++  /**@brief Multiply this Transform by another(this = this * another) +   * @param t The other transform */+	btTransform& operator*=(const btTransform& t) +	{+		m_origin += m_basis * t.m_origin;+		m_basis *= t.m_basis;+		return *this;+	}++  /**@brief Return the inverse of this transform */+	btTransform inverse() const+	{ +		btMatrix3x3 inv = m_basis.transpose();+		return btTransform(inv, inv * -m_origin);+	}++  /**@brief Return the inverse of this transform times the other transform+   * @param t The other transform +   * return this.inverse() * the other */+	btTransform inverseTimes(const btTransform& t) const;  ++  /**@brief Return the product of this transform and the other */+	btTransform operator*(const btTransform& t) const;++  /**@brief Return an identity transform */+	static const btTransform&	getIdentity()+	{+		static const btTransform identityTransform(btMatrix3x3::getIdentity());+		return identityTransform;+	}++	void	serialize(struct	btTransformData& dataOut) const;++	void	serializeFloat(struct	btTransformFloatData& dataOut) const;++	void	deSerialize(const struct	btTransformData& dataIn);++	void	deSerializeDouble(const struct	btTransformDoubleData& dataIn);++	void	deSerializeFloat(const struct	btTransformFloatData& dataIn);++};+++SIMD_FORCE_INLINE btVector3+btTransform::invXform(const btVector3& inVec) const+{+	btVector3 v = inVec - m_origin;+	return (m_basis.transpose() * v);+}++SIMD_FORCE_INLINE btTransform +btTransform::inverseTimes(const btTransform& t) const  +{+	btVector3 v = t.getOrigin() - m_origin;+		return btTransform(m_basis.transposeTimes(t.m_basis),+			v * m_basis);+}++SIMD_FORCE_INLINE btTransform +btTransform::operator*(const btTransform& t) const+{+	return btTransform(m_basis * t.m_basis, +		(*this)(t.m_origin));+}++/**@brief Test if two transforms have all elements equal */+SIMD_FORCE_INLINE bool operator==(const btTransform& t1, const btTransform& t2)+{+   return ( t1.getBasis()  == t2.getBasis() &&+            t1.getOrigin() == t2.getOrigin() );+}+++///for serialization+struct	btTransformFloatData+{+	btMatrix3x3FloatData	m_basis;+	btVector3FloatData	m_origin;+};++struct	btTransformDoubleData+{+	btMatrix3x3DoubleData	m_basis;+	btVector3DoubleData	m_origin;+};++++SIMD_FORCE_INLINE	void	btTransform::serialize(btTransformData& dataOut) const+{+	m_basis.serialize(dataOut.m_basis);+	m_origin.serialize(dataOut.m_origin);+}++SIMD_FORCE_INLINE	void	btTransform::serializeFloat(btTransformFloatData& dataOut) const+{+	m_basis.serializeFloat(dataOut.m_basis);+	m_origin.serializeFloat(dataOut.m_origin);+}+++SIMD_FORCE_INLINE	void	btTransform::deSerialize(const btTransformData& dataIn)+{+	m_basis.deSerialize(dataIn.m_basis);+	m_origin.deSerialize(dataIn.m_origin);+}++SIMD_FORCE_INLINE	void	btTransform::deSerializeFloat(const btTransformFloatData& dataIn)+{+	m_basis.deSerializeFloat(dataIn.m_basis);+	m_origin.deSerializeFloat(dataIn.m_origin);+}++SIMD_FORCE_INLINE	void	btTransform::deSerializeDouble(const btTransformDoubleData& dataIn)+{+	m_basis.deSerializeDouble(dataIn.m_basis);+	m_origin.deSerializeDouble(dataIn.m_origin);+}+++#endif //BT_TRANSFORM_H++++++
+ bullet/LinearMath/btTransformUtil.h view
@@ -0,0 +1,228 @@+/*+Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/+++#ifndef BT_TRANSFORM_UTIL_H+#define BT_TRANSFORM_UTIL_H++#include "btTransform.h"+#define ANGULAR_MOTION_THRESHOLD btScalar(0.5)*SIMD_HALF_PI+++++SIMD_FORCE_INLINE btVector3 btAabbSupport(const btVector3& halfExtents,const btVector3& supportDir)+{+	return btVector3(supportDir.x() < btScalar(0.0) ? -halfExtents.x() : halfExtents.x(),+      supportDir.y() < btScalar(0.0) ? -halfExtents.y() : halfExtents.y(),+      supportDir.z() < btScalar(0.0) ? -halfExtents.z() : halfExtents.z()); +}+++++++/// Utils related to temporal transforms+class btTransformUtil+{++public:++	static void integrateTransform(const btTransform& curTrans,const btVector3& linvel,const btVector3& angvel,btScalar timeStep,btTransform& predictedTransform)+	{+		predictedTransform.setOrigin(curTrans.getOrigin() + linvel * timeStep);+//	#define QUATERNION_DERIVATIVE+	#ifdef QUATERNION_DERIVATIVE+		btQuaternion predictedOrn = curTrans.getRotation();+		predictedOrn += (angvel * predictedOrn) * (timeStep * btScalar(0.5));+		predictedOrn.normalize();+	#else+		//Exponential map+		//google for "Practical Parameterization of Rotations Using the Exponential Map", F. Sebastian Grassia++		btVector3 axis;+		btScalar	fAngle = angvel.length(); +		//limit the angular motion+		if (fAngle*timeStep > ANGULAR_MOTION_THRESHOLD)+		{+			fAngle = ANGULAR_MOTION_THRESHOLD / timeStep;+		}++		if ( fAngle < btScalar(0.001) )+		{+			// use Taylor's expansions of sync function+			axis   = angvel*( btScalar(0.5)*timeStep-(timeStep*timeStep*timeStep)*(btScalar(0.020833333333))*fAngle*fAngle );+		}+		else+		{+			// sync(fAngle) = sin(c*fAngle)/t+			axis   = angvel*( btSin(btScalar(0.5)*fAngle*timeStep)/fAngle );+		}+		btQuaternion dorn (axis.x(),axis.y(),axis.z(),btCos( fAngle*timeStep*btScalar(0.5) ));+		btQuaternion orn0 = curTrans.getRotation();++		btQuaternion predictedOrn = dorn * orn0;+		predictedOrn.normalize();+	#endif+		predictedTransform.setRotation(predictedOrn);+	}++	static void	calculateVelocityQuaternion(const btVector3& pos0,const btVector3& pos1,const btQuaternion& orn0,const btQuaternion& orn1,btScalar timeStep,btVector3& linVel,btVector3& angVel)+	{+		linVel = (pos1 - pos0) / timeStep;+		btVector3 axis;+		btScalar  angle;+		if (orn0 != orn1)+		{+			calculateDiffAxisAngleQuaternion(orn0,orn1,axis,angle);+			angVel = axis * angle / timeStep;+		} else+		{+			angVel.setValue(0,0,0);+		}+	}++	static void calculateDiffAxisAngleQuaternion(const btQuaternion& orn0,const btQuaternion& orn1a,btVector3& axis,btScalar& angle)+	{+		btQuaternion orn1 = orn0.nearest(orn1a);+		btQuaternion dorn = orn1 * orn0.inverse();+		angle = dorn.getAngle();+		axis = btVector3(dorn.x(),dorn.y(),dorn.z());+		axis[3] = btScalar(0.);+		//check for axis length+		btScalar len = axis.length2();+		if (len < SIMD_EPSILON*SIMD_EPSILON)+			axis = btVector3(btScalar(1.),btScalar(0.),btScalar(0.));+		else+			axis /= btSqrt(len);+	}++	static void	calculateVelocity(const btTransform& transform0,const btTransform& transform1,btScalar timeStep,btVector3& linVel,btVector3& angVel)+	{+		linVel = (transform1.getOrigin() - transform0.getOrigin()) / timeStep;+		btVector3 axis;+		btScalar  angle;+		calculateDiffAxisAngle(transform0,transform1,axis,angle);+		angVel = axis * angle / timeStep;+	}++	static void calculateDiffAxisAngle(const btTransform& transform0,const btTransform& transform1,btVector3& axis,btScalar& angle)+	{+		btMatrix3x3 dmat = transform1.getBasis() * transform0.getBasis().inverse();+		btQuaternion dorn;+		dmat.getRotation(dorn);++		///floating point inaccuracy can lead to w component > 1..., which breaks +		dorn.normalize();+		+		angle = dorn.getAngle();+		axis = btVector3(dorn.x(),dorn.y(),dorn.z());+		axis[3] = btScalar(0.);+		//check for axis length+		btScalar len = axis.length2();+		if (len < SIMD_EPSILON*SIMD_EPSILON)+			axis = btVector3(btScalar(1.),btScalar(0.),btScalar(0.));+		else+			axis /= btSqrt(len);+	}++};+++///The btConvexSeparatingDistanceUtil can help speed up convex collision detection +///by conservatively updating a cached separating distance/vector instead of re-calculating the closest distance+class	btConvexSeparatingDistanceUtil+{+	btQuaternion	m_ornA;+	btQuaternion	m_ornB;+	btVector3	m_posA;+	btVector3	m_posB;+	+	btVector3	m_separatingNormal;++	btScalar	m_boundingRadiusA;+	btScalar	m_boundingRadiusB;+	btScalar	m_separatingDistance;++public:++	btConvexSeparatingDistanceUtil(btScalar	boundingRadiusA,btScalar	boundingRadiusB)+		:m_boundingRadiusA(boundingRadiusA),+		m_boundingRadiusB(boundingRadiusB),+		m_separatingDistance(0.f)+	{+	}++	btScalar	getConservativeSeparatingDistance()+	{+		return m_separatingDistance;+	}++	void	updateSeparatingDistance(const btTransform& transA,const btTransform& transB)+	{+		const btVector3& toPosA = transA.getOrigin();+		const btVector3& toPosB = transB.getOrigin();+		btQuaternion toOrnA = transA.getRotation();+		btQuaternion toOrnB = transB.getRotation();++		if (m_separatingDistance>0.f)+		{+			++			btVector3 linVelA,angVelA,linVelB,angVelB;+			btTransformUtil::calculateVelocityQuaternion(m_posA,toPosA,m_ornA,toOrnA,btScalar(1.),linVelA,angVelA);+			btTransformUtil::calculateVelocityQuaternion(m_posB,toPosB,m_ornB,toOrnB,btScalar(1.),linVelB,angVelB);+			btScalar maxAngularProjectedVelocity = angVelA.length() * m_boundingRadiusA + angVelB.length() * m_boundingRadiusB;+			btVector3 relLinVel = (linVelB-linVelA);+			btScalar relLinVelocLength = relLinVel.dot(m_separatingNormal);+			if (relLinVelocLength<0.f)+			{+				relLinVelocLength = 0.f;+			}+	+			btScalar	projectedMotion = maxAngularProjectedVelocity +relLinVelocLength;+			m_separatingDistance -= projectedMotion;+		}+	+		m_posA = toPosA;+		m_posB = toPosB;+		m_ornA = toOrnA;+		m_ornB = toOrnB;+	}++	void	initSeparatingDistance(const btVector3& separatingVector,btScalar separatingDistance,const btTransform& transA,const btTransform& transB)+	{+		m_separatingDistance = separatingDistance;++		if (m_separatingDistance>0.f)+		{+			m_separatingNormal = separatingVector;+			+			const btVector3& toPosA = transA.getOrigin();+			const btVector3& toPosB = transB.getOrigin();+			btQuaternion toOrnA = transA.getRotation();+			btQuaternion toOrnB = transB.getRotation();+			m_posA = toPosA;+			m_posB = toPosB;+			m_ornA = toOrnA;+			m_ornB = toOrnB;+		}+	}++};+++#endif //BT_TRANSFORM_UTIL_H+
+ bullet/LinearMath/btVector3.h view
@@ -0,0 +1,766 @@+/*+Copyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++++#ifndef BT_VECTOR3_H+#define BT_VECTOR3_H+++#include "btScalar.h"+#include "btMinMax.h"++#ifdef BT_USE_DOUBLE_PRECISION+#define btVector3Data btVector3DoubleData+#define btVector3DataName "btVector3DoubleData"+#else+#define btVector3Data btVector3FloatData+#define btVector3DataName "btVector3FloatData"+#endif //BT_USE_DOUBLE_PRECISION+++++/**@brief btVector3 can be used to represent 3D points and vectors.+ * It has an un-used w component to suit 16-byte alignment when btVector3 is stored in containers. This extra component can be used by derived classes (Quaternion?) or by user+ * Ideally, this class should be replaced by a platform optimized SIMD version that keeps the data in registers+ */+ATTRIBUTE_ALIGNED16(class) btVector3+{+public:++#if defined (__SPU__) && defined (__CELLOS_LV2__)+		btScalar	m_floats[4];+public:+	SIMD_FORCE_INLINE const vec_float4&	get128() const+	{+		return *((const vec_float4*)&m_floats[0]);+	}+public:+#else //__CELLOS_LV2__ __SPU__+#ifdef BT_USE_SSE // _WIN32+	union {+		__m128 mVec128;+		btScalar	m_floats[4];+	};+	SIMD_FORCE_INLINE	__m128	get128() const+	{+		return mVec128;+	}+	SIMD_FORCE_INLINE	void	set128(__m128 v128)+	{+		mVec128 = v128;+	}+#else+	btScalar	m_floats[4];+#endif+#endif //__CELLOS_LV2__ __SPU__++	public:++  /**@brief No initialization constructor */+	SIMD_FORCE_INLINE btVector3() {}++ +	+  /**@brief Constructor from scalars +   * @param x X value+   * @param y Y value +   * @param z Z value +   */+	SIMD_FORCE_INLINE btVector3(const btScalar& x, const btScalar& y, const btScalar& z)+	{+		m_floats[0] = x;+		m_floats[1] = y;+		m_floats[2] = z;+		m_floats[3] = btScalar(0.);+	}++	+/**@brief Add a vector to this one + * @param The vector to add to this one */+	SIMD_FORCE_INLINE btVector3& operator+=(const btVector3& v)+	{++		m_floats[0] += v.m_floats[0]; m_floats[1] += v.m_floats[1];m_floats[2] += v.m_floats[2];+		return *this;+	}+++  /**@brief Subtract a vector from this one+   * @param The vector to subtract */+	SIMD_FORCE_INLINE btVector3& operator-=(const btVector3& v) +	{+		m_floats[0] -= v.m_floats[0]; m_floats[1] -= v.m_floats[1];m_floats[2] -= v.m_floats[2];+		return *this;+	}+  /**@brief Scale the vector+   * @param s Scale factor */+	SIMD_FORCE_INLINE btVector3& operator*=(const btScalar& s)+	{+		m_floats[0] *= s; m_floats[1] *= s;m_floats[2] *= s;+		return *this;+	}++  /**@brief Inversely scale the vector +   * @param s Scale factor to divide by */+	SIMD_FORCE_INLINE btVector3& operator/=(const btScalar& s) +	{+		btFullAssert(s != btScalar(0.0));+		return *this *= btScalar(1.0) / s;+	}++  /**@brief Return the dot product+   * @param v The other vector in the dot product */+	SIMD_FORCE_INLINE btScalar dot(const btVector3& v) const+	{+		return m_floats[0] * v.m_floats[0] + m_floats[1] * v.m_floats[1] +m_floats[2] * v.m_floats[2];+	}++  /**@brief Return the length of the vector squared */+	SIMD_FORCE_INLINE btScalar length2() const+	{+		return dot(*this);+	}++  /**@brief Return the length of the vector */+	SIMD_FORCE_INLINE btScalar length() const+	{+		return btSqrt(length2());+	}++  /**@brief Return the distance squared between the ends of this and another vector+   * This is symantically treating the vector like a point */+	SIMD_FORCE_INLINE btScalar distance2(const btVector3& v) const;++  /**@brief Return the distance between the ends of this and another vector+   * This is symantically treating the vector like a point */+	SIMD_FORCE_INLINE btScalar distance(const btVector3& v) const;++	SIMD_FORCE_INLINE btVector3& safeNormalize() +	{+		btVector3 absVec = this->absolute();+		int maxIndex = absVec.maxAxis();+		if (absVec[maxIndex]>0)+		{+			*this /= absVec[maxIndex];+			return *this /= length();+		}+		setValue(1,0,0);+		return *this;+	}++  /**@brief Normalize this vector +   * x^2 + y^2 + z^2 = 1 */+	SIMD_FORCE_INLINE btVector3& normalize() +	{+		return *this /= length();+	}++  /**@brief Return a normalized version of this vector */+	SIMD_FORCE_INLINE btVector3 normalized() const;++  /**@brief Return a rotated version of this vector+   * @param wAxis The axis to rotate about +   * @param angle The angle to rotate by */+	SIMD_FORCE_INLINE btVector3 rotate( const btVector3& wAxis, const btScalar angle ) const;++  /**@brief Return the angle between this and another vector+   * @param v The other vector */+	SIMD_FORCE_INLINE btScalar angle(const btVector3& v) const +	{+		btScalar s = btSqrt(length2() * v.length2());+		btFullAssert(s != btScalar(0.0));+		return btAcos(dot(v) / s);+	}+  /**@brief Return a vector will the absolute values of each element */+	SIMD_FORCE_INLINE btVector3 absolute() const +	{+		return btVector3(+			btFabs(m_floats[0]), +			btFabs(m_floats[1]), +			btFabs(m_floats[2]));+	}+  /**@brief Return the cross product between this and another vector +   * @param v The other vector */+	SIMD_FORCE_INLINE btVector3 cross(const btVector3& v) const+	{+		return btVector3(+			m_floats[1] * v.m_floats[2] -m_floats[2] * v.m_floats[1],+			m_floats[2] * v.m_floats[0] - m_floats[0] * v.m_floats[2],+			m_floats[0] * v.m_floats[1] - m_floats[1] * v.m_floats[0]);+	}++	SIMD_FORCE_INLINE btScalar triple(const btVector3& v1, const btVector3& v2) const+	{+		return m_floats[0] * (v1.m_floats[1] * v2.m_floats[2] - v1.m_floats[2] * v2.m_floats[1]) + +			m_floats[1] * (v1.m_floats[2] * v2.m_floats[0] - v1.m_floats[0] * v2.m_floats[2]) + +			m_floats[2] * (v1.m_floats[0] * v2.m_floats[1] - v1.m_floats[1] * v2.m_floats[0]);+	}++  /**@brief Return the axis with the smallest value +   * Note return values are 0,1,2 for x, y, or z */+	SIMD_FORCE_INLINE int minAxis() const+	{+		return m_floats[0] < m_floats[1] ? (m_floats[0] <m_floats[2] ? 0 : 2) : (m_floats[1] <m_floats[2] ? 1 : 2);+	}++  /**@brief Return the axis with the largest value +   * Note return values are 0,1,2 for x, y, or z */+	SIMD_FORCE_INLINE int maxAxis() const +	{+		return m_floats[0] < m_floats[1] ? (m_floats[1] <m_floats[2] ? 2 : 1) : (m_floats[0] <m_floats[2] ? 2 : 0);+	}++	SIMD_FORCE_INLINE int furthestAxis() const+	{+		return absolute().minAxis();+	}++	SIMD_FORCE_INLINE int closestAxis() const +	{+		return absolute().maxAxis();+	}++	SIMD_FORCE_INLINE void setInterpolate3(const btVector3& v0, const btVector3& v1, btScalar rt)+	{+		btScalar s = btScalar(1.0) - rt;+		m_floats[0] = s * v0.m_floats[0] + rt * v1.m_floats[0];+		m_floats[1] = s * v0.m_floats[1] + rt * v1.m_floats[1];+		m_floats[2] = s * v0.m_floats[2] + rt * v1.m_floats[2];+		//don't do the unused w component+		//		m_co[3] = s * v0[3] + rt * v1[3];+	}++  /**@brief Return the linear interpolation between this and another vector +   * @param v The other vector +   * @param t The ration of this to v (t = 0 => return this, t=1 => return other) */+	SIMD_FORCE_INLINE btVector3 lerp(const btVector3& v, const btScalar& t) const +	{+		return btVector3(m_floats[0] + (v.m_floats[0] - m_floats[0]) * t,+			m_floats[1] + (v.m_floats[1] - m_floats[1]) * t,+			m_floats[2] + (v.m_floats[2] -m_floats[2]) * t);+	}++  /**@brief Elementwise multiply this vector by the other +   * @param v The other vector */+	SIMD_FORCE_INLINE btVector3& operator*=(const btVector3& v)+	{+		m_floats[0] *= v.m_floats[0]; m_floats[1] *= v.m_floats[1];m_floats[2] *= v.m_floats[2];+		return *this;+	}++	 /**@brief Return the x value */+		SIMD_FORCE_INLINE const btScalar& getX() const { return m_floats[0]; }+  /**@brief Return the y value */+		SIMD_FORCE_INLINE const btScalar& getY() const { return m_floats[1]; }+  /**@brief Return the z value */+		SIMD_FORCE_INLINE const btScalar& getZ() const { return m_floats[2]; }+  /**@brief Set the x value */+		SIMD_FORCE_INLINE void	setX(btScalar x) { m_floats[0] = x;};+  /**@brief Set the y value */+		SIMD_FORCE_INLINE void	setY(btScalar y) { m_floats[1] = y;};+  /**@brief Set the z value */+		SIMD_FORCE_INLINE void	setZ(btScalar z) {m_floats[2] = z;};+  /**@brief Set the w value */+		SIMD_FORCE_INLINE void	setW(btScalar w) { m_floats[3] = w;};+  /**@brief Return the x value */+		SIMD_FORCE_INLINE const btScalar& x() const { return m_floats[0]; }+  /**@brief Return the y value */+		SIMD_FORCE_INLINE const btScalar& y() const { return m_floats[1]; }+  /**@brief Return the z value */+		SIMD_FORCE_INLINE const btScalar& z() const { return m_floats[2]; }+  /**@brief Return the w value */+		SIMD_FORCE_INLINE const btScalar& w() const { return m_floats[3]; }++	//SIMD_FORCE_INLINE btScalar&       operator[](int i)       { return (&m_floats[0])[i];	}      +	//SIMD_FORCE_INLINE const btScalar& operator[](int i) const { return (&m_floats[0])[i]; }+	///operator btScalar*() replaces operator[], using implicit conversion. We added operator != and operator == to avoid pointer comparisons.+	SIMD_FORCE_INLINE	operator       btScalar *()       { return &m_floats[0]; }+	SIMD_FORCE_INLINE	operator const btScalar *() const { return &m_floats[0]; }++	SIMD_FORCE_INLINE	bool	operator==(const btVector3& other) const+	{+		return ((m_floats[3]==other.m_floats[3]) && (m_floats[2]==other.m_floats[2]) && (m_floats[1]==other.m_floats[1]) && (m_floats[0]==other.m_floats[0]));+	}++	SIMD_FORCE_INLINE	bool	operator!=(const btVector3& other) const+	{+		return !(*this == other);+	}++	 /**@brief Set each element to the max of the current values and the values of another btVector3+   * @param other The other btVector3 to compare with +   */+		SIMD_FORCE_INLINE void	setMax(const btVector3& other)+		{+			btSetMax(m_floats[0], other.m_floats[0]);+			btSetMax(m_floats[1], other.m_floats[1]);+			btSetMax(m_floats[2], other.m_floats[2]);+			btSetMax(m_floats[3], other.w());+		}+  /**@brief Set each element to the min of the current values and the values of another btVector3+   * @param other The other btVector3 to compare with +   */+		SIMD_FORCE_INLINE void	setMin(const btVector3& other)+		{+			btSetMin(m_floats[0], other.m_floats[0]);+			btSetMin(m_floats[1], other.m_floats[1]);+			btSetMin(m_floats[2], other.m_floats[2]);+			btSetMin(m_floats[3], other.w());+		}++		SIMD_FORCE_INLINE void 	setValue(const btScalar& x, const btScalar& y, const btScalar& z)+		{+			m_floats[0]=x;+			m_floats[1]=y;+			m_floats[2]=z;+			m_floats[3] = btScalar(0.);+		}++		void	getSkewSymmetricMatrix(btVector3* v0,btVector3* v1,btVector3* v2) const+		{+			v0->setValue(0.		,-z()		,y());+			v1->setValue(z()	,0.			,-x());+			v2->setValue(-y()	,x()	,0.);+		}++		void	setZero()+		{+			setValue(btScalar(0.),btScalar(0.),btScalar(0.));+		}++		SIMD_FORCE_INLINE bool isZero() const +		{+			return m_floats[0] == btScalar(0) && m_floats[1] == btScalar(0) && m_floats[2] == btScalar(0);+		}++		SIMD_FORCE_INLINE bool fuzzyZero() const +		{+			return length2() < SIMD_EPSILON;+		}++		SIMD_FORCE_INLINE	void	serialize(struct	btVector3Data& dataOut) const;++		SIMD_FORCE_INLINE	void	deSerialize(const struct	btVector3Data& dataIn);++		SIMD_FORCE_INLINE	void	serializeFloat(struct	btVector3FloatData& dataOut) const;++		SIMD_FORCE_INLINE	void	deSerializeFloat(const struct	btVector3FloatData& dataIn);++		SIMD_FORCE_INLINE	void	serializeDouble(struct	btVector3DoubleData& dataOut) const;++		SIMD_FORCE_INLINE	void	deSerializeDouble(const struct	btVector3DoubleData& dataIn);++};++/**@brief Return the sum of two vectors (Point symantics)*/+SIMD_FORCE_INLINE btVector3 +operator+(const btVector3& v1, const btVector3& v2) +{+	return btVector3(v1.m_floats[0] + v2.m_floats[0], v1.m_floats[1] + v2.m_floats[1], v1.m_floats[2] + v2.m_floats[2]);+}++/**@brief Return the elementwise product of two vectors */+SIMD_FORCE_INLINE btVector3 +operator*(const btVector3& v1, const btVector3& v2) +{+	return btVector3(v1.m_floats[0] * v2.m_floats[0], v1.m_floats[1] * v2.m_floats[1], v1.m_floats[2] * v2.m_floats[2]);+}++/**@brief Return the difference between two vectors */+SIMD_FORCE_INLINE btVector3 +operator-(const btVector3& v1, const btVector3& v2)+{+	return btVector3(v1.m_floats[0] - v2.m_floats[0], v1.m_floats[1] - v2.m_floats[1], v1.m_floats[2] - v2.m_floats[2]);+}+/**@brief Return the negative of the vector */+SIMD_FORCE_INLINE btVector3 +operator-(const btVector3& v)+{+	return btVector3(-v.m_floats[0], -v.m_floats[1], -v.m_floats[2]);+}++/**@brief Return the vector scaled by s */+SIMD_FORCE_INLINE btVector3 +operator*(const btVector3& v, const btScalar& s)+{+	return btVector3(v.m_floats[0] * s, v.m_floats[1] * s, v.m_floats[2] * s);+}++/**@brief Return the vector scaled by s */+SIMD_FORCE_INLINE btVector3 +operator*(const btScalar& s, const btVector3& v)+{ +	return v * s; +}++/**@brief Return the vector inversely scaled by s */+SIMD_FORCE_INLINE btVector3+operator/(const btVector3& v, const btScalar& s)+{+	btFullAssert(s != btScalar(0.0));+	return v * (btScalar(1.0) / s);+}++/**@brief Return the vector inversely scaled by s */+SIMD_FORCE_INLINE btVector3+operator/(const btVector3& v1, const btVector3& v2)+{+	return btVector3(v1.m_floats[0] / v2.m_floats[0],v1.m_floats[1] / v2.m_floats[1],v1.m_floats[2] / v2.m_floats[2]);+}++/**@brief Return the dot product between two vectors */+SIMD_FORCE_INLINE btScalar +btDot(const btVector3& v1, const btVector3& v2) +{ +	return v1.dot(v2); +}+++/**@brief Return the distance squared between two vectors */+SIMD_FORCE_INLINE btScalar+btDistance2(const btVector3& v1, const btVector3& v2) +{ +	return v1.distance2(v2); +}+++/**@brief Return the distance between two vectors */+SIMD_FORCE_INLINE btScalar+btDistance(const btVector3& v1, const btVector3& v2) +{ +	return v1.distance(v2); +}++/**@brief Return the angle between two vectors */+SIMD_FORCE_INLINE btScalar+btAngle(const btVector3& v1, const btVector3& v2) +{ +	return v1.angle(v2); +}++/**@brief Return the cross product of two vectors */+SIMD_FORCE_INLINE btVector3 +btCross(const btVector3& v1, const btVector3& v2) +{ +	return v1.cross(v2); +}++SIMD_FORCE_INLINE btScalar+btTriple(const btVector3& v1, const btVector3& v2, const btVector3& v3)+{+	return v1.triple(v2, v3);+}++/**@brief Return the linear interpolation between two vectors+ * @param v1 One vector + * @param v2 The other vector + * @param t The ration of this to v (t = 0 => return v1, t=1 => return v2) */+SIMD_FORCE_INLINE btVector3 +lerp(const btVector3& v1, const btVector3& v2, const btScalar& t)+{+	return v1.lerp(v2, t);+}++++SIMD_FORCE_INLINE btScalar btVector3::distance2(const btVector3& v) const+{+	return (v - *this).length2();+}++SIMD_FORCE_INLINE btScalar btVector3::distance(const btVector3& v) const+{+	return (v - *this).length();+}++SIMD_FORCE_INLINE btVector3 btVector3::normalized() const+{+	return *this / length();+} ++SIMD_FORCE_INLINE btVector3 btVector3::rotate( const btVector3& wAxis, const btScalar angle ) const+{+	// wAxis must be a unit lenght vector++	btVector3 o = wAxis * wAxis.dot( *this );+	btVector3 x = *this - o;+	btVector3 y;++	y = wAxis.cross( *this );++	return ( o + x * btCos( angle ) + y * btSin( angle ) );+}++class btVector4 : public btVector3+{+public:++	SIMD_FORCE_INLINE btVector4() {}+++	SIMD_FORCE_INLINE btVector4(const btScalar& x, const btScalar& y, const btScalar& z,const btScalar& w) +		: btVector3(x,y,z)+	{+		m_floats[3] = w;+	}+++	SIMD_FORCE_INLINE btVector4 absolute4() const +	{+		return btVector4(+			btFabs(m_floats[0]), +			btFabs(m_floats[1]), +			btFabs(m_floats[2]),+			btFabs(m_floats[3]));+	}++++	btScalar	getW() const { return m_floats[3];}+++		SIMD_FORCE_INLINE int maxAxis4() const+	{+		int maxIndex = -1;+		btScalar maxVal = btScalar(-BT_LARGE_FLOAT);+		if (m_floats[0] > maxVal)+		{+			maxIndex = 0;+			maxVal = m_floats[0];+		}+		if (m_floats[1] > maxVal)+		{+			maxIndex = 1;+			maxVal = m_floats[1];+		}+		if (m_floats[2] > maxVal)+		{+			maxIndex = 2;+			maxVal =m_floats[2];+		}+		if (m_floats[3] > maxVal)+		{+			maxIndex = 3;+			maxVal = m_floats[3];+		}+		+		+		++		return maxIndex;++	}+++	SIMD_FORCE_INLINE int minAxis4() const+	{+		int minIndex = -1;+		btScalar minVal = btScalar(BT_LARGE_FLOAT);+		if (m_floats[0] < minVal)+		{+			minIndex = 0;+			minVal = m_floats[0];+		}+		if (m_floats[1] < minVal)+		{+			minIndex = 1;+			minVal = m_floats[1];+		}+		if (m_floats[2] < minVal)+		{+			minIndex = 2;+			minVal =m_floats[2];+		}+		if (m_floats[3] < minVal)+		{+			minIndex = 3;+			minVal = m_floats[3];+		}+		+		return minIndex;++	}+++	SIMD_FORCE_INLINE int closestAxis4() const +	{+		return absolute4().maxAxis4();+	}++	+ ++  /**@brief Set x,y,z and zero w +   * @param x Value of x+   * @param y Value of y+   * @param z Value of z+   */+		++/*		void getValue(btScalar *m) const +		{+			m[0] = m_floats[0];+			m[1] = m_floats[1];+			m[2] =m_floats[2];+		}+*/+/**@brief Set the values +   * @param x Value of x+   * @param y Value of y+   * @param z Value of z+   * @param w Value of w+   */+		SIMD_FORCE_INLINE void	setValue(const btScalar& x, const btScalar& y, const btScalar& z,const btScalar& w)+		{+			m_floats[0]=x;+			m_floats[1]=y;+			m_floats[2]=z;+			m_floats[3]=w;+		}+++};+++///btSwapVector3Endian swaps vector endianness, useful for network and cross-platform serialization+SIMD_FORCE_INLINE void	btSwapScalarEndian(const btScalar& sourceVal, btScalar& destVal)+{+	#ifdef BT_USE_DOUBLE_PRECISION+	unsigned char* dest = (unsigned char*) &destVal;+	unsigned char* src  = (unsigned char*) &sourceVal;+	dest[0] = src[7];+    dest[1] = src[6];+    dest[2] = src[5];+    dest[3] = src[4];+    dest[4] = src[3];+    dest[5] = src[2];+    dest[6] = src[1];+    dest[7] = src[0];+#else+	unsigned char* dest = (unsigned char*) &destVal;+	unsigned char* src  = (unsigned char*) &sourceVal;+	dest[0] = src[3];+    dest[1] = src[2];+    dest[2] = src[1];+    dest[3] = src[0];+#endif //BT_USE_DOUBLE_PRECISION+}+///btSwapVector3Endian swaps vector endianness, useful for network and cross-platform serialization+SIMD_FORCE_INLINE void	btSwapVector3Endian(const btVector3& sourceVec, btVector3& destVec)+{+	for (int i=0;i<4;i++)+	{+		btSwapScalarEndian(sourceVec[i],destVec[i]);+	}++}++///btUnSwapVector3Endian swaps vector endianness, useful for network and cross-platform serialization+SIMD_FORCE_INLINE void	btUnSwapVector3Endian(btVector3& vector)+{++	btVector3	swappedVec;+	for (int i=0;i<4;i++)+	{+		btSwapScalarEndian(vector[i],swappedVec[i]);+	}+	vector = swappedVec;+}++template <class T>+SIMD_FORCE_INLINE void btPlaneSpace1 (const T& n, T& p, T& q)+{+  if (btFabs(n[2]) > SIMDSQRT12) {+    // choose p in y-z plane+    btScalar a = n[1]*n[1] + n[2]*n[2];+    btScalar k = btRecipSqrt (a);+    p[0] = 0;+	p[1] = -n[2]*k;+	p[2] = n[1]*k;+    // set q = n x p+    q[0] = a*k;+	q[1] = -n[0]*p[2];+	q[2] = n[0]*p[1];+  }+  else {+    // choose p in x-y plane+    btScalar a = n[0]*n[0] + n[1]*n[1];+    btScalar k = btRecipSqrt (a);+    p[0] = -n[1]*k;+	p[1] = n[0]*k;+	p[2] = 0;+    // set q = n x p+    q[0] = -n[2]*p[1];+	q[1] = n[2]*p[0];+	q[2] = a*k;+  }+}+++struct	btVector3FloatData+{+	float	m_floats[4];+};++struct	btVector3DoubleData+{+	double	m_floats[4];++};++SIMD_FORCE_INLINE	void	btVector3::serializeFloat(struct	btVector3FloatData& dataOut) const+{+	///could also do a memcpy, check if it is worth it+	for (int i=0;i<4;i++)+		dataOut.m_floats[i] = float(m_floats[i]);+}++SIMD_FORCE_INLINE void	btVector3::deSerializeFloat(const struct	btVector3FloatData& dataIn)+{+	for (int i=0;i<4;i++)+		m_floats[i] = btScalar(dataIn.m_floats[i]);+}+++SIMD_FORCE_INLINE	void	btVector3::serializeDouble(struct	btVector3DoubleData& dataOut) const+{+	///could also do a memcpy, check if it is worth it+	for (int i=0;i<4;i++)+		dataOut.m_floats[i] = double(m_floats[i]);+}++SIMD_FORCE_INLINE void	btVector3::deSerializeDouble(const struct	btVector3DoubleData& dataIn)+{+	for (int i=0;i<4;i++)+		m_floats[i] = btScalar(dataIn.m_floats[i]);+}+++SIMD_FORCE_INLINE	void	btVector3::serialize(struct	btVector3Data& dataOut) const+{+	///could also do a memcpy, check if it is worth it+	for (int i=0;i<4;i++)+		dataOut.m_floats[i] = m_floats[i];+}++SIMD_FORCE_INLINE void	btVector3::deSerialize(const struct	btVector3Data& dataIn)+{+	for (int i=0;i<4;i++)+		m_floats[i] = dataIn.m_floats[i];+}+++#endif //BT_VECTOR3_H
+ bullet/MiniCL/MiniCLTask/MiniCLTask.h view
@@ -0,0 +1,62 @@+/*+Bullet Continuous Collision Detection and Physics Library, Copyright (c) 2007 Erwin Coumans++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.++*/++#ifndef MINICL__TASK_H+#define MINICL__TASK_H++#include "BulletMultiThreaded/PlatformDefinitions.h"+#include "LinearMath/btScalar.h"++#include "LinearMath/btAlignedAllocator.h"+++#define MINICL_MAX_ARGLENGTH (sizeof(void*))+#define MINI_CL_MAX_ARG 16+#define MINI_CL_MAX_KERNEL_NAME 256++struct MiniCLKernel;++ATTRIBUTE_ALIGNED16(struct) MiniCLTaskDesc+{+	BT_DECLARE_ALIGNED_ALLOCATOR();++	MiniCLTaskDesc()+	{+		for (int i=0;i<MINI_CL_MAX_ARG;i++)+		{+			m_argSizes[i]=0;+		}+	}++	uint32_t		m_taskId;++	uint32_t		m_firstWorkUnit;+	uint32_t		m_lastWorkUnit;++	MiniCLKernel*	m_kernel;++	void*			m_argData[MINI_CL_MAX_ARG];+	int				m_argSizes[MINI_CL_MAX_ARG];+};++extern "C" int gMiniCLNumOutstandingTasks;+++void	processMiniCLTask(void* userPtr, void* lsMemory);+void*	createMiniCLLocalStoreMemory();+++#endif //MINICL__TASK_H+
+ bullet/MiniCL/MiniCLTaskScheduler.h view
@@ -0,0 +1,194 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2007 Erwin Coumans  http://bulletphysics.com++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++++#ifndef MINICL_TASK_SCHEDULER_H+#define MINICL_TASK_SCHEDULER_H++#include <assert.h>+++#include "BulletMultiThreaded/PlatformDefinitions.h"++#include <stdlib.h>++#include "LinearMath/btAlignedObjectArray.h"+++#include "MiniCLTask/MiniCLTask.h"++//just add your commands here, try to keep them globally unique for debugging purposes+#define CMD_SAMPLE_TASK_COMMAND 10++struct MiniCLKernel;++/// MiniCLTaskScheduler handles SPU processing of collision pairs.+/// When PPU issues a task, it will look for completed task buffers+/// PPU will do postprocessing, dependent on workunit output (not likely)+class MiniCLTaskScheduler+{+	// track task buffers that are being used, and total busy tasks+	btAlignedObjectArray<bool>	m_taskBusy;+	btAlignedObjectArray<MiniCLTaskDesc>	m_spuSampleTaskDesc;+++	btAlignedObjectArray<const MiniCLKernel*>	m_kernels;+++	int   m_numBusyTasks;++	// the current task and the current entry to insert a new work unit+	int   m_currentTask;++	bool m_initialized;++	void postProcess(int taskId, int outputSize);+	+	class	btThreadSupportInterface*	m_threadInterface;++	int	m_maxNumOutstandingTasks;++++public:+	MiniCLTaskScheduler(btThreadSupportInterface*	threadInterface, int maxNumOutstandingTasks);+	+	~MiniCLTaskScheduler();+	+	///call initialize in the beginning of the frame, before addCollisionPairToTask+	void initialize();++	void issueTask(int firstWorkUnit, int lastWorkUnit, MiniCLKernel* kernel);++	///call flush to submit potential outstanding work to SPUs and wait for all involved SPUs to be finished+	void flush();++	class	btThreadSupportInterface*	getThreadSupportInterface()+	{+		return m_threadInterface;+	}++	int	findProgramCommandIdByName(const char* programName) const;++	int getMaxNumOutstandingTasks() const+	{+		return m_maxNumOutstandingTasks;+	}++	void registerKernel(MiniCLKernel* kernel)+	{+		m_kernels.push_back(kernel);+	}+};++typedef void (*kernelLauncherCB)(MiniCLTaskDesc* taskDesc, int guid);++struct	MiniCLKernel+{+	MiniCLTaskScheduler* m_scheduler;+	+//	int	m_kernelProgramCommandId;++	char	m_name[MINI_CL_MAX_KERNEL_NAME];+	unsigned int	m_numArgs;+	kernelLauncherCB	m_launcher;+	void* m_pCode;+	void updateLauncher();+	MiniCLKernel* registerSelf();++	void*	m_argData[MINI_CL_MAX_ARG];+	int				m_argSizes[MINI_CL_MAX_ARG];+};+++#if defined(USE_LIBSPE2) && defined(__SPU__)+////////////////////MAIN/////////////////////////////+#include "../SpuLibspe2Support.h"+#include <spu_intrinsics.h>+#include <spu_mfcio.h>+#include <SpuFakeDma.h>++void * SamplelsMemoryFunc();+void SampleThreadFunc(void* userPtr,void* lsMemory);++//#define DEBUG_LIBSPE2_MAINLOOP++int main(unsigned long long speid, addr64 argp, addr64 envp)+{+	printf("SPU is up \n");+	+	ATTRIBUTE_ALIGNED128(btSpuStatus status);+	ATTRIBUTE_ALIGNED16( SpuSampleTaskDesc taskDesc ) ;+	unsigned int received_message = Spu_Mailbox_Event_Nothing;+        bool shutdown = false;++	cellDmaGet(&status, argp.ull, sizeof(btSpuStatus), DMA_TAG(3), 0, 0);+	cellDmaWaitTagStatusAll(DMA_MASK(3));++	status.m_status = Spu_Status_Free;+	status.m_lsMemory.p = SamplelsMemoryFunc();++	cellDmaLargePut(&status, argp.ull, sizeof(btSpuStatus), DMA_TAG(3), 0, 0);+	cellDmaWaitTagStatusAll(DMA_MASK(3));+	+	+	while (!shutdown)+	{+		received_message = spu_read_in_mbox();+		++		+		switch(received_message)+		{+		case Spu_Mailbox_Event_Shutdown:+			shutdown = true;+			break; +		case Spu_Mailbox_Event_Task:+			// refresh the status+#ifdef DEBUG_LIBSPE2_MAINLOOP+			printf("SPU recieved Task \n");+#endif //DEBUG_LIBSPE2_MAINLOOP+			cellDmaGet(&status, argp.ull, sizeof(btSpuStatus), DMA_TAG(3), 0, 0);+			cellDmaWaitTagStatusAll(DMA_MASK(3));+		+			btAssert(status.m_status==Spu_Status_Occupied);+			+			cellDmaGet(&taskDesc, status.m_taskDesc.p, sizeof(SpuSampleTaskDesc), DMA_TAG(3), 0, 0);+			cellDmaWaitTagStatusAll(DMA_MASK(3));+			+			SampleThreadFunc((void*)&taskDesc, reinterpret_cast<void*> (taskDesc.m_mainMemoryPtr) );+			break;+		case Spu_Mailbox_Event_Nothing:+		default:+			break;+		}++		// set to status free and wait for next task+		status.m_status = Spu_Status_Free;+		cellDmaLargePut(&status, argp.ull, sizeof(btSpuStatus), DMA_TAG(3), 0, 0);+		cellDmaWaitTagStatusAll(DMA_MASK(3));		+				+		+  	}+  	return 0;+}+//////////////////////////////////////////////////////+#endif++++#endif // MINICL_TASK_SCHEDULER_H+
+ bullet/MiniCL/cl.h view
@@ -0,0 +1,867 @@+/*******************************************************************************+ * Copyright (c) 2008-2009 The Khronos Group Inc.+ *+ * Permission is hereby granted, free of charge, to any person obtaining a+ * copy of this software and/or associated documentation files (the+ * "Materials"), to deal in the Materials without restriction, including+ * without limitation the rights to use, copy, modify, merge, publish,+ * distribute, sublicense, and/or sell copies of the Materials, and to+ * permit persons to whom the Materials are furnished to do so, subject to+ * the following conditions:+ *+ * The above copyright notice and this permission notice shall be included+ * in all copies or substantial portions of the Materials.+ *+ * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE+ * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.+ ******************************************************************************/++#ifndef __OPENCL_CL_H+#define __OPENCL_CL_H++#ifdef __APPLE__+#include <MiniCL/cl_platform.h>+#else+#include <MiniCL/cl_platform.h>+#endif	++#ifdef __cplusplus+extern "C" {+#endif++/******************************************************************************/++typedef struct _cl_platform_id *    cl_platform_id;+typedef struct _cl_device_id *      cl_device_id;+typedef struct _cl_context *        cl_context;+typedef struct _cl_command_queue *  cl_command_queue;+typedef struct _cl_mem *            cl_mem;+typedef struct _cl_program *        cl_program;+typedef struct _cl_kernel *         cl_kernel;+typedef struct _cl_event *          cl_event;+typedef struct _cl_sampler *        cl_sampler;++typedef cl_uint             cl_bool;                     /* WARNING!  Unlike cl_ types in cl_platform.h, cl_bool is not guaranteed to be the same size as the bool in kernels. */ +typedef cl_ulong            cl_bitfield;+typedef cl_bitfield         cl_device_type;+typedef cl_uint             cl_platform_info;+typedef cl_uint             cl_device_info;+typedef cl_bitfield         cl_device_address_info;+typedef cl_bitfield         cl_device_fp_config;+typedef cl_uint             cl_device_mem_cache_type;+typedef cl_uint             cl_device_local_mem_type;+typedef cl_bitfield         cl_device_exec_capabilities;+typedef cl_bitfield         cl_command_queue_properties;++typedef intptr_t			cl_context_properties;+typedef cl_uint             cl_context_info;+typedef cl_uint             cl_command_queue_info;+typedef cl_uint             cl_channel_order;+typedef cl_uint             cl_channel_type;+typedef cl_bitfield         cl_mem_flags;+typedef cl_uint             cl_mem_object_type;+typedef cl_uint             cl_mem_info;+typedef cl_uint             cl_image_info;+typedef cl_uint             cl_addressing_mode;+typedef cl_uint             cl_filter_mode;+typedef cl_uint             cl_sampler_info;+typedef cl_bitfield         cl_map_flags;+typedef cl_uint             cl_program_info;+typedef cl_uint             cl_program_build_info;+typedef cl_int              cl_build_status;+typedef cl_uint             cl_kernel_info;+typedef cl_uint             cl_kernel_work_group_info;+typedef cl_uint             cl_event_info;+typedef cl_uint             cl_command_type;+typedef cl_uint             cl_profiling_info;++typedef struct _cl_image_format {+    cl_channel_order        image_channel_order;+    cl_channel_type         image_channel_data_type;+} cl_image_format;++/******************************************************************************/++// Error Codes+#define CL_SUCCESS                                  0+#define CL_DEVICE_NOT_FOUND                         -1+#define CL_DEVICE_NOT_AVAILABLE                     -2+#define CL_DEVICE_COMPILER_NOT_AVAILABLE            -3+#define CL_MEM_OBJECT_ALLOCATION_FAILURE            -4+#define CL_OUT_OF_RESOURCES                         -5+#define CL_OUT_OF_HOST_MEMORY                       -6+#define CL_PROFILING_INFO_NOT_AVAILABLE             -7+#define CL_MEM_COPY_OVERLAP                         -8+#define CL_IMAGE_FORMAT_MISMATCH                    -9+#define CL_IMAGE_FORMAT_NOT_SUPPORTED               -10+#define CL_BUILD_PROGRAM_FAILURE                    -11+#define CL_MAP_FAILURE                              -12++#define CL_INVALID_VALUE                            -30+#define CL_INVALID_DEVICE_TYPE                      -31+#define CL_INVALID_PLATFORM                         -32+#define CL_INVALID_DEVICE                           -33+#define CL_INVALID_CONTEXT                          -34+#define CL_INVALID_QUEUE_PROPERTIES                 -35+#define CL_INVALID_COMMAND_QUEUE                    -36+#define CL_INVALID_HOST_PTR                         -37+#define CL_INVALID_MEM_OBJECT                       -38+#define CL_INVALID_IMAGE_FORMAT_DESCRIPTOR          -39+#define CL_INVALID_IMAGE_SIZE                       -40+#define CL_INVALID_SAMPLER                          -41+#define CL_INVALID_BINARY                           -42+#define CL_INVALID_BUILD_OPTIONS                    -43+#define CL_INVALID_PROGRAM                          -44+#define CL_INVALID_PROGRAM_EXECUTABLE               -45+#define CL_INVALID_KERNEL_NAME                      -46+#define CL_INVALID_KERNEL_DEFINITION                -47+#define CL_INVALID_KERNEL                           -48+#define CL_INVALID_ARG_INDEX                        -49+#define CL_INVALID_ARG_VALUE                        -50+#define CL_INVALID_ARG_SIZE                         -51+#define CL_INVALID_KERNEL_ARGS                      -52+#define CL_INVALID_WORK_DIMENSION                   -53+#define CL_INVALID_WORK_GROUP_SIZE                  -54+#define CL_INVALID_WORK_ITEM_SIZE                   -55+#define CL_INVALID_GLOBAL_OFFSET                    -56+#define CL_INVALID_EVENT_WAIT_LIST                  -57+#define CL_INVALID_EVENT                            -58+#define CL_INVALID_OPERATION                        -59+#define CL_INVALID_GL_OBJECT                        -60+#define CL_INVALID_BUFFER_SIZE                      -61+#define CL_INVALID_MIP_LEVEL                        -62++// OpenCL Version+#define CL_VERSION_1_0                              1++// cl_bool+#define CL_FALSE                                    0+#define CL_TRUE                                     1++// cl_platform_info+#define CL_PLATFORM_PROFILE                         0x0900+#define CL_PLATFORM_VERSION                         0x0901+#define CL_PLATFORM_NAME                            0x0902+#define CL_PLATFORM_VENDOR                          0x0903+#define CL_PLATFORM_EXTENSIONS                      0x0904++// cl_device_type - bitfield+#define CL_DEVICE_TYPE_DEFAULT                      (1 << 0)+#define CL_DEVICE_TYPE_CPU                          (1 << 1)+#define CL_DEVICE_TYPE_GPU                          (1 << 2)+#define CL_DEVICE_TYPE_ACCELERATOR                  (1 << 3)+#define CL_DEVICE_TYPE_DEBUG						(1 << 4)+#define CL_DEVICE_TYPE_ALL                          0xFFFFFFFF+++// cl_device_info+#define CL_DEVICE_TYPE                              0x1000+#define CL_DEVICE_VENDOR_ID                         0x1001+#define CL_DEVICE_MAX_COMPUTE_UNITS                 0x1002+#define CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS          0x1003+#define CL_DEVICE_MAX_WORK_GROUP_SIZE               0x1004+#define CL_DEVICE_MAX_WORK_ITEM_SIZES               0x1005+#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR       0x1006+#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT      0x1007+#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT        0x1008+#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG       0x1009+#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT      0x100A+#define CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE     0x100B+#define CL_DEVICE_MAX_CLOCK_FREQUENCY               0x100C+#define CL_DEVICE_ADDRESS_BITS                      0x100D+#define CL_DEVICE_MAX_READ_IMAGE_ARGS               0x100E+#define CL_DEVICE_MAX_WRITE_IMAGE_ARGS              0x100F+#define CL_DEVICE_MAX_MEM_ALLOC_SIZE                0x1010+#define CL_DEVICE_IMAGE2D_MAX_WIDTH                 0x1011+#define CL_DEVICE_IMAGE2D_MAX_HEIGHT                0x1012+#define CL_DEVICE_IMAGE3D_MAX_WIDTH                 0x1013+#define CL_DEVICE_IMAGE3D_MAX_HEIGHT                0x1014+#define CL_DEVICE_IMAGE3D_MAX_DEPTH                 0x1015+#define CL_DEVICE_IMAGE_SUPPORT                     0x1016+#define CL_DEVICE_MAX_PARAMETER_SIZE                0x1017+#define CL_DEVICE_MAX_SAMPLERS                      0x1018+#define CL_DEVICE_MEM_BASE_ADDR_ALIGN               0x1019+#define CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE          0x101A+#define CL_DEVICE_SINGLE_FP_CONFIG                  0x101B+#define CL_DEVICE_GLOBAL_MEM_CACHE_TYPE             0x101C+#define CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE         0x101D+#define CL_DEVICE_GLOBAL_MEM_CACHE_SIZE             0x101E+#define CL_DEVICE_GLOBAL_MEM_SIZE                   0x101F+#define CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE          0x1020+#define CL_DEVICE_MAX_CONSTANT_ARGS                 0x1021+#define CL_DEVICE_LOCAL_MEM_TYPE                    0x1022+#define CL_DEVICE_LOCAL_MEM_SIZE                    0x1023+#define CL_DEVICE_ERROR_CORRECTION_SUPPORT          0x1024+#define CL_DEVICE_PROFILING_TIMER_RESOLUTION        0x1025+#define CL_DEVICE_ENDIAN_LITTLE                     0x1026+#define CL_DEVICE_AVAILABLE                         0x1027+#define CL_DEVICE_COMPILER_AVAILABLE                0x1028+#define CL_DEVICE_EXECUTION_CAPABILITIES            0x1029+#define CL_DEVICE_QUEUE_PROPERTIES                  0x102A+#define CL_DEVICE_NAME                              0x102B+#define CL_DEVICE_VENDOR                            0x102C+#define CL_DRIVER_VERSION                           0x102D+#define CL_DEVICE_PROFILE                           0x102E+#define CL_DEVICE_VERSION                           0x102F+#define CL_DEVICE_EXTENSIONS                        0x1030+#define CL_DEVICE_PLATFORM                          0x1031+	+// cl_device_address_info - bitfield+#define CL_DEVICE_ADDRESS_32_BITS                   (1 << 0)+#define CL_DEVICE_ADDRESS_64_BITS                   (1 << 1)++// cl_device_fp_config - bitfield+#define CL_FP_DENORM                                (1 << 0)+#define CL_FP_INF_NAN                               (1 << 1)+#define CL_FP_ROUND_TO_NEAREST                      (1 << 2)+#define CL_FP_ROUND_TO_ZERO                         (1 << 3)+#define CL_FP_ROUND_TO_INF                          (1 << 4)+#define CL_FP_FMA                                   (1 << 5)++// cl_device_mem_cache_type+#define CL_NONE                                     0x0+#define CL_READ_ONLY_CACHE                          0x1+#define CL_READ_WRITE_CACHE                         0x2++// cl_device_local_mem_type+#define CL_LOCAL                                    0x1+#define CL_GLOBAL                                   0x2++// cl_device_exec_capabilities - bitfield+#define CL_EXEC_KERNEL                              (1 << 0)+#define CL_EXEC_NATIVE_KERNEL                       (1 << 1)++// cl_command_queue_properties - bitfield+#define CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE      (1 << 0)+#define CL_QUEUE_PROFILING_ENABLE                   (1 << 1)++// cl_context_info+#define CL_CONTEXT_REFERENCE_COUNT                  0x1080+#define CL_CONTEXT_NUM_DEVICES                      0x1081+#define CL_CONTEXT_DEVICES                          0x1082+#define CL_CONTEXT_PROPERTIES                       0x1083+#define CL_CONTEXT_PLATFORM                         0x1084++// cl_command_queue_info+#define CL_QUEUE_CONTEXT                            0x1090+#define CL_QUEUE_DEVICE                             0x1091+#define CL_QUEUE_REFERENCE_COUNT                    0x1092+#define CL_QUEUE_PROPERTIES                         0x1093++// cl_mem_flags - bitfield+#define CL_MEM_READ_WRITE                           (1 << 0)+#define CL_MEM_WRITE_ONLY                           (1 << 1)+#define CL_MEM_READ_ONLY                            (1 << 2)+#define CL_MEM_USE_HOST_PTR                         (1 << 3)+#define CL_MEM_ALLOC_HOST_PTR                       (1 << 4)+#define CL_MEM_COPY_HOST_PTR                        (1 << 5)++// cl_channel_order+#define CL_R                                        0x10B0+#define CL_A                                        0x10B1+#define CL_RG                                       0x10B2+#define CL_RA                                       0x10B3+#define CL_RGB                                      0x10B4+#define CL_RGBA                                     0x10B5+#define CL_BGRA                                     0x10B6+#define CL_ARGB                                     0x10B7+#define CL_INTENSITY                                0x10B8+#define CL_LUMINANCE                                0x10B9++// cl_channel_type+#define CL_SNORM_INT8                               0x10D0+#define CL_SNORM_INT16                              0x10D1+#define CL_UNORM_INT8                               0x10D2+#define CL_UNORM_INT16                              0x10D3+#define CL_UNORM_SHORT_565                          0x10D4+#define CL_UNORM_SHORT_555                          0x10D5+#define CL_UNORM_INT_101010                         0x10D6+#define CL_SIGNED_INT8                              0x10D7+#define CL_SIGNED_INT16                             0x10D8+#define CL_SIGNED_INT32                             0x10D9+#define CL_UNSIGNED_INT8                            0x10DA+#define CL_UNSIGNED_INT16                           0x10DB+#define CL_UNSIGNED_INT32                           0x10DC+#define CL_HALF_FLOAT                               0x10DD+#define CL_FLOAT                                    0x10DE++// cl_mem_object_type+#define CL_MEM_OBJECT_BUFFER                        0x10F0+#define CL_MEM_OBJECT_IMAGE2D                       0x10F1+#define CL_MEM_OBJECT_IMAGE3D                       0x10F2++// cl_mem_info+#define CL_MEM_TYPE                                 0x1100+#define CL_MEM_FLAGS                                0x1101+#define CL_MEM_SIZE                                 0x1102+#define CL_MEM_HOST_PTR                             0x1103+#define CL_MEM_MAP_COUNT                            0x1104+#define CL_MEM_REFERENCE_COUNT                      0x1105+#define CL_MEM_CONTEXT                              0x1106++// cl_image_info+#define CL_IMAGE_FORMAT                             0x1110+#define CL_IMAGE_ELEMENT_SIZE                       0x1111+#define CL_IMAGE_ROW_PITCH                          0x1112+#define CL_IMAGE_SLICE_PITCH                        0x1113+#define CL_IMAGE_WIDTH                              0x1114+#define CL_IMAGE_HEIGHT                             0x1115+#define CL_IMAGE_DEPTH                              0x1116++// cl_addressing_mode+#define CL_ADDRESS_NONE                             0x1130+#define CL_ADDRESS_CLAMP_TO_EDGE                    0x1131+#define CL_ADDRESS_CLAMP                            0x1132+#define CL_ADDRESS_REPEAT                           0x1133++// cl_filter_mode+#define CL_FILTER_NEAREST                           0x1140+#define CL_FILTER_LINEAR                            0x1141++// cl_sampler_info+#define CL_SAMPLER_REFERENCE_COUNT                  0x1150+#define CL_SAMPLER_CONTEXT                          0x1151+#define CL_SAMPLER_NORMALIZED_COORDS                0x1152+#define CL_SAMPLER_ADDRESSING_MODE                  0x1153+#define CL_SAMPLER_FILTER_MODE                      0x1154++// cl_map_flags - bitfield+#define CL_MAP_READ                                 (1 << 0)+#define CL_MAP_WRITE                                (1 << 1)++// cl_program_info+#define CL_PROGRAM_REFERENCE_COUNT                  0x1160+#define CL_PROGRAM_CONTEXT                          0x1161+#define CL_PROGRAM_NUM_DEVICES                      0x1162+#define CL_PROGRAM_DEVICES                          0x1163+#define CL_PROGRAM_SOURCE                           0x1164+#define CL_PROGRAM_BINARY_SIZES                     0x1165+#define CL_PROGRAM_BINARIES                         0x1166++// cl_program_build_info+#define CL_PROGRAM_BUILD_STATUS                     0x1181+#define CL_PROGRAM_BUILD_OPTIONS                    0x1182+#define CL_PROGRAM_BUILD_LOG                        0x1183++// cl_build_status+#define CL_BUILD_SUCCESS                            0+#define CL_BUILD_NONE                               -1+#define CL_BUILD_ERROR                              -2+#define CL_BUILD_IN_PROGRESS                        -3++// cl_kernel_info+#define CL_KERNEL_FUNCTION_NAME                     0x1190+#define CL_KERNEL_NUM_ARGS                          0x1191+#define CL_KERNEL_REFERENCE_COUNT                   0x1192+#define CL_KERNEL_CONTEXT                           0x1193+#define CL_KERNEL_PROGRAM                           0x1194++// cl_kernel_work_group_info+#define CL_KERNEL_WORK_GROUP_SIZE                   0x11B0+#define CL_KERNEL_COMPILE_WORK_GROUP_SIZE           0x11B1+#define CL_KERNEL_LOCAL_MEM_SIZE                    0x11B2++// cl_event_info+#define CL_EVENT_COMMAND_QUEUE                      0x11D0+#define CL_EVENT_COMMAND_TYPE                       0x11D1+#define CL_EVENT_REFERENCE_COUNT                    0x11D2+#define CL_EVENT_COMMAND_EXECUTION_STATUS           0x11D3++// cl_command_type+#define CL_COMMAND_NDRANGE_KERNEL                   0x11F0+#define CL_COMMAND_TASK                             0x11F1+#define CL_COMMAND_NATIVE_KERNEL                    0x11F2+#define CL_COMMAND_READ_BUFFER                      0x11F3+#define CL_COMMAND_WRITE_BUFFER                     0x11F4+#define CL_COMMAND_COPY_BUFFER                      0x11F5+#define CL_COMMAND_READ_IMAGE                       0x11F6+#define CL_COMMAND_WRITE_IMAGE                      0x11F7+#define CL_COMMAND_COPY_IMAGE                       0x11F8+#define CL_COMMAND_COPY_IMAGE_TO_BUFFER             0x11F9+#define CL_COMMAND_COPY_BUFFER_TO_IMAGE             0x11FA+#define CL_COMMAND_MAP_BUFFER                       0x11FB+#define CL_COMMAND_MAP_IMAGE                        0x11FC+#define CL_COMMAND_UNMAP_MEM_OBJECT                 0x11FD+#define CL_COMMAND_MARKER                           0x11FE+#define CL_COMMAND_WAIT_FOR_EVENTS                  0x11FF+#define CL_COMMAND_BARRIER                          0x1200+#define CL_COMMAND_ACQUIRE_GL_OBJECTS               0x1201+#define CL_COMMAND_RELEASE_GL_OBJECTS               0x1202++// command execution status+#define CL_COMPLETE                                 0x0+#define CL_RUNNING                                  0x1+#define CL_SUBMITTED                                0x2+#define CL_QUEUED                                   0x3+  +// cl_profiling_info+#define CL_PROFILING_COMMAND_QUEUED                 0x1280+#define CL_PROFILING_COMMAND_SUBMIT                 0x1281+#define CL_PROFILING_COMMAND_START                  0x1282+#define CL_PROFILING_COMMAND_END                    0x1283++/********************************************************************************************************/++// Platform API+extern CL_API_ENTRY cl_int CL_API_CALL+clGetPlatformIDs(cl_uint          /* num_entries */,+                 cl_platform_id * /* platforms */,+                 cl_uint *        /* num_platforms */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL +clGetPlatformInfo(cl_platform_id   /* platform */, +                  cl_platform_info /* param_name */,+                  size_t           /* param_value_size */, +                  void *           /* param_value */,+                  size_t *         /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;++// Device APIs+extern CL_API_ENTRY cl_int CL_API_CALL+clGetDeviceIDs(cl_platform_id   /* platform */,+               cl_device_type   /* device_type */, +               cl_uint          /* num_entries */, +               cl_device_id *   /* devices */, +               cl_uint *        /* num_devices */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clGetDeviceInfo(cl_device_id    /* device */,+                cl_device_info  /* param_name */, +                size_t          /* param_value_size */, +                void *          /* param_value */,+                size_t *        /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;++// Context APIs  +extern CL_API_ENTRY cl_context CL_API_CALL+clCreateContext(cl_context_properties * /* properties */,+                cl_uint                 /* num_devices */,+                const cl_device_id *    /* devices */,+                void (*pfn_notify)(const char *, const void *, size_t, void *) /* pfn_notify */,+                void *                  /* user_data */,+                cl_int *                /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_context CL_API_CALL+clCreateContextFromType(cl_context_properties * /* properties */,+                        cl_device_type          /* device_type */,+                        void (*pfn_notify)(const char *, const void *, size_t, void *) /* pfn_notify */,+                        void *                  /* user_data */,+                        cl_int *                /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clRetainContext(cl_context /* context */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clReleaseContext(cl_context /* context */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clGetContextInfo(cl_context         /* context */, +                 cl_context_info    /* param_name */, +                 size_t             /* param_value_size */, +                 void *             /* param_value */, +                 size_t *           /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;++// Command Queue APIs+extern CL_API_ENTRY cl_command_queue CL_API_CALL+clCreateCommandQueue(cl_context                     /* context */, +                     cl_device_id                   /* device */, +                     cl_command_queue_properties    /* properties */,+                     cl_int *                       /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clRetainCommandQueue(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clReleaseCommandQueue(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clGetCommandQueueInfo(cl_command_queue      /* command_queue */,+                      cl_command_queue_info /* param_name */,+                      size_t                /* param_value_size */,+                      void *                /* param_value */,+                      size_t *              /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clSetCommandQueueProperty(cl_command_queue              /* command_queue */,+                          cl_command_queue_properties   /* properties */, +                          cl_bool                        /* enable */,+                          cl_command_queue_properties * /* old_properties */) CL_API_SUFFIX__VERSION_1_0;++// Memory Object APIs+extern CL_API_ENTRY cl_mem CL_API_CALL+clCreateBuffer(cl_context   /* context */,+               cl_mem_flags /* flags */,+               size_t       /* size */,+               void *       /* host_ptr */,+               cl_int *     /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_mem CL_API_CALL+clCreateImage2D(cl_context              /* context */,+                cl_mem_flags            /* flags */,+                const cl_image_format * /* image_format */,+                size_t                  /* image_width */,+                size_t                  /* image_height */,+                size_t                  /* image_row_pitch */, +                void *                  /* host_ptr */,+                cl_int *                /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;+                        +extern CL_API_ENTRY cl_mem CL_API_CALL+clCreateImage3D(cl_context              /* context */,+                cl_mem_flags            /* flags */,+                const cl_image_format * /* image_format */,+                size_t                  /* image_width */, +                size_t                  /* image_height */,+                size_t                  /* image_depth */, +                size_t                  /* image_row_pitch */, +                size_t                  /* image_slice_pitch */, +                void *                  /* host_ptr */,+                cl_int *                /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;+                        +extern CL_API_ENTRY cl_int CL_API_CALL+clRetainMemObject(cl_mem /* memobj */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clReleaseMemObject(cl_mem /* memobj */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clGetSupportedImageFormats(cl_context           /* context */,+                           cl_mem_flags         /* flags */,+                           cl_mem_object_type   /* image_type */,+                           cl_uint              /* num_entries */,+                           cl_image_format *    /* image_formats */,+                           cl_uint *            /* num_image_formats */) CL_API_SUFFIX__VERSION_1_0;+                                    +extern CL_API_ENTRY cl_int CL_API_CALL+clGetMemObjectInfo(cl_mem           /* memobj */,+                   cl_mem_info      /* param_name */, +                   size_t           /* param_value_size */,+                   void *           /* param_value */,+                   size_t *         /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clGetImageInfo(cl_mem           /* image */,+               cl_image_info    /* param_name */, +               size_t           /* param_value_size */,+               void *           /* param_value */,+               size_t *         /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;++// Sampler APIs+extern CL_API_ENTRY cl_sampler CL_API_CALL+clCreateSampler(cl_context          /* context */,+                cl_bool             /* normalized_coords */, +                cl_addressing_mode  /* addressing_mode */, +                cl_filter_mode      /* filter_mode */,+                cl_int *            /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clRetainSampler(cl_sampler /* sampler */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clReleaseSampler(cl_sampler /* sampler */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clGetSamplerInfo(cl_sampler         /* sampler */,+                 cl_sampler_info    /* param_name */,+                 size_t             /* param_value_size */,+                 void *             /* param_value */,+                 size_t *           /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;+                            +// Program Object APIs+extern CL_API_ENTRY cl_program CL_API_CALL+clCreateProgramWithSource(cl_context        /* context */,+                          cl_uint           /* count */,+                          const char **     /* strings */,+                          const size_t *    /* lengths */,+                          cl_int *          /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_program CL_API_CALL+clCreateProgramWithBinary(cl_context                     /* context */,+                          cl_uint                        /* num_devices */,+                          const cl_device_id *           /* device_list */,+                          const size_t *                 /* lengths */,+                          const unsigned char **         /* binaries */,+                          cl_int *                       /* binary_status */,+                          cl_int *                       /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clRetainProgram(cl_program /* program */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clReleaseProgram(cl_program /* program */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clBuildProgram(cl_program           /* program */,+               cl_uint              /* num_devices */,+               const cl_device_id * /* device_list */,+               const char *         /* options */, +               void (*pfn_notify)(cl_program /* program */, void * /* user_data */),+               void *               /* user_data */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clUnloadCompiler(void) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clGetProgramInfo(cl_program         /* program */,+                 cl_program_info    /* param_name */,+                 size_t             /* param_value_size */,+                 void *             /* param_value */,+                 size_t *           /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clGetProgramBuildInfo(cl_program            /* program */,+                      cl_device_id          /* device */,+                      cl_program_build_info /* param_name */,+                      size_t                /* param_value_size */,+                      void *                /* param_value */,+                      size_t *              /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;+                            +// Kernel Object APIs+extern CL_API_ENTRY cl_kernel CL_API_CALL+clCreateKernel(cl_program      /* program */,+               const char *    /* kernel_name */,+               cl_int *        /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clCreateKernelsInProgram(cl_program     /* program */,+                         cl_uint        /* num_kernels */,+                         cl_kernel *    /* kernels */,+                         cl_uint *      /* num_kernels_ret */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clRetainKernel(cl_kernel    /* kernel */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clReleaseKernel(cl_kernel   /* kernel */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clSetKernelArg(cl_kernel    /* kernel */,+               cl_uint      /* arg_index */,+               size_t       /* arg_size */,+               const void * /* arg_value */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clGetKernelInfo(cl_kernel       /* kernel */,+                cl_kernel_info  /* param_name */,+                size_t          /* param_value_size */,+                void *          /* param_value */,+                size_t *        /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clGetKernelWorkGroupInfo(cl_kernel                  /* kernel */,+                         cl_device_id               /* device */,+                         cl_kernel_work_group_info  /* param_name */,+                         size_t                     /* param_value_size */,+                         void *                     /* param_value */,+                         size_t *                   /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;++// Event Object APIs+extern CL_API_ENTRY cl_int CL_API_CALL+clWaitForEvents(cl_uint             /* num_events */,+                const cl_event *    /* event_list */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clGetEventInfo(cl_event         /* event */,+               cl_event_info    /* param_name */,+               size_t           /* param_value_size */,+               void *           /* param_value */,+               size_t *         /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;+                            +extern CL_API_ENTRY cl_int CL_API_CALL+clRetainEvent(cl_event /* event */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clReleaseEvent(cl_event /* event */) CL_API_SUFFIX__VERSION_1_0;++// Profiling APIs+extern CL_API_ENTRY cl_int CL_API_CALL+clGetEventProfilingInfo(cl_event            /* event */,+                        cl_profiling_info   /* param_name */,+                        size_t              /* param_value_size */,+                        void *              /* param_value */,+                        size_t *            /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;+                                +// Flush and Finish APIs+extern CL_API_ENTRY cl_int CL_API_CALL+clFlush(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clFinish(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0;++// Enqueued Commands APIs+extern CL_API_ENTRY cl_int CL_API_CALL+clEnqueueReadBuffer(cl_command_queue    /* command_queue */,+                    cl_mem              /* buffer */,+                    cl_bool             /* blocking_read */,+                    size_t              /* offset */,+                    size_t              /* cb */, +                    void *              /* ptr */,+                    cl_uint             /* num_events_in_wait_list */,+                    const cl_event *    /* event_wait_list */,+                    cl_event *          /* event */) CL_API_SUFFIX__VERSION_1_0;+                            +extern CL_API_ENTRY cl_int CL_API_CALL+clEnqueueWriteBuffer(cl_command_queue   /* command_queue */, +                     cl_mem             /* buffer */, +                     cl_bool            /* blocking_write */, +                     size_t             /* offset */, +                     size_t             /* cb */, +                     const void *       /* ptr */, +                     cl_uint            /* num_events_in_wait_list */, +                     const cl_event *   /* event_wait_list */, +                     cl_event *         /* event */) CL_API_SUFFIX__VERSION_1_0;+                            +extern CL_API_ENTRY cl_int CL_API_CALL+clEnqueueCopyBuffer(cl_command_queue    /* command_queue */, +                    cl_mem              /* src_buffer */,+                    cl_mem              /* dst_buffer */, +                    size_t              /* src_offset */,+                    size_t              /* dst_offset */,+                    size_t              /* cb */, +                    cl_uint             /* num_events_in_wait_list */,+                    const cl_event *    /* event_wait_list */,+                    cl_event *          /* event */) CL_API_SUFFIX__VERSION_1_0;+                            +extern CL_API_ENTRY cl_int CL_API_CALL+clEnqueueReadImage(cl_command_queue     /* command_queue */,+                   cl_mem               /* image */,+                   cl_bool              /* blocking_read */, +                   const size_t *       /* origin[3] */,+                   const size_t *       /* region[3] */,+                   size_t               /* row_pitch */,+                   size_t               /* slice_pitch */, +                   void *               /* ptr */,+                   cl_uint              /* num_events_in_wait_list */,+                   const cl_event *     /* event_wait_list */,+                   cl_event *           /* event */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clEnqueueWriteImage(cl_command_queue    /* command_queue */,+                    cl_mem              /* image */,+                    cl_bool             /* blocking_write */, +                    const size_t *      /* origin[3] */,+                    const size_t *      /* region[3] */,+                    size_t              /* input_row_pitch */,+                    size_t              /* input_slice_pitch */, +                    const void *        /* ptr */,+                    cl_uint             /* num_events_in_wait_list */,+                    const cl_event *    /* event_wait_list */,+                    cl_event *          /* event */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clEnqueueCopyImage(cl_command_queue     /* command_queue */,+                   cl_mem               /* src_image */,+                   cl_mem               /* dst_image */, +                   const size_t *       /* src_origin[3] */,+                   const size_t *       /* dst_origin[3] */,+                   const size_t *       /* region[3] */, +                   cl_uint              /* num_events_in_wait_list */,+                   const cl_event *     /* event_wait_list */,+                   cl_event *           /* event */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clEnqueueCopyImageToBuffer(cl_command_queue /* command_queue */,+                           cl_mem           /* src_image */,+                           cl_mem           /* dst_buffer */, +                           const size_t *   /* src_origin[3] */,+                           const size_t *   /* region[3] */, +                           size_t           /* dst_offset */,+                           cl_uint          /* num_events_in_wait_list */,+                           const cl_event * /* event_wait_list */,+                           cl_event *       /* event */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clEnqueueCopyBufferToImage(cl_command_queue /* command_queue */,+                           cl_mem           /* src_buffer */,+                           cl_mem           /* dst_image */, +                           size_t           /* src_offset */,+                           const size_t *   /* dst_origin[3] */,+                           const size_t *   /* region[3] */, +                           cl_uint          /* num_events_in_wait_list */,+                           const cl_event * /* event_wait_list */,+                           cl_event *       /* event */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY void * CL_API_CALL+clEnqueueMapBuffer(cl_command_queue /* command_queue */,+                   cl_mem           /* buffer */,+                   cl_bool          /* blocking_map */, +                   cl_map_flags     /* map_flags */,+                   size_t           /* offset */,+                   size_t           /* cb */,+                   cl_uint          /* num_events_in_wait_list */,+                   const cl_event * /* event_wait_list */,+                   cl_event *       /* event */,+                   cl_int *         /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY void * CL_API_CALL+clEnqueueMapImage(cl_command_queue  /* command_queue */,+                  cl_mem            /* image */, +                  cl_bool           /* blocking_map */, +                  cl_map_flags      /* map_flags */, +                  const size_t *    /* origin[3] */,+                  const size_t *    /* region[3] */,+                  size_t *          /* image_row_pitch */,+                  size_t *          /* image_slice_pitch */,+                  cl_uint           /* num_events_in_wait_list */,+                  const cl_event *  /* event_wait_list */,+                  cl_event *        /* event */,+                  cl_int *          /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clEnqueueUnmapMemObject(cl_command_queue /* command_queue */,+                        cl_mem           /* memobj */,+                        void *           /* mapped_ptr */,+                        cl_uint          /* num_events_in_wait_list */,+                        const cl_event *  /* event_wait_list */,+                        cl_event *        /* event */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clEnqueueNDRangeKernel(cl_command_queue /* command_queue */,+                       cl_kernel        /* kernel */,+                       cl_uint          /* work_dim */,+                       const size_t *   /* global_work_offset */,+                       const size_t *   /* global_work_size */,+                       const size_t *   /* local_work_size */,+                       cl_uint          /* num_events_in_wait_list */,+                       const cl_event * /* event_wait_list */,+                       cl_event *       /* event */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clEnqueueTask(cl_command_queue  /* command_queue */,+              cl_kernel         /* kernel */,+              cl_uint           /* num_events_in_wait_list */,+              const cl_event *  /* event_wait_list */,+              cl_event *        /* event */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clEnqueueNativeKernel(cl_command_queue  /* command_queue */,+					  void (*user_func)(void *), +                      void *            /* args */,+                      size_t            /* cb_args */, +                      cl_uint           /* num_mem_objects */,+                      const cl_mem *    /* mem_list */,+                      const void **     /* args_mem_loc */,+                      cl_uint           /* num_events_in_wait_list */,+                      const cl_event *  /* event_wait_list */,+                      cl_event *        /* event */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clEnqueueMarker(cl_command_queue    /* command_queue */,+                cl_event *          /* event */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clEnqueueWaitForEvents(cl_command_queue /* command_queue */,+                       cl_uint          /* num_events */,+                       const cl_event * /* event_list */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clEnqueueBarrier(cl_command_queue /* command_queue */) CL_API_SUFFIX__VERSION_1_0;++#ifdef __cplusplus+}+#endif++#endif  // __OPENCL_CL_H+
+ bullet/MiniCL/cl_MiniCL_Defs.h view
@@ -0,0 +1,329 @@+/*+Bullet Continuous Collision Detection and Physics Library, Copyright (c) 2007 Erwin Coumans++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.++*/++#include <float.h>+#include <math.h>+#include "LinearMath/btScalar.h"++#include "MiniCL/cl.h"+++#define __kernel+#define __global+#define __local+#define get_global_id(a)	__guid_arg+#define get_local_id(a)		((__guid_arg) % gMiniCLNumOutstandingTasks)+#define get_local_size(a)	(gMiniCLNumOutstandingTasks)+#define get_group_id(a)		((__guid_arg) / gMiniCLNumOutstandingTasks)++static unsigned int as_uint(float val) { return *((unsigned int*)&val); }+++#define CLK_LOCAL_MEM_FENCE		0x01+#define CLK_GLOBAL_MEM_FENCE	0x02++static void barrier(unsigned int a)+{+	// TODO : implement+}++//ATTRIBUTE_ALIGNED16(struct) float8+struct float8+{+	float s0;+	float s1;+	float s2;+	float s3;+	float s4;+	float s5;+	float s6;+	float s7;++	float8(float scalar)+	{+		s0=s1=s2=s3=s4=s5=s6=s7=scalar;+	}+};++//ATTRIBUTE_ALIGNED16(struct) float4+struct float4+{+	float x,y,z,w;+	float4() {}+	float4(float v) +	{+		x = y = z = w = v; +	}+	float4 operator*(const float4& other)+	{+		float4 tmp;+		tmp.x = x*other.x;+		tmp.y = y*other.y;+		tmp.z = z*other.z;+		tmp.w = w*other.w;+		return tmp;+	}++	float4 operator*(const float& other)+	{+		float4 tmp;+		tmp.x = x*other;+		tmp.y = y*other;+		tmp.z = z*other;+		tmp.w = w*other;+		return tmp;+	}++	++	float4& operator+=(const float4& other)+	{+		x += other.x;+		y += other.y;+		z += other.z;+		w += other.w;+		return *this;+	}++	float4& operator-=(const float4& other)+	{+		x -= other.x;+		y -= other.y;+		z -= other.z;+		w -= other.w;+		return *this;+	}++	float4& operator *=(float scalar)+	{+		x *= scalar;+		y *= scalar;+		z *= scalar;+		w *= scalar;+		return (*this);+	}++	+	+	+	+};++static float4 fabs(const float4& a)+{+	float4 tmp;+	tmp.x = a.x < 0.f ? 0.f  : a.x;+	tmp.y = a.y < 0.f ? 0.f  : a.y;+	tmp.z = a.z < 0.f ? 0.f  : a.z;+	tmp.w = a.w < 0.f ? 0.f  : a.w;+	return tmp;+}+static float4 operator+(const float4& a,const float4& b)+{+	float4 tmp;+	tmp.x = a.x + b.x;+	tmp.y = a.y + b.y;+	tmp.z = a.z + b.z;+	tmp.w = a.w + b.w;+	return tmp;+}+++static float8 operator+(const float8& a,const float8& b)+{+	float8 tmp(0);+	tmp.s0  = a.s0 + b.s0;+	tmp.s1  = a.s1 + b.s1;+	tmp.s2  = a.s2 + b.s2;+	tmp.s3  = a.s3 + b.s3;+	tmp.s4  = a.s4 + b.s4;+	tmp.s5  = a.s5 + b.s5;+	tmp.s6  = a.s6 + b.s6;+	tmp.s7  = a.s7 + b.s7;+	return tmp;+}+++static float4 operator-(const float4& a,const float4& b)+{+	float4 tmp;+	tmp.x = a.x - b.x;+	tmp.y = a.y - b.y;+	tmp.z = a.z - b.z;+	tmp.w = a.w - b.w;+	return tmp;+}++static float8 operator-(const float8& a,const float8& b)+{+	float8 tmp(0);+	tmp.s0  = a.s0 - b.s0;+	tmp.s1  = a.s1 - b.s1;+	tmp.s2  = a.s2 - b.s2;+	tmp.s3  = a.s3 - b.s3;+	tmp.s4  = a.s4 - b.s4;+	tmp.s5  = a.s5 - b.s5;+	tmp.s6  = a.s6 - b.s6;+	tmp.s7  = a.s7 - b.s7;+	return tmp;+}++static float4 operator*(float a,const float4& b)+{+	float4 tmp;+	tmp.x = a * b.x;+	tmp.y = a * b.y;+	tmp.z = a * b.z;+	tmp.w = a * b.w;+	return tmp;+}++static float4 operator/(const float4& b,float a)+{+	float4 tmp;+	tmp.x = b.x/a;+	tmp.y = b.y/a;+	tmp.z = b.z/a;+	tmp.w = b.w/a;+	return tmp;+}+++++static float dot(const float4&a ,const float4& b)+{+	float4 tmp;+	tmp.x = a.x*b.x;+	tmp.y = a.y*b.y;+	tmp.z = a.z*b.z;+	tmp.w = a.w*b.w;+	return tmp.x+tmp.y+tmp.z+tmp.w;+}++static float length(const float4&a)+{+	float l = sqrtf(a.x*a.x+a.y*a.y+a.z*a.z);+	return l;+}++static float4 normalize(const float4&a)+{+	float4 tmp;+	float l = length(a);+	tmp = 1.f/l*a;+	return tmp;+}++++static float4 cross(const float4&a ,const float4& b)+{+	float4 tmp;+	tmp.x =  a.y*b.z - a.z*b.y;+	tmp.y = -a.x*b.z + a.z*b.x;+	tmp.z =  a.x*b.y - a.y*b.x;+	tmp.w = 0.f;+	return tmp;+}++static float max(float a, float b) +{+	return (a >= b) ? a : b;+}+++static float min(float a, float b) +{+	return (a <= b) ? a : b;+}++static float fmax(float a, float b) +{+	return (a >= b) ? a : b;+}++static float fmin(float a, float b) +{+	return (a <= b) ? a : b;+}++struct int2+{+	int x,y;+};++struct uint2+{+	unsigned int x,y;+};++//typedef int2 uint2;++typedef unsigned int uint;++struct int4+{+	int x,y,z,w;+};++struct uint4+{+	unsigned int x,y,z,w;+	uint4() {}+	uint4(uint val) { x = y = z = w = val; }+	uint4& operator+=(const uint4& other)+	{+		x += other.x;+		y += other.y;+		z += other.z;+		w += other.w;+		return *this;+	}+};+static uint4 operator+(const uint4& a,const uint4& b)+{+	uint4 tmp;+	tmp.x = a.x + b.x;+	tmp.y = a.y + b.y;+	tmp.z = a.z + b.z;+	tmp.w = a.w + b.w;+	return tmp;+}+static uint4 operator-(const uint4& a,const uint4& b)+{+	uint4 tmp;+	tmp.x = a.x - b.x;+	tmp.y = a.y - b.y;+	tmp.z = a.z - b.z;+	tmp.w = a.w - b.w;+	return tmp;+}++#define native_sqrt sqrtf+#define native_sin sinf+#define native_cos cosf+#define native_powr powf++#define GUID_ARG ,int __guid_arg+#define GUID_ARG_VAL ,__guid_arg+++#define as_int(a) (*((int*)&(a)))++extern "C" int gMiniCLNumOutstandingTasks;+//	extern "C" void __kernel_func();++
+ bullet/MiniCL/cl_gl.h view
@@ -0,0 +1,113 @@+/**********************************************************************************+ * Copyright (c) 2008-2009 The Khronos Group Inc.+ *+ * Permission is hereby granted, free of charge, to any person obtaining a+ * copy of this software and/or associated documentation files (the+ * "Materials"), to deal in the Materials without restriction, including+ * without limitation the rights to use, copy, modify, merge, publish,+ * distribute, sublicense, and/or sell copies of the Materials, and to+ * permit persons to whom the Materials are furnished to do so, subject to+ * the following conditions:+ *+ * The above copyright notice and this permission notice shall be included+ * in all copies or substantial portions of the Materials.+ *+ * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE+ * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.+ **********************************************************************************/++#ifndef __OPENCL_CL_GL_H+#define __OPENCL_CL_GL_H++#ifdef __APPLE__+#include <OpenCL/cl_platform.h>+#else+#include <MiniCL/cl_platform.h>+#endif	++#ifdef __cplusplus+extern "C" {+#endif++// NOTE:  Make sure that appropriate GL header file is included separately++typedef cl_uint     cl_gl_object_type;+typedef cl_uint     cl_gl_texture_info;+typedef cl_uint     cl_gl_platform_info;++// cl_gl_object_type+#define CL_GL_OBJECT_BUFFER             0x2000+#define CL_GL_OBJECT_TEXTURE2D          0x2001+#define CL_GL_OBJECT_TEXTURE3D          0x2002+#define CL_GL_OBJECT_RENDERBUFFER       0x2003++// cl_gl_texture_info+#define CL_GL_TEXTURE_TARGET            0x2004+#define CL_GL_MIPMAP_LEVEL              0x2005++extern CL_API_ENTRY cl_mem CL_API_CALL+clCreateFromGLBuffer(cl_context     /* context */,+                     cl_mem_flags   /* flags */,+                     GLuint         /* bufobj */,+                     int *          /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_mem CL_API_CALL+clCreateFromGLTexture2D(cl_context      /* context */,+                        cl_mem_flags    /* flags */,+                        GLenum          /* target */,+                        GLint           /* miplevel */,+                        GLuint          /* texture */,+                        cl_int *        /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_mem CL_API_CALL+clCreateFromGLTexture3D(cl_context      /* context */,+                        cl_mem_flags    /* flags */,+                        GLenum          /* target */,+                        GLint           /* miplevel */,+                        GLuint          /* texture */,+                        cl_int *        /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_mem CL_API_CALL+clCreateFromGLRenderbuffer(cl_context   /* context */,+                           cl_mem_flags /* flags */,+                           GLuint       /* renderbuffer */,+                           cl_int *     /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clGetGLObjectInfo(cl_mem                /* memobj */,+                  cl_gl_object_type *   /* gl_object_type */,+                  GLuint *              /* gl_object_name */) CL_API_SUFFIX__VERSION_1_0;+                  +extern CL_API_ENTRY cl_int CL_API_CALL+clGetGLTextureInfo(cl_mem               /* memobj */,+                   cl_gl_texture_info   /* param_name */,+                   size_t               /* param_value_size */,+                   void *               /* param_value */,+                   size_t *             /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clEnqueueAcquireGLObjects(cl_command_queue      /* command_queue */,+                          cl_uint               /* num_objects */,+                          const cl_mem *        /* mem_objects */,+                          cl_uint               /* num_events_in_wait_list */,+                          const cl_event *      /* event_wait_list */,+                          cl_event *            /* event */) CL_API_SUFFIX__VERSION_1_0;++extern CL_API_ENTRY cl_int CL_API_CALL+clEnqueueReleaseGLObjects(cl_command_queue      /* command_queue */,+                          cl_uint               /* num_objects */,+                          const cl_mem *        /* mem_objects */,+                          cl_uint               /* num_events_in_wait_list */,+                          const cl_event *      /* event_wait_list */,+                          cl_event *            /* event */) CL_API_SUFFIX__VERSION_1_0;++#ifdef __cplusplus+}+#endif++#endif  // __OPENCL_CL_GL_H
+ bullet/MiniCL/cl_platform.h view
@@ -0,0 +1,254 @@+/**********************************************************************************+ * Copyright (c) 2008-2009 The Khronos Group Inc.+ *+ * Permission is hereby granted, free of charge, to any person obtaining a+ * copy of this software and/or associated documentation files (the+ * "Materials"), to deal in the Materials without restriction, including+ * without limitation the rights to use, copy, modify, merge, publish,+ * distribute, sublicense, and/or sell copies of the Materials, and to+ * permit persons to whom the Materials are furnished to do so, subject to+ * the following conditions:+ *+ * The above copyright notice and this permission notice shall be included+ * in all copies or substantial portions of the Materials.+ *+ * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE+ * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.+ **********************************************************************************/++#ifndef __CL_PLATFORM_H+#define __CL_PLATFORM_H++#define CL_PLATFORM_MINI_CL  0x12345++struct MiniCLKernelDesc+{+	MiniCLKernelDesc(void* pCode, char* pName);+};++#define MINICL_REGISTER(__kernel_func) static MiniCLKernelDesc __kernel_func##Desc((void*)__kernel_func, #__kernel_func);+++#ifdef __APPLE__+    /* Contains #defines for AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER below */+    #include <AvailabilityMacros.h>+#endif++#ifdef __cplusplus+extern "C" {+#endif++#define CL_API_ENTRY+#define CL_API_CALL+#ifdef __APPLE__+#define CL_API_SUFFIX__VERSION_1_0 //  AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER+#define CL_EXTENSION_WEAK_LINK       __attribute__((weak_import))       +#else+#define CL_API_SUFFIX__VERSION_1_0+#define CL_EXTENSION_WEAK_LINK                         +#endif++#if defined (_WIN32) && ! defined (__MINGW32__)+typedef signed   __int8  int8_t;+typedef unsigned __int8  uint8_t;+typedef signed   __int16 int16_t;+typedef unsigned __int16 uint16_t;+typedef signed   __int32 int32_t;+typedef unsigned __int32 uint32_t;+typedef signed   __int64 int64_t;+typedef unsigned __int64 uint64_t;++typedef int8_t          cl_char;+typedef uint8_t         cl_uchar;+typedef int16_t         cl_short    ;+typedef uint16_t        cl_ushort   ;+typedef int32_t         cl_int      ;+typedef uint32_t        cl_uint     ;+typedef int64_t         cl_long     ;+typedef uint64_t        cl_ulong    ;++typedef uint16_t        cl_half     ;+typedef float           cl_float    ;+typedef double          cl_double   ;+++typedef int8_t          cl_char2[2]     ;+typedef int8_t          cl_char4[4]     ;+typedef int8_t          cl_char8[8]     ;+typedef int8_t          cl_char16[16]   ;+typedef uint8_t         cl_uchar2[2]    ;+typedef uint8_t         cl_uchar4[4]    ;+typedef uint8_t         cl_uchar8[8]    ;+typedef uint8_t         cl_uchar16[16]  ;++typedef int16_t         cl_short2[2]     ;+typedef int16_t         cl_short4[4]     ;+typedef int16_t         cl_short8[8]     ;+typedef int16_t         cl_short16[16]   ;+typedef uint16_t        cl_ushort2[2]    ;+typedef uint16_t        cl_ushort4[4]    ;+typedef uint16_t        cl_ushort8[8]    ;+typedef uint16_t        cl_ushort16[16]  ;++typedef int32_t         cl_int2[2]     ;+typedef int32_t         cl_int4[4]     ;+typedef int32_t         cl_int8[8]     ;+typedef int32_t         cl_int16[16]    ;+typedef uint32_t        cl_uint2[2]     ;+typedef uint32_t        cl_uint4[4]     ;+typedef uint32_t        cl_uint8[8]     ;+typedef uint32_t        cl_uint16[16]   ;++typedef int64_t         cl_long2[2]     ;+typedef int64_t         cl_long4[4]     ;+typedef int64_t         cl_long8[8]     ;+typedef int64_t         cl_long16[16]   ;+typedef uint64_t        cl_ulong2[2]    ;+typedef uint64_t        cl_ulong4[4]    ;+typedef uint64_t        cl_ulong8[8]    ;+typedef uint64_t        cl_ulong16[16]  ;++typedef float           cl_float2[2]    ;+typedef float           cl_float4[4]    ;+typedef float           cl_float8[8]    ;+typedef float           cl_float16[16]  ;++typedef double          cl_double2[2]   ;+typedef double          cl_double4[4]   ;+typedef double          cl_double8[8]   ;+typedef double          cl_double16[16] ;+++#else+#include <stdint.h>++/* scalar types  */+typedef int8_t          cl_char;+typedef uint8_t         cl_uchar;+typedef int16_t         cl_short    __attribute__((aligned(2)));+typedef uint16_t        cl_ushort   __attribute__((aligned(2)));+typedef int32_t         cl_int      __attribute__((aligned(4)));+typedef uint32_t        cl_uint     __attribute__((aligned(4)));+typedef int64_t         cl_long     __attribute__((aligned(8)));+typedef uint64_t        cl_ulong    __attribute__((aligned(8)));++typedef uint16_t        cl_half     __attribute__((aligned(2)));+typedef float           cl_float    __attribute__((aligned(4)));+typedef double          cl_double   __attribute__((aligned(8)));+++/*+ * Vector types + *+ *  Note:   OpenCL requires that all types be naturally aligned. + *          This means that vector types must be naturally aligned.+ *          For example, a vector of four floats must be aligned to+ *          a 16 byte boundary (calculated as 4 * the natural 4-byte + *          alignment of the float).  The alignment qualifiers here+ *          will only function properly if your compiler supports them+ *          and if you don't actively work to defeat them.  For example,+ *          in order for a cl_float4 to be 16 byte aligned in a struct,+ *          the start of the struct must itself be 16-byte aligned. + *+ *          Maintaining proper alignment is the user's responsibility.+ */+typedef int8_t          cl_char2[2]     __attribute__((aligned(2)));+typedef int8_t          cl_char4[4]     __attribute__((aligned(4)));+typedef int8_t          cl_char8[8]     __attribute__((aligned(8)));+typedef int8_t          cl_char16[16]   __attribute__((aligned(16)));+typedef uint8_t         cl_uchar2[2]    __attribute__((aligned(2)));+typedef uint8_t         cl_uchar4[4]    __attribute__((aligned(4)));+typedef uint8_t         cl_uchar8[8]    __attribute__((aligned(8)));+typedef uint8_t         cl_uchar16[16]  __attribute__((aligned(16)));++typedef int16_t         cl_short2[2]     __attribute__((aligned(4)));+typedef int16_t         cl_short4[4]     __attribute__((aligned(8)));+typedef int16_t         cl_short8[8]     __attribute__((aligned(16)));+typedef int16_t         cl_short16[16]   __attribute__((aligned(32)));+typedef uint16_t        cl_ushort2[2]    __attribute__((aligned(4)));+typedef uint16_t        cl_ushort4[4]    __attribute__((aligned(8)));+typedef uint16_t        cl_ushort8[8]    __attribute__((aligned(16)));+typedef uint16_t        cl_ushort16[16]  __attribute__((aligned(32)));++typedef int32_t         cl_int2[2]      __attribute__((aligned(8)));+typedef int32_t         cl_int4[4]      __attribute__((aligned(16)));+typedef int32_t         cl_int8[8]      __attribute__((aligned(32)));+typedef int32_t         cl_int16[16]    __attribute__((aligned(64)));+typedef uint32_t        cl_uint2[2]     __attribute__((aligned(8)));+typedef uint32_t        cl_uint4[4]     __attribute__((aligned(16)));+typedef uint32_t        cl_uint8[8]     __attribute__((aligned(32)));+typedef uint32_t        cl_uint16[16]   __attribute__((aligned(64)));++typedef int64_t         cl_long2[2]     __attribute__((aligned(16)));+typedef int64_t         cl_long4[4]     __attribute__((aligned(32)));+typedef int64_t         cl_long8[8]     __attribute__((aligned(64)));+typedef int64_t         cl_long16[16]   __attribute__((aligned(128)));+typedef uint64_t        cl_ulong2[2]    __attribute__((aligned(16)));+typedef uint64_t        cl_ulong4[4]    __attribute__((aligned(32)));+typedef uint64_t        cl_ulong8[8]    __attribute__((aligned(64)));+typedef uint64_t        cl_ulong16[16]  __attribute__((aligned(128)));++typedef float           cl_float2[2]    __attribute__((aligned(8)));+typedef float           cl_float4[4]    __attribute__((aligned(16)));+typedef float           cl_float8[8]    __attribute__((aligned(32)));+typedef float           cl_float16[16]  __attribute__((aligned(64)));++typedef double          cl_double2[2]   __attribute__((aligned(16)));+typedef double          cl_double4[4]   __attribute__((aligned(32)));+typedef double          cl_double8[8]   __attribute__((aligned(64)));+typedef double          cl_double16[16] __attribute__((aligned(128)));+#endif++#include <stddef.h>++/* and a few goodies to go with them */+#define CL_CHAR_BIT         8+#define CL_SCHAR_MAX        127+#define CL_SCHAR_MIN        (-127-1)+#define CL_CHAR_MAX         CL_SCHAR_MAX+#define CL_CHAR_MIN         CL_SCHAR_MIN+#define CL_UCHAR_MAX        255+#define CL_SHRT_MAX         32767+#define CL_SHRT_MIN         (-32767-1)+#define CL_USHRT_MAX        65535+#define CL_INT_MAX          2147483647+#define CL_INT_MIN          (-2147483647-1)+#define CL_UINT_MAX         0xffffffffU+#define CL_LONG_MAX         ((cl_long) 0x7FFFFFFFFFFFFFFFLL)+#define CL_LONG_MIN         ((cl_long) -0x7FFFFFFFFFFFFFFFLL - 1LL)+#define CL_ULONG_MAX        ((cl_ulong) 0xFFFFFFFFFFFFFFFFULL)++#define CL_FLT_DIG          6+#define CL_FLT_MANT_DIG     24+#define CL_FLT_MAX_10_EXP   +38+#define CL_FLT_MAX_EXP      +128+#define CL_FLT_MIN_10_EXP   -37+#define CL_FLT_MIN_EXP      -125+#define CL_FLT_RADIX        2+#define CL_FLT_MAX          0x1.fffffep127f+#define CL_FLT_MIN          0x1.0p-126f+#define CL_FLT_EPSILON      0x1.0p-23f++#define CL_DBL_DIG          15+#define CL_DBL_MANT_DIG     53+#define CL_DBL_MAX_10_EXP   +308+#define CL_DBL_MAX_EXP      +1024+#define CL_DBL_MIN_10_EXP   -307+#define CL_DBL_MIN_EXP      -1021+#define CL_DBL_RADIX        2+#define CL_DBL_MAX          0x1.fffffffffffffp1023+#define CL_DBL_MIN          0x1.0p-1022+#define CL_DBL_EPSILON      0x1.0p-52++/* There are no vector types for half */++#ifdef __cplusplus+}+#endif++#endif  // __CL_PLATFORM_H
+ bullet/btBulletCollisionCommon.h view
@@ -0,0 +1,69 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BULLET_COLLISION_COMMON_H+#define BULLET_COLLISION_COMMON_H++///Common headerfile includes for Bullet Collision Detection++///Bullet's btCollisionWorld and btCollisionObject definitions+#include "BulletCollision/CollisionDispatch/btCollisionWorld.h"+#include "BulletCollision/CollisionDispatch/btCollisionObject.h"++///Collision Shapes+#include "BulletCollision/CollisionShapes/btBoxShape.h"+#include "BulletCollision/CollisionShapes/btSphereShape.h"+#include "BulletCollision/CollisionShapes/btCapsuleShape.h"+#include "BulletCollision/CollisionShapes/btCylinderShape.h"+#include "BulletCollision/CollisionShapes/btConeShape.h"+#include "BulletCollision/CollisionShapes/btStaticPlaneShape.h"+#include "BulletCollision/CollisionShapes/btConvexHullShape.h"+#include "BulletCollision/CollisionShapes/btTriangleMesh.h"+#include "BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h"+#include "BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h"+#include "BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h"+#include "BulletCollision/CollisionShapes/btTriangleMeshShape.h"+#include "BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h"+#include "BulletCollision/CollisionShapes/btCompoundShape.h"+#include "BulletCollision/CollisionShapes/btTetrahedronShape.h"+#include "BulletCollision/CollisionShapes/btEmptyShape.h"+#include "BulletCollision/CollisionShapes/btMultiSphereShape.h"+#include "BulletCollision/CollisionShapes/btUniformScalingShape.h"++///Narrowphase Collision Detector+#include "BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h"++//btSphereBoxCollisionAlgorithm is broken, use gjk for now+//#include "BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h"+#include "BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h"++///Dispatching and generation of collision pairs (broadphase)+#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h"+#include "BulletCollision/BroadphaseCollision/btSimpleBroadphase.h"+#include "BulletCollision/BroadphaseCollision/btAxisSweep3.h"+#include "BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h"+#include "BulletCollision/BroadphaseCollision/btDbvtBroadphase.h"++///Math library & Utils+#include "LinearMath/btQuaternion.h"+#include "LinearMath/btTransform.h"+#include "LinearMath/btDefaultMotionState.h"+#include "LinearMath/btQuickprof.h"+#include "LinearMath/btIDebugDraw.h"+#include "LinearMath/btSerializer.h"+++#endif //BULLET_COLLISION_COMMON_H+
+ bullet/btBulletDynamicsCommon.h view
@@ -0,0 +1,49 @@+/*+Bullet Continuous Collision Detection and Physics Library+Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.+*/++#ifndef BULLET_DYNAMICS_COMMON_H+#define BULLET_DYNAMICS_COMMON_H++///Common headerfile includes for Bullet Dynamics, including Collision Detection+#include "btBulletCollisionCommon.h"++#include "BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h"+#include "BulletDynamics/Dynamics/btContinuousDynamicsWorld.h"++#include "BulletDynamics/Dynamics/btSimpleDynamicsWorld.h"+#include "BulletDynamics/Dynamics/btRigidBody.h"++#include "BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h"+#include "BulletDynamics/ConstraintSolver/btHingeConstraint.h"+#include "BulletDynamics/ConstraintSolver/btConeTwistConstraint.h"+#include "BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h"+#include "BulletDynamics/ConstraintSolver/btSliderConstraint.h"+#include "BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h"+#include "BulletDynamics/ConstraintSolver/btUniversalConstraint.h"+#include "BulletDynamics/ConstraintSolver/btHinge2Constraint.h"++#include "BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h"+++///Vehicle simulation, with wheel contact simulated by raycasts+#include "BulletDynamics/Vehicle/btRaycastVehicle.h"+++++++#endif //BULLET_DYNAMICS_COMMON_H+
+ bullet/vectormath/scalar/boolInVec.h view
@@ -0,0 +1,225 @@+/*+   Copyright (C) 2009 Sony Computer Entertainment Inc.+   All rights reserved.++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.++*/++#ifndef _BOOLINVEC_H+#define _BOOLINVEC_H++#include <math.h>+namespace Vectormath {++class floatInVec;++//--------------------------------------------------------------------------------------------------+// boolInVec class+//++class boolInVec+{+private:+    unsigned int mData;++public:+    // Default constructor; does no initialization+    //+    inline boolInVec( ) { };++    // Construct from a value converted from float+    //+    inline boolInVec(floatInVec vec);++    // Explicit cast from bool+    //+    explicit inline boolInVec(bool scalar);++    // Explicit cast to bool+    //+    inline bool getAsBool() const;++#ifndef _VECTORMATH_NO_SCALAR_CAST+    // Implicit cast to bool+    //+    inline operator bool() const;+#endif++    // Boolean negation operator+    //+    inline const boolInVec operator ! () const;++    // Assignment operator+    //+    inline boolInVec& operator = (boolInVec vec);++    // Boolean and assignment operator+    //+    inline boolInVec& operator &= (boolInVec vec);++    // Boolean exclusive or assignment operator+    //+    inline boolInVec& operator ^= (boolInVec vec);++    // Boolean or assignment operator+    //+    inline boolInVec& operator |= (boolInVec vec);++};++// Equal operator+//+inline const boolInVec operator == (boolInVec vec0, boolInVec vec1);++// Not equal operator+//+inline const boolInVec operator != (boolInVec vec0, boolInVec vec1);++// And operator+//+inline const boolInVec operator & (boolInVec vec0, boolInVec vec1);++// Exclusive or operator+//+inline const boolInVec operator ^ (boolInVec vec0, boolInVec vec1);++// Or operator+//+inline const boolInVec operator | (boolInVec vec0, boolInVec vec1);++// Conditionally select between two values+//+inline const boolInVec select(boolInVec vec0, boolInVec vec1, boolInVec select_vec1);+++} // namespace Vectormath+++//--------------------------------------------------------------------------------------------------+// boolInVec implementation+//++#include "floatInVec.h"++namespace Vectormath {++inline+boolInVec::boolInVec(floatInVec vec)+{+    *this = (vec != floatInVec(0.0f));+}++inline+boolInVec::boolInVec(bool scalar)+{+    mData = -(int)scalar;+}++inline+bool+boolInVec::getAsBool() const+{+    return (mData > 0);+}++#ifndef _VECTORMATH_NO_SCALAR_CAST+inline+boolInVec::operator bool() const+{+    return getAsBool();+}+#endif++inline+const boolInVec+boolInVec::operator ! () const+{+    return boolInVec(!mData);+}++inline+boolInVec&+boolInVec::operator = (boolInVec vec)+{+    mData = vec.mData;+    return *this;+}++inline+boolInVec&+boolInVec::operator &= (boolInVec vec)+{+    *this = *this & vec;+    return *this;+}++inline+boolInVec&+boolInVec::operator ^= (boolInVec vec)+{+    *this = *this ^ vec;+    return *this;+}++inline+boolInVec&+boolInVec::operator |= (boolInVec vec)+{+    *this = *this | vec;+    return *this;+}++inline+const boolInVec+operator == (boolInVec vec0, boolInVec vec1)+{+    return boolInVec(vec0.getAsBool() == vec1.getAsBool());+}++inline+const boolInVec+operator != (boolInVec vec0, boolInVec vec1)+{+    return !(vec0 == vec1);+}++inline+const boolInVec+operator & (boolInVec vec0, boolInVec vec1)+{+    return boolInVec(vec0.getAsBool() & vec1.getAsBool());+}++inline+const boolInVec+operator | (boolInVec vec0, boolInVec vec1)+{+    return boolInVec(vec0.getAsBool() | vec1.getAsBool());+}++inline+const boolInVec+operator ^ (boolInVec vec0, boolInVec vec1)+{+    return boolInVec(vec0.getAsBool() ^ vec1.getAsBool());+}++inline+const boolInVec+select(boolInVec vec0, boolInVec vec1, boolInVec select_vec1)+{+    return (select_vec1.getAsBool() == 0) ? vec0 : vec1;+}++} // namespace Vectormath++#endif // boolInVec_h
+ bullet/vectormath/scalar/floatInVec.h view
@@ -0,0 +1,343 @@+/*+   Copyright (C) 2009 Sony Computer Entertainment Inc.+   All rights reserved.++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.++*/+#ifndef _FLOATINVEC_H+#define _FLOATINVEC_H++#include <math.h>+namespace Vectormath {++class boolInVec;++//--------------------------------------------------------------------------------------------------+// floatInVec class+//++// A class representing a scalar float value contained in a vector register+// This class does not support fastmath+class floatInVec+{+private:+    float mData;++public:+    // Default constructor; does no initialization+    //+    inline floatInVec( ) { };++    // Construct from a value converted from bool+    //+    inline floatInVec(boolInVec vec);++    // Explicit cast from float+    //+    explicit inline floatInVec(float scalar);++    // Explicit cast to float+    //+    inline float getAsFloat() const;++#ifndef _VECTORMATH_NO_SCALAR_CAST+    // Implicit cast to float+    //+    inline operator float() const;+#endif++    // Post increment (add 1.0f)+    //+    inline const floatInVec operator ++ (int);++    // Post decrement (subtract 1.0f)+    //+    inline const floatInVec operator -- (int);++    // Pre increment (add 1.0f)+    //+    inline floatInVec& operator ++ ();++    // Pre decrement (subtract 1.0f)+    //+    inline floatInVec& operator -- ();++    // Negation operator+    //+    inline const floatInVec operator - () const;++    // Assignment operator+    //+    inline floatInVec& operator = (floatInVec vec);++    // Multiplication assignment operator+    //+    inline floatInVec& operator *= (floatInVec vec);++    // Division assignment operator+    //+    inline floatInVec& operator /= (floatInVec vec);++    // Addition assignment operator+    //+    inline floatInVec& operator += (floatInVec vec);++    // Subtraction assignment operator+    //+    inline floatInVec& operator -= (floatInVec vec);++};++// Multiplication operator+//+inline const floatInVec operator * (floatInVec vec0, floatInVec vec1);++// Division operator+//+inline const floatInVec operator / (floatInVec vec0, floatInVec vec1);++// Addition operator+//+inline const floatInVec operator + (floatInVec vec0, floatInVec vec1);++// Subtraction operator+//+inline const floatInVec operator - (floatInVec vec0, floatInVec vec1);++// Less than operator+//+inline const boolInVec operator < (floatInVec vec0, floatInVec vec1);++// Less than or equal operator+//+inline const boolInVec operator <= (floatInVec vec0, floatInVec vec1);++// Greater than operator+//+inline const boolInVec operator > (floatInVec vec0, floatInVec vec1);++// Greater than or equal operator+//+inline const boolInVec operator >= (floatInVec vec0, floatInVec vec1);++// Equal operator+//+inline const boolInVec operator == (floatInVec vec0, floatInVec vec1);++// Not equal operator+//+inline const boolInVec operator != (floatInVec vec0, floatInVec vec1);++// Conditionally select between two values+//+inline const floatInVec select(floatInVec vec0, floatInVec vec1, boolInVec select_vec1);+++} // namespace Vectormath+++//--------------------------------------------------------------------------------------------------+// floatInVec implementation+//++#include "boolInVec.h"++namespace Vectormath {++inline+floatInVec::floatInVec(boolInVec vec)+{+    mData = float(vec.getAsBool());+}++inline+floatInVec::floatInVec(float scalar)+{+    mData = scalar;+}++inline+float+floatInVec::getAsFloat() const+{+    return mData;+}++#ifndef _VECTORMATH_NO_SCALAR_CAST+inline+floatInVec::operator float() const+{+    return getAsFloat();+}+#endif++inline+const floatInVec+floatInVec::operator ++ (int)+{+    float olddata = mData;+    operator ++();+    return floatInVec(olddata);+}++inline+const floatInVec+floatInVec::operator -- (int)+{+    float olddata = mData;+    operator --();+    return floatInVec(olddata);+}++inline+floatInVec&+floatInVec::operator ++ ()+{+    *this += floatInVec(1.0f);+    return *this;+}++inline+floatInVec&+floatInVec::operator -- ()+{+    *this -= floatInVec(1.0f);+    return *this;+}++inline+const floatInVec+floatInVec::operator - () const+{+    return floatInVec(-mData);+}++inline+floatInVec&+floatInVec::operator = (floatInVec vec)+{+    mData = vec.mData;+    return *this;+}++inline+floatInVec&+floatInVec::operator *= (floatInVec vec)+{+    *this = *this * vec;+    return *this;+}++inline+floatInVec&+floatInVec::operator /= (floatInVec vec)+{+    *this = *this / vec;+    return *this;+}++inline+floatInVec&+floatInVec::operator += (floatInVec vec)+{+    *this = *this + vec;+    return *this;+}++inline+floatInVec&+floatInVec::operator -= (floatInVec vec)+{+    *this = *this - vec;+    return *this;+}++inline+const floatInVec+operator * (floatInVec vec0, floatInVec vec1)+{+    return floatInVec(vec0.getAsFloat() * vec1.getAsFloat());+}++inline+const floatInVec+operator / (floatInVec num, floatInVec den)+{+    return floatInVec(num.getAsFloat() / den.getAsFloat());+}++inline+const floatInVec+operator + (floatInVec vec0, floatInVec vec1)+{+    return floatInVec(vec0.getAsFloat() + vec1.getAsFloat());+}++inline+const floatInVec+operator - (floatInVec vec0, floatInVec vec1)+{+    return floatInVec(vec0.getAsFloat() - vec1.getAsFloat());+}++inline+const boolInVec+operator < (floatInVec vec0, floatInVec vec1)+{+    return boolInVec(vec0.getAsFloat() < vec1.getAsFloat());+}++inline+const boolInVec+operator <= (floatInVec vec0, floatInVec vec1)+{+    return !(vec0 > vec1);+}++inline+const boolInVec+operator > (floatInVec vec0, floatInVec vec1)+{+    return boolInVec(vec0.getAsFloat() > vec1.getAsFloat());+}++inline+const boolInVec+operator >= (floatInVec vec0, floatInVec vec1)+{+    return !(vec0 < vec1);+}++inline+const boolInVec+operator == (floatInVec vec0, floatInVec vec1)+{+    return boolInVec(vec0.getAsFloat() == vec1.getAsFloat());+}++inline+const boolInVec+operator != (floatInVec vec0, floatInVec vec1)+{+    return !(vec0 == vec1);+}++inline+const floatInVec+select(floatInVec vec0, floatInVec vec1, boolInVec select_vec1)+{+    return (select_vec1.getAsBool() == 0) ? vec0 : vec1;+}++} // namespace Vectormath++#endif // floatInVec_h
+ bullet/vectormath/scalar/mat_aos.h view
@@ -0,0 +1,1630 @@+/*+   Copyright (C) 2009 Sony Computer Entertainment Inc.+   All rights reserved.++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.++*/++#ifndef _VECTORMATH_MAT_AOS_CPP_H+#define _VECTORMATH_MAT_AOS_CPP_H++namespace Vectormath {+namespace Aos {++//-----------------------------------------------------------------------------+// Constants++#define _VECTORMATH_PI_OVER_2 1.570796327f++//-----------------------------------------------------------------------------+// Definitions++inline Matrix3::Matrix3( const Matrix3 & mat )+{+    mCol0 = mat.mCol0;+    mCol1 = mat.mCol1;+    mCol2 = mat.mCol2;+}++inline Matrix3::Matrix3( float scalar )+{+    mCol0 = Vector3( scalar );+    mCol1 = Vector3( scalar );+    mCol2 = Vector3( scalar );+}++inline Matrix3::Matrix3( const Quat & unitQuat )+{+    float qx, qy, qz, qw, qx2, qy2, qz2, qxqx2, qyqy2, qzqz2, qxqy2, qyqz2, qzqw2, qxqz2, qyqw2, qxqw2;+    qx = unitQuat.getX();+    qy = unitQuat.getY();+    qz = unitQuat.getZ();+    qw = unitQuat.getW();+    qx2 = ( qx + qx );+    qy2 = ( qy + qy );+    qz2 = ( qz + qz );+    qxqx2 = ( qx * qx2 );+    qxqy2 = ( qx * qy2 );+    qxqz2 = ( qx * qz2 );+    qxqw2 = ( qw * qx2 );+    qyqy2 = ( qy * qy2 );+    qyqz2 = ( qy * qz2 );+    qyqw2 = ( qw * qy2 );+    qzqz2 = ( qz * qz2 );+    qzqw2 = ( qw * qz2 );+    mCol0 = Vector3( ( ( 1.0f - qyqy2 ) - qzqz2 ), ( qxqy2 + qzqw2 ), ( qxqz2 - qyqw2 ) );+    mCol1 = Vector3( ( qxqy2 - qzqw2 ), ( ( 1.0f - qxqx2 ) - qzqz2 ), ( qyqz2 + qxqw2 ) );+    mCol2 = Vector3( ( qxqz2 + qyqw2 ), ( qyqz2 - qxqw2 ), ( ( 1.0f - qxqx2 ) - qyqy2 ) );+}++inline Matrix3::Matrix3( const Vector3 & _col0, const Vector3 & _col1, const Vector3 & _col2 )+{+    mCol0 = _col0;+    mCol1 = _col1;+    mCol2 = _col2;+}++inline Matrix3 & Matrix3::setCol0( const Vector3 & _col0 )+{+    mCol0 = _col0;+    return *this;+}++inline Matrix3 & Matrix3::setCol1( const Vector3 & _col1 )+{+    mCol1 = _col1;+    return *this;+}++inline Matrix3 & Matrix3::setCol2( const Vector3 & _col2 )+{+    mCol2 = _col2;+    return *this;+}++inline Matrix3 & Matrix3::setCol( int col, const Vector3 & vec )+{+    *(&mCol0 + col) = vec;+    return *this;+}++inline Matrix3 & Matrix3::setRow( int row, const Vector3 & vec )+{+    mCol0.setElem( row, vec.getElem( 0 ) );+    mCol1.setElem( row, vec.getElem( 1 ) );+    mCol2.setElem( row, vec.getElem( 2 ) );+    return *this;+}++inline Matrix3 & Matrix3::setElem( int col, int row, float val )+{+    Vector3 tmpV3_0;+    tmpV3_0 = this->getCol( col );+    tmpV3_0.setElem( row, val );+    this->setCol( col, tmpV3_0 );+    return *this;+}++inline float Matrix3::getElem( int col, int row ) const+{+    return this->getCol( col ).getElem( row );+}++inline const Vector3 Matrix3::getCol0( ) const+{+    return mCol0;+}++inline const Vector3 Matrix3::getCol1( ) const+{+    return mCol1;+}++inline const Vector3 Matrix3::getCol2( ) const+{+    return mCol2;+}++inline const Vector3 Matrix3::getCol( int col ) const+{+    return *(&mCol0 + col);+}++inline const Vector3 Matrix3::getRow( int row ) const+{+    return Vector3( mCol0.getElem( row ), mCol1.getElem( row ), mCol2.getElem( row ) );+}++inline Vector3 & Matrix3::operator []( int col )+{+    return *(&mCol0 + col);+}++inline const Vector3 Matrix3::operator []( int col ) const+{+    return *(&mCol0 + col);+}++inline Matrix3 & Matrix3::operator =( const Matrix3 & mat )+{+    mCol0 = mat.mCol0;+    mCol1 = mat.mCol1;+    mCol2 = mat.mCol2;+    return *this;+}++inline const Matrix3 transpose( const Matrix3 & mat )+{+    return Matrix3(+        Vector3( mat.getCol0().getX(), mat.getCol1().getX(), mat.getCol2().getX() ),+        Vector3( mat.getCol0().getY(), mat.getCol1().getY(), mat.getCol2().getY() ),+        Vector3( mat.getCol0().getZ(), mat.getCol1().getZ(), mat.getCol2().getZ() )+    );+}++inline const Matrix3 inverse( const Matrix3 & mat )+{+    Vector3 tmp0, tmp1, tmp2;+    float detinv;+    tmp0 = cross( mat.getCol1(), mat.getCol2() );+    tmp1 = cross( mat.getCol2(), mat.getCol0() );+    tmp2 = cross( mat.getCol0(), mat.getCol1() );+    detinv = ( 1.0f / dot( mat.getCol2(), tmp2 ) );+    return Matrix3(+        Vector3( ( tmp0.getX() * detinv ), ( tmp1.getX() * detinv ), ( tmp2.getX() * detinv ) ),+        Vector3( ( tmp0.getY() * detinv ), ( tmp1.getY() * detinv ), ( tmp2.getY() * detinv ) ),+        Vector3( ( tmp0.getZ() * detinv ), ( tmp1.getZ() * detinv ), ( tmp2.getZ() * detinv ) )+    );+}++inline float determinant( const Matrix3 & mat )+{+    return dot( mat.getCol2(), cross( mat.getCol0(), mat.getCol1() ) );+}++inline const Matrix3 Matrix3::operator +( const Matrix3 & mat ) const+{+    return Matrix3(+        ( mCol0 + mat.mCol0 ),+        ( mCol1 + mat.mCol1 ),+        ( mCol2 + mat.mCol2 )+    );+}++inline const Matrix3 Matrix3::operator -( const Matrix3 & mat ) const+{+    return Matrix3(+        ( mCol0 - mat.mCol0 ),+        ( mCol1 - mat.mCol1 ),+        ( mCol2 - mat.mCol2 )+    );+}++inline Matrix3 & Matrix3::operator +=( const Matrix3 & mat )+{+    *this = *this + mat;+    return *this;+}++inline Matrix3 & Matrix3::operator -=( const Matrix3 & mat )+{+    *this = *this - mat;+    return *this;+}++inline const Matrix3 Matrix3::operator -( ) const+{+    return Matrix3(+        ( -mCol0 ),+        ( -mCol1 ),+        ( -mCol2 )+    );+}++inline const Matrix3 absPerElem( const Matrix3 & mat )+{+    return Matrix3(+        absPerElem( mat.getCol0() ),+        absPerElem( mat.getCol1() ),+        absPerElem( mat.getCol2() )+    );+}++inline const Matrix3 Matrix3::operator *( float scalar ) const+{+    return Matrix3(+        ( mCol0 * scalar ),+        ( mCol1 * scalar ),+        ( mCol2 * scalar )+    );+}++inline Matrix3 & Matrix3::operator *=( float scalar )+{+    *this = *this * scalar;+    return *this;+}++inline const Matrix3 operator *( float scalar, const Matrix3 & mat )+{+    return mat * scalar;+}++inline const Vector3 Matrix3::operator *( const Vector3 & vec ) const+{+    return Vector3(+        ( ( ( mCol0.getX() * vec.getX() ) + ( mCol1.getX() * vec.getY() ) ) + ( mCol2.getX() * vec.getZ() ) ),+        ( ( ( mCol0.getY() * vec.getX() ) + ( mCol1.getY() * vec.getY() ) ) + ( mCol2.getY() * vec.getZ() ) ),+        ( ( ( mCol0.getZ() * vec.getX() ) + ( mCol1.getZ() * vec.getY() ) ) + ( mCol2.getZ() * vec.getZ() ) )+    );+}++inline const Matrix3 Matrix3::operator *( const Matrix3 & mat ) const+{+    return Matrix3(+        ( *this * mat.mCol0 ),+        ( *this * mat.mCol1 ),+        ( *this * mat.mCol2 )+    );+}++inline Matrix3 & Matrix3::operator *=( const Matrix3 & mat )+{+    *this = *this * mat;+    return *this;+}++inline const Matrix3 mulPerElem( const Matrix3 & mat0, const Matrix3 & mat1 )+{+    return Matrix3(+        mulPerElem( mat0.getCol0(), mat1.getCol0() ),+        mulPerElem( mat0.getCol1(), mat1.getCol1() ),+        mulPerElem( mat0.getCol2(), mat1.getCol2() )+    );+}++inline const Matrix3 Matrix3::identity( )+{+    return Matrix3(+        Vector3::xAxis( ),+        Vector3::yAxis( ),+        Vector3::zAxis( )+    );+}++inline const Matrix3 Matrix3::rotationX( float radians )+{+    float s, c;+    s = sinf( radians );+    c = cosf( radians );+    return Matrix3(+        Vector3::xAxis( ),+        Vector3( 0.0f, c, s ),+        Vector3( 0.0f, -s, c )+    );+}++inline const Matrix3 Matrix3::rotationY( float radians )+{+    float s, c;+    s = sinf( radians );+    c = cosf( radians );+    return Matrix3(+        Vector3( c, 0.0f, -s ),+        Vector3::yAxis( ),+        Vector3( s, 0.0f, c )+    );+}++inline const Matrix3 Matrix3::rotationZ( float radians )+{+    float s, c;+    s = sinf( radians );+    c = cosf( radians );+    return Matrix3(+        Vector3( c, s, 0.0f ),+        Vector3( -s, c, 0.0f ),+        Vector3::zAxis( )+    );+}++inline const Matrix3 Matrix3::rotationZYX( const Vector3 & radiansXYZ )+{+    float sX, cX, sY, cY, sZ, cZ, tmp0, tmp1;+    sX = sinf( radiansXYZ.getX() );+    cX = cosf( radiansXYZ.getX() );+    sY = sinf( radiansXYZ.getY() );+    cY = cosf( radiansXYZ.getY() );+    sZ = sinf( radiansXYZ.getZ() );+    cZ = cosf( radiansXYZ.getZ() );+    tmp0 = ( cZ * sY );+    tmp1 = ( sZ * sY );+    return Matrix3(+        Vector3( ( cZ * cY ), ( sZ * cY ), -sY ),+        Vector3( ( ( tmp0 * sX ) - ( sZ * cX ) ), ( ( tmp1 * sX ) + ( cZ * cX ) ), ( cY * sX ) ),+        Vector3( ( ( tmp0 * cX ) + ( sZ * sX ) ), ( ( tmp1 * cX ) - ( cZ * sX ) ), ( cY * cX ) )+    );+}++inline const Matrix3 Matrix3::rotation( float radians, const Vector3 & unitVec )+{+    float x, y, z, s, c, oneMinusC, xy, yz, zx;+    s = sinf( radians );+    c = cosf( radians );+    x = unitVec.getX();+    y = unitVec.getY();+    z = unitVec.getZ();+    xy = ( x * y );+    yz = ( y * z );+    zx = ( z * x );+    oneMinusC = ( 1.0f - c );+    return Matrix3(+        Vector3( ( ( ( x * x ) * oneMinusC ) + c ), ( ( xy * oneMinusC ) + ( z * s ) ), ( ( zx * oneMinusC ) - ( y * s ) ) ),+        Vector3( ( ( xy * oneMinusC ) - ( z * s ) ), ( ( ( y * y ) * oneMinusC ) + c ), ( ( yz * oneMinusC ) + ( x * s ) ) ),+        Vector3( ( ( zx * oneMinusC ) + ( y * s ) ), ( ( yz * oneMinusC ) - ( x * s ) ), ( ( ( z * z ) * oneMinusC ) + c ) )+    );+}++inline const Matrix3 Matrix3::rotation( const Quat & unitQuat )+{+    return Matrix3( unitQuat );+}++inline const Matrix3 Matrix3::scale( const Vector3 & scaleVec )+{+    return Matrix3(+        Vector3( scaleVec.getX(), 0.0f, 0.0f ),+        Vector3( 0.0f, scaleVec.getY(), 0.0f ),+        Vector3( 0.0f, 0.0f, scaleVec.getZ() )+    );+}++inline const Matrix3 appendScale( const Matrix3 & mat, const Vector3 & scaleVec )+{+    return Matrix3(+        ( mat.getCol0() * scaleVec.getX( ) ),+        ( mat.getCol1() * scaleVec.getY( ) ),+        ( mat.getCol2() * scaleVec.getZ( ) )+    );+}++inline const Matrix3 prependScale( const Vector3 & scaleVec, const Matrix3 & mat )+{+    return Matrix3(+        mulPerElem( mat.getCol0(), scaleVec ),+        mulPerElem( mat.getCol1(), scaleVec ),+        mulPerElem( mat.getCol2(), scaleVec )+    );+}++inline const Matrix3 select( const Matrix3 & mat0, const Matrix3 & mat1, bool select1 )+{+    return Matrix3(+        select( mat0.getCol0(), mat1.getCol0(), select1 ),+        select( mat0.getCol1(), mat1.getCol1(), select1 ),+        select( mat0.getCol2(), mat1.getCol2(), select1 )+    );+}++#ifdef _VECTORMATH_DEBUG++inline void print( const Matrix3 & mat )+{+    print( mat.getRow( 0 ) );+    print( mat.getRow( 1 ) );+    print( mat.getRow( 2 ) );+}++inline void print( const Matrix3 & mat, const char * name )+{+    printf("%s:\n", name);+    print( mat );+}++#endif++inline Matrix4::Matrix4( const Matrix4 & mat )+{+    mCol0 = mat.mCol0;+    mCol1 = mat.mCol1;+    mCol2 = mat.mCol2;+    mCol3 = mat.mCol3;+}++inline Matrix4::Matrix4( float scalar )+{+    mCol0 = Vector4( scalar );+    mCol1 = Vector4( scalar );+    mCol2 = Vector4( scalar );+    mCol3 = Vector4( scalar );+}++inline Matrix4::Matrix4( const Transform3 & mat )+{+    mCol0 = Vector4( mat.getCol0(), 0.0f );+    mCol1 = Vector4( mat.getCol1(), 0.0f );+    mCol2 = Vector4( mat.getCol2(), 0.0f );+    mCol3 = Vector4( mat.getCol3(), 1.0f );+}++inline Matrix4::Matrix4( const Vector4 & _col0, const Vector4 & _col1, const Vector4 & _col2, const Vector4 & _col3 )+{+    mCol0 = _col0;+    mCol1 = _col1;+    mCol2 = _col2;+    mCol3 = _col3;+}++inline Matrix4::Matrix4( const Matrix3 & mat, const Vector3 & translateVec )+{+    mCol0 = Vector4( mat.getCol0(), 0.0f );+    mCol1 = Vector4( mat.getCol1(), 0.0f );+    mCol2 = Vector4( mat.getCol2(), 0.0f );+    mCol3 = Vector4( translateVec, 1.0f );+}++inline Matrix4::Matrix4( const Quat & unitQuat, const Vector3 & translateVec )+{+    Matrix3 mat;+    mat = Matrix3( unitQuat );+    mCol0 = Vector4( mat.getCol0(), 0.0f );+    mCol1 = Vector4( mat.getCol1(), 0.0f );+    mCol2 = Vector4( mat.getCol2(), 0.0f );+    mCol3 = Vector4( translateVec, 1.0f );+}++inline Matrix4 & Matrix4::setCol0( const Vector4 & _col0 )+{+    mCol0 = _col0;+    return *this;+}++inline Matrix4 & Matrix4::setCol1( const Vector4 & _col1 )+{+    mCol1 = _col1;+    return *this;+}++inline Matrix4 & Matrix4::setCol2( const Vector4 & _col2 )+{+    mCol2 = _col2;+    return *this;+}++inline Matrix4 & Matrix4::setCol3( const Vector4 & _col3 )+{+    mCol3 = _col3;+    return *this;+}++inline Matrix4 & Matrix4::setCol( int col, const Vector4 & vec )+{+    *(&mCol0 + col) = vec;+    return *this;+}++inline Matrix4 & Matrix4::setRow( int row, const Vector4 & vec )+{+    mCol0.setElem( row, vec.getElem( 0 ) );+    mCol1.setElem( row, vec.getElem( 1 ) );+    mCol2.setElem( row, vec.getElem( 2 ) );+    mCol3.setElem( row, vec.getElem( 3 ) );+    return *this;+}++inline Matrix4 & Matrix4::setElem( int col, int row, float val )+{+    Vector4 tmpV3_0;+    tmpV3_0 = this->getCol( col );+    tmpV3_0.setElem( row, val );+    this->setCol( col, tmpV3_0 );+    return *this;+}++inline float Matrix4::getElem( int col, int row ) const+{+    return this->getCol( col ).getElem( row );+}++inline const Vector4 Matrix4::getCol0( ) const+{+    return mCol0;+}++inline const Vector4 Matrix4::getCol1( ) const+{+    return mCol1;+}++inline const Vector4 Matrix4::getCol2( ) const+{+    return mCol2;+}++inline const Vector4 Matrix4::getCol3( ) const+{+    return mCol3;+}++inline const Vector4 Matrix4::getCol( int col ) const+{+    return *(&mCol0 + col);+}++inline const Vector4 Matrix4::getRow( int row ) const+{+    return Vector4( mCol0.getElem( row ), mCol1.getElem( row ), mCol2.getElem( row ), mCol3.getElem( row ) );+}++inline Vector4 & Matrix4::operator []( int col )+{+    return *(&mCol0 + col);+}++inline const Vector4 Matrix4::operator []( int col ) const+{+    return *(&mCol0 + col);+}++inline Matrix4 & Matrix4::operator =( const Matrix4 & mat )+{+    mCol0 = mat.mCol0;+    mCol1 = mat.mCol1;+    mCol2 = mat.mCol2;+    mCol3 = mat.mCol3;+    return *this;+}++inline const Matrix4 transpose( const Matrix4 & mat )+{+    return Matrix4(+        Vector4( mat.getCol0().getX(), mat.getCol1().getX(), mat.getCol2().getX(), mat.getCol3().getX() ),+        Vector4( mat.getCol0().getY(), mat.getCol1().getY(), mat.getCol2().getY(), mat.getCol3().getY() ),+        Vector4( mat.getCol0().getZ(), mat.getCol1().getZ(), mat.getCol2().getZ(), mat.getCol3().getZ() ),+        Vector4( mat.getCol0().getW(), mat.getCol1().getW(), mat.getCol2().getW(), mat.getCol3().getW() )+    );+}++inline const Matrix4 inverse( const Matrix4 & mat )+{+    Vector4 res0, res1, res2, res3;+    float mA, mB, mC, mD, mE, mF, mG, mH, mI, mJ, mK, mL, mM, mN, mO, mP, tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, detInv;+    mA = mat.getCol0().getX();+    mB = mat.getCol0().getY();+    mC = mat.getCol0().getZ();+    mD = mat.getCol0().getW();+    mE = mat.getCol1().getX();+    mF = mat.getCol1().getY();+    mG = mat.getCol1().getZ();+    mH = mat.getCol1().getW();+    mI = mat.getCol2().getX();+    mJ = mat.getCol2().getY();+    mK = mat.getCol2().getZ();+    mL = mat.getCol2().getW();+    mM = mat.getCol3().getX();+    mN = mat.getCol3().getY();+    mO = mat.getCol3().getZ();+    mP = mat.getCol3().getW();+    tmp0 = ( ( mK * mD ) - ( mC * mL ) );+    tmp1 = ( ( mO * mH ) - ( mG * mP ) );+    tmp2 = ( ( mB * mK ) - ( mJ * mC ) );+    tmp3 = ( ( mF * mO ) - ( mN * mG ) );+    tmp4 = ( ( mJ * mD ) - ( mB * mL ) );+    tmp5 = ( ( mN * mH ) - ( mF * mP ) );+    res0.setX( ( ( ( mJ * tmp1 ) - ( mL * tmp3 ) ) - ( mK * tmp5 ) ) );+    res0.setY( ( ( ( mN * tmp0 ) - ( mP * tmp2 ) ) - ( mO * tmp4 ) ) );+    res0.setZ( ( ( ( mD * tmp3 ) + ( mC * tmp5 ) ) - ( mB * tmp1 ) ) );+    res0.setW( ( ( ( mH * tmp2 ) + ( mG * tmp4 ) ) - ( mF * tmp0 ) ) );+    detInv = ( 1.0f / ( ( ( ( mA * res0.getX() ) + ( mE * res0.getY() ) ) + ( mI * res0.getZ() ) ) + ( mM * res0.getW() ) ) );+    res1.setX( ( mI * tmp1 ) );+    res1.setY( ( mM * tmp0 ) );+    res1.setZ( ( mA * tmp1 ) );+    res1.setW( ( mE * tmp0 ) );+    res3.setX( ( mI * tmp3 ) );+    res3.setY( ( mM * tmp2 ) );+    res3.setZ( ( mA * tmp3 ) );+    res3.setW( ( mE * tmp2 ) );+    res2.setX( ( mI * tmp5 ) );+    res2.setY( ( mM * tmp4 ) );+    res2.setZ( ( mA * tmp5 ) );+    res2.setW( ( mE * tmp4 ) );+    tmp0 = ( ( mI * mB ) - ( mA * mJ ) );+    tmp1 = ( ( mM * mF ) - ( mE * mN ) );+    tmp2 = ( ( mI * mD ) - ( mA * mL ) );+    tmp3 = ( ( mM * mH ) - ( mE * mP ) );+    tmp4 = ( ( mI * mC ) - ( mA * mK ) );+    tmp5 = ( ( mM * mG ) - ( mE * mO ) );+    res2.setX( ( ( ( mL * tmp1 ) - ( mJ * tmp3 ) ) + res2.getX() ) );+    res2.setY( ( ( ( mP * tmp0 ) - ( mN * tmp2 ) ) + res2.getY() ) );+    res2.setZ( ( ( ( mB * tmp3 ) - ( mD * tmp1 ) ) - res2.getZ() ) );+    res2.setW( ( ( ( mF * tmp2 ) - ( mH * tmp0 ) ) - res2.getW() ) );+    res3.setX( ( ( ( mJ * tmp5 ) - ( mK * tmp1 ) ) + res3.getX() ) );+    res3.setY( ( ( ( mN * tmp4 ) - ( mO * tmp0 ) ) + res3.getY() ) );+    res3.setZ( ( ( ( mC * tmp1 ) - ( mB * tmp5 ) ) - res3.getZ() ) );+    res3.setW( ( ( ( mG * tmp0 ) - ( mF * tmp4 ) ) - res3.getW() ) );+    res1.setX( ( ( ( mK * tmp3 ) - ( mL * tmp5 ) ) - res1.getX() ) );+    res1.setY( ( ( ( mO * tmp2 ) - ( mP * tmp4 ) ) - res1.getY() ) );+    res1.setZ( ( ( ( mD * tmp5 ) - ( mC * tmp3 ) ) + res1.getZ() ) );+    res1.setW( ( ( ( mH * tmp4 ) - ( mG * tmp2 ) ) + res1.getW() ) );+    return Matrix4(+        ( res0 * detInv ),+        ( res1 * detInv ),+        ( res2 * detInv ),+        ( res3 * detInv )+    );+}++inline const Matrix4 affineInverse( const Matrix4 & mat )+{+    Transform3 affineMat;+    affineMat.setCol0( mat.getCol0().getXYZ( ) );+    affineMat.setCol1( mat.getCol1().getXYZ( ) );+    affineMat.setCol2( mat.getCol2().getXYZ( ) );+    affineMat.setCol3( mat.getCol3().getXYZ( ) );+    return Matrix4( inverse( affineMat ) );+}++inline const Matrix4 orthoInverse( const Matrix4 & mat )+{+    Transform3 affineMat;+    affineMat.setCol0( mat.getCol0().getXYZ( ) );+    affineMat.setCol1( mat.getCol1().getXYZ( ) );+    affineMat.setCol2( mat.getCol2().getXYZ( ) );+    affineMat.setCol3( mat.getCol3().getXYZ( ) );+    return Matrix4( orthoInverse( affineMat ) );+}++inline float determinant( const Matrix4 & mat )+{+    float dx, dy, dz, dw, mA, mB, mC, mD, mE, mF, mG, mH, mI, mJ, mK, mL, mM, mN, mO, mP, tmp0, tmp1, tmp2, tmp3, tmp4, tmp5;+    mA = mat.getCol0().getX();+    mB = mat.getCol0().getY();+    mC = mat.getCol0().getZ();+    mD = mat.getCol0().getW();+    mE = mat.getCol1().getX();+    mF = mat.getCol1().getY();+    mG = mat.getCol1().getZ();+    mH = mat.getCol1().getW();+    mI = mat.getCol2().getX();+    mJ = mat.getCol2().getY();+    mK = mat.getCol2().getZ();+    mL = mat.getCol2().getW();+    mM = mat.getCol3().getX();+    mN = mat.getCol3().getY();+    mO = mat.getCol3().getZ();+    mP = mat.getCol3().getW();+    tmp0 = ( ( mK * mD ) - ( mC * mL ) );+    tmp1 = ( ( mO * mH ) - ( mG * mP ) );+    tmp2 = ( ( mB * mK ) - ( mJ * mC ) );+    tmp3 = ( ( mF * mO ) - ( mN * mG ) );+    tmp4 = ( ( mJ * mD ) - ( mB * mL ) );+    tmp5 = ( ( mN * mH ) - ( mF * mP ) );+    dx = ( ( ( mJ * tmp1 ) - ( mL * tmp3 ) ) - ( mK * tmp5 ) );+    dy = ( ( ( mN * tmp0 ) - ( mP * tmp2 ) ) - ( mO * tmp4 ) );+    dz = ( ( ( mD * tmp3 ) + ( mC * tmp5 ) ) - ( mB * tmp1 ) );+    dw = ( ( ( mH * tmp2 ) + ( mG * tmp4 ) ) - ( mF * tmp0 ) );+    return ( ( ( ( mA * dx ) + ( mE * dy ) ) + ( mI * dz ) ) + ( mM * dw ) );+}++inline const Matrix4 Matrix4::operator +( const Matrix4 & mat ) const+{+    return Matrix4(+        ( mCol0 + mat.mCol0 ),+        ( mCol1 + mat.mCol1 ),+        ( mCol2 + mat.mCol2 ),+        ( mCol3 + mat.mCol3 )+    );+}++inline const Matrix4 Matrix4::operator -( const Matrix4 & mat ) const+{+    return Matrix4(+        ( mCol0 - mat.mCol0 ),+        ( mCol1 - mat.mCol1 ),+        ( mCol2 - mat.mCol2 ),+        ( mCol3 - mat.mCol3 )+    );+}++inline Matrix4 & Matrix4::operator +=( const Matrix4 & mat )+{+    *this = *this + mat;+    return *this;+}++inline Matrix4 & Matrix4::operator -=( const Matrix4 & mat )+{+    *this = *this - mat;+    return *this;+}++inline const Matrix4 Matrix4::operator -( ) const+{+    return Matrix4(+        ( -mCol0 ),+        ( -mCol1 ),+        ( -mCol2 ),+        ( -mCol3 )+    );+}++inline const Matrix4 absPerElem( const Matrix4 & mat )+{+    return Matrix4(+        absPerElem( mat.getCol0() ),+        absPerElem( mat.getCol1() ),+        absPerElem( mat.getCol2() ),+        absPerElem( mat.getCol3() )+    );+}++inline const Matrix4 Matrix4::operator *( float scalar ) const+{+    return Matrix4(+        ( mCol0 * scalar ),+        ( mCol1 * scalar ),+        ( mCol2 * scalar ),+        ( mCol3 * scalar )+    );+}++inline Matrix4 & Matrix4::operator *=( float scalar )+{+    *this = *this * scalar;+    return *this;+}++inline const Matrix4 operator *( float scalar, const Matrix4 & mat )+{+    return mat * scalar;+}++inline const Vector4 Matrix4::operator *( const Vector4 & vec ) const+{+    return Vector4(+        ( ( ( ( mCol0.getX() * vec.getX() ) + ( mCol1.getX() * vec.getY() ) ) + ( mCol2.getX() * vec.getZ() ) ) + ( mCol3.getX() * vec.getW() ) ),+        ( ( ( ( mCol0.getY() * vec.getX() ) + ( mCol1.getY() * vec.getY() ) ) + ( mCol2.getY() * vec.getZ() ) ) + ( mCol3.getY() * vec.getW() ) ),+        ( ( ( ( mCol0.getZ() * vec.getX() ) + ( mCol1.getZ() * vec.getY() ) ) + ( mCol2.getZ() * vec.getZ() ) ) + ( mCol3.getZ() * vec.getW() ) ),+        ( ( ( ( mCol0.getW() * vec.getX() ) + ( mCol1.getW() * vec.getY() ) ) + ( mCol2.getW() * vec.getZ() ) ) + ( mCol3.getW() * vec.getW() ) )+    );+}++inline const Vector4 Matrix4::operator *( const Vector3 & vec ) const+{+    return Vector4(+        ( ( ( mCol0.getX() * vec.getX() ) + ( mCol1.getX() * vec.getY() ) ) + ( mCol2.getX() * vec.getZ() ) ),+        ( ( ( mCol0.getY() * vec.getX() ) + ( mCol1.getY() * vec.getY() ) ) + ( mCol2.getY() * vec.getZ() ) ),+        ( ( ( mCol0.getZ() * vec.getX() ) + ( mCol1.getZ() * vec.getY() ) ) + ( mCol2.getZ() * vec.getZ() ) ),+        ( ( ( mCol0.getW() * vec.getX() ) + ( mCol1.getW() * vec.getY() ) ) + ( mCol2.getW() * vec.getZ() ) )+    );+}++inline const Vector4 Matrix4::operator *( const Point3 & pnt ) const+{+    return Vector4(+        ( ( ( ( mCol0.getX() * pnt.getX() ) + ( mCol1.getX() * pnt.getY() ) ) + ( mCol2.getX() * pnt.getZ() ) ) + mCol3.getX() ),+        ( ( ( ( mCol0.getY() * pnt.getX() ) + ( mCol1.getY() * pnt.getY() ) ) + ( mCol2.getY() * pnt.getZ() ) ) + mCol3.getY() ),+        ( ( ( ( mCol0.getZ() * pnt.getX() ) + ( mCol1.getZ() * pnt.getY() ) ) + ( mCol2.getZ() * pnt.getZ() ) ) + mCol3.getZ() ),+        ( ( ( ( mCol0.getW() * pnt.getX() ) + ( mCol1.getW() * pnt.getY() ) ) + ( mCol2.getW() * pnt.getZ() ) ) + mCol3.getW() )+    );+}++inline const Matrix4 Matrix4::operator *( const Matrix4 & mat ) const+{+    return Matrix4(+        ( *this * mat.mCol0 ),+        ( *this * mat.mCol1 ),+        ( *this * mat.mCol2 ),+        ( *this * mat.mCol3 )+    );+}++inline Matrix4 & Matrix4::operator *=( const Matrix4 & mat )+{+    *this = *this * mat;+    return *this;+}++inline const Matrix4 Matrix4::operator *( const Transform3 & tfrm ) const+{+    return Matrix4(+        ( *this * tfrm.getCol0() ),+        ( *this * tfrm.getCol1() ),+        ( *this * tfrm.getCol2() ),+        ( *this * Point3( tfrm.getCol3() ) )+    );+}++inline Matrix4 & Matrix4::operator *=( const Transform3 & tfrm )+{+    *this = *this * tfrm;+    return *this;+}++inline const Matrix4 mulPerElem( const Matrix4 & mat0, const Matrix4 & mat1 )+{+    return Matrix4(+        mulPerElem( mat0.getCol0(), mat1.getCol0() ),+        mulPerElem( mat0.getCol1(), mat1.getCol1() ),+        mulPerElem( mat0.getCol2(), mat1.getCol2() ),+        mulPerElem( mat0.getCol3(), mat1.getCol3() )+    );+}++inline const Matrix4 Matrix4::identity( )+{+    return Matrix4(+        Vector4::xAxis( ),+        Vector4::yAxis( ),+        Vector4::zAxis( ),+        Vector4::wAxis( )+    );+}++inline Matrix4 & Matrix4::setUpper3x3( const Matrix3 & mat3 )+{+    mCol0.setXYZ( mat3.getCol0() );+    mCol1.setXYZ( mat3.getCol1() );+    mCol2.setXYZ( mat3.getCol2() );+    return *this;+}++inline const Matrix3 Matrix4::getUpper3x3( ) const+{+    return Matrix3(+        mCol0.getXYZ( ),+        mCol1.getXYZ( ),+        mCol2.getXYZ( )+    );+}++inline Matrix4 & Matrix4::setTranslation( const Vector3 & translateVec )+{+    mCol3.setXYZ( translateVec );+    return *this;+}++inline const Vector3 Matrix4::getTranslation( ) const+{+    return mCol3.getXYZ( );+}++inline const Matrix4 Matrix4::rotationX( float radians )+{+    float s, c;+    s = sinf( radians );+    c = cosf( radians );+    return Matrix4(+        Vector4::xAxis( ),+        Vector4( 0.0f, c, s, 0.0f ),+        Vector4( 0.0f, -s, c, 0.0f ),+        Vector4::wAxis( )+    );+}++inline const Matrix4 Matrix4::rotationY( float radians )+{+    float s, c;+    s = sinf( radians );+    c = cosf( radians );+    return Matrix4(+        Vector4( c, 0.0f, -s, 0.0f ),+        Vector4::yAxis( ),+        Vector4( s, 0.0f, c, 0.0f ),+        Vector4::wAxis( )+    );+}++inline const Matrix4 Matrix4::rotationZ( float radians )+{+    float s, c;+    s = sinf( radians );+    c = cosf( radians );+    return Matrix4(+        Vector4( c, s, 0.0f, 0.0f ),+        Vector4( -s, c, 0.0f, 0.0f ),+        Vector4::zAxis( ),+        Vector4::wAxis( )+    );+}++inline const Matrix4 Matrix4::rotationZYX( const Vector3 & radiansXYZ )+{+    float sX, cX, sY, cY, sZ, cZ, tmp0, tmp1;+    sX = sinf( radiansXYZ.getX() );+    cX = cosf( radiansXYZ.getX() );+    sY = sinf( radiansXYZ.getY() );+    cY = cosf( radiansXYZ.getY() );+    sZ = sinf( radiansXYZ.getZ() );+    cZ = cosf( radiansXYZ.getZ() );+    tmp0 = ( cZ * sY );+    tmp1 = ( sZ * sY );+    return Matrix4(+        Vector4( ( cZ * cY ), ( sZ * cY ), -sY, 0.0f ),+        Vector4( ( ( tmp0 * sX ) - ( sZ * cX ) ), ( ( tmp1 * sX ) + ( cZ * cX ) ), ( cY * sX ), 0.0f ),+        Vector4( ( ( tmp0 * cX ) + ( sZ * sX ) ), ( ( tmp1 * cX ) - ( cZ * sX ) ), ( cY * cX ), 0.0f ),+        Vector4::wAxis( )+    );+}++inline const Matrix4 Matrix4::rotation( float radians, const Vector3 & unitVec )+{+    float x, y, z, s, c, oneMinusC, xy, yz, zx;+    s = sinf( radians );+    c = cosf( radians );+    x = unitVec.getX();+    y = unitVec.getY();+    z = unitVec.getZ();+    xy = ( x * y );+    yz = ( y * z );+    zx = ( z * x );+    oneMinusC = ( 1.0f - c );+    return Matrix4(+        Vector4( ( ( ( x * x ) * oneMinusC ) + c ), ( ( xy * oneMinusC ) + ( z * s ) ), ( ( zx * oneMinusC ) - ( y * s ) ), 0.0f ),+        Vector4( ( ( xy * oneMinusC ) - ( z * s ) ), ( ( ( y * y ) * oneMinusC ) + c ), ( ( yz * oneMinusC ) + ( x * s ) ), 0.0f ),+        Vector4( ( ( zx * oneMinusC ) + ( y * s ) ), ( ( yz * oneMinusC ) - ( x * s ) ), ( ( ( z * z ) * oneMinusC ) + c ), 0.0f ),+        Vector4::wAxis( )+    );+}++inline const Matrix4 Matrix4::rotation( const Quat & unitQuat )+{+    return Matrix4( Transform3::rotation( unitQuat ) );+}++inline const Matrix4 Matrix4::scale( const Vector3 & scaleVec )+{+    return Matrix4(+        Vector4( scaleVec.getX(), 0.0f, 0.0f, 0.0f ),+        Vector4( 0.0f, scaleVec.getY(), 0.0f, 0.0f ),+        Vector4( 0.0f, 0.0f, scaleVec.getZ(), 0.0f ),+        Vector4::wAxis( )+    );+}++inline const Matrix4 appendScale( const Matrix4 & mat, const Vector3 & scaleVec )+{+    return Matrix4(+        ( mat.getCol0() * scaleVec.getX( ) ),+        ( mat.getCol1() * scaleVec.getY( ) ),+        ( mat.getCol2() * scaleVec.getZ( ) ),+        mat.getCol3()+    );+}++inline const Matrix4 prependScale( const Vector3 & scaleVec, const Matrix4 & mat )+{+    Vector4 scale4;+    scale4 = Vector4( scaleVec, 1.0f );+    return Matrix4(+        mulPerElem( mat.getCol0(), scale4 ),+        mulPerElem( mat.getCol1(), scale4 ),+        mulPerElem( mat.getCol2(), scale4 ),+        mulPerElem( mat.getCol3(), scale4 )+    );+}++inline const Matrix4 Matrix4::translation( const Vector3 & translateVec )+{+    return Matrix4(+        Vector4::xAxis( ),+        Vector4::yAxis( ),+        Vector4::zAxis( ),+        Vector4( translateVec, 1.0f )+    );+}++inline const Matrix4 Matrix4::lookAt( const Point3 & eyePos, const Point3 & lookAtPos, const Vector3 & upVec )+{+    Matrix4 m4EyeFrame;+    Vector3 v3X, v3Y, v3Z;+    v3Y = normalize( upVec );+    v3Z = normalize( ( eyePos - lookAtPos ) );+    v3X = normalize( cross( v3Y, v3Z ) );+    v3Y = cross( v3Z, v3X );+    m4EyeFrame = Matrix4( Vector4( v3X ), Vector4( v3Y ), Vector4( v3Z ), Vector4( eyePos ) );+    return orthoInverse( m4EyeFrame );+}++inline const Matrix4 Matrix4::perspective( float fovyRadians, float aspect, float zNear, float zFar )+{+    float f, rangeInv;+    f = tanf( ( (float)( _VECTORMATH_PI_OVER_2 ) - ( 0.5f * fovyRadians ) ) );+    rangeInv = ( 1.0f / ( zNear - zFar ) );+    return Matrix4(+        Vector4( ( f / aspect ), 0.0f, 0.0f, 0.0f ),+        Vector4( 0.0f, f, 0.0f, 0.0f ),+        Vector4( 0.0f, 0.0f, ( ( zNear + zFar ) * rangeInv ), -1.0f ),+        Vector4( 0.0f, 0.0f, ( ( ( zNear * zFar ) * rangeInv ) * 2.0f ), 0.0f )+    );+}++inline const Matrix4 Matrix4::frustum( float left, float right, float bottom, float top, float zNear, float zFar )+{+    float sum_rl, sum_tb, sum_nf, inv_rl, inv_tb, inv_nf, n2;+    sum_rl = ( right + left );+    sum_tb = ( top + bottom );+    sum_nf = ( zNear + zFar );+    inv_rl = ( 1.0f / ( right - left ) );+    inv_tb = ( 1.0f / ( top - bottom ) );+    inv_nf = ( 1.0f / ( zNear - zFar ) );+    n2 = ( zNear + zNear );+    return Matrix4(+        Vector4( ( n2 * inv_rl ), 0.0f, 0.0f, 0.0f ),+        Vector4( 0.0f, ( n2 * inv_tb ), 0.0f, 0.0f ),+        Vector4( ( sum_rl * inv_rl ), ( sum_tb * inv_tb ), ( sum_nf * inv_nf ), -1.0f ),+        Vector4( 0.0f, 0.0f, ( ( n2 * inv_nf ) * zFar ), 0.0f )+    );+}++inline const Matrix4 Matrix4::orthographic( float left, float right, float bottom, float top, float zNear, float zFar )+{+    float sum_rl, sum_tb, sum_nf, inv_rl, inv_tb, inv_nf;+    sum_rl = ( right + left );+    sum_tb = ( top + bottom );+    sum_nf = ( zNear + zFar );+    inv_rl = ( 1.0f / ( right - left ) );+    inv_tb = ( 1.0f / ( top - bottom ) );+    inv_nf = ( 1.0f / ( zNear - zFar ) );+    return Matrix4(+        Vector4( ( inv_rl + inv_rl ), 0.0f, 0.0f, 0.0f ),+        Vector4( 0.0f, ( inv_tb + inv_tb ), 0.0f, 0.0f ),+        Vector4( 0.0f, 0.0f, ( inv_nf + inv_nf ), 0.0f ),+        Vector4( ( -sum_rl * inv_rl ), ( -sum_tb * inv_tb ), ( sum_nf * inv_nf ), 1.0f )+    );+}++inline const Matrix4 select( const Matrix4 & mat0, const Matrix4 & mat1, bool select1 )+{+    return Matrix4(+        select( mat0.getCol0(), mat1.getCol0(), select1 ),+        select( mat0.getCol1(), mat1.getCol1(), select1 ),+        select( mat0.getCol2(), mat1.getCol2(), select1 ),+        select( mat0.getCol3(), mat1.getCol3(), select1 )+    );+}++#ifdef _VECTORMATH_DEBUG++inline void print( const Matrix4 & mat )+{+    print( mat.getRow( 0 ) );+    print( mat.getRow( 1 ) );+    print( mat.getRow( 2 ) );+    print( mat.getRow( 3 ) );+}++inline void print( const Matrix4 & mat, const char * name )+{+    printf("%s:\n", name);+    print( mat );+}++#endif++inline Transform3::Transform3( const Transform3 & tfrm )+{+    mCol0 = tfrm.mCol0;+    mCol1 = tfrm.mCol1;+    mCol2 = tfrm.mCol2;+    mCol3 = tfrm.mCol3;+}++inline Transform3::Transform3( float scalar )+{+    mCol0 = Vector3( scalar );+    mCol1 = Vector3( scalar );+    mCol2 = Vector3( scalar );+    mCol3 = Vector3( scalar );+}++inline Transform3::Transform3( const Vector3 & _col0, const Vector3 & _col1, const Vector3 & _col2, const Vector3 & _col3 )+{+    mCol0 = _col0;+    mCol1 = _col1;+    mCol2 = _col2;+    mCol3 = _col3;+}++inline Transform3::Transform3( const Matrix3 & tfrm, const Vector3 & translateVec )+{+    this->setUpper3x3( tfrm );+    this->setTranslation( translateVec );+}++inline Transform3::Transform3( const Quat & unitQuat, const Vector3 & translateVec )+{+    this->setUpper3x3( Matrix3( unitQuat ) );+    this->setTranslation( translateVec );+}++inline Transform3 & Transform3::setCol0( const Vector3 & _col0 )+{+    mCol0 = _col0;+    return *this;+}++inline Transform3 & Transform3::setCol1( const Vector3 & _col1 )+{+    mCol1 = _col1;+    return *this;+}++inline Transform3 & Transform3::setCol2( const Vector3 & _col2 )+{+    mCol2 = _col2;+    return *this;+}++inline Transform3 & Transform3::setCol3( const Vector3 & _col3 )+{+    mCol3 = _col3;+    return *this;+}++inline Transform3 & Transform3::setCol( int col, const Vector3 & vec )+{+    *(&mCol0 + col) = vec;+    return *this;+}++inline Transform3 & Transform3::setRow( int row, const Vector4 & vec )+{+    mCol0.setElem( row, vec.getElem( 0 ) );+    mCol1.setElem( row, vec.getElem( 1 ) );+    mCol2.setElem( row, vec.getElem( 2 ) );+    mCol3.setElem( row, vec.getElem( 3 ) );+    return *this;+}++inline Transform3 & Transform3::setElem( int col, int row, float val )+{+    Vector3 tmpV3_0;+    tmpV3_0 = this->getCol( col );+    tmpV3_0.setElem( row, val );+    this->setCol( col, tmpV3_0 );+    return *this;+}++inline float Transform3::getElem( int col, int row ) const+{+    return this->getCol( col ).getElem( row );+}++inline const Vector3 Transform3::getCol0( ) const+{+    return mCol0;+}++inline const Vector3 Transform3::getCol1( ) const+{+    return mCol1;+}++inline const Vector3 Transform3::getCol2( ) const+{+    return mCol2;+}++inline const Vector3 Transform3::getCol3( ) const+{+    return mCol3;+}++inline const Vector3 Transform3::getCol( int col ) const+{+    return *(&mCol0 + col);+}++inline const Vector4 Transform3::getRow( int row ) const+{+    return Vector4( mCol0.getElem( row ), mCol1.getElem( row ), mCol2.getElem( row ), mCol3.getElem( row ) );+}++inline Vector3 & Transform3::operator []( int col )+{+    return *(&mCol0 + col);+}++inline const Vector3 Transform3::operator []( int col ) const+{+    return *(&mCol0 + col);+}++inline Transform3 & Transform3::operator =( const Transform3 & tfrm )+{+    mCol0 = tfrm.mCol0;+    mCol1 = tfrm.mCol1;+    mCol2 = tfrm.mCol2;+    mCol3 = tfrm.mCol3;+    return *this;+}++inline const Transform3 inverse( const Transform3 & tfrm )+{+    Vector3 tmp0, tmp1, tmp2, inv0, inv1, inv2;+    float detinv;+    tmp0 = cross( tfrm.getCol1(), tfrm.getCol2() );+    tmp1 = cross( tfrm.getCol2(), tfrm.getCol0() );+    tmp2 = cross( tfrm.getCol0(), tfrm.getCol1() );+    detinv = ( 1.0f / dot( tfrm.getCol2(), tmp2 ) );+    inv0 = Vector3( ( tmp0.getX() * detinv ), ( tmp1.getX() * detinv ), ( tmp2.getX() * detinv ) );+    inv1 = Vector3( ( tmp0.getY() * detinv ), ( tmp1.getY() * detinv ), ( tmp2.getY() * detinv ) );+    inv2 = Vector3( ( tmp0.getZ() * detinv ), ( tmp1.getZ() * detinv ), ( tmp2.getZ() * detinv ) );+    return Transform3(+        inv0,+        inv1,+        inv2,+        Vector3( ( -( ( inv0 * tfrm.getCol3().getX() ) + ( ( inv1 * tfrm.getCol3().getY() ) + ( inv2 * tfrm.getCol3().getZ() ) ) ) ) )+    );+}++inline const Transform3 orthoInverse( const Transform3 & tfrm )+{+    Vector3 inv0, inv1, inv2;+    inv0 = Vector3( tfrm.getCol0().getX(), tfrm.getCol1().getX(), tfrm.getCol2().getX() );+    inv1 = Vector3( tfrm.getCol0().getY(), tfrm.getCol1().getY(), tfrm.getCol2().getY() );+    inv2 = Vector3( tfrm.getCol0().getZ(), tfrm.getCol1().getZ(), tfrm.getCol2().getZ() );+    return Transform3(+        inv0,+        inv1,+        inv2,+        Vector3( ( -( ( inv0 * tfrm.getCol3().getX() ) + ( ( inv1 * tfrm.getCol3().getY() ) + ( inv2 * tfrm.getCol3().getZ() ) ) ) ) )+    );+}++inline const Transform3 absPerElem( const Transform3 & tfrm )+{+    return Transform3(+        absPerElem( tfrm.getCol0() ),+        absPerElem( tfrm.getCol1() ),+        absPerElem( tfrm.getCol2() ),+        absPerElem( tfrm.getCol3() )+    );+}++inline const Vector3 Transform3::operator *( const Vector3 & vec ) const+{+    return Vector3(+        ( ( ( mCol0.getX() * vec.getX() ) + ( mCol1.getX() * vec.getY() ) ) + ( mCol2.getX() * vec.getZ() ) ),+        ( ( ( mCol0.getY() * vec.getX() ) + ( mCol1.getY() * vec.getY() ) ) + ( mCol2.getY() * vec.getZ() ) ),+        ( ( ( mCol0.getZ() * vec.getX() ) + ( mCol1.getZ() * vec.getY() ) ) + ( mCol2.getZ() * vec.getZ() ) )+    );+}++inline const Point3 Transform3::operator *( const Point3 & pnt ) const+{+    return Point3(+        ( ( ( ( mCol0.getX() * pnt.getX() ) + ( mCol1.getX() * pnt.getY() ) ) + ( mCol2.getX() * pnt.getZ() ) ) + mCol3.getX() ),+        ( ( ( ( mCol0.getY() * pnt.getX() ) + ( mCol1.getY() * pnt.getY() ) ) + ( mCol2.getY() * pnt.getZ() ) ) + mCol3.getY() ),+        ( ( ( ( mCol0.getZ() * pnt.getX() ) + ( mCol1.getZ() * pnt.getY() ) ) + ( mCol2.getZ() * pnt.getZ() ) ) + mCol3.getZ() )+    );+}++inline const Transform3 Transform3::operator *( const Transform3 & tfrm ) const+{+    return Transform3(+        ( *this * tfrm.mCol0 ),+        ( *this * tfrm.mCol1 ),+        ( *this * tfrm.mCol2 ),+        Vector3( ( *this * Point3( tfrm.mCol3 ) ) )+    );+}++inline Transform3 & Transform3::operator *=( const Transform3 & tfrm )+{+    *this = *this * tfrm;+    return *this;+}++inline const Transform3 mulPerElem( const Transform3 & tfrm0, const Transform3 & tfrm1 )+{+    return Transform3(+        mulPerElem( tfrm0.getCol0(), tfrm1.getCol0() ),+        mulPerElem( tfrm0.getCol1(), tfrm1.getCol1() ),+        mulPerElem( tfrm0.getCol2(), tfrm1.getCol2() ),+        mulPerElem( tfrm0.getCol3(), tfrm1.getCol3() )+    );+}++inline const Transform3 Transform3::identity( )+{+    return Transform3(+        Vector3::xAxis( ),+        Vector3::yAxis( ),+        Vector3::zAxis( ),+        Vector3( 0.0f )+    );+}++inline Transform3 & Transform3::setUpper3x3( const Matrix3 & tfrm )+{+    mCol0 = tfrm.getCol0();+    mCol1 = tfrm.getCol1();+    mCol2 = tfrm.getCol2();+    return *this;+}++inline const Matrix3 Transform3::getUpper3x3( ) const+{+    return Matrix3( mCol0, mCol1, mCol2 );+}++inline Transform3 & Transform3::setTranslation( const Vector3 & translateVec )+{+    mCol3 = translateVec;+    return *this;+}++inline const Vector3 Transform3::getTranslation( ) const+{+    return mCol3;+}++inline const Transform3 Transform3::rotationX( float radians )+{+    float s, c;+    s = sinf( radians );+    c = cosf( radians );+    return Transform3(+        Vector3::xAxis( ),+        Vector3( 0.0f, c, s ),+        Vector3( 0.0f, -s, c ),+        Vector3( 0.0f )+    );+}++inline const Transform3 Transform3::rotationY( float radians )+{+    float s, c;+    s = sinf( radians );+    c = cosf( radians );+    return Transform3(+        Vector3( c, 0.0f, -s ),+        Vector3::yAxis( ),+        Vector3( s, 0.0f, c ),+        Vector3( 0.0f )+    );+}++inline const Transform3 Transform3::rotationZ( float radians )+{+    float s, c;+    s = sinf( radians );+    c = cosf( radians );+    return Transform3(+        Vector3( c, s, 0.0f ),+        Vector3( -s, c, 0.0f ),+        Vector3::zAxis( ),+        Vector3( 0.0f )+    );+}++inline const Transform3 Transform3::rotationZYX( const Vector3 & radiansXYZ )+{+    float sX, cX, sY, cY, sZ, cZ, tmp0, tmp1;+    sX = sinf( radiansXYZ.getX() );+    cX = cosf( radiansXYZ.getX() );+    sY = sinf( radiansXYZ.getY() );+    cY = cosf( radiansXYZ.getY() );+    sZ = sinf( radiansXYZ.getZ() );+    cZ = cosf( radiansXYZ.getZ() );+    tmp0 = ( cZ * sY );+    tmp1 = ( sZ * sY );+    return Transform3(+        Vector3( ( cZ * cY ), ( sZ * cY ), -sY ),+        Vector3( ( ( tmp0 * sX ) - ( sZ * cX ) ), ( ( tmp1 * sX ) + ( cZ * cX ) ), ( cY * sX ) ),+        Vector3( ( ( tmp0 * cX ) + ( sZ * sX ) ), ( ( tmp1 * cX ) - ( cZ * sX ) ), ( cY * cX ) ),+        Vector3( 0.0f )+    );+}++inline const Transform3 Transform3::rotation( float radians, const Vector3 & unitVec )+{+    return Transform3( Matrix3::rotation( radians, unitVec ), Vector3( 0.0f ) );+}++inline const Transform3 Transform3::rotation( const Quat & unitQuat )+{+    return Transform3( Matrix3( unitQuat ), Vector3( 0.0f ) );+}++inline const Transform3 Transform3::scale( const Vector3 & scaleVec )+{+    return Transform3(+        Vector3( scaleVec.getX(), 0.0f, 0.0f ),+        Vector3( 0.0f, scaleVec.getY(), 0.0f ),+        Vector3( 0.0f, 0.0f, scaleVec.getZ() ),+        Vector3( 0.0f )+    );+}++inline const Transform3 appendScale( const Transform3 & tfrm, const Vector3 & scaleVec )+{+    return Transform3(+        ( tfrm.getCol0() * scaleVec.getX( ) ),+        ( tfrm.getCol1() * scaleVec.getY( ) ),+        ( tfrm.getCol2() * scaleVec.getZ( ) ),+        tfrm.getCol3()+    );+}++inline const Transform3 prependScale( const Vector3 & scaleVec, const Transform3 & tfrm )+{+    return Transform3(+        mulPerElem( tfrm.getCol0(), scaleVec ),+        mulPerElem( tfrm.getCol1(), scaleVec ),+        mulPerElem( tfrm.getCol2(), scaleVec ),+        mulPerElem( tfrm.getCol3(), scaleVec )+    );+}++inline const Transform3 Transform3::translation( const Vector3 & translateVec )+{+    return Transform3(+        Vector3::xAxis( ),+        Vector3::yAxis( ),+        Vector3::zAxis( ),+        translateVec+    );+}++inline const Transform3 select( const Transform3 & tfrm0, const Transform3 & tfrm1, bool select1 )+{+    return Transform3(+        select( tfrm0.getCol0(), tfrm1.getCol0(), select1 ),+        select( tfrm0.getCol1(), tfrm1.getCol1(), select1 ),+        select( tfrm0.getCol2(), tfrm1.getCol2(), select1 ),+        select( tfrm0.getCol3(), tfrm1.getCol3(), select1 )+    );+}++#ifdef _VECTORMATH_DEBUG++inline void print( const Transform3 & tfrm )+{+    print( tfrm.getRow( 0 ) );+    print( tfrm.getRow( 1 ) );+    print( tfrm.getRow( 2 ) );+}++inline void print( const Transform3 & tfrm, const char * name )+{+    printf("%s:\n", name);+    print( tfrm );+}++#endif++inline Quat::Quat( const Matrix3 & tfrm )+{+    float trace, radicand, scale, xx, yx, zx, xy, yy, zy, xz, yz, zz, tmpx, tmpy, tmpz, tmpw, qx, qy, qz, qw;+    int negTrace, ZgtX, ZgtY, YgtX;+    int largestXorY, largestYorZ, largestZorX;++    xx = tfrm.getCol0().getX();+    yx = tfrm.getCol0().getY();+    zx = tfrm.getCol0().getZ();+    xy = tfrm.getCol1().getX();+    yy = tfrm.getCol1().getY();+    zy = tfrm.getCol1().getZ();+    xz = tfrm.getCol2().getX();+    yz = tfrm.getCol2().getY();+    zz = tfrm.getCol2().getZ();++    trace = ( ( xx + yy ) + zz );++    negTrace = ( trace < 0.0f );+    ZgtX = zz > xx;+    ZgtY = zz > yy;+    YgtX = yy > xx;+    largestXorY = ( !ZgtX || !ZgtY ) && negTrace;+    largestYorZ = ( YgtX || ZgtX ) && negTrace;+    largestZorX = ( ZgtY || !YgtX ) && negTrace;+    +    if ( largestXorY )+    {+        zz = -zz;+        xy = -xy;+    }+    if ( largestYorZ )+    {+        xx = -xx;+        yz = -yz;+    }+    if ( largestZorX )+    {+        yy = -yy;+        zx = -zx;+    }++    radicand = ( ( ( xx + yy ) + zz ) + 1.0f );+    scale = ( 0.5f * ( 1.0f / sqrtf( radicand ) ) );++    tmpx = ( ( zy - yz ) * scale );+    tmpy = ( ( xz - zx ) * scale );+    tmpz = ( ( yx - xy ) * scale );+    tmpw = ( radicand * scale );+    qx = tmpx;+    qy = tmpy;+    qz = tmpz;+    qw = tmpw;++    if ( largestXorY )+    {+        qx = tmpw;+        qy = tmpz;+        qz = tmpy;+        qw = tmpx;+    }+    if ( largestYorZ )+    {+        tmpx = qx;+        tmpz = qz;+        qx = qy;+        qy = tmpx;+        qz = qw;+        qw = tmpz;+    }++    mX = qx;+    mY = qy;+    mZ = qz;+    mW = qw;+}++inline const Matrix3 outer( const Vector3 & tfrm0, const Vector3 & tfrm1 )+{+    return Matrix3(+        ( tfrm0 * tfrm1.getX( ) ),+        ( tfrm0 * tfrm1.getY( ) ),+        ( tfrm0 * tfrm1.getZ( ) )+    );+}++inline const Matrix4 outer( const Vector4 & tfrm0, const Vector4 & tfrm1 )+{+    return Matrix4(+        ( tfrm0 * tfrm1.getX( ) ),+        ( tfrm0 * tfrm1.getY( ) ),+        ( tfrm0 * tfrm1.getZ( ) ),+        ( tfrm0 * tfrm1.getW( ) )+    );+}++inline const Vector3 rowMul( const Vector3 & vec, const Matrix3 & mat )+{+    return Vector3(+        ( ( ( vec.getX() * mat.getCol0().getX() ) + ( vec.getY() * mat.getCol0().getY() ) ) + ( vec.getZ() * mat.getCol0().getZ() ) ),+        ( ( ( vec.getX() * mat.getCol1().getX() ) + ( vec.getY() * mat.getCol1().getY() ) ) + ( vec.getZ() * mat.getCol1().getZ() ) ),+        ( ( ( vec.getX() * mat.getCol2().getX() ) + ( vec.getY() * mat.getCol2().getY() ) ) + ( vec.getZ() * mat.getCol2().getZ() ) )+    );+}++inline const Matrix3 crossMatrix( const Vector3 & vec )+{+    return Matrix3(+        Vector3( 0.0f, vec.getZ(), -vec.getY() ),+        Vector3( -vec.getZ(), 0.0f, vec.getX() ),+        Vector3( vec.getY(), -vec.getX(), 0.0f )+    );+}++inline const Matrix3 crossMatrixMul( const Vector3 & vec, const Matrix3 & mat )+{+    return Matrix3( cross( vec, mat.getCol0() ), cross( vec, mat.getCol1() ), cross( vec, mat.getCol2() ) );+}++} // namespace Aos+} // namespace Vectormath++#endif
+ bullet/vectormath/scalar/quat_aos.h view
@@ -0,0 +1,433 @@+/*+   Copyright (C) 2009 Sony Computer Entertainment Inc.+   All rights reserved.++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.++*/++#ifndef _VECTORMATH_QUAT_AOS_CPP_H+#define _VECTORMATH_QUAT_AOS_CPP_H++//-----------------------------------------------------------------------------+// Definitions++#ifndef _VECTORMATH_INTERNAL_FUNCTIONS+#define _VECTORMATH_INTERNAL_FUNCTIONS++#endif++namespace Vectormath {+namespace Aos {++inline Quat::Quat( const Quat & quat )+{+    mX = quat.mX;+    mY = quat.mY;+    mZ = quat.mZ;+    mW = quat.mW;+}++inline Quat::Quat( float _x, float _y, float _z, float _w )+{+    mX = _x;+    mY = _y;+    mZ = _z;+    mW = _w;+}++inline Quat::Quat( const Vector3 & xyz, float _w )+{+    this->setXYZ( xyz );+    this->setW( _w );+}++inline Quat::Quat( const Vector4 & vec )+{+    mX = vec.getX();+    mY = vec.getY();+    mZ = vec.getZ();+    mW = vec.getW();+}++inline Quat::Quat( float scalar )+{+    mX = scalar;+    mY = scalar;+    mZ = scalar;+    mW = scalar;+}++inline const Quat Quat::identity( )+{+    return Quat( 0.0f, 0.0f, 0.0f, 1.0f );+}++inline const Quat lerp( float t, const Quat & quat0, const Quat & quat1 )+{+    return ( quat0 + ( ( quat1 - quat0 ) * t ) );+}++inline const Quat slerp( float t, const Quat & unitQuat0, const Quat & unitQuat1 )+{+    Quat start;+    float recipSinAngle, scale0, scale1, cosAngle, angle;+    cosAngle = dot( unitQuat0, unitQuat1 );+    if ( cosAngle < 0.0f ) {+        cosAngle = -cosAngle;+        start = ( -unitQuat0 );+    } else {+        start = unitQuat0;+    }+    if ( cosAngle < _VECTORMATH_SLERP_TOL ) {+        angle = acosf( cosAngle );+        recipSinAngle = ( 1.0f / sinf( angle ) );+        scale0 = ( sinf( ( ( 1.0f - t ) * angle ) ) * recipSinAngle );+        scale1 = ( sinf( ( t * angle ) ) * recipSinAngle );+    } else {+        scale0 = ( 1.0f - t );+        scale1 = t;+    }+    return ( ( start * scale0 ) + ( unitQuat1 * scale1 ) );+}++inline const Quat squad( float t, const Quat & unitQuat0, const Quat & unitQuat1, const Quat & unitQuat2, const Quat & unitQuat3 )+{+    Quat tmp0, tmp1;+    tmp0 = slerp( t, unitQuat0, unitQuat3 );+    tmp1 = slerp( t, unitQuat1, unitQuat2 );+    return slerp( ( ( 2.0f * t ) * ( 1.0f - t ) ), tmp0, tmp1 );+}++inline void loadXYZW( Quat & quat, const float * fptr )+{+    quat = Quat( fptr[0], fptr[1], fptr[2], fptr[3] );+}++inline void storeXYZW( const Quat & quat, float * fptr )+{+    fptr[0] = quat.getX();+    fptr[1] = quat.getY();+    fptr[2] = quat.getZ();+    fptr[3] = quat.getW();+}++inline Quat & Quat::operator =( const Quat & quat )+{+    mX = quat.mX;+    mY = quat.mY;+    mZ = quat.mZ;+    mW = quat.mW;+    return *this;+}++inline Quat & Quat::setXYZ( const Vector3 & vec )+{+    mX = vec.getX();+    mY = vec.getY();+    mZ = vec.getZ();+    return *this;+}++inline const Vector3 Quat::getXYZ( ) const+{+    return Vector3( mX, mY, mZ );+}++inline Quat & Quat::setX( float _x )+{+    mX = _x;+    return *this;+}++inline float Quat::getX( ) const+{+    return mX;+}++inline Quat & Quat::setY( float _y )+{+    mY = _y;+    return *this;+}++inline float Quat::getY( ) const+{+    return mY;+}++inline Quat & Quat::setZ( float _z )+{+    mZ = _z;+    return *this;+}++inline float Quat::getZ( ) const+{+    return mZ;+}++inline Quat & Quat::setW( float _w )+{+    mW = _w;+    return *this;+}++inline float Quat::getW( ) const+{+    return mW;+}++inline Quat & Quat::setElem( int idx, float value )+{+    *(&mX + idx) = value;+    return *this;+}++inline float Quat::getElem( int idx ) const+{+    return *(&mX + idx);+}++inline float & Quat::operator []( int idx )+{+    return *(&mX + idx);+}++inline float Quat::operator []( int idx ) const+{+    return *(&mX + idx);+}++inline const Quat Quat::operator +( const Quat & quat ) const+{+    return Quat(+        ( mX + quat.mX ),+        ( mY + quat.mY ),+        ( mZ + quat.mZ ),+        ( mW + quat.mW )+    );+}++inline const Quat Quat::operator -( const Quat & quat ) const+{+    return Quat(+        ( mX - quat.mX ),+        ( mY - quat.mY ),+        ( mZ - quat.mZ ),+        ( mW - quat.mW )+    );+}++inline const Quat Quat::operator *( float scalar ) const+{+    return Quat(+        ( mX * scalar ),+        ( mY * scalar ),+        ( mZ * scalar ),+        ( mW * scalar )+    );+}++inline Quat & Quat::operator +=( const Quat & quat )+{+    *this = *this + quat;+    return *this;+}++inline Quat & Quat::operator -=( const Quat & quat )+{+    *this = *this - quat;+    return *this;+}++inline Quat & Quat::operator *=( float scalar )+{+    *this = *this * scalar;+    return *this;+}++inline const Quat Quat::operator /( float scalar ) const+{+    return Quat(+        ( mX / scalar ),+        ( mY / scalar ),+        ( mZ / scalar ),+        ( mW / scalar )+    );+}++inline Quat & Quat::operator /=( float scalar )+{+    *this = *this / scalar;+    return *this;+}++inline const Quat Quat::operator -( ) const+{+    return Quat(+        -mX,+        -mY,+        -mZ,+        -mW+    );+}++inline const Quat operator *( float scalar, const Quat & quat )+{+    return quat * scalar;+}++inline float dot( const Quat & quat0, const Quat & quat1 )+{+    float result;+    result = ( quat0.getX() * quat1.getX() );+    result = ( result + ( quat0.getY() * quat1.getY() ) );+    result = ( result + ( quat0.getZ() * quat1.getZ() ) );+    result = ( result + ( quat0.getW() * quat1.getW() ) );+    return result;+}++inline float norm( const Quat & quat )+{+    float result;+    result = ( quat.getX() * quat.getX() );+    result = ( result + ( quat.getY() * quat.getY() ) );+    result = ( result + ( quat.getZ() * quat.getZ() ) );+    result = ( result + ( quat.getW() * quat.getW() ) );+    return result;+}++inline float length( const Quat & quat )+{+    return ::sqrtf( norm( quat ) );+}++inline const Quat normalize( const Quat & quat )+{+    float lenSqr, lenInv;+    lenSqr = norm( quat );+    lenInv = ( 1.0f / sqrtf( lenSqr ) );+    return Quat(+        ( quat.getX() * lenInv ),+        ( quat.getY() * lenInv ),+        ( quat.getZ() * lenInv ),+        ( quat.getW() * lenInv )+    );+}++inline const Quat Quat::rotation( const Vector3 & unitVec0, const Vector3 & unitVec1 )+{+    float cosHalfAngleX2, recipCosHalfAngleX2;+    cosHalfAngleX2 = sqrtf( ( 2.0f * ( 1.0f + dot( unitVec0, unitVec1 ) ) ) );+    recipCosHalfAngleX2 = ( 1.0f / cosHalfAngleX2 );+    return Quat( ( cross( unitVec0, unitVec1 ) * recipCosHalfAngleX2 ), ( cosHalfAngleX2 * 0.5f ) );+}++inline const Quat Quat::rotation( float radians, const Vector3 & unitVec )+{+    float s, c, angle;+    angle = ( radians * 0.5f );+    s = sinf( angle );+    c = cosf( angle );+    return Quat( ( unitVec * s ), c );+}++inline const Quat Quat::rotationX( float radians )+{+    float s, c, angle;+    angle = ( radians * 0.5f );+    s = sinf( angle );+    c = cosf( angle );+    return Quat( s, 0.0f, 0.0f, c );+}++inline const Quat Quat::rotationY( float radians )+{+    float s, c, angle;+    angle = ( radians * 0.5f );+    s = sinf( angle );+    c = cosf( angle );+    return Quat( 0.0f, s, 0.0f, c );+}++inline const Quat Quat::rotationZ( float radians )+{+    float s, c, angle;+    angle = ( radians * 0.5f );+    s = sinf( angle );+    c = cosf( angle );+    return Quat( 0.0f, 0.0f, s, c );+}++inline const Quat Quat::operator *( const Quat & quat ) const+{+    return Quat(+        ( ( ( ( mW * quat.mX ) + ( mX * quat.mW ) ) + ( mY * quat.mZ ) ) - ( mZ * quat.mY ) ),+        ( ( ( ( mW * quat.mY ) + ( mY * quat.mW ) ) + ( mZ * quat.mX ) ) - ( mX * quat.mZ ) ),+        ( ( ( ( mW * quat.mZ ) + ( mZ * quat.mW ) ) + ( mX * quat.mY ) ) - ( mY * quat.mX ) ),+        ( ( ( ( mW * quat.mW ) - ( mX * quat.mX ) ) - ( mY * quat.mY ) ) - ( mZ * quat.mZ ) )+    );+}++inline Quat & Quat::operator *=( const Quat & quat )+{+    *this = *this * quat;+    return *this;+}++inline const Vector3 rotate( const Quat & quat, const Vector3 & vec )+{+    float tmpX, tmpY, tmpZ, tmpW;+    tmpX = ( ( ( quat.getW() * vec.getX() ) + ( quat.getY() * vec.getZ() ) ) - ( quat.getZ() * vec.getY() ) );+    tmpY = ( ( ( quat.getW() * vec.getY() ) + ( quat.getZ() * vec.getX() ) ) - ( quat.getX() * vec.getZ() ) );+    tmpZ = ( ( ( quat.getW() * vec.getZ() ) + ( quat.getX() * vec.getY() ) ) - ( quat.getY() * vec.getX() ) );+    tmpW = ( ( ( quat.getX() * vec.getX() ) + ( quat.getY() * vec.getY() ) ) + ( quat.getZ() * vec.getZ() ) );+    return Vector3(+        ( ( ( ( tmpW * quat.getX() ) + ( tmpX * quat.getW() ) ) - ( tmpY * quat.getZ() ) ) + ( tmpZ * quat.getY() ) ),+        ( ( ( ( tmpW * quat.getY() ) + ( tmpY * quat.getW() ) ) - ( tmpZ * quat.getX() ) ) + ( tmpX * quat.getZ() ) ),+        ( ( ( ( tmpW * quat.getZ() ) + ( tmpZ * quat.getW() ) ) - ( tmpX * quat.getY() ) ) + ( tmpY * quat.getX() ) )+    );+}++inline const Quat conj( const Quat & quat )+{+    return Quat( -quat.getX(), -quat.getY(), -quat.getZ(), quat.getW() );+}++inline const Quat select( const Quat & quat0, const Quat & quat1, bool select1 )+{+    return Quat(+        ( select1 )? quat1.getX() : quat0.getX(),+        ( select1 )? quat1.getY() : quat0.getY(),+        ( select1 )? quat1.getZ() : quat0.getZ(),+        ( select1 )? quat1.getW() : quat0.getW()+    );+}++#ifdef _VECTORMATH_DEBUG++inline void print( const Quat & quat )+{+    printf( "( %f %f %f %f )\n", quat.getX(), quat.getY(), quat.getZ(), quat.getW() );+}++inline void print( const Quat & quat, const char * name )+{+    printf( "%s: ( %f %f %f %f )\n", name, quat.getX(), quat.getY(), quat.getZ(), quat.getW() );+}++#endif++} // namespace Aos+} // namespace Vectormath++#endif
+ bullet/vectormath/scalar/vec_aos.h view
@@ -0,0 +1,1426 @@+/*+   Copyright (C) 2009 Sony Computer Entertainment Inc.+   All rights reserved.++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.++*/++#ifndef _VECTORMATH_VEC_AOS_CPP_H+#define _VECTORMATH_VEC_AOS_CPP_H++//-----------------------------------------------------------------------------+// Constants++#define _VECTORMATH_SLERP_TOL 0.999f++//-----------------------------------------------------------------------------+// Definitions++#ifndef _VECTORMATH_INTERNAL_FUNCTIONS+#define _VECTORMATH_INTERNAL_FUNCTIONS++#endif++namespace Vectormath {+namespace Aos {++inline Vector3::Vector3( const Vector3 & vec )+{+    mX = vec.mX;+    mY = vec.mY;+    mZ = vec.mZ;+}++inline Vector3::Vector3( float _x, float _y, float _z )+{+    mX = _x;+    mY = _y;+    mZ = _z;+}++inline Vector3::Vector3( const Point3 & pnt )+{+    mX = pnt.getX();+    mY = pnt.getY();+    mZ = pnt.getZ();+}++inline Vector3::Vector3( float scalar )+{+    mX = scalar;+    mY = scalar;+    mZ = scalar;+}++inline const Vector3 Vector3::xAxis( )+{+    return Vector3( 1.0f, 0.0f, 0.0f );+}++inline const Vector3 Vector3::yAxis( )+{+    return Vector3( 0.0f, 1.0f, 0.0f );+}++inline const Vector3 Vector3::zAxis( )+{+    return Vector3( 0.0f, 0.0f, 1.0f );+}++inline const Vector3 lerp( float t, const Vector3 & vec0, const Vector3 & vec1 )+{+    return ( vec0 + ( ( vec1 - vec0 ) * t ) );+}++inline const Vector3 slerp( float t, const Vector3 & unitVec0, const Vector3 & unitVec1 )+{+    float recipSinAngle, scale0, scale1, cosAngle, angle;+    cosAngle = dot( unitVec0, unitVec1 );+    if ( cosAngle < _VECTORMATH_SLERP_TOL ) {+        angle = acosf( cosAngle );+        recipSinAngle = ( 1.0f / sinf( angle ) );+        scale0 = ( sinf( ( ( 1.0f - t ) * angle ) ) * recipSinAngle );+        scale1 = ( sinf( ( t * angle ) ) * recipSinAngle );+    } else {+        scale0 = ( 1.0f - t );+        scale1 = t;+    }+    return ( ( unitVec0 * scale0 ) + ( unitVec1 * scale1 ) );+}++inline void loadXYZ( Vector3 & vec, const float * fptr )+{+    vec = Vector3( fptr[0], fptr[1], fptr[2] );+}++inline void storeXYZ( const Vector3 & vec, float * fptr )+{+    fptr[0] = vec.getX();+    fptr[1] = vec.getY();+    fptr[2] = vec.getZ();+}++inline void loadHalfFloats( Vector3 & vec, const unsigned short * hfptr )+{+    union Data32 {+        unsigned int u32;+        float f32;+    };++    for (int i = 0; i < 3; i++) {+        unsigned short fp16 = hfptr[i];+        unsigned int sign = fp16 >> 15;+        unsigned int exponent = (fp16 >> 10) & ((1 << 5) - 1);+        unsigned int mantissa = fp16 & ((1 << 10) - 1);++        if (exponent == 0) {+            // zero+            mantissa = 0;++        } else if (exponent == 31) {+            // infinity or nan -> infinity+            exponent = 255;+	    mantissa = 0;++        } else {+            exponent += 127 - 15;+            mantissa <<= 13;+        }++        Data32 d;+        d.u32 = (sign << 31) | (exponent << 23) | mantissa;+        vec[i] = d.f32;+    }+}++inline void storeHalfFloats( const Vector3 & vec, unsigned short * hfptr )+{+    union Data32 {+        unsigned int u32;+        float f32;+    };++    for (int i = 0; i < 3; i++) {+        Data32 d;+        d.f32 = vec[i];++        unsigned int sign = d.u32 >> 31;+        unsigned int exponent = (d.u32 >> 23) & ((1 << 8) - 1);+        unsigned int mantissa = d.u32 & ((1 << 23) - 1);;++        if (exponent == 0) {+            // zero or denorm -> zero+            mantissa = 0;++        } else if (exponent == 255 && mantissa != 0) {+            // nan -> infinity+            exponent = 31;+            mantissa = 0;++        } else if (exponent >= 127 - 15 + 31) {+            // overflow or infinity -> infinity+            exponent = 31;+            mantissa = 0;++        } else if (exponent <= 127 - 15) {+            // underflow -> zero+            exponent = 0;+            mantissa = 0;++        } else {+            exponent -= 127 - 15;+            mantissa >>= 13;+        }++        hfptr[i] = (unsigned short)((sign << 15) | (exponent << 10) | mantissa);+    }+}++inline Vector3 & Vector3::operator =( const Vector3 & vec )+{+    mX = vec.mX;+    mY = vec.mY;+    mZ = vec.mZ;+    return *this;+}++inline Vector3 & Vector3::setX( float _x )+{+    mX = _x;+    return *this;+}++inline float Vector3::getX( ) const+{+    return mX;+}++inline Vector3 & Vector3::setY( float _y )+{+    mY = _y;+    return *this;+}++inline float Vector3::getY( ) const+{+    return mY;+}++inline Vector3 & Vector3::setZ( float _z )+{+    mZ = _z;+    return *this;+}++inline float Vector3::getZ( ) const+{+    return mZ;+}++inline Vector3 & Vector3::setElem( int idx, float value )+{+    *(&mX + idx) = value;+    return *this;+}++inline float Vector3::getElem( int idx ) const+{+    return *(&mX + idx);+}++inline float & Vector3::operator []( int idx )+{+    return *(&mX + idx);+}++inline float Vector3::operator []( int idx ) const+{+    return *(&mX + idx);+}++inline const Vector3 Vector3::operator +( const Vector3 & vec ) const+{+    return Vector3(+        ( mX + vec.mX ),+        ( mY + vec.mY ),+        ( mZ + vec.mZ )+    );+}++inline const Vector3 Vector3::operator -( const Vector3 & vec ) const+{+    return Vector3(+        ( mX - vec.mX ),+        ( mY - vec.mY ),+        ( mZ - vec.mZ )+    );+}++inline const Point3 Vector3::operator +( const Point3 & pnt ) const+{+    return Point3(+        ( mX + pnt.getX() ),+        ( mY + pnt.getY() ),+        ( mZ + pnt.getZ() )+    );+}++inline const Vector3 Vector3::operator *( float scalar ) const+{+    return Vector3(+        ( mX * scalar ),+        ( mY * scalar ),+        ( mZ * scalar )+    );+}++inline Vector3 & Vector3::operator +=( const Vector3 & vec )+{+    *this = *this + vec;+    return *this;+}++inline Vector3 & Vector3::operator -=( const Vector3 & vec )+{+    *this = *this - vec;+    return *this;+}++inline Vector3 & Vector3::operator *=( float scalar )+{+    *this = *this * scalar;+    return *this;+}++inline const Vector3 Vector3::operator /( float scalar ) const+{+    return Vector3(+        ( mX / scalar ),+        ( mY / scalar ),+        ( mZ / scalar )+    );+}++inline Vector3 & Vector3::operator /=( float scalar )+{+    *this = *this / scalar;+    return *this;+}++inline const Vector3 Vector3::operator -( ) const+{+    return Vector3(+        -mX,+        -mY,+        -mZ+    );+}++inline const Vector3 operator *( float scalar, const Vector3 & vec )+{+    return vec * scalar;+}++inline const Vector3 mulPerElem( const Vector3 & vec0, const Vector3 & vec1 )+{+    return Vector3(+        ( vec0.getX() * vec1.getX() ),+        ( vec0.getY() * vec1.getY() ),+        ( vec0.getZ() * vec1.getZ() )+    );+}++inline const Vector3 divPerElem( const Vector3 & vec0, const Vector3 & vec1 )+{+    return Vector3(+        ( vec0.getX() / vec1.getX() ),+        ( vec0.getY() / vec1.getY() ),+        ( vec0.getZ() / vec1.getZ() )+    );+}++inline const Vector3 recipPerElem( const Vector3 & vec )+{+    return Vector3(+        ( 1.0f / vec.getX() ),+        ( 1.0f / vec.getY() ),+        ( 1.0f / vec.getZ() )+    );+}++inline const Vector3 sqrtPerElem( const Vector3 & vec )+{+    return Vector3(+        sqrtf( vec.getX() ),+        sqrtf( vec.getY() ),+        sqrtf( vec.getZ() )+    );+}++inline const Vector3 rsqrtPerElem( const Vector3 & vec )+{+    return Vector3(+        ( 1.0f / sqrtf( vec.getX() ) ),+        ( 1.0f / sqrtf( vec.getY() ) ),+        ( 1.0f / sqrtf( vec.getZ() ) )+    );+}++inline const Vector3 absPerElem( const Vector3 & vec )+{+    return Vector3(+        fabsf( vec.getX() ),+        fabsf( vec.getY() ),+        fabsf( vec.getZ() )+    );+}++inline const Vector3 copySignPerElem( const Vector3 & vec0, const Vector3 & vec1 )+{+    return Vector3(+        ( vec1.getX() < 0.0f )? -fabsf( vec0.getX() ) : fabsf( vec0.getX() ),+        ( vec1.getY() < 0.0f )? -fabsf( vec0.getY() ) : fabsf( vec0.getY() ),+        ( vec1.getZ() < 0.0f )? -fabsf( vec0.getZ() ) : fabsf( vec0.getZ() )+    );+}++inline const Vector3 maxPerElem( const Vector3 & vec0, const Vector3 & vec1 )+{+    return Vector3(+        (vec0.getX() > vec1.getX())? vec0.getX() : vec1.getX(),+        (vec0.getY() > vec1.getY())? vec0.getY() : vec1.getY(),+        (vec0.getZ() > vec1.getZ())? vec0.getZ() : vec1.getZ()+    );+}++inline float maxElem( const Vector3 & vec )+{+    float result;+    result = (vec.getX() > vec.getY())? vec.getX() : vec.getY();+    result = (vec.getZ() > result)? vec.getZ() : result;+    return result;+}++inline const Vector3 minPerElem( const Vector3 & vec0, const Vector3 & vec1 )+{+    return Vector3(+        (vec0.getX() < vec1.getX())? vec0.getX() : vec1.getX(),+        (vec0.getY() < vec1.getY())? vec0.getY() : vec1.getY(),+        (vec0.getZ() < vec1.getZ())? vec0.getZ() : vec1.getZ()+    );+}++inline float minElem( const Vector3 & vec )+{+    float result;+    result = (vec.getX() < vec.getY())? vec.getX() : vec.getY();+    result = (vec.getZ() < result)? vec.getZ() : result;+    return result;+}++inline float sum( const Vector3 & vec )+{+    float result;+    result = ( vec.getX() + vec.getY() );+    result = ( result + vec.getZ() );+    return result;+}++inline float dot( const Vector3 & vec0, const Vector3 & vec1 )+{+    float result;+    result = ( vec0.getX() * vec1.getX() );+    result = ( result + ( vec0.getY() * vec1.getY() ) );+    result = ( result + ( vec0.getZ() * vec1.getZ() ) );+    return result;+}++inline float lengthSqr( const Vector3 & vec )+{+    float result;+    result = ( vec.getX() * vec.getX() );+    result = ( result + ( vec.getY() * vec.getY() ) );+    result = ( result + ( vec.getZ() * vec.getZ() ) );+    return result;+}++inline float length( const Vector3 & vec )+{+    return ::sqrtf( lengthSqr( vec ) );+}++inline const Vector3 normalize( const Vector3 & vec )+{+    float lenSqr, lenInv;+    lenSqr = lengthSqr( vec );+    lenInv = ( 1.0f / sqrtf( lenSqr ) );+    return Vector3(+        ( vec.getX() * lenInv ),+        ( vec.getY() * lenInv ),+        ( vec.getZ() * lenInv )+    );+}++inline const Vector3 cross( const Vector3 & vec0, const Vector3 & vec1 )+{+    return Vector3(+        ( ( vec0.getY() * vec1.getZ() ) - ( vec0.getZ() * vec1.getY() ) ),+        ( ( vec0.getZ() * vec1.getX() ) - ( vec0.getX() * vec1.getZ() ) ),+        ( ( vec0.getX() * vec1.getY() ) - ( vec0.getY() * vec1.getX() ) )+    );+}++inline const Vector3 select( const Vector3 & vec0, const Vector3 & vec1, bool select1 )+{+    return Vector3(+        ( select1 )? vec1.getX() : vec0.getX(),+        ( select1 )? vec1.getY() : vec0.getY(),+        ( select1 )? vec1.getZ() : vec0.getZ()+    );+}++#ifdef _VECTORMATH_DEBUG++inline void print( const Vector3 & vec )+{+    printf( "( %f %f %f )\n", vec.getX(), vec.getY(), vec.getZ() );+}++inline void print( const Vector3 & vec, const char * name )+{+    printf( "%s: ( %f %f %f )\n", name, vec.getX(), vec.getY(), vec.getZ() );+}++#endif++inline Vector4::Vector4( const Vector4 & vec )+{+    mX = vec.mX;+    mY = vec.mY;+    mZ = vec.mZ;+    mW = vec.mW;+}++inline Vector4::Vector4( float _x, float _y, float _z, float _w )+{+    mX = _x;+    mY = _y;+    mZ = _z;+    mW = _w;+}++inline Vector4::Vector4( const Vector3 & xyz, float _w )+{+    this->setXYZ( xyz );+    this->setW( _w );+}++inline Vector4::Vector4( const Vector3 & vec )+{+    mX = vec.getX();+    mY = vec.getY();+    mZ = vec.getZ();+    mW = 0.0f;+}++inline Vector4::Vector4( const Point3 & pnt )+{+    mX = pnt.getX();+    mY = pnt.getY();+    mZ = pnt.getZ();+    mW = 1.0f;+}++inline Vector4::Vector4( const Quat & quat )+{+    mX = quat.getX();+    mY = quat.getY();+    mZ = quat.getZ();+    mW = quat.getW();+}++inline Vector4::Vector4( float scalar )+{+    mX = scalar;+    mY = scalar;+    mZ = scalar;+    mW = scalar;+}++inline const Vector4 Vector4::xAxis( )+{+    return Vector4( 1.0f, 0.0f, 0.0f, 0.0f );+}++inline const Vector4 Vector4::yAxis( )+{+    return Vector4( 0.0f, 1.0f, 0.0f, 0.0f );+}++inline const Vector4 Vector4::zAxis( )+{+    return Vector4( 0.0f, 0.0f, 1.0f, 0.0f );+}++inline const Vector4 Vector4::wAxis( )+{+    return Vector4( 0.0f, 0.0f, 0.0f, 1.0f );+}++inline const Vector4 lerp( float t, const Vector4 & vec0, const Vector4 & vec1 )+{+    return ( vec0 + ( ( vec1 - vec0 ) * t ) );+}++inline const Vector4 slerp( float t, const Vector4 & unitVec0, const Vector4 & unitVec1 )+{+    float recipSinAngle, scale0, scale1, cosAngle, angle;+    cosAngle = dot( unitVec0, unitVec1 );+    if ( cosAngle < _VECTORMATH_SLERP_TOL ) {+        angle = acosf( cosAngle );+        recipSinAngle = ( 1.0f / sinf( angle ) );+        scale0 = ( sinf( ( ( 1.0f - t ) * angle ) ) * recipSinAngle );+        scale1 = ( sinf( ( t * angle ) ) * recipSinAngle );+    } else {+        scale0 = ( 1.0f - t );+        scale1 = t;+    }+    return ( ( unitVec0 * scale0 ) + ( unitVec1 * scale1 ) );+}++inline void loadXYZW( Vector4 & vec, const float * fptr )+{+    vec = Vector4( fptr[0], fptr[1], fptr[2], fptr[3] );+}++inline void storeXYZW( const Vector4 & vec, float * fptr )+{+    fptr[0] = vec.getX();+    fptr[1] = vec.getY();+    fptr[2] = vec.getZ();+    fptr[3] = vec.getW();+}++inline void loadHalfFloats( Vector4 & vec, const unsigned short * hfptr )+{+    union Data32 {+        unsigned int u32;+        float f32;+    };++    for (int i = 0; i < 4; i++) {+        unsigned short fp16 = hfptr[i];+        unsigned int sign = fp16 >> 15;+        unsigned int exponent = (fp16 >> 10) & ((1 << 5) - 1);+        unsigned int mantissa = fp16 & ((1 << 10) - 1);++        if (exponent == 0) {+            // zero+            mantissa = 0;++        } else if (exponent == 31) {+            // infinity or nan -> infinity+            exponent = 255;+	    mantissa = 0;++        } else {+            exponent += 127 - 15;+            mantissa <<= 13;+        }++        Data32 d;+        d.u32 = (sign << 31) | (exponent << 23) | mantissa;+        vec[i] = d.f32;+    }+}++inline void storeHalfFloats( const Vector4 & vec, unsigned short * hfptr )+{+    union Data32 {+        unsigned int u32;+        float f32;+    };++    for (int i = 0; i < 4; i++) {+        Data32 d;+        d.f32 = vec[i];++        unsigned int sign = d.u32 >> 31;+        unsigned int exponent = (d.u32 >> 23) & ((1 << 8) - 1);+        unsigned int mantissa = d.u32 & ((1 << 23) - 1);;++        if (exponent == 0) {+            // zero or denorm -> zero+            mantissa = 0;++        } else if (exponent == 255 && mantissa != 0) {+            // nan -> infinity+            exponent = 31;+            mantissa = 0;++        } else if (exponent >= 127 - 15 + 31) {+            // overflow or infinity -> infinity+            exponent = 31;+            mantissa = 0;++        } else if (exponent <= 127 - 15) {+            // underflow -> zero+            exponent = 0;+            mantissa = 0;++        } else {+            exponent -= 127 - 15;+            mantissa >>= 13;+        }++        hfptr[i] = (unsigned short)((sign << 15) | (exponent << 10) | mantissa);+    }+}++inline Vector4 & Vector4::operator =( const Vector4 & vec )+{+    mX = vec.mX;+    mY = vec.mY;+    mZ = vec.mZ;+    mW = vec.mW;+    return *this;+}++inline Vector4 & Vector4::setXYZ( const Vector3 & vec )+{+    mX = vec.getX();+    mY = vec.getY();+    mZ = vec.getZ();+    return *this;+}++inline const Vector3 Vector4::getXYZ( ) const+{+    return Vector3( mX, mY, mZ );+}++inline Vector4 & Vector4::setX( float _x )+{+    mX = _x;+    return *this;+}++inline float Vector4::getX( ) const+{+    return mX;+}++inline Vector4 & Vector4::setY( float _y )+{+    mY = _y;+    return *this;+}++inline float Vector4::getY( ) const+{+    return mY;+}++inline Vector4 & Vector4::setZ( float _z )+{+    mZ = _z;+    return *this;+}++inline float Vector4::getZ( ) const+{+    return mZ;+}++inline Vector4 & Vector4::setW( float _w )+{+    mW = _w;+    return *this;+}++inline float Vector4::getW( ) const+{+    return mW;+}++inline Vector4 & Vector4::setElem( int idx, float value )+{+    *(&mX + idx) = value;+    return *this;+}++inline float Vector4::getElem( int idx ) const+{+    return *(&mX + idx);+}++inline float & Vector4::operator []( int idx )+{+    return *(&mX + idx);+}++inline float Vector4::operator []( int idx ) const+{+    return *(&mX + idx);+}++inline const Vector4 Vector4::operator +( const Vector4 & vec ) const+{+    return Vector4(+        ( mX + vec.mX ),+        ( mY + vec.mY ),+        ( mZ + vec.mZ ),+        ( mW + vec.mW )+    );+}++inline const Vector4 Vector4::operator -( const Vector4 & vec ) const+{+    return Vector4(+        ( mX - vec.mX ),+        ( mY - vec.mY ),+        ( mZ - vec.mZ ),+        ( mW - vec.mW )+    );+}++inline const Vector4 Vector4::operator *( float scalar ) const+{+    return Vector4(+        ( mX * scalar ),+        ( mY * scalar ),+        ( mZ * scalar ),+        ( mW * scalar )+    );+}++inline Vector4 & Vector4::operator +=( const Vector4 & vec )+{+    *this = *this + vec;+    return *this;+}++inline Vector4 & Vector4::operator -=( const Vector4 & vec )+{+    *this = *this - vec;+    return *this;+}++inline Vector4 & Vector4::operator *=( float scalar )+{+    *this = *this * scalar;+    return *this;+}++inline const Vector4 Vector4::operator /( float scalar ) const+{+    return Vector4(+        ( mX / scalar ),+        ( mY / scalar ),+        ( mZ / scalar ),+        ( mW / scalar )+    );+}++inline Vector4 & Vector4::operator /=( float scalar )+{+    *this = *this / scalar;+    return *this;+}++inline const Vector4 Vector4::operator -( ) const+{+    return Vector4(+        -mX,+        -mY,+        -mZ,+        -mW+    );+}++inline const Vector4 operator *( float scalar, const Vector4 & vec )+{+    return vec * scalar;+}++inline const Vector4 mulPerElem( const Vector4 & vec0, const Vector4 & vec1 )+{+    return Vector4(+        ( vec0.getX() * vec1.getX() ),+        ( vec0.getY() * vec1.getY() ),+        ( vec0.getZ() * vec1.getZ() ),+        ( vec0.getW() * vec1.getW() )+    );+}++inline const Vector4 divPerElem( const Vector4 & vec0, const Vector4 & vec1 )+{+    return Vector4(+        ( vec0.getX() / vec1.getX() ),+        ( vec0.getY() / vec1.getY() ),+        ( vec0.getZ() / vec1.getZ() ),+        ( vec0.getW() / vec1.getW() )+    );+}++inline const Vector4 recipPerElem( const Vector4 & vec )+{+    return Vector4(+        ( 1.0f / vec.getX() ),+        ( 1.0f / vec.getY() ),+        ( 1.0f / vec.getZ() ),+        ( 1.0f / vec.getW() )+    );+}++inline const Vector4 sqrtPerElem( const Vector4 & vec )+{+    return Vector4(+        sqrtf( vec.getX() ),+        sqrtf( vec.getY() ),+        sqrtf( vec.getZ() ),+        sqrtf( vec.getW() )+    );+}++inline const Vector4 rsqrtPerElem( const Vector4 & vec )+{+    return Vector4(+        ( 1.0f / sqrtf( vec.getX() ) ),+        ( 1.0f / sqrtf( vec.getY() ) ),+        ( 1.0f / sqrtf( vec.getZ() ) ),+        ( 1.0f / sqrtf( vec.getW() ) )+    );+}++inline const Vector4 absPerElem( const Vector4 & vec )+{+    return Vector4(+        fabsf( vec.getX() ),+        fabsf( vec.getY() ),+        fabsf( vec.getZ() ),+        fabsf( vec.getW() )+    );+}++inline const Vector4 copySignPerElem( const Vector4 & vec0, const Vector4 & vec1 )+{+    return Vector4(+        ( vec1.getX() < 0.0f )? -fabsf( vec0.getX() ) : fabsf( vec0.getX() ),+        ( vec1.getY() < 0.0f )? -fabsf( vec0.getY() ) : fabsf( vec0.getY() ),+        ( vec1.getZ() < 0.0f )? -fabsf( vec0.getZ() ) : fabsf( vec0.getZ() ),+        ( vec1.getW() < 0.0f )? -fabsf( vec0.getW() ) : fabsf( vec0.getW() )+    );+}++inline const Vector4 maxPerElem( const Vector4 & vec0, const Vector4 & vec1 )+{+    return Vector4(+        (vec0.getX() > vec1.getX())? vec0.getX() : vec1.getX(),+        (vec0.getY() > vec1.getY())? vec0.getY() : vec1.getY(),+        (vec0.getZ() > vec1.getZ())? vec0.getZ() : vec1.getZ(),+        (vec0.getW() > vec1.getW())? vec0.getW() : vec1.getW()+    );+}++inline float maxElem( const Vector4 & vec )+{+    float result;+    result = (vec.getX() > vec.getY())? vec.getX() : vec.getY();+    result = (vec.getZ() > result)? vec.getZ() : result;+    result = (vec.getW() > result)? vec.getW() : result;+    return result;+}++inline const Vector4 minPerElem( const Vector4 & vec0, const Vector4 & vec1 )+{+    return Vector4(+        (vec0.getX() < vec1.getX())? vec0.getX() : vec1.getX(),+        (vec0.getY() < vec1.getY())? vec0.getY() : vec1.getY(),+        (vec0.getZ() < vec1.getZ())? vec0.getZ() : vec1.getZ(),+        (vec0.getW() < vec1.getW())? vec0.getW() : vec1.getW()+    );+}++inline float minElem( const Vector4 & vec )+{+    float result;+    result = (vec.getX() < vec.getY())? vec.getX() : vec.getY();+    result = (vec.getZ() < result)? vec.getZ() : result;+    result = (vec.getW() < result)? vec.getW() : result;+    return result;+}++inline float sum( const Vector4 & vec )+{+    float result;+    result = ( vec.getX() + vec.getY() );+    result = ( result + vec.getZ() );+    result = ( result + vec.getW() );+    return result;+}++inline float dot( const Vector4 & vec0, const Vector4 & vec1 )+{+    float result;+    result = ( vec0.getX() * vec1.getX() );+    result = ( result + ( vec0.getY() * vec1.getY() ) );+    result = ( result + ( vec0.getZ() * vec1.getZ() ) );+    result = ( result + ( vec0.getW() * vec1.getW() ) );+    return result;+}++inline float lengthSqr( const Vector4 & vec )+{+    float result;+    result = ( vec.getX() * vec.getX() );+    result = ( result + ( vec.getY() * vec.getY() ) );+    result = ( result + ( vec.getZ() * vec.getZ() ) );+    result = ( result + ( vec.getW() * vec.getW() ) );+    return result;+}++inline float length( const Vector4 & vec )+{+    return ::sqrtf( lengthSqr( vec ) );+}++inline const Vector4 normalize( const Vector4 & vec )+{+    float lenSqr, lenInv;+    lenSqr = lengthSqr( vec );+    lenInv = ( 1.0f / sqrtf( lenSqr ) );+    return Vector4(+        ( vec.getX() * lenInv ),+        ( vec.getY() * lenInv ),+        ( vec.getZ() * lenInv ),+        ( vec.getW() * lenInv )+    );+}++inline const Vector4 select( const Vector4 & vec0, const Vector4 & vec1, bool select1 )+{+    return Vector4(+        ( select1 )? vec1.getX() : vec0.getX(),+        ( select1 )? vec1.getY() : vec0.getY(),+        ( select1 )? vec1.getZ() : vec0.getZ(),+        ( select1 )? vec1.getW() : vec0.getW()+    );+}++#ifdef _VECTORMATH_DEBUG++inline void print( const Vector4 & vec )+{+    printf( "( %f %f %f %f )\n", vec.getX(), vec.getY(), vec.getZ(), vec.getW() );+}++inline void print( const Vector4 & vec, const char * name )+{+    printf( "%s: ( %f %f %f %f )\n", name, vec.getX(), vec.getY(), vec.getZ(), vec.getW() );+}++#endif++inline Point3::Point3( const Point3 & pnt )+{+    mX = pnt.mX;+    mY = pnt.mY;+    mZ = pnt.mZ;+}++inline Point3::Point3( float _x, float _y, float _z )+{+    mX = _x;+    mY = _y;+    mZ = _z;+}++inline Point3::Point3( const Vector3 & vec )+{+    mX = vec.getX();+    mY = vec.getY();+    mZ = vec.getZ();+}++inline Point3::Point3( float scalar )+{+    mX = scalar;+    mY = scalar;+    mZ = scalar;+}++inline const Point3 lerp( float t, const Point3 & pnt0, const Point3 & pnt1 )+{+    return ( pnt0 + ( ( pnt1 - pnt0 ) * t ) );+}++inline void loadXYZ( Point3 & pnt, const float * fptr )+{+    pnt = Point3( fptr[0], fptr[1], fptr[2] );+}++inline void storeXYZ( const Point3 & pnt, float * fptr )+{+    fptr[0] = pnt.getX();+    fptr[1] = pnt.getY();+    fptr[2] = pnt.getZ();+}++inline void loadHalfFloats( Point3 & vec, const unsigned short * hfptr )+{+    union Data32 {+        unsigned int u32;+        float f32;+    };++    for (int i = 0; i < 3; i++) {+        unsigned short fp16 = hfptr[i];+        unsigned int sign = fp16 >> 15;+        unsigned int exponent = (fp16 >> 10) & ((1 << 5) - 1);+        unsigned int mantissa = fp16 & ((1 << 10) - 1);++        if (exponent == 0) {+            // zero+            mantissa = 0;++        } else if (exponent == 31) {+            // infinity or nan -> infinity+            exponent = 255;+	    mantissa = 0;++        } else {+            exponent += 127 - 15;+            mantissa <<= 13;+        }++        Data32 d;+        d.u32 = (sign << 31) | (exponent << 23) | mantissa;+        vec[i] = d.f32;+    }+}++inline void storeHalfFloats( const Point3 & vec, unsigned short * hfptr )+{+    union Data32 {+        unsigned int u32;+        float f32;+    };++    for (int i = 0; i < 3; i++) {+        Data32 d;+        d.f32 = vec[i];++        unsigned int sign = d.u32 >> 31;+        unsigned int exponent = (d.u32 >> 23) & ((1 << 8) - 1);+        unsigned int mantissa = d.u32 & ((1 << 23) - 1);;++        if (exponent == 0) {+            // zero or denorm -> zero+            mantissa = 0;++        } else if (exponent == 255 && mantissa != 0) {+            // nan -> infinity+            exponent = 31;+            mantissa = 0;++        } else if (exponent >= 127 - 15 + 31) {+            // overflow or infinity -> infinity+            exponent = 31;+            mantissa = 0;++        } else if (exponent <= 127 - 15) {+            // underflow -> zero+            exponent = 0;+            mantissa = 0;++        } else {+            exponent -= 127 - 15;+            mantissa >>= 13;+        }++        hfptr[i] = (unsigned short)((sign << 15) | (exponent << 10) | mantissa);+    }+}++inline Point3 & Point3::operator =( const Point3 & pnt )+{+    mX = pnt.mX;+    mY = pnt.mY;+    mZ = pnt.mZ;+    return *this;+}++inline Point3 & Point3::setX( float _x )+{+    mX = _x;+    return *this;+}++inline float Point3::getX( ) const+{+    return mX;+}++inline Point3 & Point3::setY( float _y )+{+    mY = _y;+    return *this;+}++inline float Point3::getY( ) const+{+    return mY;+}++inline Point3 & Point3::setZ( float _z )+{+    mZ = _z;+    return *this;+}++inline float Point3::getZ( ) const+{+    return mZ;+}++inline Point3 & Point3::setElem( int idx, float value )+{+    *(&mX + idx) = value;+    return *this;+}++inline float Point3::getElem( int idx ) const+{+    return *(&mX + idx);+}++inline float & Point3::operator []( int idx )+{+    return *(&mX + idx);+}++inline float Point3::operator []( int idx ) const+{+    return *(&mX + idx);+}++inline const Vector3 Point3::operator -( const Point3 & pnt ) const+{+    return Vector3(+        ( mX - pnt.mX ),+        ( mY - pnt.mY ),+        ( mZ - pnt.mZ )+    );+}++inline const Point3 Point3::operator +( const Vector3 & vec ) const+{+    return Point3(+        ( mX + vec.getX() ),+        ( mY + vec.getY() ),+        ( mZ + vec.getZ() )+    );+}++inline const Point3 Point3::operator -( const Vector3 & vec ) const+{+    return Point3(+        ( mX - vec.getX() ),+        ( mY - vec.getY() ),+        ( mZ - vec.getZ() )+    );+}++inline Point3 & Point3::operator +=( const Vector3 & vec )+{+    *this = *this + vec;+    return *this;+}++inline Point3 & Point3::operator -=( const Vector3 & vec )+{+    *this = *this - vec;+    return *this;+}++inline const Point3 mulPerElem( const Point3 & pnt0, const Point3 & pnt1 )+{+    return Point3(+        ( pnt0.getX() * pnt1.getX() ),+        ( pnt0.getY() * pnt1.getY() ),+        ( pnt0.getZ() * pnt1.getZ() )+    );+}++inline const Point3 divPerElem( const Point3 & pnt0, const Point3 & pnt1 )+{+    return Point3(+        ( pnt0.getX() / pnt1.getX() ),+        ( pnt0.getY() / pnt1.getY() ),+        ( pnt0.getZ() / pnt1.getZ() )+    );+}++inline const Point3 recipPerElem( const Point3 & pnt )+{+    return Point3(+        ( 1.0f / pnt.getX() ),+        ( 1.0f / pnt.getY() ),+        ( 1.0f / pnt.getZ() )+    );+}++inline const Point3 sqrtPerElem( const Point3 & pnt )+{+    return Point3(+        sqrtf( pnt.getX() ),+        sqrtf( pnt.getY() ),+        sqrtf( pnt.getZ() )+    );+}++inline const Point3 rsqrtPerElem( const Point3 & pnt )+{+    return Point3(+        ( 1.0f / sqrtf( pnt.getX() ) ),+        ( 1.0f / sqrtf( pnt.getY() ) ),+        ( 1.0f / sqrtf( pnt.getZ() ) )+    );+}++inline const Point3 absPerElem( const Point3 & pnt )+{+    return Point3(+        fabsf( pnt.getX() ),+        fabsf( pnt.getY() ),+        fabsf( pnt.getZ() )+    );+}++inline const Point3 copySignPerElem( const Point3 & pnt0, const Point3 & pnt1 )+{+    return Point3(+        ( pnt1.getX() < 0.0f )? -fabsf( pnt0.getX() ) : fabsf( pnt0.getX() ),+        ( pnt1.getY() < 0.0f )? -fabsf( pnt0.getY() ) : fabsf( pnt0.getY() ),+        ( pnt1.getZ() < 0.0f )? -fabsf( pnt0.getZ() ) : fabsf( pnt0.getZ() )+    );+}++inline const Point3 maxPerElem( const Point3 & pnt0, const Point3 & pnt1 )+{+    return Point3(+        (pnt0.getX() > pnt1.getX())? pnt0.getX() : pnt1.getX(),+        (pnt0.getY() > pnt1.getY())? pnt0.getY() : pnt1.getY(),+        (pnt0.getZ() > pnt1.getZ())? pnt0.getZ() : pnt1.getZ()+    );+}++inline float maxElem( const Point3 & pnt )+{+    float result;+    result = (pnt.getX() > pnt.getY())? pnt.getX() : pnt.getY();+    result = (pnt.getZ() > result)? pnt.getZ() : result;+    return result;+}++inline const Point3 minPerElem( const Point3 & pnt0, const Point3 & pnt1 )+{+    return Point3(+        (pnt0.getX() < pnt1.getX())? pnt0.getX() : pnt1.getX(),+        (pnt0.getY() < pnt1.getY())? pnt0.getY() : pnt1.getY(),+        (pnt0.getZ() < pnt1.getZ())? pnt0.getZ() : pnt1.getZ()+    );+}++inline float minElem( const Point3 & pnt )+{+    float result;+    result = (pnt.getX() < pnt.getY())? pnt.getX() : pnt.getY();+    result = (pnt.getZ() < result)? pnt.getZ() : result;+    return result;+}++inline float sum( const Point3 & pnt )+{+    float result;+    result = ( pnt.getX() + pnt.getY() );+    result = ( result + pnt.getZ() );+    return result;+}++inline const Point3 scale( const Point3 & pnt, float scaleVal )+{+    return mulPerElem( pnt, Point3( scaleVal ) );+}++inline const Point3 scale( const Point3 & pnt, const Vector3 & scaleVec )+{+    return mulPerElem( pnt, Point3( scaleVec ) );+}++inline float projection( const Point3 & pnt, const Vector3 & unitVec )+{+    float result;+    result = ( pnt.getX() * unitVec.getX() );+    result = ( result + ( pnt.getY() * unitVec.getY() ) );+    result = ( result + ( pnt.getZ() * unitVec.getZ() ) );+    return result;+}++inline float distSqrFromOrigin( const Point3 & pnt )+{+    return lengthSqr( Vector3( pnt ) );+}++inline float distFromOrigin( const Point3 & pnt )+{+    return length( Vector3( pnt ) );+}++inline float distSqr( const Point3 & pnt0, const Point3 & pnt1 )+{+    return lengthSqr( ( pnt1 - pnt0 ) );+}++inline float dist( const Point3 & pnt0, const Point3 & pnt1 )+{+    return length( ( pnt1 - pnt0 ) );+}++inline const Point3 select( const Point3 & pnt0, const Point3 & pnt1, bool select1 )+{+    return Point3(+        ( select1 )? pnt1.getX() : pnt0.getX(),+        ( select1 )? pnt1.getY() : pnt0.getY(),+        ( select1 )? pnt1.getZ() : pnt0.getZ()+    );+}++#ifdef _VECTORMATH_DEBUG++inline void print( const Point3 & pnt )+{+    printf( "( %f %f %f )\n", pnt.getX(), pnt.getY(), pnt.getZ() );+}++inline void print( const Point3 & pnt, const char * name )+{+    printf( "%s: ( %f %f %f )\n", name, pnt.getX(), pnt.getY(), pnt.getZ() );+}++#endif++} // namespace Aos+} // namespace Vectormath++#endif
+ bullet/vectormath/scalar/vectormath_aos.h view
@@ -0,0 +1,1872 @@+/*+   Copyright (C) 2009 Sony Computer Entertainment Inc.+   All rights reserved.++This software is provided 'as-is', without any express or implied warranty.+In no event will the authors be held liable for any damages arising from the use of this software.+Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions:++1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.+3. This notice may not be removed or altered from any source distribution.++*/++#ifndef _VECTORMATH_AOS_CPP_H+#define _VECTORMATH_AOS_CPP_H++#include <math.h>++#ifdef _VECTORMATH_DEBUG+#include <stdio.h>+#endif++namespace Vectormath {++namespace Aos {++//-----------------------------------------------------------------------------+// Forward Declarations+//++class Vector3;+class Vector4;+class Point3;+class Quat;+class Matrix3;+class Matrix4;+class Transform3;++// A 3-D vector in array-of-structures format+//+class Vector3+{+    float mX;+    float mY;+    float mZ;+#ifndef __GNUC__+    float d;+#endif++public:+    // Default constructor; does no initialization+    // +    inline Vector3( ) { };++    // Copy a 3-D vector+    // +    inline Vector3( const Vector3 & vec );++    // Construct a 3-D vector from x, y, and z elements+    // +    inline Vector3( float x, float y, float z );++    // Copy elements from a 3-D point into a 3-D vector+    // +    explicit inline Vector3( const Point3 & pnt );++    // Set all elements of a 3-D vector to the same scalar value+    // +    explicit inline Vector3( float scalar );++    // Assign one 3-D vector to another+    // +    inline Vector3 & operator =( const Vector3 & vec );++    // Set the x element of a 3-D vector+    // +    inline Vector3 & setX( float x );++    // Set the y element of a 3-D vector+    // +    inline Vector3 & setY( float y );++    // Set the z element of a 3-D vector+    // +    inline Vector3 & setZ( float z );++    // Get the x element of a 3-D vector+    // +    inline float getX( ) const;++    // Get the y element of a 3-D vector+    // +    inline float getY( ) const;++    // Get the z element of a 3-D vector+    // +    inline float getZ( ) const;++    // Set an x, y, or z element of a 3-D vector by index+    // +    inline Vector3 & setElem( int idx, float value );++    // Get an x, y, or z element of a 3-D vector by index+    // +    inline float getElem( int idx ) const;++    // Subscripting operator to set or get an element+    // +    inline float & operator []( int idx );++    // Subscripting operator to get an element+    // +    inline float operator []( int idx ) const;++    // Add two 3-D vectors+    // +    inline const Vector3 operator +( const Vector3 & vec ) const;++    // Subtract a 3-D vector from another 3-D vector+    // +    inline const Vector3 operator -( const Vector3 & vec ) const;++    // Add a 3-D vector to a 3-D point+    // +    inline const Point3 operator +( const Point3 & pnt ) const;++    // Multiply a 3-D vector by a scalar+    // +    inline const Vector3 operator *( float scalar ) const;++    // Divide a 3-D vector by a scalar+    // +    inline const Vector3 operator /( float scalar ) const;++    // Perform compound assignment and addition with a 3-D vector+    // +    inline Vector3 & operator +=( const Vector3 & vec );++    // Perform compound assignment and subtraction by a 3-D vector+    // +    inline Vector3 & operator -=( const Vector3 & vec );++    // Perform compound assignment and multiplication by a scalar+    // +    inline Vector3 & operator *=( float scalar );++    // Perform compound assignment and division by a scalar+    // +    inline Vector3 & operator /=( float scalar );++    // Negate all elements of a 3-D vector+    // +    inline const Vector3 operator -( ) const;++    // Construct x axis+    // +    static inline const Vector3 xAxis( );++    // Construct y axis+    // +    static inline const Vector3 yAxis( );++    // Construct z axis+    // +    static inline const Vector3 zAxis( );++}+#ifdef __GNUC__+__attribute__ ((aligned(16)))+#endif+;++// Multiply a 3-D vector by a scalar+// +inline const Vector3 operator *( float scalar, const Vector3 & vec );++// Multiply two 3-D vectors per element+// +inline const Vector3 mulPerElem( const Vector3 & vec0, const Vector3 & vec1 );++// Divide two 3-D vectors per element+// NOTE: +// Floating-point behavior matches standard library function divf4.+// +inline const Vector3 divPerElem( const Vector3 & vec0, const Vector3 & vec1 );++// Compute the reciprocal of a 3-D vector per element+// NOTE: +// Floating-point behavior matches standard library function recipf4.+// +inline const Vector3 recipPerElem( const Vector3 & vec );++// Compute the square root of a 3-D vector per element+// NOTE: +// Floating-point behavior matches standard library function sqrtf4.+// +inline const Vector3 sqrtPerElem( const Vector3 & vec );++// Compute the reciprocal square root of a 3-D vector per element+// NOTE: +// Floating-point behavior matches standard library function rsqrtf4.+// +inline const Vector3 rsqrtPerElem( const Vector3 & vec );++// Compute the absolute value of a 3-D vector per element+// +inline const Vector3 absPerElem( const Vector3 & vec );++// Copy sign from one 3-D vector to another, per element+// +inline const Vector3 copySignPerElem( const Vector3 & vec0, const Vector3 & vec1 );++// Maximum of two 3-D vectors per element+// +inline const Vector3 maxPerElem( const Vector3 & vec0, const Vector3 & vec1 );++// Minimum of two 3-D vectors per element+// +inline const Vector3 minPerElem( const Vector3 & vec0, const Vector3 & vec1 );++// Maximum element of a 3-D vector+// +inline float maxElem( const Vector3 & vec );++// Minimum element of a 3-D vector+// +inline float minElem( const Vector3 & vec );++// Compute the sum of all elements of a 3-D vector+// +inline float sum( const Vector3 & vec );++// Compute the dot product of two 3-D vectors+// +inline float dot( const Vector3 & vec0, const Vector3 & vec1 );++// Compute the square of the length of a 3-D vector+// +inline float lengthSqr( const Vector3 & vec );++// Compute the length of a 3-D vector+// +inline float length( const Vector3 & vec );++// Normalize a 3-D vector+// NOTE: +// The result is unpredictable when all elements of vec are at or near zero.+// +inline const Vector3 normalize( const Vector3 & vec );++// Compute cross product of two 3-D vectors+// +inline const Vector3 cross( const Vector3 & vec0, const Vector3 & vec1 );++// Outer product of two 3-D vectors+// +inline const Matrix3 outer( const Vector3 & vec0, const Vector3 & vec1 );++// Pre-multiply a row vector by a 3x3 matrix+// +inline const Vector3 rowMul( const Vector3 & vec, const Matrix3 & mat );++// Cross-product matrix of a 3-D vector+// +inline const Matrix3 crossMatrix( const Vector3 & vec );++// Create cross-product matrix and multiply+// NOTE: +// Faster than separately creating a cross-product matrix and multiplying.+// +inline const Matrix3 crossMatrixMul( const Vector3 & vec, const Matrix3 & mat );++// Linear interpolation between two 3-D vectors+// NOTE: +// Does not clamp t between 0 and 1.+// +inline const Vector3 lerp( float t, const Vector3 & vec0, const Vector3 & vec1 );++// Spherical linear interpolation between two 3-D vectors+// NOTE: +// The result is unpredictable if the vectors point in opposite directions.+// Does not clamp t between 0 and 1.+// +inline const Vector3 slerp( float t, const Vector3 & unitVec0, const Vector3 & unitVec1 );++// Conditionally select between two 3-D vectors+// +inline const Vector3 select( const Vector3 & vec0, const Vector3 & vec1, bool select1 );++// Load x, y, and z elements from the first three words of a float array.+// +// +inline void loadXYZ( Vector3 & vec, const float * fptr );++// Store x, y, and z elements of a 3-D vector in the first three words of a float array.+// Memory area of previous 16 bytes and next 32 bytes from fptr might be accessed+// +inline void storeXYZ( const Vector3 & vec, float * fptr );++// Load three-half-floats as a 3-D vector+// NOTE: +// This transformation does not support either denormalized numbers or NaNs.+// +inline void loadHalfFloats( Vector3 & vec, const unsigned short * hfptr );++// Store a 3-D vector as half-floats. Memory area of previous 16 bytes and next 32 bytes from <code><i>hfptr</i></code> might be accessed.+// NOTE: +// This transformation does not support either denormalized numbers or NaNs. Memory area of previous 16 bytes and next 32 bytes from hfptr might be accessed.+// +inline void storeHalfFloats( const Vector3 & vec, unsigned short * hfptr );++#ifdef _VECTORMATH_DEBUG++// Print a 3-D vector+// NOTE: +// Function is only defined when _VECTORMATH_DEBUG is defined.+// +inline void print( const Vector3 & vec );++// Print a 3-D vector and an associated string identifier+// NOTE: +// Function is only defined when _VECTORMATH_DEBUG is defined.+// +inline void print( const Vector3 & vec, const char * name );++#endif++// A 4-D vector in array-of-structures format+//+class Vector4+{+    float mX;+    float mY;+    float mZ;+    float mW;++public:+    // Default constructor; does no initialization+    // +    inline Vector4( ) { };++    // Copy a 4-D vector+    // +    inline Vector4( const Vector4 & vec );++    // Construct a 4-D vector from x, y, z, and w elements+    // +    inline Vector4( float x, float y, float z, float w );++    // Construct a 4-D vector from a 3-D vector and a scalar+    // +    inline Vector4( const Vector3 & xyz, float w );++    // Copy x, y, and z from a 3-D vector into a 4-D vector, and set w to 0+    // +    explicit inline Vector4( const Vector3 & vec );++    // Copy x, y, and z from a 3-D point into a 4-D vector, and set w to 1+    // +    explicit inline Vector4( const Point3 & pnt );++    // Copy elements from a quaternion into a 4-D vector+    // +    explicit inline Vector4( const Quat & quat );++    // Set all elements of a 4-D vector to the same scalar value+    // +    explicit inline Vector4( float scalar );++    // Assign one 4-D vector to another+    // +    inline Vector4 & operator =( const Vector4 & vec );++    // Set the x, y, and z elements of a 4-D vector+    // NOTE: +    // This function does not change the w element.+    // +    inline Vector4 & setXYZ( const Vector3 & vec );++    // Get the x, y, and z elements of a 4-D vector+    // +    inline const Vector3 getXYZ( ) const;++    // Set the x element of a 4-D vector+    // +    inline Vector4 & setX( float x );++    // Set the y element of a 4-D vector+    // +    inline Vector4 & setY( float y );++    // Set the z element of a 4-D vector+    // +    inline Vector4 & setZ( float z );++    // Set the w element of a 4-D vector+    // +    inline Vector4 & setW( float w );++    // Get the x element of a 4-D vector+    // +    inline float getX( ) const;++    // Get the y element of a 4-D vector+    // +    inline float getY( ) const;++    // Get the z element of a 4-D vector+    // +    inline float getZ( ) const;++    // Get the w element of a 4-D vector+    // +    inline float getW( ) const;++    // Set an x, y, z, or w element of a 4-D vector by index+    // +    inline Vector4 & setElem( int idx, float value );++    // Get an x, y, z, or w element of a 4-D vector by index+    // +    inline float getElem( int idx ) const;++    // Subscripting operator to set or get an element+    // +    inline float & operator []( int idx );++    // Subscripting operator to get an element+    // +    inline float operator []( int idx ) const;++    // Add two 4-D vectors+    // +    inline const Vector4 operator +( const Vector4 & vec ) const;++    // Subtract a 4-D vector from another 4-D vector+    // +    inline const Vector4 operator -( const Vector4 & vec ) const;++    // Multiply a 4-D vector by a scalar+    // +    inline const Vector4 operator *( float scalar ) const;++    // Divide a 4-D vector by a scalar+    // +    inline const Vector4 operator /( float scalar ) const;++    // Perform compound assignment and addition with a 4-D vector+    // +    inline Vector4 & operator +=( const Vector4 & vec );++    // Perform compound assignment and subtraction by a 4-D vector+    // +    inline Vector4 & operator -=( const Vector4 & vec );++    // Perform compound assignment and multiplication by a scalar+    // +    inline Vector4 & operator *=( float scalar );++    // Perform compound assignment and division by a scalar+    // +    inline Vector4 & operator /=( float scalar );++    // Negate all elements of a 4-D vector+    // +    inline const Vector4 operator -( ) const;++    // Construct x axis+    // +    static inline const Vector4 xAxis( );++    // Construct y axis+    // +    static inline const Vector4 yAxis( );++    // Construct z axis+    // +    static inline const Vector4 zAxis( );++    // Construct w axis+    // +    static inline const Vector4 wAxis( );++}+#ifdef __GNUC__+__attribute__ ((aligned(16)))+#endif+;++// Multiply a 4-D vector by a scalar+// +inline const Vector4 operator *( float scalar, const Vector4 & vec );++// Multiply two 4-D vectors per element+// +inline const Vector4 mulPerElem( const Vector4 & vec0, const Vector4 & vec1 );++// Divide two 4-D vectors per element+// NOTE: +// Floating-point behavior matches standard library function divf4.+// +inline const Vector4 divPerElem( const Vector4 & vec0, const Vector4 & vec1 );++// Compute the reciprocal of a 4-D vector per element+// NOTE: +// Floating-point behavior matches standard library function recipf4.+// +inline const Vector4 recipPerElem( const Vector4 & vec );++// Compute the square root of a 4-D vector per element+// NOTE: +// Floating-point behavior matches standard library function sqrtf4.+// +inline const Vector4 sqrtPerElem( const Vector4 & vec );++// Compute the reciprocal square root of a 4-D vector per element+// NOTE: +// Floating-point behavior matches standard library function rsqrtf4.+// +inline const Vector4 rsqrtPerElem( const Vector4 & vec );++// Compute the absolute value of a 4-D vector per element+// +inline const Vector4 absPerElem( const Vector4 & vec );++// Copy sign from one 4-D vector to another, per element+// +inline const Vector4 copySignPerElem( const Vector4 & vec0, const Vector4 & vec1 );++// Maximum of two 4-D vectors per element+// +inline const Vector4 maxPerElem( const Vector4 & vec0, const Vector4 & vec1 );++// Minimum of two 4-D vectors per element+// +inline const Vector4 minPerElem( const Vector4 & vec0, const Vector4 & vec1 );++// Maximum element of a 4-D vector+// +inline float maxElem( const Vector4 & vec );++// Minimum element of a 4-D vector+// +inline float minElem( const Vector4 & vec );++// Compute the sum of all elements of a 4-D vector+// +inline float sum( const Vector4 & vec );++// Compute the dot product of two 4-D vectors+// +inline float dot( const Vector4 & vec0, const Vector4 & vec1 );++// Compute the square of the length of a 4-D vector+// +inline float lengthSqr( const Vector4 & vec );++// Compute the length of a 4-D vector+// +inline float length( const Vector4 & vec );++// Normalize a 4-D vector+// NOTE: +// The result is unpredictable when all elements of vec are at or near zero.+// +inline const Vector4 normalize( const Vector4 & vec );++// Outer product of two 4-D vectors+// +inline const Matrix4 outer( const Vector4 & vec0, const Vector4 & vec1 );++// Linear interpolation between two 4-D vectors+// NOTE: +// Does not clamp t between 0 and 1.+// +inline const Vector4 lerp( float t, const Vector4 & vec0, const Vector4 & vec1 );++// Spherical linear interpolation between two 4-D vectors+// NOTE: +// The result is unpredictable if the vectors point in opposite directions.+// Does not clamp t between 0 and 1.+// +inline const Vector4 slerp( float t, const Vector4 & unitVec0, const Vector4 & unitVec1 );++// Conditionally select between two 4-D vectors+// +inline const Vector4 select( const Vector4 & vec0, const Vector4 & vec1, bool select1 );++// Load x, y, z, and w elements from the first four words of a float array.+// +// +inline void loadXYZW( Vector4 & vec, const float * fptr );++// Store x, y, z, and w elements of a 4-D vector in the first four words of a float array.+// Memory area of previous 16 bytes and next 32 bytes from fptr might be accessed+// +inline void storeXYZW( const Vector4 & vec, float * fptr );++// Load four-half-floats as a 4-D vector+// NOTE: +// This transformation does not support either denormalized numbers or NaNs.+// +inline void loadHalfFloats( Vector4 & vec, const unsigned short * hfptr );++// Store a 4-D vector as half-floats. Memory area of previous 16 bytes and next 32 bytes from <code><i>hfptr</i></code> might be accessed.+// NOTE: +// This transformation does not support either denormalized numbers or NaNs. Memory area of previous 16 bytes and next 32 bytes from hfptr might be accessed.+// +inline void storeHalfFloats( const Vector4 & vec, unsigned short * hfptr );++#ifdef _VECTORMATH_DEBUG++// Print a 4-D vector+// NOTE: +// Function is only defined when _VECTORMATH_DEBUG is defined.+// +inline void print( const Vector4 & vec );++// Print a 4-D vector and an associated string identifier+// NOTE: +// Function is only defined when _VECTORMATH_DEBUG is defined.+// +inline void print( const Vector4 & vec, const char * name );++#endif++// A 3-D point in array-of-structures format+//+class Point3+{+    float mX;+    float mY;+    float mZ;+#ifndef __GNUC__+    float d;+#endif++public:+    // Default constructor; does no initialization+    // +    inline Point3( ) { };++    // Copy a 3-D point+    // +    inline Point3( const Point3 & pnt );++    // Construct a 3-D point from x, y, and z elements+    // +    inline Point3( float x, float y, float z );++    // Copy elements from a 3-D vector into a 3-D point+    // +    explicit inline Point3( const Vector3 & vec );++    // Set all elements of a 3-D point to the same scalar value+    // +    explicit inline Point3( float scalar );++    // Assign one 3-D point to another+    // +    inline Point3 & operator =( const Point3 & pnt );++    // Set the x element of a 3-D point+    // +    inline Point3 & setX( float x );++    // Set the y element of a 3-D point+    // +    inline Point3 & setY( float y );++    // Set the z element of a 3-D point+    // +    inline Point3 & setZ( float z );++    // Get the x element of a 3-D point+    // +    inline float getX( ) const;++    // Get the y element of a 3-D point+    // +    inline float getY( ) const;++    // Get the z element of a 3-D point+    // +    inline float getZ( ) const;++    // Set an x, y, or z element of a 3-D point by index+    // +    inline Point3 & setElem( int idx, float value );++    // Get an x, y, or z element of a 3-D point by index+    // +    inline float getElem( int idx ) const;++    // Subscripting operator to set or get an element+    // +    inline float & operator []( int idx );++    // Subscripting operator to get an element+    // +    inline float operator []( int idx ) const;++    // Subtract a 3-D point from another 3-D point+    // +    inline const Vector3 operator -( const Point3 & pnt ) const;++    // Add a 3-D point to a 3-D vector+    // +    inline const Point3 operator +( const Vector3 & vec ) const;++    // Subtract a 3-D vector from a 3-D point+    // +    inline const Point3 operator -( const Vector3 & vec ) const;++    // Perform compound assignment and addition with a 3-D vector+    // +    inline Point3 & operator +=( const Vector3 & vec );++    // Perform compound assignment and subtraction by a 3-D vector+    // +    inline Point3 & operator -=( const Vector3 & vec );++}+#ifdef __GNUC__+__attribute__ ((aligned(16)))+#endif+;++// Multiply two 3-D points per element+// +inline const Point3 mulPerElem( const Point3 & pnt0, const Point3 & pnt1 );++// Divide two 3-D points per element+// NOTE: +// Floating-point behavior matches standard library function divf4.+// +inline const Point3 divPerElem( const Point3 & pnt0, const Point3 & pnt1 );++// Compute the reciprocal of a 3-D point per element+// NOTE: +// Floating-point behavior matches standard library function recipf4.+// +inline const Point3 recipPerElem( const Point3 & pnt );++// Compute the square root of a 3-D point per element+// NOTE: +// Floating-point behavior matches standard library function sqrtf4.+// +inline const Point3 sqrtPerElem( const Point3 & pnt );++// Compute the reciprocal square root of a 3-D point per element+// NOTE: +// Floating-point behavior matches standard library function rsqrtf4.+// +inline const Point3 rsqrtPerElem( const Point3 & pnt );++// Compute the absolute value of a 3-D point per element+// +inline const Point3 absPerElem( const Point3 & pnt );++// Copy sign from one 3-D point to another, per element+// +inline const Point3 copySignPerElem( const Point3 & pnt0, const Point3 & pnt1 );++// Maximum of two 3-D points per element+// +inline const Point3 maxPerElem( const Point3 & pnt0, const Point3 & pnt1 );++// Minimum of two 3-D points per element+// +inline const Point3 minPerElem( const Point3 & pnt0, const Point3 & pnt1 );++// Maximum element of a 3-D point+// +inline float maxElem( const Point3 & pnt );++// Minimum element of a 3-D point+// +inline float minElem( const Point3 & pnt );++// Compute the sum of all elements of a 3-D point+// +inline float sum( const Point3 & pnt );++// Apply uniform scale to a 3-D point+// +inline const Point3 scale( const Point3 & pnt, float scaleVal );++// Apply non-uniform scale to a 3-D point+// +inline const Point3 scale( const Point3 & pnt, const Vector3 & scaleVec );++// Scalar projection of a 3-D point on a unit-length 3-D vector+// +inline float projection( const Point3 & pnt, const Vector3 & unitVec );++// Compute the square of the distance of a 3-D point from the coordinate-system origin+// +inline float distSqrFromOrigin( const Point3 & pnt );++// Compute the distance of a 3-D point from the coordinate-system origin+// +inline float distFromOrigin( const Point3 & pnt );++// Compute the square of the distance between two 3-D points+// +inline float distSqr( const Point3 & pnt0, const Point3 & pnt1 );++// Compute the distance between two 3-D points+// +inline float dist( const Point3 & pnt0, const Point3 & pnt1 );++// Linear interpolation between two 3-D points+// NOTE: +// Does not clamp t between 0 and 1.+// +inline const Point3 lerp( float t, const Point3 & pnt0, const Point3 & pnt1 );++// Conditionally select between two 3-D points+// +inline const Point3 select( const Point3 & pnt0, const Point3 & pnt1, bool select1 );++// Load x, y, and z elements from the first three words of a float array.+// +// +inline void loadXYZ( Point3 & pnt, const float * fptr );++// Store x, y, and z elements of a 3-D point in the first three words of a float array.+// Memory area of previous 16 bytes and next 32 bytes from fptr might be accessed+// +inline void storeXYZ( const Point3 & pnt, float * fptr );++// Load three-half-floats as a 3-D point+// NOTE: +// This transformation does not support either denormalized numbers or NaNs.+// +inline void loadHalfFloats( Point3 & pnt, const unsigned short * hfptr );++// Store a 3-D point as half-floats. Memory area of previous 16 bytes and next 32 bytes from <code><i>hfptr</i></code> might be accessed.+// NOTE: +// This transformation does not support either denormalized numbers or NaNs. Memory area of previous 16 bytes and next 32 bytes from hfptr might be accessed.+// +inline void storeHalfFloats( const Point3 & pnt, unsigned short * hfptr );++#ifdef _VECTORMATH_DEBUG++// Print a 3-D point+// NOTE: +// Function is only defined when _VECTORMATH_DEBUG is defined.+// +inline void print( const Point3 & pnt );++// Print a 3-D point and an associated string identifier+// NOTE: +// Function is only defined when _VECTORMATH_DEBUG is defined.+// +inline void print( const Point3 & pnt, const char * name );++#endif++// A quaternion in array-of-structures format+//+class Quat+{+    float mX;+    float mY;+    float mZ;+    float mW;++public:+    // Default constructor; does no initialization+    // +    inline Quat( ) { };++    // Copy a quaternion+    // +    inline Quat( const Quat & quat );++    // Construct a quaternion from x, y, z, and w elements+    // +    inline Quat( float x, float y, float z, float w );++    // Construct a quaternion from a 3-D vector and a scalar+    // +    inline Quat( const Vector3 & xyz, float w );++    // Copy elements from a 4-D vector into a quaternion+    // +    explicit inline Quat( const Vector4 & vec );++    // Convert a rotation matrix to a unit-length quaternion+    // +    explicit inline Quat( const Matrix3 & rotMat );++    // Set all elements of a quaternion to the same scalar value+    // +    explicit inline Quat( float scalar );++    // Assign one quaternion to another+    // +    inline Quat & operator =( const Quat & quat );++    // Set the x, y, and z elements of a quaternion+    // NOTE: +    // This function does not change the w element.+    // +    inline Quat & setXYZ( const Vector3 & vec );++    // Get the x, y, and z elements of a quaternion+    // +    inline const Vector3 getXYZ( ) const;++    // Set the x element of a quaternion+    // +    inline Quat & setX( float x );++    // Set the y element of a quaternion+    // +    inline Quat & setY( float y );++    // Set the z element of a quaternion+    // +    inline Quat & setZ( float z );++    // Set the w element of a quaternion+    // +    inline Quat & setW( float w );++    // Get the x element of a quaternion+    // +    inline float getX( ) const;++    // Get the y element of a quaternion+    // +    inline float getY( ) const;++    // Get the z element of a quaternion+    // +    inline float getZ( ) const;++    // Get the w element of a quaternion+    // +    inline float getW( ) const;++    // Set an x, y, z, or w element of a quaternion by index+    // +    inline Quat & setElem( int idx, float value );++    // Get an x, y, z, or w element of a quaternion by index+    // +    inline float getElem( int idx ) const;++    // Subscripting operator to set or get an element+    // +    inline float & operator []( int idx );++    // Subscripting operator to get an element+    // +    inline float operator []( int idx ) const;++    // Add two quaternions+    // +    inline const Quat operator +( const Quat & quat ) const;++    // Subtract a quaternion from another quaternion+    // +    inline const Quat operator -( const Quat & quat ) const;++    // Multiply two quaternions+    // +    inline const Quat operator *( const Quat & quat ) const;++    // Multiply a quaternion by a scalar+    // +    inline const Quat operator *( float scalar ) const;++    // Divide a quaternion by a scalar+    // +    inline const Quat operator /( float scalar ) const;++    // Perform compound assignment and addition with a quaternion+    // +    inline Quat & operator +=( const Quat & quat );++    // Perform compound assignment and subtraction by a quaternion+    // +    inline Quat & operator -=( const Quat & quat );++    // Perform compound assignment and multiplication by a quaternion+    // +    inline Quat & operator *=( const Quat & quat );++    // Perform compound assignment and multiplication by a scalar+    // +    inline Quat & operator *=( float scalar );++    // Perform compound assignment and division by a scalar+    // +    inline Quat & operator /=( float scalar );++    // Negate all elements of a quaternion+    // +    inline const Quat operator -( ) const;++    // Construct an identity quaternion+    // +    static inline const Quat identity( );++    // Construct a quaternion to rotate between two unit-length 3-D vectors+    // NOTE: +    // The result is unpredictable if unitVec0 and unitVec1 point in opposite directions.+    // +    static inline const Quat rotation( const Vector3 & unitVec0, const Vector3 & unitVec1 );++    // Construct a quaternion to rotate around a unit-length 3-D vector+    // +    static inline const Quat rotation( float radians, const Vector3 & unitVec );++    // Construct a quaternion to rotate around the x axis+    // +    static inline const Quat rotationX( float radians );++    // Construct a quaternion to rotate around the y axis+    // +    static inline const Quat rotationY( float radians );++    // Construct a quaternion to rotate around the z axis+    // +    static inline const Quat rotationZ( float radians );++}+#ifdef __GNUC__+__attribute__ ((aligned(16)))+#endif+;++// Multiply a quaternion by a scalar+// +inline const Quat operator *( float scalar, const Quat & quat );++// Compute the conjugate of a quaternion+// +inline const Quat conj( const Quat & quat );++// Use a unit-length quaternion to rotate a 3-D vector+// +inline const Vector3 rotate( const Quat & unitQuat, const Vector3 & vec );++// Compute the dot product of two quaternions+// +inline float dot( const Quat & quat0, const Quat & quat1 );++// Compute the norm of a quaternion+// +inline float norm( const Quat & quat );++// Compute the length of a quaternion+// +inline float length( const Quat & quat );++// Normalize a quaternion+// NOTE: +// The result is unpredictable when all elements of quat are at or near zero.+// +inline const Quat normalize( const Quat & quat );++// Linear interpolation between two quaternions+// NOTE: +// Does not clamp t between 0 and 1.+// +inline const Quat lerp( float t, const Quat & quat0, const Quat & quat1 );++// Spherical linear interpolation between two quaternions+// NOTE: +// Interpolates along the shortest path between orientations.+// Does not clamp t between 0 and 1.+// +inline const Quat slerp( float t, const Quat & unitQuat0, const Quat & unitQuat1 );++// Spherical quadrangle interpolation+// +inline const Quat squad( float t, const Quat & unitQuat0, const Quat & unitQuat1, const Quat & unitQuat2, const Quat & unitQuat3 );++// Conditionally select between two quaternions+// +inline const Quat select( const Quat & quat0, const Quat & quat1, bool select1 );++// Load x, y, z, and w elements from the first four words of a float array.+// +// +inline void loadXYZW( Quat & quat, const float * fptr );++// Store x, y, z, and w elements of a quaternion in the first four words of a float array.+// Memory area of previous 16 bytes and next 32 bytes from fptr might be accessed+// +inline void storeXYZW( const Quat & quat, float * fptr );++#ifdef _VECTORMATH_DEBUG++// Print a quaternion+// NOTE: +// Function is only defined when _VECTORMATH_DEBUG is defined.+// +inline void print( const Quat & quat );++// Print a quaternion and an associated string identifier+// NOTE: +// Function is only defined when _VECTORMATH_DEBUG is defined.+// +inline void print( const Quat & quat, const char * name );++#endif++// A 3x3 matrix in array-of-structures format+//+class Matrix3+{+    Vector3 mCol0;+    Vector3 mCol1;+    Vector3 mCol2;++public:+    // Default constructor; does no initialization+    // +    inline Matrix3( ) { };++    // Copy a 3x3 matrix+    // +    inline Matrix3( const Matrix3 & mat );++    // Construct a 3x3 matrix containing the specified columns+    // +    inline Matrix3( const Vector3 & col0, const Vector3 & col1, const Vector3 & col2 );++    // Construct a 3x3 rotation matrix from a unit-length quaternion+    // +    explicit inline Matrix3( const Quat & unitQuat );++    // Set all elements of a 3x3 matrix to the same scalar value+    // +    explicit inline Matrix3( float scalar );++    // Assign one 3x3 matrix to another+    // +    inline Matrix3 & operator =( const Matrix3 & mat );++    // Set column 0 of a 3x3 matrix+    // +    inline Matrix3 & setCol0( const Vector3 & col0 );++    // Set column 1 of a 3x3 matrix+    // +    inline Matrix3 & setCol1( const Vector3 & col1 );++    // Set column 2 of a 3x3 matrix+    // +    inline Matrix3 & setCol2( const Vector3 & col2 );++    // Get column 0 of a 3x3 matrix+    // +    inline const Vector3 getCol0( ) const;++    // Get column 1 of a 3x3 matrix+    // +    inline const Vector3 getCol1( ) const;++    // Get column 2 of a 3x3 matrix+    // +    inline const Vector3 getCol2( ) const;++    // Set the column of a 3x3 matrix referred to by the specified index+    // +    inline Matrix3 & setCol( int col, const Vector3 & vec );++    // Set the row of a 3x3 matrix referred to by the specified index+    // +    inline Matrix3 & setRow( int row, const Vector3 & vec );++    // Get the column of a 3x3 matrix referred to by the specified index+    // +    inline const Vector3 getCol( int col ) const;++    // Get the row of a 3x3 matrix referred to by the specified index+    // +    inline const Vector3 getRow( int row ) const;++    // Subscripting operator to set or get a column+    // +    inline Vector3 & operator []( int col );++    // Subscripting operator to get a column+    // +    inline const Vector3 operator []( int col ) const;++    // Set the element of a 3x3 matrix referred to by column and row indices+    // +    inline Matrix3 & setElem( int col, int row, float val );++    // Get the element of a 3x3 matrix referred to by column and row indices+    // +    inline float getElem( int col, int row ) const;++    // Add two 3x3 matrices+    // +    inline const Matrix3 operator +( const Matrix3 & mat ) const;++    // Subtract a 3x3 matrix from another 3x3 matrix+    // +    inline const Matrix3 operator -( const Matrix3 & mat ) const;++    // Negate all elements of a 3x3 matrix+    // +    inline const Matrix3 operator -( ) const;++    // Multiply a 3x3 matrix by a scalar+    // +    inline const Matrix3 operator *( float scalar ) const;++    // Multiply a 3x3 matrix by a 3-D vector+    // +    inline const Vector3 operator *( const Vector3 & vec ) const;++    // Multiply two 3x3 matrices+    // +    inline const Matrix3 operator *( const Matrix3 & mat ) const;++    // Perform compound assignment and addition with a 3x3 matrix+    // +    inline Matrix3 & operator +=( const Matrix3 & mat );++    // Perform compound assignment and subtraction by a 3x3 matrix+    // +    inline Matrix3 & operator -=( const Matrix3 & mat );++    // Perform compound assignment and multiplication by a scalar+    // +    inline Matrix3 & operator *=( float scalar );++    // Perform compound assignment and multiplication by a 3x3 matrix+    // +    inline Matrix3 & operator *=( const Matrix3 & mat );++    // Construct an identity 3x3 matrix+    // +    static inline const Matrix3 identity( );++    // Construct a 3x3 matrix to rotate around the x axis+    // +    static inline const Matrix3 rotationX( float radians );++    // Construct a 3x3 matrix to rotate around the y axis+    // +    static inline const Matrix3 rotationY( float radians );++    // Construct a 3x3 matrix to rotate around the z axis+    // +    static inline const Matrix3 rotationZ( float radians );++    // Construct a 3x3 matrix to rotate around the x, y, and z axes+    // +    static inline const Matrix3 rotationZYX( const Vector3 & radiansXYZ );++    // Construct a 3x3 matrix to rotate around a unit-length 3-D vector+    // +    static inline const Matrix3 rotation( float radians, const Vector3 & unitVec );++    // Construct a rotation matrix from a unit-length quaternion+    // +    static inline const Matrix3 rotation( const Quat & unitQuat );++    // Construct a 3x3 matrix to perform scaling+    // +    static inline const Matrix3 scale( const Vector3 & scaleVec );++};+// Multiply a 3x3 matrix by a scalar+// +inline const Matrix3 operator *( float scalar, const Matrix3 & mat );++// Append (post-multiply) a scale transformation to a 3x3 matrix+// NOTE: +// Faster than creating and multiplying a scale transformation matrix.+// +inline const Matrix3 appendScale( const Matrix3 & mat, const Vector3 & scaleVec );++// Prepend (pre-multiply) a scale transformation to a 3x3 matrix+// NOTE: +// Faster than creating and multiplying a scale transformation matrix.+// +inline const Matrix3 prependScale( const Vector3 & scaleVec, const Matrix3 & mat );++// Multiply two 3x3 matrices per element+// +inline const Matrix3 mulPerElem( const Matrix3 & mat0, const Matrix3 & mat1 );++// Compute the absolute value of a 3x3 matrix per element+// +inline const Matrix3 absPerElem( const Matrix3 & mat );++// Transpose of a 3x3 matrix+// +inline const Matrix3 transpose( const Matrix3 & mat );++// Compute the inverse of a 3x3 matrix+// NOTE: +// Result is unpredictable when the determinant of mat is equal to or near 0.+// +inline const Matrix3 inverse( const Matrix3 & mat );++// Determinant of a 3x3 matrix+// +inline float determinant( const Matrix3 & mat );++// Conditionally select between two 3x3 matrices+// +inline const Matrix3 select( const Matrix3 & mat0, const Matrix3 & mat1, bool select1 );++#ifdef _VECTORMATH_DEBUG++// Print a 3x3 matrix+// NOTE: +// Function is only defined when _VECTORMATH_DEBUG is defined.+// +inline void print( const Matrix3 & mat );++// Print a 3x3 matrix and an associated string identifier+// NOTE: +// Function is only defined when _VECTORMATH_DEBUG is defined.+// +inline void print( const Matrix3 & mat, const char * name );++#endif++// A 4x4 matrix in array-of-structures format+//+class Matrix4+{+    Vector4 mCol0;+    Vector4 mCol1;+    Vector4 mCol2;+    Vector4 mCol3;++public:+    // Default constructor; does no initialization+    // +    inline Matrix4( ) { };++    // Copy a 4x4 matrix+    // +    inline Matrix4( const Matrix4 & mat );++    // Construct a 4x4 matrix containing the specified columns+    // +    inline Matrix4( const Vector4 & col0, const Vector4 & col1, const Vector4 & col2, const Vector4 & col3 );++    // Construct a 4x4 matrix from a 3x4 transformation matrix+    // +    explicit inline Matrix4( const Transform3 & mat );++    // Construct a 4x4 matrix from a 3x3 matrix and a 3-D vector+    // +    inline Matrix4( const Matrix3 & mat, const Vector3 & translateVec );++    // Construct a 4x4 matrix from a unit-length quaternion and a 3-D vector+    // +    inline Matrix4( const Quat & unitQuat, const Vector3 & translateVec );++    // Set all elements of a 4x4 matrix to the same scalar value+    // +    explicit inline Matrix4( float scalar );++    // Assign one 4x4 matrix to another+    // +    inline Matrix4 & operator =( const Matrix4 & mat );++    // Set the upper-left 3x3 submatrix+    // NOTE: +    // This function does not change the bottom row elements.+    // +    inline Matrix4 & setUpper3x3( const Matrix3 & mat3 );++    // Get the upper-left 3x3 submatrix of a 4x4 matrix+    // +    inline const Matrix3 getUpper3x3( ) const;++    // Set translation component+    // NOTE: +    // This function does not change the bottom row elements.+    // +    inline Matrix4 & setTranslation( const Vector3 & translateVec );++    // Get the translation component of a 4x4 matrix+    // +    inline const Vector3 getTranslation( ) const;++    // Set column 0 of a 4x4 matrix+    // +    inline Matrix4 & setCol0( const Vector4 & col0 );++    // Set column 1 of a 4x4 matrix+    // +    inline Matrix4 & setCol1( const Vector4 & col1 );++    // Set column 2 of a 4x4 matrix+    // +    inline Matrix4 & setCol2( const Vector4 & col2 );++    // Set column 3 of a 4x4 matrix+    // +    inline Matrix4 & setCol3( const Vector4 & col3 );++    // Get column 0 of a 4x4 matrix+    // +    inline const Vector4 getCol0( ) const;++    // Get column 1 of a 4x4 matrix+    // +    inline const Vector4 getCol1( ) const;++    // Get column 2 of a 4x4 matrix+    // +    inline const Vector4 getCol2( ) const;++    // Get column 3 of a 4x4 matrix+    // +    inline const Vector4 getCol3( ) const;++    // Set the column of a 4x4 matrix referred to by the specified index+    // +    inline Matrix4 & setCol( int col, const Vector4 & vec );++    // Set the row of a 4x4 matrix referred to by the specified index+    // +    inline Matrix4 & setRow( int row, const Vector4 & vec );++    // Get the column of a 4x4 matrix referred to by the specified index+    // +    inline const Vector4 getCol( int col ) const;++    // Get the row of a 4x4 matrix referred to by the specified index+    // +    inline const Vector4 getRow( int row ) const;++    // Subscripting operator to set or get a column+    // +    inline Vector4 & operator []( int col );++    // Subscripting operator to get a column+    // +    inline const Vector4 operator []( int col ) const;++    // Set the element of a 4x4 matrix referred to by column and row indices+    // +    inline Matrix4 & setElem( int col, int row, float val );++    // Get the element of a 4x4 matrix referred to by column and row indices+    // +    inline float getElem( int col, int row ) const;++    // Add two 4x4 matrices+    // +    inline const Matrix4 operator +( const Matrix4 & mat ) const;++    // Subtract a 4x4 matrix from another 4x4 matrix+    // +    inline const Matrix4 operator -( const Matrix4 & mat ) const;++    // Negate all elements of a 4x4 matrix+    // +    inline const Matrix4 operator -( ) const;++    // Multiply a 4x4 matrix by a scalar+    // +    inline const Matrix4 operator *( float scalar ) const;++    // Multiply a 4x4 matrix by a 4-D vector+    // +    inline const Vector4 operator *( const Vector4 & vec ) const;++    // Multiply a 4x4 matrix by a 3-D vector+    // +    inline const Vector4 operator *( const Vector3 & vec ) const;++    // Multiply a 4x4 matrix by a 3-D point+    // +    inline const Vector4 operator *( const Point3 & pnt ) const;++    // Multiply two 4x4 matrices+    // +    inline const Matrix4 operator *( const Matrix4 & mat ) const;++    // Multiply a 4x4 matrix by a 3x4 transformation matrix+    // +    inline const Matrix4 operator *( const Transform3 & tfrm ) const;++    // Perform compound assignment and addition with a 4x4 matrix+    // +    inline Matrix4 & operator +=( const Matrix4 & mat );++    // Perform compound assignment and subtraction by a 4x4 matrix+    // +    inline Matrix4 & operator -=( const Matrix4 & mat );++    // Perform compound assignment and multiplication by a scalar+    // +    inline Matrix4 & operator *=( float scalar );++    // Perform compound assignment and multiplication by a 4x4 matrix+    // +    inline Matrix4 & operator *=( const Matrix4 & mat );++    // Perform compound assignment and multiplication by a 3x4 transformation matrix+    // +    inline Matrix4 & operator *=( const Transform3 & tfrm );++    // Construct an identity 4x4 matrix+    // +    static inline const Matrix4 identity( );++    // Construct a 4x4 matrix to rotate around the x axis+    // +    static inline const Matrix4 rotationX( float radians );++    // Construct a 4x4 matrix to rotate around the y axis+    // +    static inline const Matrix4 rotationY( float radians );++    // Construct a 4x4 matrix to rotate around the z axis+    // +    static inline const Matrix4 rotationZ( float radians );++    // Construct a 4x4 matrix to rotate around the x, y, and z axes+    // +    static inline const Matrix4 rotationZYX( const Vector3 & radiansXYZ );++    // Construct a 4x4 matrix to rotate around a unit-length 3-D vector+    // +    static inline const Matrix4 rotation( float radians, const Vector3 & unitVec );++    // Construct a rotation matrix from a unit-length quaternion+    // +    static inline const Matrix4 rotation( const Quat & unitQuat );++    // Construct a 4x4 matrix to perform scaling+    // +    static inline const Matrix4 scale( const Vector3 & scaleVec );++    // Construct a 4x4 matrix to perform translation+    // +    static inline const Matrix4 translation( const Vector3 & translateVec );++    // Construct viewing matrix based on eye position, position looked at, and up direction+    // +    static inline const Matrix4 lookAt( const Point3 & eyePos, const Point3 & lookAtPos, const Vector3 & upVec );++    // Construct a perspective projection matrix+    // +    static inline const Matrix4 perspective( float fovyRadians, float aspect, float zNear, float zFar );++    // Construct a perspective projection matrix based on frustum+    // +    static inline const Matrix4 frustum( float left, float right, float bottom, float top, float zNear, float zFar );++    // Construct an orthographic projection matrix+    // +    static inline const Matrix4 orthographic( float left, float right, float bottom, float top, float zNear, float zFar );++};+// Multiply a 4x4 matrix by a scalar+// +inline const Matrix4 operator *( float scalar, const Matrix4 & mat );++// Append (post-multiply) a scale transformation to a 4x4 matrix+// NOTE: +// Faster than creating and multiplying a scale transformation matrix.+// +inline const Matrix4 appendScale( const Matrix4 & mat, const Vector3 & scaleVec );++// Prepend (pre-multiply) a scale transformation to a 4x4 matrix+// NOTE: +// Faster than creating and multiplying a scale transformation matrix.+// +inline const Matrix4 prependScale( const Vector3 & scaleVec, const Matrix4 & mat );++// Multiply two 4x4 matrices per element+// +inline const Matrix4 mulPerElem( const Matrix4 & mat0, const Matrix4 & mat1 );++// Compute the absolute value of a 4x4 matrix per element+// +inline const Matrix4 absPerElem( const Matrix4 & mat );++// Transpose of a 4x4 matrix+// +inline const Matrix4 transpose( const Matrix4 & mat );++// Compute the inverse of a 4x4 matrix+// NOTE: +// Result is unpredictable when the determinant of mat is equal to or near 0.+// +inline const Matrix4 inverse( const Matrix4 & mat );++// Compute the inverse of a 4x4 matrix, which is expected to be an affine matrix+// NOTE: +// This can be used to achieve better performance than a general inverse when the specified 4x4 matrix meets the given restrictions.  The result is unpredictable when the determinant of mat is equal to or near 0.+// +inline const Matrix4 affineInverse( const Matrix4 & mat );++// Compute the inverse of a 4x4 matrix, which is expected to be an affine matrix with an orthogonal upper-left 3x3 submatrix+// NOTE: +// This can be used to achieve better performance than a general inverse when the specified 4x4 matrix meets the given restrictions.+// +inline const Matrix4 orthoInverse( const Matrix4 & mat );++// Determinant of a 4x4 matrix+// +inline float determinant( const Matrix4 & mat );++// Conditionally select between two 4x4 matrices+// +inline const Matrix4 select( const Matrix4 & mat0, const Matrix4 & mat1, bool select1 );++#ifdef _VECTORMATH_DEBUG++// Print a 4x4 matrix+// NOTE: +// Function is only defined when _VECTORMATH_DEBUG is defined.+// +inline void print( const Matrix4 & mat );++// Print a 4x4 matrix and an associated string identifier+// NOTE: +// Function is only defined when _VECTORMATH_DEBUG is defined.+// +inline void print( const Matrix4 & mat, const char * name );++#endif++// A 3x4 transformation matrix in array-of-structures format+//+class Transform3+{+    Vector3 mCol0;+    Vector3 mCol1;+    Vector3 mCol2;+    Vector3 mCol3;++public:+    // Default constructor; does no initialization+    // +    inline Transform3( ) { };++    // Copy a 3x4 transformation matrix+    // +    inline Transform3( const Transform3 & tfrm );++    // Construct a 3x4 transformation matrix containing the specified columns+    // +    inline Transform3( const Vector3 & col0, const Vector3 & col1, const Vector3 & col2, const Vector3 & col3 );++    // Construct a 3x4 transformation matrix from a 3x3 matrix and a 3-D vector+    // +    inline Transform3( const Matrix3 & tfrm, const Vector3 & translateVec );++    // Construct a 3x4 transformation matrix from a unit-length quaternion and a 3-D vector+    // +    inline Transform3( const Quat & unitQuat, const Vector3 & translateVec );++    // Set all elements of a 3x4 transformation matrix to the same scalar value+    // +    explicit inline Transform3( float scalar );++    // Assign one 3x4 transformation matrix to another+    // +    inline Transform3 & operator =( const Transform3 & tfrm );++    // Set the upper-left 3x3 submatrix+    // +    inline Transform3 & setUpper3x3( const Matrix3 & mat3 );++    // Get the upper-left 3x3 submatrix of a 3x4 transformation matrix+    // +    inline const Matrix3 getUpper3x3( ) const;++    // Set translation component+    // +    inline Transform3 & setTranslation( const Vector3 & translateVec );++    // Get the translation component of a 3x4 transformation matrix+    // +    inline const Vector3 getTranslation( ) const;++    // Set column 0 of a 3x4 transformation matrix+    // +    inline Transform3 & setCol0( const Vector3 & col0 );++    // Set column 1 of a 3x4 transformation matrix+    // +    inline Transform3 & setCol1( const Vector3 & col1 );++    // Set column 2 of a 3x4 transformation matrix+    // +    inline Transform3 & setCol2( const Vector3 & col2 );++    // Set column 3 of a 3x4 transformation matrix+    // +    inline Transform3 & setCol3( const Vector3 & col3 );++    // Get column 0 of a 3x4 transformation matrix+    // +    inline const Vector3 getCol0( ) const;++    // Get column 1 of a 3x4 transformation matrix+    // +    inline const Vector3 getCol1( ) const;++    // Get column 2 of a 3x4 transformation matrix+    // +    inline const Vector3 getCol2( ) const;++    // Get column 3 of a 3x4 transformation matrix+    // +    inline const Vector3 getCol3( ) const;++    // Set the column of a 3x4 transformation matrix referred to by the specified index+    // +    inline Transform3 & setCol( int col, const Vector3 & vec );++    // Set the row of a 3x4 transformation matrix referred to by the specified index+    // +    inline Transform3 & setRow( int row, const Vector4 & vec );++    // Get the column of a 3x4 transformation matrix referred to by the specified index+    // +    inline const Vector3 getCol( int col ) const;++    // Get the row of a 3x4 transformation matrix referred to by the specified index+    // +    inline const Vector4 getRow( int row ) const;++    // Subscripting operator to set or get a column+    // +    inline Vector3 & operator []( int col );++    // Subscripting operator to get a column+    // +    inline const Vector3 operator []( int col ) const;++    // Set the element of a 3x4 transformation matrix referred to by column and row indices+    // +    inline Transform3 & setElem( int col, int row, float val );++    // Get the element of a 3x4 transformation matrix referred to by column and row indices+    // +    inline float getElem( int col, int row ) const;++    // Multiply a 3x4 transformation matrix by a 3-D vector+    // +    inline const Vector3 operator *( const Vector3 & vec ) const;++    // Multiply a 3x4 transformation matrix by a 3-D point+    // +    inline const Point3 operator *( const Point3 & pnt ) const;++    // Multiply two 3x4 transformation matrices+    // +    inline const Transform3 operator *( const Transform3 & tfrm ) const;++    // Perform compound assignment and multiplication by a 3x4 transformation matrix+    // +    inline Transform3 & operator *=( const Transform3 & tfrm );++    // Construct an identity 3x4 transformation matrix+    // +    static inline const Transform3 identity( );++    // Construct a 3x4 transformation matrix to rotate around the x axis+    // +    static inline const Transform3 rotationX( float radians );++    // Construct a 3x4 transformation matrix to rotate around the y axis+    // +    static inline const Transform3 rotationY( float radians );++    // Construct a 3x4 transformation matrix to rotate around the z axis+    // +    static inline const Transform3 rotationZ( float radians );++    // Construct a 3x4 transformation matrix to rotate around the x, y, and z axes+    // +    static inline const Transform3 rotationZYX( const Vector3 & radiansXYZ );++    // Construct a 3x4 transformation matrix to rotate around a unit-length 3-D vector+    // +    static inline const Transform3 rotation( float radians, const Vector3 & unitVec );++    // Construct a rotation matrix from a unit-length quaternion+    // +    static inline const Transform3 rotation( const Quat & unitQuat );++    // Construct a 3x4 transformation matrix to perform scaling+    // +    static inline const Transform3 scale( const Vector3 & scaleVec );++    // Construct a 3x4 transformation matrix to perform translation+    // +    static inline const Transform3 translation( const Vector3 & translateVec );++};+// Append (post-multiply) a scale transformation to a 3x4 transformation matrix+// NOTE: +// Faster than creating and multiplying a scale transformation matrix.+// +inline const Transform3 appendScale( const Transform3 & tfrm, const Vector3 & scaleVec );++// Prepend (pre-multiply) a scale transformation to a 3x4 transformation matrix+// NOTE: +// Faster than creating and multiplying a scale transformation matrix.+// +inline const Transform3 prependScale( const Vector3 & scaleVec, const Transform3 & tfrm );++// Multiply two 3x4 transformation matrices per element+// +inline const Transform3 mulPerElem( const Transform3 & tfrm0, const Transform3 & tfrm1 );++// Compute the absolute value of a 3x4 transformation matrix per element+// +inline const Transform3 absPerElem( const Transform3 & tfrm );++// Inverse of a 3x4 transformation matrix+// NOTE: +// Result is unpredictable when the determinant of the left 3x3 submatrix is equal to or near 0.+// +inline const Transform3 inverse( const Transform3 & tfrm );++// Compute the inverse of a 3x4 transformation matrix, expected to have an orthogonal upper-left 3x3 submatrix+// NOTE: +// This can be used to achieve better performance than a general inverse when the specified 3x4 transformation matrix meets the given restrictions.+// +inline const Transform3 orthoInverse( const Transform3 & tfrm );++// Conditionally select between two 3x4 transformation matrices+// +inline const Transform3 select( const Transform3 & tfrm0, const Transform3 & tfrm1, bool select1 );++#ifdef _VECTORMATH_DEBUG++// Print a 3x4 transformation matrix+// NOTE: +// Function is only defined when _VECTORMATH_DEBUG is defined.+// +inline void print( const Transform3 & tfrm );++// Print a 3x4 transformation matrix and an associated string identifier+// NOTE: +// Function is only defined when _VECTORMATH_DEBUG is defined.+// +inline void print( const Transform3 & tfrm, const char * name );++#endif++} // namespace Aos+} // namespace Vectormath++#include "vec_aos.h"+#include "quat_aos.h"+#include "mat_aos.h"++#endif
+ bullet/vectormath/sse/boolInVec.h view
@@ -0,0 +1,247 @@+/*
+   Copyright (C) 2006, 2007 Sony Computer Entertainment Inc.
+   All rights reserved.
+
+   Redistribution and use in source and binary forms,
+   with or without modification, are permitted provided that the
+   following conditions are met:
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+    * Neither the name of the Sony Computer Entertainment Inc nor the names
+      of its contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef _BOOLINVEC_H
+#define _BOOLINVEC_H
+
+#include <math.h>
+
+namespace Vectormath {
+
+class floatInVec;
+
+//--------------------------------------------------------------------------------------------------
+// boolInVec class
+//
+
+class boolInVec
+{
+    private:
+        __m128 mData;
+
+        inline boolInVec(__m128 vec);
+    public:
+        inline boolInVec() {}
+
+        // matches standard type conversions
+        //
+        inline boolInVec(const floatInVec &vec);
+
+        // explicit cast from bool
+        //
+        explicit inline boolInVec(bool scalar);
+
+#ifdef _VECTORMATH_NO_SCALAR_CAST
+        // explicit cast to bool
+        // 
+        inline bool getAsBool() const;
+#else
+        // implicit cast to bool
+        // 
+        inline operator bool() const;
+#endif
+        
+        // get vector data
+        // bool value is splatted across all word slots of vector as 0 (false) or -1 (true)
+        //
+        inline __m128 get128() const;
+
+        // operators
+        //
+        inline const boolInVec operator ! () const;
+        inline boolInVec& operator = (const boolInVec &vec);
+        inline boolInVec& operator &= (const boolInVec &vec);
+        inline boolInVec& operator ^= (const boolInVec &vec);
+        inline boolInVec& operator |= (const boolInVec &vec);
+
+        // friend functions
+        //
+        friend inline const boolInVec operator == (const boolInVec &vec0, const boolInVec &vec1);
+        friend inline const boolInVec operator != (const boolInVec &vec0, const boolInVec &vec1);
+        friend inline const boolInVec operator < (const floatInVec &vec0, const floatInVec &vec1);
+        friend inline const boolInVec operator <= (const floatInVec &vec0, const floatInVec &vec1);
+        friend inline const boolInVec operator > (const floatInVec &vec0, const floatInVec &vec1);
+        friend inline const boolInVec operator >= (const floatInVec &vec0, const floatInVec &vec1);
+        friend inline const boolInVec operator == (const floatInVec &vec0, const floatInVec &vec1);
+        friend inline const boolInVec operator != (const floatInVec &vec0, const floatInVec &vec1);
+        friend inline const boolInVec operator & (const boolInVec &vec0, const boolInVec &vec1);
+        friend inline const boolInVec operator ^ (const boolInVec &vec0, const boolInVec &vec1);
+        friend inline const boolInVec operator | (const boolInVec &vec0, const boolInVec &vec1);
+        friend inline const boolInVec select(const boolInVec &vec0, const boolInVec &vec1, const boolInVec &select_vec1);
+};
+
+//--------------------------------------------------------------------------------------------------
+// boolInVec functions
+//
+
+// operators
+//
+inline const boolInVec operator == (const boolInVec &vec0, const boolInVec &vec1);
+inline const boolInVec operator != (const boolInVec &vec0, const boolInVec &vec1);
+inline const boolInVec operator & (const boolInVec &vec0, const boolInVec &vec1);
+inline const boolInVec operator ^ (const boolInVec &vec0, const boolInVec &vec1);
+inline const boolInVec operator | (const boolInVec &vec0, const boolInVec &vec1);
+
+// select between vec0 and vec1 using boolInVec.
+// false selects vec0, true selects vec1
+//
+inline const boolInVec select(const boolInVec &vec0, const boolInVec &vec1, const boolInVec &select_vec1);
+
+} // namespace Vectormath
+
+//--------------------------------------------------------------------------------------------------
+// boolInVec implementation
+//
+
+#include "floatInVec.h"
+
+namespace Vectormath {
+
+inline
+boolInVec::boolInVec(__m128 vec)
+{
+    mData = vec;
+}
+
+inline
+boolInVec::boolInVec(const floatInVec &vec)
+{
+    *this = (vec != floatInVec(0.0f));
+}
+
+inline
+boolInVec::boolInVec(bool scalar)
+{
+    unsigned int mask = -(int)scalar;
+	mData = _mm_set1_ps(*(float *)&mask); // TODO: Union
+}
+
+#ifdef _VECTORMATH_NO_SCALAR_CAST
+inline
+bool
+boolInVec::getAsBool() const
+#else
+inline
+boolInVec::operator bool() const
+#endif
+{
+	return *(bool *)&mData;
+}
+
+inline
+__m128
+boolInVec::get128() const
+{
+    return mData;
+}
+
+inline
+const boolInVec
+boolInVec::operator ! () const
+{
+    return boolInVec(_mm_andnot_ps(mData, _mm_cmpneq_ps(_mm_setzero_ps(),_mm_setzero_ps())));
+}
+
+inline
+boolInVec&
+boolInVec::operator = (const boolInVec &vec)
+{
+    mData = vec.mData;
+    return *this;
+}
+
+inline
+boolInVec&
+boolInVec::operator &= (const boolInVec &vec)
+{
+    *this = *this & vec;
+    return *this;
+}
+
+inline
+boolInVec&
+boolInVec::operator ^= (const boolInVec &vec)
+{
+    *this = *this ^ vec;
+    return *this;
+}
+
+inline
+boolInVec&
+boolInVec::operator |= (const boolInVec &vec)
+{
+    *this = *this | vec;
+    return *this;
+}
+
+inline
+const boolInVec
+operator == (const boolInVec &vec0, const boolInVec &vec1)
+{
+	return boolInVec(_mm_cmpeq_ps(vec0.get128(), vec1.get128()));
+}
+
+inline
+const boolInVec
+operator != (const boolInVec &vec0, const boolInVec &vec1)
+{
+	return boolInVec(_mm_cmpneq_ps(vec0.get128(), vec1.get128()));
+}
+    
+inline
+const boolInVec
+operator & (const boolInVec &vec0, const boolInVec &vec1)
+{
+	return boolInVec(_mm_and_ps(vec0.get128(), vec1.get128()));
+}
+
+inline
+const boolInVec
+operator | (const boolInVec &vec0, const boolInVec &vec1)
+{
+	return boolInVec(_mm_or_ps(vec0.get128(), vec1.get128()));
+}
+
+inline
+const boolInVec
+operator ^ (const boolInVec &vec0, const boolInVec &vec1)
+{
+	return boolInVec(_mm_xor_ps(vec0.get128(), vec1.get128()));
+}
+
+inline
+const boolInVec
+select(const boolInVec &vec0, const boolInVec &vec1, const boolInVec &select_vec1)
+{
+	return boolInVec(vec_sel(vec0.get128(), vec1.get128(), select_vec1.get128()));
+}
+ 
+} // namespace Vectormath
+
+#endif // boolInVec_h
+ bullet/vectormath/sse/floatInVec.h view
@@ -0,0 +1,340 @@+/*
+   Copyright (C) 2006, 2007 Sony Computer Entertainment Inc.
+   All rights reserved.
+
+   Redistribution and use in source and binary forms,
+   with or without modification, are permitted provided that the
+   following conditions are met:
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+    * Neither the name of the Sony Computer Entertainment Inc nor the names
+      of its contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef _FLOATINVEC_H
+#define _FLOATINVEC_H
+
+#include <math.h>
+#include <xmmintrin.h>
+
+namespace Vectormath {
+
+class boolInVec;
+
+//--------------------------------------------------------------------------------------------------
+// floatInVec class
+//
+
+class floatInVec
+{
+    private:
+        __m128 mData;
+
+    public:
+        inline floatInVec(__m128 vec);
+
+        inline floatInVec() {}
+
+        // matches standard type conversions
+        //
+        inline floatInVec(const boolInVec &vec);
+
+        // construct from a slot of __m128
+        //
+        inline floatInVec(__m128 vec, int slot);
+        
+        // explicit cast from float
+        //
+        explicit inline floatInVec(float scalar);
+
+#ifdef _VECTORMATH_NO_SCALAR_CAST
+        // explicit cast to float
+        // 
+        inline float getAsFloat() const;
+#else
+        // implicit cast to float
+        //
+        inline operator float() const;
+#endif
+
+        // get vector data
+        // float value is splatted across all word slots of vector
+        //
+        inline __m128 get128() const;
+
+        // operators
+        // 
+        inline const floatInVec operator ++ (int);
+        inline const floatInVec operator -- (int);
+        inline floatInVec& operator ++ ();
+        inline floatInVec& operator -- ();
+        inline const floatInVec operator - () const;
+        inline floatInVec& operator = (const floatInVec &vec);
+        inline floatInVec& operator *= (const floatInVec &vec);
+        inline floatInVec& operator /= (const floatInVec &vec);
+        inline floatInVec& operator += (const floatInVec &vec);
+        inline floatInVec& operator -= (const floatInVec &vec);
+
+        // friend functions
+        //
+        friend inline const floatInVec operator * (const floatInVec &vec0, const floatInVec &vec1);
+        friend inline const floatInVec operator / (const floatInVec &vec0, const floatInVec &vec1);
+        friend inline const floatInVec operator + (const floatInVec &vec0, const floatInVec &vec1);
+        friend inline const floatInVec operator - (const floatInVec &vec0, const floatInVec &vec1);
+        friend inline const floatInVec select(const floatInVec &vec0, const floatInVec &vec1, boolInVec select_vec1);
+};
+
+//--------------------------------------------------------------------------------------------------
+// floatInVec functions
+//
+
+// operators
+// 
+inline const floatInVec operator * (const floatInVec &vec0, const floatInVec &vec1);
+inline const floatInVec operator / (const floatInVec &vec0, const floatInVec &vec1);
+inline const floatInVec operator + (const floatInVec &vec0, const floatInVec &vec1);
+inline const floatInVec operator - (const floatInVec &vec0, const floatInVec &vec1);
+inline const boolInVec operator < (const floatInVec &vec0, const floatInVec &vec1);
+inline const boolInVec operator <= (const floatInVec &vec0, const floatInVec &vec1);
+inline const boolInVec operator > (const floatInVec &vec0, const floatInVec &vec1);
+inline const boolInVec operator >= (const floatInVec &vec0, const floatInVec &vec1);
+inline const boolInVec operator == (const floatInVec &vec0, const floatInVec &vec1);
+inline const boolInVec operator != (const floatInVec &vec0, const floatInVec &vec1);
+
+// select between vec0 and vec1 using boolInVec.
+// false selects vec0, true selects vec1
+//
+inline const floatInVec select(const floatInVec &vec0, const floatInVec &vec1, const boolInVec &select_vec1);
+
+} // namespace Vectormath
+
+//--------------------------------------------------------------------------------------------------
+// floatInVec implementation
+//
+
+#include "boolInVec.h"
+
+namespace Vectormath {
+
+inline
+floatInVec::floatInVec(__m128 vec)
+{
+    mData = vec;
+}
+
+inline
+floatInVec::floatInVec(const boolInVec &vec)
+{
+	mData = vec_sel(_mm_setzero_ps(), _mm_set1_ps(1.0f), vec.get128());
+}
+
+inline
+floatInVec::floatInVec(__m128 vec, int slot)
+{
+	SSEFloat v;
+	v.m128 = vec;
+	mData = _mm_set1_ps(v.f[slot]);
+}
+
+inline
+floatInVec::floatInVec(float scalar)
+{
+	mData = _mm_set1_ps(scalar);
+}
+
+#ifdef _VECTORMATH_NO_SCALAR_CAST
+inline
+float
+floatInVec::getAsFloat() const
+#else
+inline
+floatInVec::operator float() const
+#endif
+{
+    return *((float *)&mData);
+}
+
+inline
+__m128
+floatInVec::get128() const
+{
+    return mData;
+}
+
+inline
+const floatInVec
+floatInVec::operator ++ (int)
+{
+    __m128 olddata = mData;
+    operator ++();
+    return floatInVec(olddata);
+}
+
+inline
+const floatInVec
+floatInVec::operator -- (int)
+{
+    __m128 olddata = mData;
+    operator --();
+    return floatInVec(olddata);
+}
+
+inline
+floatInVec&
+floatInVec::operator ++ ()
+{
+    *this += floatInVec(_mm_set1_ps(1.0f));
+    return *this;
+}
+
+inline
+floatInVec&
+floatInVec::operator -- ()
+{
+    *this -= floatInVec(_mm_set1_ps(1.0f));
+    return *this;
+}
+
+inline
+const floatInVec
+floatInVec::operator - () const
+{
+    return floatInVec(_mm_sub_ps(_mm_setzero_ps(), mData));
+}
+
+inline
+floatInVec&
+floatInVec::operator = (const floatInVec &vec)
+{
+    mData = vec.mData;
+    return *this;
+}
+
+inline
+floatInVec&
+floatInVec::operator *= (const floatInVec &vec)
+{
+    *this = *this * vec;
+    return *this;
+}
+
+inline
+floatInVec&
+floatInVec::operator /= (const floatInVec &vec)
+{
+    *this = *this / vec;
+    return *this;
+}
+
+inline
+floatInVec&
+floatInVec::operator += (const floatInVec &vec)
+{
+    *this = *this + vec;
+    return *this;
+}
+
+inline
+floatInVec&
+floatInVec::operator -= (const floatInVec &vec)
+{
+    *this = *this - vec;
+    return *this;
+}
+
+inline
+const floatInVec
+operator * (const floatInVec &vec0, const floatInVec &vec1)
+{
+    return floatInVec(_mm_mul_ps(vec0.get128(), vec1.get128()));
+}
+
+inline
+const floatInVec
+operator / (const floatInVec &num, const floatInVec &den)
+{
+    return floatInVec(_mm_div_ps(num.get128(), den.get128()));
+}
+
+inline
+const floatInVec
+operator + (const floatInVec &vec0, const floatInVec &vec1)
+{
+    return floatInVec(_mm_add_ps(vec0.get128(), vec1.get128()));
+}
+
+inline
+const floatInVec
+operator - (const floatInVec &vec0, const floatInVec &vec1)
+{
+    return floatInVec(_mm_sub_ps(vec0.get128(), vec1.get128()));
+}
+
+inline
+const boolInVec
+operator < (const floatInVec &vec0, const floatInVec &vec1)
+{
+    return boolInVec(_mm_cmpgt_ps(vec1.get128(), vec0.get128()));
+}
+
+inline
+const boolInVec
+operator <= (const floatInVec &vec0, const floatInVec &vec1)
+{
+    return boolInVec(_mm_cmpge_ps(vec1.get128(), vec0.get128()));
+}
+
+inline
+const boolInVec
+operator > (const floatInVec &vec0, const floatInVec &vec1)
+{
+    return boolInVec(_mm_cmpgt_ps(vec0.get128(), vec1.get128()));
+}
+
+inline
+const boolInVec
+operator >= (const floatInVec &vec0, const floatInVec &vec1)
+{
+    return boolInVec(_mm_cmpge_ps(vec0.get128(), vec1.get128()));
+}
+
+inline
+const boolInVec
+operator == (const floatInVec &vec0, const floatInVec &vec1)
+{
+    return boolInVec(_mm_cmpeq_ps(vec0.get128(), vec1.get128()));
+}
+
+inline
+const boolInVec
+operator != (const floatInVec &vec0, const floatInVec &vec1)
+{
+    return boolInVec(_mm_cmpneq_ps(vec0.get128(), vec1.get128()));
+}
+    
+inline
+const floatInVec
+select(const floatInVec &vec0, const floatInVec &vec1, const boolInVec &select_vec1)
+{
+    return floatInVec(vec_sel(vec0.get128(), vec1.get128(), select_vec1.get128()));
+}
+
+} // namespace Vectormath
+
+#endif // floatInVec_h
+ bullet/vectormath/sse/mat_aos.h view
@@ -0,0 +1,2190 @@+/*
+   Copyright (C) 2006, 2007 Sony Computer Entertainment Inc.
+   All rights reserved.
+
+   Redistribution and use in source and binary forms,
+   with or without modification, are permitted provided that the
+   following conditions are met:
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+    * Neither the name of the Sony Computer Entertainment Inc nor the names
+      of its contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+#ifndef _VECTORMATH_MAT_AOS_CPP_H
+#define _VECTORMATH_MAT_AOS_CPP_H
+
+namespace Vectormath {
+namespace Aos {
+
+//-----------------------------------------------------------------------------
+// Constants
+// for shuffles, words are labeled [x,y,z,w] [a,b,c,d]
+
+#define _VECTORMATH_PERM_ZBWX ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_Z, _VECTORMATH_PERM_B, _VECTORMATH_PERM_W, _VECTORMATH_PERM_X })
+#define _VECTORMATH_PERM_XCYX ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_X, _VECTORMATH_PERM_C, _VECTORMATH_PERM_Y, _VECTORMATH_PERM_X })
+#define _VECTORMATH_PERM_XYAB ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_X, _VECTORMATH_PERM_Y, _VECTORMATH_PERM_A, _VECTORMATH_PERM_B })
+#define _VECTORMATH_PERM_ZWCD ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_Z, _VECTORMATH_PERM_W, _VECTORMATH_PERM_C, _VECTORMATH_PERM_D })
+#define _VECTORMATH_PERM_XZBX ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_X, _VECTORMATH_PERM_Z, _VECTORMATH_PERM_B, _VECTORMATH_PERM_X })     
+#define _VECTORMATH_PERM_CXXX ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_C, _VECTORMATH_PERM_X, _VECTORMATH_PERM_X, _VECTORMATH_PERM_X })
+#define _VECTORMATH_PERM_YAXX ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_Y, _VECTORMATH_PERM_A, _VECTORMATH_PERM_X, _VECTORMATH_PERM_X })
+#define _VECTORMATH_PERM_XAZC ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_X, _VECTORMATH_PERM_A, _VECTORMATH_PERM_Z, _VECTORMATH_PERM_C })
+#define _VECTORMATH_PERM_YXWZ ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_Y, _VECTORMATH_PERM_X, _VECTORMATH_PERM_W, _VECTORMATH_PERM_Z })
+#define _VECTORMATH_PERM_YBWD ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_Y, _VECTORMATH_PERM_B, _VECTORMATH_PERM_W, _VECTORMATH_PERM_D })
+#define _VECTORMATH_PERM_XYCX ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_X, _VECTORMATH_PERM_Y, _VECTORMATH_PERM_C, _VECTORMATH_PERM_X })
+#define _VECTORMATH_PERM_YCXY ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_Y, _VECTORMATH_PERM_C, _VECTORMATH_PERM_X, _VECTORMATH_PERM_Y })
+#define _VECTORMATH_PERM_CXYC ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_C, _VECTORMATH_PERM_X, _VECTORMATH_PERM_Y, _VECTORMATH_PERM_C })
+#define _VECTORMATH_PERM_ZAYX ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_Z, _VECTORMATH_PERM_A, _VECTORMATH_PERM_Y, _VECTORMATH_PERM_X })
+#define _VECTORMATH_PERM_BZXX ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_B, _VECTORMATH_PERM_Z, _VECTORMATH_PERM_X, _VECTORMATH_PERM_X })
+#define _VECTORMATH_PERM_XZYA ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_X, _VECTORMATH_PERM_Z, _VECTORMATH_PERM_Y, _VECTORMATH_PERM_A })
+#define _VECTORMATH_PERM_ZXXB ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_Z, _VECTORMATH_PERM_X, _VECTORMATH_PERM_X, _VECTORMATH_PERM_B })
+#define _VECTORMATH_PERM_YXXC ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_Y, _VECTORMATH_PERM_X, _VECTORMATH_PERM_X, _VECTORMATH_PERM_C })
+#define _VECTORMATH_PERM_BBYX ((vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_B, _VECTORMATH_PERM_B, _VECTORMATH_PERM_Y, _VECTORMATH_PERM_X })
+#define _VECTORMATH_PI_OVER_2 1.570796327f
+
+//-----------------------------------------------------------------------------
+// Definitions
+
+VECTORMATH_FORCE_INLINE Matrix3::Matrix3( const Matrix3 & mat )
+{
+    mCol0 = mat.mCol0;
+    mCol1 = mat.mCol1;
+    mCol2 = mat.mCol2;
+}
+
+VECTORMATH_FORCE_INLINE Matrix3::Matrix3( float scalar )
+{
+    mCol0 = Vector3( scalar );
+    mCol1 = Vector3( scalar );
+    mCol2 = Vector3( scalar );
+}
+
+VECTORMATH_FORCE_INLINE Matrix3::Matrix3( const floatInVec &scalar )
+{
+    mCol0 = Vector3( scalar );
+    mCol1 = Vector3( scalar );
+    mCol2 = Vector3( scalar );
+}
+
+VECTORMATH_FORCE_INLINE Matrix3::Matrix3( const Quat &unitQuat )
+{
+    __m128 xyzw_2, wwww, yzxw, zxyw, yzxw_2, zxyw_2;
+    __m128 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5;
+	VM_ATTRIBUTE_ALIGN16 unsigned int sx[4] = {0xffffffff, 0, 0, 0};
+	VM_ATTRIBUTE_ALIGN16 unsigned int sz[4] = {0, 0, 0xffffffff, 0};
+	__m128 select_x = _mm_load_ps((float *)sx);
+	__m128 select_z = _mm_load_ps((float *)sz);
+
+    xyzw_2 = _mm_add_ps( unitQuat.get128(), unitQuat.get128() );
+    wwww = _mm_shuffle_ps( unitQuat.get128(), unitQuat.get128(), _MM_SHUFFLE(3,3,3,3) );
+	yzxw = _mm_shuffle_ps( unitQuat.get128(), unitQuat.get128(), _MM_SHUFFLE(3,0,2,1) );
+	zxyw = _mm_shuffle_ps( unitQuat.get128(), unitQuat.get128(), _MM_SHUFFLE(3,1,0,2) );
+    yzxw_2 = _mm_shuffle_ps( xyzw_2, xyzw_2, _MM_SHUFFLE(3,0,2,1) );
+    zxyw_2 = _mm_shuffle_ps( xyzw_2, xyzw_2, _MM_SHUFFLE(3,1,0,2) );
+
+    tmp0 = _mm_mul_ps( yzxw_2, wwww );									// tmp0 = 2yw, 2zw, 2xw, 2w2
+	tmp1 = _mm_sub_ps( _mm_set1_ps(1.0f), _mm_mul_ps(yzxw, yzxw_2) );	// tmp1 = 1 - 2y2, 1 - 2z2, 1 - 2x2, 1 - 2w2
+    tmp2 = _mm_mul_ps( yzxw, xyzw_2 );									// tmp2 = 2xy, 2yz, 2xz, 2w2
+    tmp0 = _mm_add_ps( _mm_mul_ps(zxyw, xyzw_2), tmp0 );				// tmp0 = 2yw + 2zx, 2zw + 2xy, 2xw + 2yz, 2w2 + 2w2
+    tmp1 = _mm_sub_ps( tmp1, _mm_mul_ps(zxyw, zxyw_2) );				// tmp1 = 1 - 2y2 - 2z2, 1 - 2z2 - 2x2, 1 - 2x2 - 2y2, 1 - 2w2 - 2w2
+    tmp2 = _mm_sub_ps( tmp2, _mm_mul_ps(zxyw_2, wwww) );				// tmp2 = 2xy - 2zw, 2yz - 2xw, 2xz - 2yw, 2w2 -2w2
+
+    tmp3 = vec_sel( tmp0, tmp1, select_x );
+    tmp4 = vec_sel( tmp1, tmp2, select_x );
+    tmp5 = vec_sel( tmp2, tmp0, select_x );
+    mCol0 = Vector3( vec_sel( tmp3, tmp2, select_z ) );
+    mCol1 = Vector3( vec_sel( tmp4, tmp0, select_z ) );
+    mCol2 = Vector3( vec_sel( tmp5, tmp1, select_z ) );
+}
+
+VECTORMATH_FORCE_INLINE Matrix3::Matrix3( const Vector3 &_col0, const Vector3 &_col1, const Vector3 &_col2 )
+{
+    mCol0 = _col0;
+    mCol1 = _col1;
+    mCol2 = _col2;
+}
+
+VECTORMATH_FORCE_INLINE Matrix3 & Matrix3::setCol0( const Vector3 &_col0 )
+{
+    mCol0 = _col0;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Matrix3 & Matrix3::setCol1( const Vector3 &_col1 )
+{
+    mCol1 = _col1;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Matrix3 & Matrix3::setCol2( const Vector3 &_col2 )
+{
+    mCol2 = _col2;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Matrix3 & Matrix3::setCol( int col, const Vector3 &vec )
+{
+    *(&mCol0 + col) = vec;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Matrix3 & Matrix3::setRow( int row, const Vector3 &vec )
+{
+    mCol0.setElem( row, vec.getElem( 0 ) );
+    mCol1.setElem( row, vec.getElem( 1 ) );
+    mCol2.setElem( row, vec.getElem( 2 ) );
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Matrix3 & Matrix3::setElem( int col, int row, float val )
+{
+    (*this)[col].setElem(row, val);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Matrix3 & Matrix3::setElem( int col, int row, const floatInVec &val )
+{
+    Vector3 tmpV3_0;
+    tmpV3_0 = this->getCol( col );
+    tmpV3_0.setElem( row, val );
+    this->setCol( col, tmpV3_0 );
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec Matrix3::getElem( int col, int row ) const
+{
+    return this->getCol( col ).getElem( row );
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 Matrix3::getCol0( ) const
+{
+    return mCol0;
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 Matrix3::getCol1( ) const
+{
+    return mCol1;
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 Matrix3::getCol2( ) const
+{
+    return mCol2;
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 Matrix3::getCol( int col ) const
+{
+    return *(&mCol0 + col);
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 Matrix3::getRow( int row ) const
+{
+    return Vector3( mCol0.getElem( row ), mCol1.getElem( row ), mCol2.getElem( row ) );
+}
+
+VECTORMATH_FORCE_INLINE Vector3 & Matrix3::operator []( int col )
+{
+    return *(&mCol0 + col);
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 Matrix3::operator []( int col ) const
+{
+    return *(&mCol0 + col);
+}
+
+VECTORMATH_FORCE_INLINE Matrix3 & Matrix3::operator =( const Matrix3 & mat )
+{
+    mCol0 = mat.mCol0;
+    mCol1 = mat.mCol1;
+    mCol2 = mat.mCol2;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const Matrix3 transpose( const Matrix3 & mat )
+{
+    __m128 tmp0, tmp1, res0, res1, res2;
+    tmp0 = vec_mergeh( mat.getCol0().get128(), mat.getCol2().get128() );
+    tmp1 = vec_mergel( mat.getCol0().get128(), mat.getCol2().get128() );
+    res0 = vec_mergeh( tmp0, mat.getCol1().get128() );
+    //res1 = vec_perm( tmp0, mat.getCol1().get128(), _VECTORMATH_PERM_ZBWX );
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
+	res1 = _mm_shuffle_ps( tmp0, tmp0, _MM_SHUFFLE(0,3,2,2));
+	res1 = vec_sel(res1, mat.getCol1().get128(), select_y);
+    //res2 = vec_perm( tmp1, mat.getCol1().get128(), _VECTORMATH_PERM_XCYX );
+	res2 = _mm_shuffle_ps( tmp1, tmp1, _MM_SHUFFLE(0,1,1,0));
+	res2 = vec_sel(res2, vec_splat(mat.getCol1().get128(), 2), select_y);
+    return Matrix3(
+        Vector3( res0 ),
+        Vector3( res1 ),
+        Vector3( res2 )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix3 inverse( const Matrix3 & mat )
+{
+    __m128 tmp0, tmp1, tmp2, tmp3, tmp4, dot, invdet, inv0, inv1, inv2;
+    tmp2 = _vmathVfCross( mat.getCol0().get128(), mat.getCol1().get128() );
+    tmp0 = _vmathVfCross( mat.getCol1().get128(), mat.getCol2().get128() );
+    tmp1 = _vmathVfCross( mat.getCol2().get128(), mat.getCol0().get128() );
+    dot = _vmathVfDot3( tmp2, mat.getCol2().get128() );
+    dot = vec_splat( dot, 0 );
+    invdet = recipf4( dot );
+    tmp3 = vec_mergeh( tmp0, tmp2 );
+    tmp4 = vec_mergel( tmp0, tmp2 );
+    inv0 = vec_mergeh( tmp3, tmp1 );
+    //inv1 = vec_perm( tmp3, tmp1, _VECTORMATH_PERM_ZBWX );
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
+	inv1 = _mm_shuffle_ps( tmp3, tmp3, _MM_SHUFFLE(0,3,2,2));
+	inv1 = vec_sel(inv1, tmp1, select_y);
+    //inv2 = vec_perm( tmp4, tmp1, _VECTORMATH_PERM_XCYX );
+	inv2 = _mm_shuffle_ps( tmp4, tmp4, _MM_SHUFFLE(0,1,1,0));
+	inv2 = vec_sel(inv2, vec_splat(tmp1, 2), select_y);
+    inv0 = vec_mul( inv0, invdet );
+    inv1 = vec_mul( inv1, invdet );
+	inv2 = vec_mul( inv2, invdet );
+    return Matrix3(
+        Vector3( inv0 ),
+        Vector3( inv1 ),
+        Vector3( inv2 )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec determinant( const Matrix3 & mat )
+{
+    return dot( mat.getCol2(), cross( mat.getCol0(), mat.getCol1() ) );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix3 Matrix3::operator +( const Matrix3 & mat ) const
+{
+    return Matrix3(
+        ( mCol0 + mat.mCol0 ),
+        ( mCol1 + mat.mCol1 ),
+        ( mCol2 + mat.mCol2 )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix3 Matrix3::operator -( const Matrix3 & mat ) const
+{
+    return Matrix3(
+        ( mCol0 - mat.mCol0 ),
+        ( mCol1 - mat.mCol1 ),
+        ( mCol2 - mat.mCol2 )
+    );
+}
+
+VECTORMATH_FORCE_INLINE Matrix3 & Matrix3::operator +=( const Matrix3 & mat )
+{
+    *this = *this + mat;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Matrix3 & Matrix3::operator -=( const Matrix3 & mat )
+{
+    *this = *this - mat;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const Matrix3 Matrix3::operator -( ) const
+{
+    return Matrix3(
+        ( -mCol0 ),
+        ( -mCol1 ),
+        ( -mCol2 )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix3 absPerElem( const Matrix3 & mat )
+{
+    return Matrix3(
+        absPerElem( mat.getCol0() ),
+        absPerElem( mat.getCol1() ),
+        absPerElem( mat.getCol2() )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix3 Matrix3::operator *( float scalar ) const
+{
+    return *this * floatInVec(scalar);
+}
+
+VECTORMATH_FORCE_INLINE const Matrix3 Matrix3::operator *( const floatInVec &scalar ) const
+{
+    return Matrix3(
+        ( mCol0 * scalar ),
+        ( mCol1 * scalar ),
+        ( mCol2 * scalar )
+    );
+}
+
+VECTORMATH_FORCE_INLINE Matrix3 & Matrix3::operator *=( float scalar )
+{
+    return *this *= floatInVec(scalar);
+}
+
+VECTORMATH_FORCE_INLINE Matrix3 & Matrix3::operator *=( const floatInVec &scalar )
+{
+    *this = *this * scalar;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const Matrix3 operator *( float scalar, const Matrix3 & mat )
+{
+    return floatInVec(scalar) * mat;
+}
+
+VECTORMATH_FORCE_INLINE const Matrix3 operator *( const floatInVec &scalar, const Matrix3 & mat )
+{
+    return mat * scalar;
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 Matrix3::operator *( const Vector3 &vec ) const
+{
+    __m128 res;
+    __m128 xxxx, yyyy, zzzz;
+    xxxx = vec_splat( vec.get128(), 0 );
+    yyyy = vec_splat( vec.get128(), 1 );
+    zzzz = vec_splat( vec.get128(), 2 );
+    res = vec_mul( mCol0.get128(), xxxx );
+    res = vec_madd( mCol1.get128(), yyyy, res );
+    res = vec_madd( mCol2.get128(), zzzz, res );
+    return Vector3( res );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix3 Matrix3::operator *( const Matrix3 & mat ) const
+{
+    return Matrix3(
+        ( *this * mat.mCol0 ),
+        ( *this * mat.mCol1 ),
+        ( *this * mat.mCol2 )
+    );
+}
+
+VECTORMATH_FORCE_INLINE Matrix3 & Matrix3::operator *=( const Matrix3 & mat )
+{
+    *this = *this * mat;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const Matrix3 mulPerElem( const Matrix3 & mat0, const Matrix3 & mat1 )
+{
+    return Matrix3(
+        mulPerElem( mat0.getCol0(), mat1.getCol0() ),
+        mulPerElem( mat0.getCol1(), mat1.getCol1() ),
+        mulPerElem( mat0.getCol2(), mat1.getCol2() )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix3 Matrix3::identity( )
+{
+    return Matrix3(
+        Vector3::xAxis( ),
+        Vector3::yAxis( ),
+        Vector3::zAxis( )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix3 Matrix3::rotationX( float radians )
+{
+    return rotationX( floatInVec(radians) );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix3 Matrix3::rotationX( const floatInVec &radians )
+{
+    __m128 s, c, res1, res2;
+    __m128 zero;
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_z[4] = {0, 0, 0xffffffff, 0};
+    zero = _mm_setzero_ps();
+    sincosf4( radians.get128(), &s, &c );
+    res1 = vec_sel( zero, c, select_y );
+    res1 = vec_sel( res1, s, select_z );
+    res2 = vec_sel( zero, negatef4(s), select_y );
+    res2 = vec_sel( res2, c, select_z );
+    return Matrix3(
+        Vector3::xAxis( ),
+        Vector3( res1 ),
+        Vector3( res2 )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix3 Matrix3::rotationY( float radians )
+{
+    return rotationY( floatInVec(radians) );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix3 Matrix3::rotationY( const floatInVec &radians )
+{
+    __m128 s, c, res0, res2;
+    __m128 zero;
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_x[4] = {0xffffffff, 0, 0, 0};
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_z[4] = {0, 0, 0xffffffff, 0};
+    zero = _mm_setzero_ps();
+    sincosf4( radians.get128(), &s, &c );
+    res0 = vec_sel( zero, c, select_x );
+    res0 = vec_sel( res0, negatef4(s), select_z );
+    res2 = vec_sel( zero, s, select_x );
+    res2 = vec_sel( res2, c, select_z );
+    return Matrix3(
+        Vector3( res0 ),
+        Vector3::yAxis( ),
+        Vector3( res2 )
+	);
+}
+
+VECTORMATH_FORCE_INLINE const Matrix3 Matrix3::rotationZ( float radians )
+{
+    return rotationZ( floatInVec(radians) );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix3 Matrix3::rotationZ( const floatInVec &radians )
+{
+    __m128 s, c, res0, res1;
+    __m128 zero;
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_x[4] = {0xffffffff, 0, 0, 0};
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
+    zero = _mm_setzero_ps();
+    sincosf4( radians.get128(), &s, &c );
+    res0 = vec_sel( zero, c, select_x );
+    res0 = vec_sel( res0, s, select_y );
+    res1 = vec_sel( zero, negatef4(s), select_x );
+    res1 = vec_sel( res1, c, select_y );
+    return Matrix3(
+        Vector3( res0 ),
+        Vector3( res1 ),
+        Vector3::zAxis( )
+	);
+}
+
+VECTORMATH_FORCE_INLINE const Matrix3 Matrix3::rotationZYX( const Vector3 &radiansXYZ )
+{
+    __m128 angles, s, negS, c, X0, X1, Y0, Y1, Z0, Z1, tmp;
+    angles = Vector4( radiansXYZ, 0.0f ).get128();
+    sincosf4( angles, &s, &c );
+    negS = negatef4( s );
+    Z0 = vec_mergel( c, s );
+    Z1 = vec_mergel( negS, c );
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_xyz[4] = {0xffffffff, 0xffffffff, 0xffffffff, 0};
+    Z1 = vec_and( Z1, _mm_load_ps( (float *)select_xyz ) );
+	Y0 = _mm_shuffle_ps( c, negS, _MM_SHUFFLE(0,1,1,1) );
+	Y1 = _mm_shuffle_ps( s, c, _MM_SHUFFLE(0,1,1,1) );
+    X0 = vec_splat( s, 0 );
+    X1 = vec_splat( c, 0 );
+    tmp = vec_mul( Z0, Y1 );
+    return Matrix3(
+        Vector3( vec_mul( Z0, Y0 ) ),
+        Vector3( vec_madd( Z1, X1, vec_mul( tmp, X0 ) ) ),
+        Vector3( vec_nmsub( Z1, X0, vec_mul( tmp, X1 ) ) )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix3 Matrix3::rotation( float radians, const Vector3 &unitVec )
+{
+    return rotation( floatInVec(radians), unitVec );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix3 Matrix3::rotation( const floatInVec &radians, const Vector3 &unitVec )
+{
+    __m128 axis, s, c, oneMinusC, axisS, negAxisS, xxxx, yyyy, zzzz, tmp0, tmp1, tmp2;
+    axis = unitVec.get128();
+    sincosf4( radians.get128(), &s, &c );
+    xxxx = vec_splat( axis, 0 );
+    yyyy = vec_splat( axis, 1 );
+    zzzz = vec_splat( axis, 2 );
+    oneMinusC = vec_sub( _mm_set1_ps(1.0f), c );
+    axisS = vec_mul( axis, s );
+    negAxisS = negatef4( axisS );
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_x[4] = {0xffffffff, 0, 0, 0};
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_z[4] = {0, 0, 0xffffffff, 0};
+    //tmp0 = vec_perm( axisS, negAxisS, _VECTORMATH_PERM_XZBX );
+	tmp0 = _mm_shuffle_ps( axisS, axisS, _MM_SHUFFLE(0,0,2,0) );
+	tmp0 = vec_sel(tmp0, vec_splat(negAxisS, 1), select_z);
+    //tmp1 = vec_perm( axisS, negAxisS, _VECTORMATH_PERM_CXXX );
+	tmp1 = vec_sel( vec_splat(axisS, 0), vec_splat(negAxisS, 2), select_x );
+    //tmp2 = vec_perm( axisS, negAxisS, _VECTORMATH_PERM_YAXX );
+	tmp2 = _mm_shuffle_ps( axisS, axisS, _MM_SHUFFLE(0,0,0,1) );
+	tmp2 = vec_sel(tmp2, vec_splat(negAxisS, 0), select_y);
+    tmp0 = vec_sel( tmp0, c, select_x );
+    tmp1 = vec_sel( tmp1, c, select_y );
+    tmp2 = vec_sel( tmp2, c, select_z );
+    return Matrix3(
+        Vector3( vec_madd( vec_mul( axis, xxxx ), oneMinusC, tmp0 ) ),
+        Vector3( vec_madd( vec_mul( axis, yyyy ), oneMinusC, tmp1 ) ),
+        Vector3( vec_madd( vec_mul( axis, zzzz ), oneMinusC, tmp2 ) )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix3 Matrix3::rotation( const Quat &unitQuat )
+{
+    return Matrix3( unitQuat );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix3 Matrix3::scale( const Vector3 &scaleVec )
+{
+    __m128 zero = _mm_setzero_ps();
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_x[4] = {0xffffffff, 0, 0, 0};
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_z[4] = {0, 0, 0xffffffff, 0};
+    return Matrix3(
+        Vector3( vec_sel( zero, scaleVec.get128(), select_x ) ),
+        Vector3( vec_sel( zero, scaleVec.get128(), select_y ) ),
+        Vector3( vec_sel( zero, scaleVec.get128(), select_z ) )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix3 appendScale( const Matrix3 & mat, const Vector3 &scaleVec )
+{
+    return Matrix3(
+        ( mat.getCol0() * scaleVec.getX( ) ),
+        ( mat.getCol1() * scaleVec.getY( ) ),
+        ( mat.getCol2() * scaleVec.getZ( ) )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix3 prependScale( const Vector3 &scaleVec, const Matrix3 & mat )
+{
+    return Matrix3(
+        mulPerElem( mat.getCol0(), scaleVec ),
+        mulPerElem( mat.getCol1(), scaleVec ),
+        mulPerElem( mat.getCol2(), scaleVec )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix3 select( const Matrix3 & mat0, const Matrix3 & mat1, bool select1 )
+{
+    return Matrix3(
+        select( mat0.getCol0(), mat1.getCol0(), select1 ),
+        select( mat0.getCol1(), mat1.getCol1(), select1 ),
+        select( mat0.getCol2(), mat1.getCol2(), select1 )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix3 select( const Matrix3 & mat0, const Matrix3 & mat1, const boolInVec &select1 )
+{
+    return Matrix3(
+        select( mat0.getCol0(), mat1.getCol0(), select1 ),
+        select( mat0.getCol1(), mat1.getCol1(), select1 ),
+        select( mat0.getCol2(), mat1.getCol2(), select1 )
+    );
+}
+
+#ifdef _VECTORMATH_DEBUG
+
+VECTORMATH_FORCE_INLINE void print( const Matrix3 & mat )
+{
+    print( mat.getRow( 0 ) );
+    print( mat.getRow( 1 ) );
+    print( mat.getRow( 2 ) );
+}
+
+VECTORMATH_FORCE_INLINE void print( const Matrix3 & mat, const char * name )
+{
+    printf("%s:\n", name);
+    print( mat );
+}
+
+#endif
+
+VECTORMATH_FORCE_INLINE Matrix4::Matrix4( const Matrix4 & mat )
+{
+    mCol0 = mat.mCol0;
+    mCol1 = mat.mCol1;
+    mCol2 = mat.mCol2;
+    mCol3 = mat.mCol3;
+}
+
+VECTORMATH_FORCE_INLINE Matrix4::Matrix4( float scalar )
+{
+    mCol0 = Vector4( scalar );
+    mCol1 = Vector4( scalar );
+    mCol2 = Vector4( scalar );
+    mCol3 = Vector4( scalar );
+}
+
+VECTORMATH_FORCE_INLINE Matrix4::Matrix4( const floatInVec &scalar )
+{
+    mCol0 = Vector4( scalar );
+    mCol1 = Vector4( scalar );
+    mCol2 = Vector4( scalar );
+    mCol3 = Vector4( scalar );
+}
+
+VECTORMATH_FORCE_INLINE Matrix4::Matrix4( const Transform3 & mat )
+{
+    mCol0 = Vector4( mat.getCol0(), 0.0f );
+    mCol1 = Vector4( mat.getCol1(), 0.0f );
+    mCol2 = Vector4( mat.getCol2(), 0.0f );
+    mCol3 = Vector4( mat.getCol3(), 1.0f );
+}
+
+VECTORMATH_FORCE_INLINE Matrix4::Matrix4( const Vector4 &_col0, const Vector4 &_col1, const Vector4 &_col2, const Vector4 &_col3 )
+{
+    mCol0 = _col0;
+    mCol1 = _col1;
+    mCol2 = _col2;
+    mCol3 = _col3;
+}
+
+VECTORMATH_FORCE_INLINE Matrix4::Matrix4( const Matrix3 & mat, const Vector3 &translateVec )
+{
+    mCol0 = Vector4( mat.getCol0(), 0.0f );
+    mCol1 = Vector4( mat.getCol1(), 0.0f );
+    mCol2 = Vector4( mat.getCol2(), 0.0f );
+    mCol3 = Vector4( translateVec, 1.0f );
+}
+
+VECTORMATH_FORCE_INLINE Matrix4::Matrix4( const Quat &unitQuat, const Vector3 &translateVec )
+{
+    Matrix3 mat;
+    mat = Matrix3( unitQuat );
+    mCol0 = Vector4( mat.getCol0(), 0.0f );
+    mCol1 = Vector4( mat.getCol1(), 0.0f );
+    mCol2 = Vector4( mat.getCol2(), 0.0f );
+    mCol3 = Vector4( translateVec, 1.0f );
+}
+
+VECTORMATH_FORCE_INLINE Matrix4 & Matrix4::setCol0( const Vector4 &_col0 )
+{
+    mCol0 = _col0;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Matrix4 & Matrix4::setCol1( const Vector4 &_col1 )
+{
+    mCol1 = _col1;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Matrix4 & Matrix4::setCol2( const Vector4 &_col2 )
+{
+    mCol2 = _col2;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Matrix4 & Matrix4::setCol3( const Vector4 &_col3 )
+{
+    mCol3 = _col3;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Matrix4 & Matrix4::setCol( int col, const Vector4 &vec )
+{
+    *(&mCol0 + col) = vec;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Matrix4 & Matrix4::setRow( int row, const Vector4 &vec )
+{
+    mCol0.setElem( row, vec.getElem( 0 ) );
+    mCol1.setElem( row, vec.getElem( 1 ) );
+    mCol2.setElem( row, vec.getElem( 2 ) );
+    mCol3.setElem( row, vec.getElem( 3 ) );
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Matrix4 & Matrix4::setElem( int col, int row, float val )
+{
+    (*this)[col].setElem(row, val);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Matrix4 & Matrix4::setElem( int col, int row, const floatInVec &val )
+{
+    Vector4 tmpV3_0;
+    tmpV3_0 = this->getCol( col );
+    tmpV3_0.setElem( row, val );
+    this->setCol( col, tmpV3_0 );
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec Matrix4::getElem( int col, int row ) const
+{
+    return this->getCol( col ).getElem( row );
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 Matrix4::getCol0( ) const
+{
+    return mCol0;
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 Matrix4::getCol1( ) const
+{
+    return mCol1;
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 Matrix4::getCol2( ) const
+{
+    return mCol2;
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 Matrix4::getCol3( ) const
+{
+    return mCol3;
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 Matrix4::getCol( int col ) const
+{
+    return *(&mCol0 + col);
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 Matrix4::getRow( int row ) const
+{
+    return Vector4( mCol0.getElem( row ), mCol1.getElem( row ), mCol2.getElem( row ), mCol3.getElem( row ) );
+}
+
+VECTORMATH_FORCE_INLINE Vector4 & Matrix4::operator []( int col )
+{
+    return *(&mCol0 + col);
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 Matrix4::operator []( int col ) const
+{
+    return *(&mCol0 + col);
+}
+
+VECTORMATH_FORCE_INLINE Matrix4 & Matrix4::operator =( const Matrix4 & mat )
+{
+    mCol0 = mat.mCol0;
+    mCol1 = mat.mCol1;
+    mCol2 = mat.mCol2;
+    mCol3 = mat.mCol3;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const Matrix4 transpose( const Matrix4 & mat )
+{
+    __m128 tmp0, tmp1, tmp2, tmp3, res0, res1, res2, res3;
+    tmp0 = vec_mergeh( mat.getCol0().get128(), mat.getCol2().get128() );
+    tmp1 = vec_mergeh( mat.getCol1().get128(), mat.getCol3().get128() );
+    tmp2 = vec_mergel( mat.getCol0().get128(), mat.getCol2().get128() );
+    tmp3 = vec_mergel( mat.getCol1().get128(), mat.getCol3().get128() );
+    res0 = vec_mergeh( tmp0, tmp1 );
+    res1 = vec_mergel( tmp0, tmp1 );
+    res2 = vec_mergeh( tmp2, tmp3 );
+    res3 = vec_mergel( tmp2, tmp3 );
+    return Matrix4(
+        Vector4( res0 ),
+        Vector4( res1 ),
+        Vector4( res2 ),
+        Vector4( res3 )
+    );
+}
+
+// TODO: Tidy
+static VM_ATTRIBUTE_ALIGN16 const unsigned int _vmathPNPN[4] = {0x00000000, 0x80000000, 0x00000000, 0x80000000};
+static VM_ATTRIBUTE_ALIGN16 const unsigned int _vmathNPNP[4] = {0x80000000, 0x00000000, 0x80000000, 0x00000000};
+static VM_ATTRIBUTE_ALIGN16 const float _vmathZERONE[4] = {1.0f, 0.0f, 0.0f, 1.0f};
+
+VECTORMATH_FORCE_INLINE const Matrix4 inverse( const Matrix4 & mat )
+{
+	__m128 Va,Vb,Vc;
+	__m128 r1,r2,r3,tt,tt2;
+	__m128 sum,Det,RDet;
+	__m128 trns0,trns1,trns2,trns3;
+
+	__m128 _L1 = mat.getCol0().get128();
+	__m128 _L2 = mat.getCol1().get128();
+	__m128 _L3 = mat.getCol2().get128();
+	__m128 _L4 = mat.getCol3().get128();
+	// Calculating the minterms for the first line.
+
+	// _mm_ror_ps is just a macro using _mm_shuffle_ps().
+	tt = _L4; tt2 = _mm_ror_ps(_L3,1); 
+	Vc = _mm_mul_ps(tt2,_mm_ror_ps(tt,0));					// V3'dot V4
+	Va = _mm_mul_ps(tt2,_mm_ror_ps(tt,2));					// V3'dot V4"
+	Vb = _mm_mul_ps(tt2,_mm_ror_ps(tt,3));					// V3' dot V4^
+
+	r1 = _mm_sub_ps(_mm_ror_ps(Va,1),_mm_ror_ps(Vc,2));		// V3" dot V4^ - V3^ dot V4"
+	r2 = _mm_sub_ps(_mm_ror_ps(Vb,2),_mm_ror_ps(Vb,0));		// V3^ dot V4' - V3' dot V4^
+	r3 = _mm_sub_ps(_mm_ror_ps(Va,0),_mm_ror_ps(Vc,1));		// V3' dot V4" - V3" dot V4'
+
+	tt = _L2;
+	Va = _mm_ror_ps(tt,1);		sum = _mm_mul_ps(Va,r1);
+	Vb = _mm_ror_ps(tt,2);		sum = _mm_add_ps(sum,_mm_mul_ps(Vb,r2));
+	Vc = _mm_ror_ps(tt,3);		sum = _mm_add_ps(sum,_mm_mul_ps(Vc,r3));
+
+	// Calculating the determinant.
+	Det = _mm_mul_ps(sum,_L1);
+	Det = _mm_add_ps(Det,_mm_movehl_ps(Det,Det));
+
+	const __m128 Sign_PNPN = _mm_load_ps((float *)_vmathPNPN);
+	const __m128 Sign_NPNP = _mm_load_ps((float *)_vmathNPNP);
+
+	__m128 mtL1 = _mm_xor_ps(sum,Sign_PNPN);
+
+	// Calculating the minterms of the second line (using previous results).
+	tt = _mm_ror_ps(_L1,1);		sum = _mm_mul_ps(tt,r1);
+	tt = _mm_ror_ps(tt,1);		sum = _mm_add_ps(sum,_mm_mul_ps(tt,r2));
+	tt = _mm_ror_ps(tt,1);		sum = _mm_add_ps(sum,_mm_mul_ps(tt,r3));
+	__m128 mtL2 = _mm_xor_ps(sum,Sign_NPNP);
+
+	// Testing the determinant.
+	Det = _mm_sub_ss(Det,_mm_shuffle_ps(Det,Det,1));
+
+	// Calculating the minterms of the third line.
+	tt = _mm_ror_ps(_L1,1);
+	Va = _mm_mul_ps(tt,Vb);									// V1' dot V2"
+	Vb = _mm_mul_ps(tt,Vc);									// V1' dot V2^
+	Vc = _mm_mul_ps(tt,_L2);								// V1' dot V2
+
+	r1 = _mm_sub_ps(_mm_ror_ps(Va,1),_mm_ror_ps(Vc,2));		// V1" dot V2^ - V1^ dot V2"
+	r2 = _mm_sub_ps(_mm_ror_ps(Vb,2),_mm_ror_ps(Vb,0));		// V1^ dot V2' - V1' dot V2^
+	r3 = _mm_sub_ps(_mm_ror_ps(Va,0),_mm_ror_ps(Vc,1));		// V1' dot V2" - V1" dot V2'
+
+	tt = _mm_ror_ps(_L4,1);		sum = _mm_mul_ps(tt,r1);
+	tt = _mm_ror_ps(tt,1);		sum = _mm_add_ps(sum,_mm_mul_ps(tt,r2));
+	tt = _mm_ror_ps(tt,1);		sum = _mm_add_ps(sum,_mm_mul_ps(tt,r3));
+	__m128 mtL3 = _mm_xor_ps(sum,Sign_PNPN);
+
+	// Dividing is FASTER than rcp_nr! (Because rcp_nr causes many register-memory RWs).
+	RDet = _mm_div_ss(_mm_load_ss((float *)&_vmathZERONE), Det); // TODO: just 1.0f?
+	RDet = _mm_shuffle_ps(RDet,RDet,0x00);
+
+	// Devide the first 12 minterms with the determinant.
+	mtL1 = _mm_mul_ps(mtL1, RDet);
+	mtL2 = _mm_mul_ps(mtL2, RDet);
+	mtL3 = _mm_mul_ps(mtL3, RDet);
+
+	// Calculate the minterms of the forth line and devide by the determinant.
+	tt = _mm_ror_ps(_L3,1);		sum = _mm_mul_ps(tt,r1);
+	tt = _mm_ror_ps(tt,1);		sum = _mm_add_ps(sum,_mm_mul_ps(tt,r2));
+	tt = _mm_ror_ps(tt,1);		sum = _mm_add_ps(sum,_mm_mul_ps(tt,r3));
+	__m128 mtL4 = _mm_xor_ps(sum,Sign_NPNP);
+	mtL4 = _mm_mul_ps(mtL4, RDet);
+
+	// Now we just have to transpose the minterms matrix.
+	trns0 = _mm_unpacklo_ps(mtL1,mtL2);
+	trns1 = _mm_unpacklo_ps(mtL3,mtL4);
+	trns2 = _mm_unpackhi_ps(mtL1,mtL2);
+	trns3 = _mm_unpackhi_ps(mtL3,mtL4);
+	_L1 = _mm_movelh_ps(trns0,trns1);
+	_L2 = _mm_movehl_ps(trns1,trns0);
+	_L3 = _mm_movelh_ps(trns2,trns3);
+	_L4 = _mm_movehl_ps(trns3,trns2);
+
+    return Matrix4(
+        Vector4( _L1 ),
+        Vector4( _L2 ),
+        Vector4( _L3 ),
+        Vector4( _L4 )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix4 affineInverse( const Matrix4 & mat )
+{
+    Transform3 affineMat;
+    affineMat.setCol0( mat.getCol0().getXYZ( ) );
+    affineMat.setCol1( mat.getCol1().getXYZ( ) );
+    affineMat.setCol2( mat.getCol2().getXYZ( ) );
+    affineMat.setCol3( mat.getCol3().getXYZ( ) );
+    return Matrix4( inverse( affineMat ) );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix4 orthoInverse( const Matrix4 & mat )
+{
+    Transform3 affineMat;
+    affineMat.setCol0( mat.getCol0().getXYZ( ) );
+    affineMat.setCol1( mat.getCol1().getXYZ( ) );
+    affineMat.setCol2( mat.getCol2().getXYZ( ) );
+    affineMat.setCol3( mat.getCol3().getXYZ( ) );
+    return Matrix4( orthoInverse( affineMat ) );
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec determinant( const Matrix4 & mat )
+{
+	__m128 Va,Vb,Vc;
+	__m128 r1,r2,r3,tt,tt2;
+	__m128 sum,Det;
+
+	__m128 _L1 = mat.getCol0().get128();
+	__m128 _L2 = mat.getCol1().get128();
+	__m128 _L3 = mat.getCol2().get128();
+	__m128 _L4 = mat.getCol3().get128();
+	// Calculating the minterms for the first line.
+
+	// _mm_ror_ps is just a macro using _mm_shuffle_ps().
+	tt = _L4; tt2 = _mm_ror_ps(_L3,1); 
+	Vc = _mm_mul_ps(tt2,_mm_ror_ps(tt,0));					// V3' dot V4
+	Va = _mm_mul_ps(tt2,_mm_ror_ps(tt,2));					// V3' dot V4"
+	Vb = _mm_mul_ps(tt2,_mm_ror_ps(tt,3));					// V3' dot V4^
+
+	r1 = _mm_sub_ps(_mm_ror_ps(Va,1),_mm_ror_ps(Vc,2));		// V3" dot V4^ - V3^ dot V4"
+	r2 = _mm_sub_ps(_mm_ror_ps(Vb,2),_mm_ror_ps(Vb,0));		// V3^ dot V4' - V3' dot V4^
+	r3 = _mm_sub_ps(_mm_ror_ps(Va,0),_mm_ror_ps(Vc,1));		// V3' dot V4" - V3" dot V4'
+
+	tt = _L2;
+	Va = _mm_ror_ps(tt,1);		sum = _mm_mul_ps(Va,r1);
+	Vb = _mm_ror_ps(tt,2);		sum = _mm_add_ps(sum,_mm_mul_ps(Vb,r2));
+	Vc = _mm_ror_ps(tt,3);		sum = _mm_add_ps(sum,_mm_mul_ps(Vc,r3));
+
+	// Calculating the determinant.
+	Det = _mm_mul_ps(sum,_L1);
+	Det = _mm_add_ps(Det,_mm_movehl_ps(Det,Det));
+
+	// Calculating the minterms of the second line (using previous results).
+	tt = _mm_ror_ps(_L1,1);		sum = _mm_mul_ps(tt,r1);
+	tt = _mm_ror_ps(tt,1);		sum = _mm_add_ps(sum,_mm_mul_ps(tt,r2));
+	tt = _mm_ror_ps(tt,1);		sum = _mm_add_ps(sum,_mm_mul_ps(tt,r3));
+
+	// Testing the determinant.
+	Det = _mm_sub_ss(Det,_mm_shuffle_ps(Det,Det,1));
+	return floatInVec(Det, 0);
+}
+
+VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::operator +( const Matrix4 & mat ) const
+{
+    return Matrix4(
+        ( mCol0 + mat.mCol0 ),
+        ( mCol1 + mat.mCol1 ),
+        ( mCol2 + mat.mCol2 ),
+        ( mCol3 + mat.mCol3 )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::operator -( const Matrix4 & mat ) const
+{
+    return Matrix4(
+        ( mCol0 - mat.mCol0 ),
+        ( mCol1 - mat.mCol1 ),
+        ( mCol2 - mat.mCol2 ),
+        ( mCol3 - mat.mCol3 )
+    );
+}
+
+VECTORMATH_FORCE_INLINE Matrix4 & Matrix4::operator +=( const Matrix4 & mat )
+{
+    *this = *this + mat;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Matrix4 & Matrix4::operator -=( const Matrix4 & mat )
+{
+    *this = *this - mat;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::operator -( ) const
+{
+    return Matrix4(
+        ( -mCol0 ),
+        ( -mCol1 ),
+        ( -mCol2 ),
+        ( -mCol3 )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix4 absPerElem( const Matrix4 & mat )
+{
+    return Matrix4(
+        absPerElem( mat.getCol0() ),
+        absPerElem( mat.getCol1() ),
+        absPerElem( mat.getCol2() ),
+        absPerElem( mat.getCol3() )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::operator *( float scalar ) const
+{
+    return *this * floatInVec(scalar);
+}
+
+VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::operator *( const floatInVec &scalar ) const
+{
+    return Matrix4(
+        ( mCol0 * scalar ),
+        ( mCol1 * scalar ),
+        ( mCol2 * scalar ),
+        ( mCol3 * scalar )
+    );
+}
+
+VECTORMATH_FORCE_INLINE Matrix4 & Matrix4::operator *=( float scalar )
+{
+    return *this *= floatInVec(scalar);
+}
+
+VECTORMATH_FORCE_INLINE Matrix4 & Matrix4::operator *=( const floatInVec &scalar )
+{
+    *this = *this * scalar;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const Matrix4 operator *( float scalar, const Matrix4 & mat )
+{
+    return floatInVec(scalar) * mat;
+}
+
+VECTORMATH_FORCE_INLINE const Matrix4 operator *( const floatInVec &scalar, const Matrix4 & mat )
+{
+    return mat * scalar;
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 Matrix4::operator *( const Vector4 &vec ) const
+{
+    return Vector4(
+		_mm_add_ps(
+			_mm_add_ps(_mm_mul_ps(mCol0.get128(), _mm_shuffle_ps(vec.get128(), vec.get128(), _MM_SHUFFLE(0,0,0,0))), _mm_mul_ps(mCol1.get128(), _mm_shuffle_ps(vec.get128(), vec.get128(), _MM_SHUFFLE(1,1,1,1)))),
+			_mm_add_ps(_mm_mul_ps(mCol2.get128(), _mm_shuffle_ps(vec.get128(), vec.get128(), _MM_SHUFFLE(2,2,2,2))), _mm_mul_ps(mCol3.get128(), _mm_shuffle_ps(vec.get128(), vec.get128(), _MM_SHUFFLE(3,3,3,3)))))
+		);
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 Matrix4::operator *( const Vector3 &vec ) const
+{
+    return Vector4(
+		_mm_add_ps(
+			_mm_add_ps(_mm_mul_ps(mCol0.get128(), _mm_shuffle_ps(vec.get128(), vec.get128(), _MM_SHUFFLE(0,0,0,0))), _mm_mul_ps(mCol1.get128(), _mm_shuffle_ps(vec.get128(), vec.get128(), _MM_SHUFFLE(1,1,1,1)))),
+			_mm_mul_ps(mCol2.get128(), _mm_shuffle_ps(vec.get128(), vec.get128(), _MM_SHUFFLE(2,2,2,2))))
+		);
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 Matrix4::operator *( const Point3 &pnt ) const
+{
+    return Vector4(
+		_mm_add_ps(
+			_mm_add_ps(_mm_mul_ps(mCol0.get128(), _mm_shuffle_ps(pnt.get128(), pnt.get128(), _MM_SHUFFLE(0,0,0,0))), _mm_mul_ps(mCol1.get128(), _mm_shuffle_ps(pnt.get128(), pnt.get128(), _MM_SHUFFLE(1,1,1,1)))),
+			_mm_add_ps(_mm_mul_ps(mCol2.get128(), _mm_shuffle_ps(pnt.get128(), pnt.get128(), _MM_SHUFFLE(2,2,2,2))), mCol3.get128()))
+		);
+}
+
+VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::operator *( const Matrix4 & mat ) const
+{
+    return Matrix4(
+        ( *this * mat.mCol0 ),
+        ( *this * mat.mCol1 ),
+        ( *this * mat.mCol2 ),
+        ( *this * mat.mCol3 )
+    );
+}
+
+VECTORMATH_FORCE_INLINE Matrix4 & Matrix4::operator *=( const Matrix4 & mat )
+{
+    *this = *this * mat;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::operator *( const Transform3 & tfrm ) const
+{
+    return Matrix4(
+        ( *this * tfrm.getCol0() ),
+        ( *this * tfrm.getCol1() ),
+        ( *this * tfrm.getCol2() ),
+        ( *this * Point3( tfrm.getCol3() ) )
+    );
+}
+
+VECTORMATH_FORCE_INLINE Matrix4 & Matrix4::operator *=( const Transform3 & tfrm )
+{
+    *this = *this * tfrm;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const Matrix4 mulPerElem( const Matrix4 & mat0, const Matrix4 & mat1 )
+{
+    return Matrix4(
+        mulPerElem( mat0.getCol0(), mat1.getCol0() ),
+        mulPerElem( mat0.getCol1(), mat1.getCol1() ),
+        mulPerElem( mat0.getCol2(), mat1.getCol2() ),
+        mulPerElem( mat0.getCol3(), mat1.getCol3() )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::identity( )
+{
+    return Matrix4(
+        Vector4::xAxis( ),
+        Vector4::yAxis( ),
+        Vector4::zAxis( ),
+        Vector4::wAxis( )
+    );
+}
+
+VECTORMATH_FORCE_INLINE Matrix4 & Matrix4::setUpper3x3( const Matrix3 & mat3 )
+{
+    mCol0.setXYZ( mat3.getCol0() );
+    mCol1.setXYZ( mat3.getCol1() );
+    mCol2.setXYZ( mat3.getCol2() );
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const Matrix3 Matrix4::getUpper3x3( ) const
+{
+    return Matrix3(
+        mCol0.getXYZ( ),
+        mCol1.getXYZ( ),
+        mCol2.getXYZ( )
+    );
+}
+
+VECTORMATH_FORCE_INLINE Matrix4 & Matrix4::setTranslation( const Vector3 &translateVec )
+{
+    mCol3.setXYZ( translateVec );
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 Matrix4::getTranslation( ) const
+{
+    return mCol3.getXYZ( );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::rotationX( float radians )
+{
+    return rotationX( floatInVec(radians) );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::rotationX( const floatInVec &radians )
+{
+    __m128 s, c, res1, res2;
+    __m128 zero;
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_z[4] = {0, 0, 0xffffffff, 0};
+    zero = _mm_setzero_ps();
+    sincosf4( radians.get128(), &s, &c );
+    res1 = vec_sel( zero, c, select_y );
+    res1 = vec_sel( res1, s, select_z );
+    res2 = vec_sel( zero, negatef4(s), select_y );
+    res2 = vec_sel( res2, c, select_z );
+    return Matrix4(
+        Vector4::xAxis( ),
+        Vector4( res1 ),
+        Vector4( res2 ),
+        Vector4::wAxis( )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::rotationY( float radians )
+{
+    return rotationY( floatInVec(radians) );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::rotationY( const floatInVec &radians )
+{
+    __m128 s, c, res0, res2;
+    __m128 zero;
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_x[4] = {0xffffffff, 0, 0, 0};
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_z[4] = {0, 0, 0xffffffff, 0};
+    zero = _mm_setzero_ps();
+    sincosf4( radians.get128(), &s, &c );
+    res0 = vec_sel( zero, c, select_x );
+    res0 = vec_sel( res0, negatef4(s), select_z );
+    res2 = vec_sel( zero, s, select_x );
+    res2 = vec_sel( res2, c, select_z );
+    return Matrix4(
+        Vector4( res0 ),
+        Vector4::yAxis( ),
+        Vector4( res2 ),
+        Vector4::wAxis( )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::rotationZ( float radians )
+{
+    return rotationZ( floatInVec(radians) );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::rotationZ( const floatInVec &radians )
+{
+    __m128 s, c, res0, res1;
+    __m128 zero;
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_x[4] = {0xffffffff, 0, 0, 0};
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
+    zero = _mm_setzero_ps();
+    sincosf4( radians.get128(), &s, &c );
+    res0 = vec_sel( zero, c, select_x );
+    res0 = vec_sel( res0, s, select_y );
+    res1 = vec_sel( zero, negatef4(s), select_x );
+    res1 = vec_sel( res1, c, select_y );
+    return Matrix4(
+        Vector4( res0 ),
+        Vector4( res1 ),
+        Vector4::zAxis( ),
+        Vector4::wAxis( )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::rotationZYX( const Vector3 &radiansXYZ )
+{
+    __m128 angles, s, negS, c, X0, X1, Y0, Y1, Z0, Z1, tmp;
+    angles = Vector4( radiansXYZ, 0.0f ).get128();
+    sincosf4( angles, &s, &c );
+    negS = negatef4( s );
+    Z0 = vec_mergel( c, s );
+    Z1 = vec_mergel( negS, c );
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_xyz[4] = {0xffffffff, 0xffffffff, 0xffffffff, 0};
+    Z1 = vec_and( Z1, _mm_load_ps( (float *)select_xyz ) );
+	Y0 = _mm_shuffle_ps( c, negS, _MM_SHUFFLE(0,1,1,1) );
+	Y1 = _mm_shuffle_ps( s, c, _MM_SHUFFLE(0,1,1,1) );
+    X0 = vec_splat( s, 0 );
+    X1 = vec_splat( c, 0 );
+    tmp = vec_mul( Z0, Y1 );
+    return Matrix4(
+        Vector4( vec_mul( Z0, Y0 ) ),
+        Vector4( vec_madd( Z1, X1, vec_mul( tmp, X0 ) ) ),
+        Vector4( vec_nmsub( Z1, X0, vec_mul( tmp, X1 ) ) ),
+        Vector4::wAxis( )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::rotation( float radians, const Vector3 &unitVec )
+{
+    return rotation( floatInVec(radians), unitVec );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::rotation( const floatInVec &radians, const Vector3 &unitVec )
+{
+    __m128 axis, s, c, oneMinusC, axisS, negAxisS, xxxx, yyyy, zzzz, tmp0, tmp1, tmp2;
+    axis = unitVec.get128();
+    sincosf4( radians.get128(), &s, &c );
+    xxxx = vec_splat( axis, 0 );
+    yyyy = vec_splat( axis, 1 );
+    zzzz = vec_splat( axis, 2 );
+    oneMinusC = vec_sub( _mm_set1_ps(1.0f), c );
+    axisS = vec_mul( axis, s );
+    negAxisS = negatef4( axisS );
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_x[4] = {0xffffffff, 0, 0, 0};
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_z[4] = {0, 0, 0xffffffff, 0};
+    //tmp0 = vec_perm( axisS, negAxisS, _VECTORMATH_PERM_XZBX );
+	tmp0 = _mm_shuffle_ps( axisS, axisS, _MM_SHUFFLE(0,0,2,0) );
+	tmp0 = vec_sel(tmp0, vec_splat(negAxisS, 1), select_z);
+    //tmp1 = vec_perm( axisS, negAxisS, _VECTORMATH_PERM_CXXX );
+	tmp1 = vec_sel( vec_splat(axisS, 0), vec_splat(negAxisS, 2), select_x );
+    //tmp2 = vec_perm( axisS, negAxisS, _VECTORMATH_PERM_YAXX );
+	tmp2 = _mm_shuffle_ps( axisS, axisS, _MM_SHUFFLE(0,0,0,1) );
+	tmp2 = vec_sel(tmp2, vec_splat(negAxisS, 0), select_y);
+    tmp0 = vec_sel( tmp0, c, select_x );
+    tmp1 = vec_sel( tmp1, c, select_y );
+    tmp2 = vec_sel( tmp2, c, select_z );
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_xyz[4] = {0xffffffff, 0xffffffff, 0xffffffff, 0};
+    axis = vec_and( axis, _mm_load_ps( (float *)select_xyz ) );
+    tmp0 = vec_and( tmp0, _mm_load_ps( (float *)select_xyz ) );
+    tmp1 = vec_and( tmp1, _mm_load_ps( (float *)select_xyz ) );
+    tmp2 = vec_and( tmp2, _mm_load_ps( (float *)select_xyz ) );
+    return Matrix4(
+        Vector4( vec_madd( vec_mul( axis, xxxx ), oneMinusC, tmp0 ) ),
+        Vector4( vec_madd( vec_mul( axis, yyyy ), oneMinusC, tmp1 ) ),
+        Vector4( vec_madd( vec_mul( axis, zzzz ), oneMinusC, tmp2 ) ),
+        Vector4::wAxis( )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::rotation( const Quat &unitQuat )
+{
+    return Matrix4( Transform3::rotation( unitQuat ) );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::scale( const Vector3 &scaleVec )
+{
+    __m128 zero = _mm_setzero_ps();
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_x[4] = {0xffffffff, 0, 0, 0};
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_z[4] = {0, 0, 0xffffffff, 0};
+    return Matrix4(
+        Vector4( vec_sel( zero, scaleVec.get128(), select_x ) ),
+        Vector4( vec_sel( zero, scaleVec.get128(), select_y ) ),
+        Vector4( vec_sel( zero, scaleVec.get128(), select_z ) ),
+        Vector4::wAxis( )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix4 appendScale( const Matrix4 & mat, const Vector3 &scaleVec )
+{
+    return Matrix4(
+        ( mat.getCol0() * scaleVec.getX( ) ),
+        ( mat.getCol1() * scaleVec.getY( ) ),
+        ( mat.getCol2() * scaleVec.getZ( ) ),
+        mat.getCol3()
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix4 prependScale( const Vector3 &scaleVec, const Matrix4 & mat )
+{
+    Vector4 scale4;
+    scale4 = Vector4( scaleVec, 1.0f );
+    return Matrix4(
+        mulPerElem( mat.getCol0(), scale4 ),
+        mulPerElem( mat.getCol1(), scale4 ),
+        mulPerElem( mat.getCol2(), scale4 ),
+        mulPerElem( mat.getCol3(), scale4 )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::translation( const Vector3 &translateVec )
+{
+    return Matrix4(
+        Vector4::xAxis( ),
+        Vector4::yAxis( ),
+        Vector4::zAxis( ),
+        Vector4( translateVec, 1.0f )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::lookAt( const Point3 &eyePos, const Point3 &lookAtPos, const Vector3 &upVec )
+{
+    Matrix4 m4EyeFrame;
+    Vector3 v3X, v3Y, v3Z;
+    v3Y = normalize( upVec );
+    v3Z = normalize( ( eyePos - lookAtPos ) );
+    v3X = normalize( cross( v3Y, v3Z ) );
+    v3Y = cross( v3Z, v3X );
+    m4EyeFrame = Matrix4( Vector4( v3X ), Vector4( v3Y ), Vector4( v3Z ), Vector4( eyePos ) );
+    return orthoInverse( m4EyeFrame );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::perspective( float fovyRadians, float aspect, float zNear, float zFar )
+{
+    float f, rangeInv;
+    __m128 zero, col0, col1, col2, col3;
+    union { __m128 v; float s[4]; } tmp;
+    f = tanf( _VECTORMATH_PI_OVER_2 - fovyRadians * 0.5f );
+    rangeInv = 1.0f / ( zNear - zFar );
+    zero = _mm_setzero_ps();
+    tmp.v = zero;
+    tmp.s[0] = f / aspect;
+    col0 = tmp.v;
+    tmp.v = zero;
+    tmp.s[1] = f;
+    col1 = tmp.v;
+    tmp.v = zero;
+    tmp.s[2] = ( zNear + zFar ) * rangeInv;
+    tmp.s[3] = -1.0f;
+    col2 = tmp.v;
+    tmp.v = zero;
+    tmp.s[2] = zNear * zFar * rangeInv * 2.0f;
+    col3 = tmp.v;
+    return Matrix4(
+        Vector4( col0 ),
+        Vector4( col1 ),
+        Vector4( col2 ),
+        Vector4( col3 )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::frustum( float left, float right, float bottom, float top, float zNear, float zFar )
+{
+    /* function implementation based on code from STIDC SDK:           */
+    /* --------------------------------------------------------------  */
+    /* PLEASE DO NOT MODIFY THIS SECTION                               */
+    /* This prolog section is automatically generated.                 */
+    /*                                                                 */
+    /* (C)Copyright                                                    */
+    /* Sony Computer Entertainment, Inc.,                              */
+    /* Toshiba Corporation,                                            */
+    /* International Business Machines Corporation,                    */
+    /* 2001,2002.                                                      */
+    /* S/T/I Confidential Information                                  */
+    /* --------------------------------------------------------------  */
+    __m128 lbf, rtn;
+    __m128 diff, sum, inv_diff;
+    __m128 diagonal, column, near2;
+    __m128 zero = _mm_setzero_ps();
+    union { __m128 v; float s[4]; } l, f, r, n, b, t; // TODO: Union?
+    l.s[0] = left;
+    f.s[0] = zFar;
+    r.s[0] = right;
+    n.s[0] = zNear;
+    b.s[0] = bottom;
+    t.s[0] = top;
+    lbf = vec_mergeh( l.v, f.v );
+    rtn = vec_mergeh( r.v, n.v );
+    lbf = vec_mergeh( lbf, b.v );
+    rtn = vec_mergeh( rtn, t.v );
+    diff = vec_sub( rtn, lbf );
+    sum  = vec_add( rtn, lbf );
+    inv_diff = recipf4( diff );
+    near2 = vec_splat( n.v, 0 );
+    near2 = vec_add( near2, near2 );
+    diagonal = vec_mul( near2, inv_diff );
+    column = vec_mul( sum, inv_diff );
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_x[4] = {0xffffffff, 0, 0, 0};
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_z[4] = {0, 0, 0xffffffff, 0};
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_w[4] = {0, 0, 0, 0xffffffff};
+    return Matrix4(
+        Vector4( vec_sel( zero, diagonal, select_x ) ),
+        Vector4( vec_sel( zero, diagonal, select_y ) ),
+        Vector4( vec_sel( column, _mm_set1_ps(-1.0f), select_w ) ),
+        Vector4( vec_sel( zero, vec_mul( diagonal, vec_splat( f.v, 0 ) ), select_z ) )
+	);
+}
+
+VECTORMATH_FORCE_INLINE const Matrix4 Matrix4::orthographic( float left, float right, float bottom, float top, float zNear, float zFar )
+{
+    /* function implementation based on code from STIDC SDK:           */
+    /* --------------------------------------------------------------  */
+    /* PLEASE DO NOT MODIFY THIS SECTION                               */
+    /* This prolog section is automatically generated.                 */
+    /*                                                                 */
+    /* (C)Copyright                                                    */
+    /* Sony Computer Entertainment, Inc.,                              */
+    /* Toshiba Corporation,                                            */
+    /* International Business Machines Corporation,                    */
+    /* 2001,2002.                                                      */
+    /* S/T/I Confidential Information                                  */
+    /* --------------------------------------------------------------  */
+    __m128 lbf, rtn;
+    __m128 diff, sum, inv_diff, neg_inv_diff;
+    __m128 diagonal, column;
+    __m128 zero = _mm_setzero_ps();
+    union { __m128 v; float s[4]; } l, f, r, n, b, t;
+    l.s[0] = left;
+    f.s[0] = zFar;
+    r.s[0] = right;
+    n.s[0] = zNear;
+    b.s[0] = bottom;
+    t.s[0] = top;
+    lbf = vec_mergeh( l.v, f.v );
+    rtn = vec_mergeh( r.v, n.v );
+    lbf = vec_mergeh( lbf, b.v );
+    rtn = vec_mergeh( rtn, t.v );
+    diff = vec_sub( rtn, lbf );
+    sum  = vec_add( rtn, lbf );
+    inv_diff = recipf4( diff );
+    neg_inv_diff = negatef4( inv_diff );
+    diagonal = vec_add( inv_diff, inv_diff );
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_x[4] = {0xffffffff, 0, 0, 0};
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_z[4] = {0, 0, 0xffffffff, 0};
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_w[4] = {0, 0, 0, 0xffffffff};
+    column = vec_mul( sum, vec_sel( neg_inv_diff, inv_diff, select_z ) ); // TODO: no madds with zero
+    return Matrix4(
+        Vector4( vec_sel( zero, diagonal, select_x ) ),
+        Vector4( vec_sel( zero, diagonal, select_y ) ),
+        Vector4( vec_sel( zero, diagonal, select_z ) ),
+        Vector4( vec_sel( column, _mm_set1_ps(1.0f), select_w ) )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix4 select( const Matrix4 & mat0, const Matrix4 & mat1, bool select1 )
+{
+    return Matrix4(
+        select( mat0.getCol0(), mat1.getCol0(), select1 ),
+        select( mat0.getCol1(), mat1.getCol1(), select1 ),
+        select( mat0.getCol2(), mat1.getCol2(), select1 ),
+        select( mat0.getCol3(), mat1.getCol3(), select1 )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix4 select( const Matrix4 & mat0, const Matrix4 & mat1, const boolInVec &select1 )
+{
+    return Matrix4(
+        select( mat0.getCol0(), mat1.getCol0(), select1 ),
+        select( mat0.getCol1(), mat1.getCol1(), select1 ),
+        select( mat0.getCol2(), mat1.getCol2(), select1 ),
+        select( mat0.getCol3(), mat1.getCol3(), select1 )
+    );
+}
+
+#ifdef _VECTORMATH_DEBUG
+
+VECTORMATH_FORCE_INLINE void print( const Matrix4 & mat )
+{
+    print( mat.getRow( 0 ) );
+    print( mat.getRow( 1 ) );
+    print( mat.getRow( 2 ) );
+    print( mat.getRow( 3 ) );
+}
+
+VECTORMATH_FORCE_INLINE void print( const Matrix4 & mat, const char * name )
+{
+    printf("%s:\n", name);
+    print( mat );
+}
+
+#endif
+
+VECTORMATH_FORCE_INLINE Transform3::Transform3( const Transform3 & tfrm )
+{
+    mCol0 = tfrm.mCol0;
+    mCol1 = tfrm.mCol1;
+    mCol2 = tfrm.mCol2;
+    mCol3 = tfrm.mCol3;
+}
+
+VECTORMATH_FORCE_INLINE Transform3::Transform3( float scalar )
+{
+    mCol0 = Vector3( scalar );
+    mCol1 = Vector3( scalar );
+    mCol2 = Vector3( scalar );
+    mCol3 = Vector3( scalar );
+}
+
+VECTORMATH_FORCE_INLINE Transform3::Transform3( const floatInVec &scalar )
+{
+    mCol0 = Vector3( scalar );
+    mCol1 = Vector3( scalar );
+    mCol2 = Vector3( scalar );
+    mCol3 = Vector3( scalar );
+}
+
+VECTORMATH_FORCE_INLINE Transform3::Transform3( const Vector3 &_col0, const Vector3 &_col1, const Vector3 &_col2, const Vector3 &_col3 )
+{
+    mCol0 = _col0;
+    mCol1 = _col1;
+    mCol2 = _col2;
+    mCol3 = _col3;
+}
+
+VECTORMATH_FORCE_INLINE Transform3::Transform3( const Matrix3 & tfrm, const Vector3 &translateVec )
+{
+    this->setUpper3x3( tfrm );
+    this->setTranslation( translateVec );
+}
+
+VECTORMATH_FORCE_INLINE Transform3::Transform3( const Quat &unitQuat, const Vector3 &translateVec )
+{
+    this->setUpper3x3( Matrix3( unitQuat ) );
+    this->setTranslation( translateVec );
+}
+
+VECTORMATH_FORCE_INLINE Transform3 & Transform3::setCol0( const Vector3 &_col0 )
+{
+    mCol0 = _col0;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Transform3 & Transform3::setCol1( const Vector3 &_col1 )
+{
+    mCol1 = _col1;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Transform3 & Transform3::setCol2( const Vector3 &_col2 )
+{
+    mCol2 = _col2;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Transform3 & Transform3::setCol3( const Vector3 &_col3 )
+{
+    mCol3 = _col3;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Transform3 & Transform3::setCol( int col, const Vector3 &vec )
+{
+    *(&mCol0 + col) = vec;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Transform3 & Transform3::setRow( int row, const Vector4 &vec )
+{
+    mCol0.setElem( row, vec.getElem( 0 ) );
+    mCol1.setElem( row, vec.getElem( 1 ) );
+    mCol2.setElem( row, vec.getElem( 2 ) );
+    mCol3.setElem( row, vec.getElem( 3 ) );
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Transform3 & Transform3::setElem( int col, int row, float val )
+{
+    (*this)[col].setElem(row, val);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Transform3 & Transform3::setElem( int col, int row, const floatInVec &val )
+{
+    Vector3 tmpV3_0;
+    tmpV3_0 = this->getCol( col );
+    tmpV3_0.setElem( row, val );
+    this->setCol( col, tmpV3_0 );
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec Transform3::getElem( int col, int row ) const
+{
+    return this->getCol( col ).getElem( row );
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 Transform3::getCol0( ) const
+{
+    return mCol0;
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 Transform3::getCol1( ) const
+{
+    return mCol1;
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 Transform3::getCol2( ) const
+{
+    return mCol2;
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 Transform3::getCol3( ) const
+{
+    return mCol3;
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 Transform3::getCol( int col ) const
+{
+    return *(&mCol0 + col);
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 Transform3::getRow( int row ) const
+{
+    return Vector4( mCol0.getElem( row ), mCol1.getElem( row ), mCol2.getElem( row ), mCol3.getElem( row ) );
+}
+
+VECTORMATH_FORCE_INLINE Vector3 & Transform3::operator []( int col )
+{
+    return *(&mCol0 + col);
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 Transform3::operator []( int col ) const
+{
+    return *(&mCol0 + col);
+}
+
+VECTORMATH_FORCE_INLINE Transform3 & Transform3::operator =( const Transform3 & tfrm )
+{
+    mCol0 = tfrm.mCol0;
+    mCol1 = tfrm.mCol1;
+    mCol2 = tfrm.mCol2;
+    mCol3 = tfrm.mCol3;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const Transform3 inverse( const Transform3 & tfrm )
+{
+    __m128 inv0, inv1, inv2, inv3;
+    __m128 tmp0, tmp1, tmp2, tmp3, tmp4, dot, invdet;
+    __m128 xxxx, yyyy, zzzz;
+    tmp2 = _vmathVfCross( tfrm.getCol0().get128(), tfrm.getCol1().get128() );
+    tmp0 = _vmathVfCross( tfrm.getCol1().get128(), tfrm.getCol2().get128() );
+    tmp1 = _vmathVfCross( tfrm.getCol2().get128(), tfrm.getCol0().get128() );
+    inv3 = negatef4( tfrm.getCol3().get128() );
+    dot = _vmathVfDot3( tmp2, tfrm.getCol2().get128() );
+    dot = vec_splat( dot, 0 );
+    invdet = recipf4( dot );
+    tmp3 = vec_mergeh( tmp0, tmp2 );
+    tmp4 = vec_mergel( tmp0, tmp2 );
+    inv0 = vec_mergeh( tmp3, tmp1 );
+    xxxx = vec_splat( inv3, 0 );
+    //inv1 = vec_perm( tmp3, tmp1, _VECTORMATH_PERM_ZBWX );
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
+	inv1 = _mm_shuffle_ps( tmp3, tmp3, _MM_SHUFFLE(0,3,2,2));
+	inv1 = vec_sel(inv1, tmp1, select_y);
+    //inv2 = vec_perm( tmp4, tmp1, _VECTORMATH_PERM_XCYX );
+	inv2 = _mm_shuffle_ps( tmp4, tmp4, _MM_SHUFFLE(0,1,1,0));
+	inv2 = vec_sel(inv2, vec_splat(tmp1, 2), select_y);
+    yyyy = vec_splat( inv3, 1 );
+    zzzz = vec_splat( inv3, 2 );
+    inv3 = vec_mul( inv0, xxxx );
+    inv3 = vec_madd( inv1, yyyy, inv3 );
+    inv3 = vec_madd( inv2, zzzz, inv3 );
+    inv0 = vec_mul( inv0, invdet );
+    inv1 = vec_mul( inv1, invdet );
+    inv2 = vec_mul( inv2, invdet );
+    inv3 = vec_mul( inv3, invdet );
+    return Transform3(
+        Vector3( inv0 ),
+        Vector3( inv1 ),
+        Vector3( inv2 ),
+        Vector3( inv3 )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Transform3 orthoInverse( const Transform3 & tfrm )
+{
+    __m128 inv0, inv1, inv2, inv3;
+    __m128 tmp0, tmp1;
+    __m128 xxxx, yyyy, zzzz;
+    tmp0 = vec_mergeh( tfrm.getCol0().get128(), tfrm.getCol2().get128() );
+    tmp1 = vec_mergel( tfrm.getCol0().get128(), tfrm.getCol2().get128() );
+    inv3 = negatef4( tfrm.getCol3().get128() );
+    inv0 = vec_mergeh( tmp0, tfrm.getCol1().get128() );
+    xxxx = vec_splat( inv3, 0 );
+    //inv1 = vec_perm( tmp0, tfrm.getCol1().get128(), _VECTORMATH_PERM_ZBWX );
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
+	inv1 = _mm_shuffle_ps( tmp0, tmp0, _MM_SHUFFLE(0,3,2,2));
+	inv1 = vec_sel(inv1, tfrm.getCol1().get128(), select_y);
+    //inv2 = vec_perm( tmp1, tfrm.getCol1().get128(), _VECTORMATH_PERM_XCYX );
+	inv2 = _mm_shuffle_ps( tmp1, tmp1, _MM_SHUFFLE(0,1,1,0));
+	inv2 = vec_sel(inv2, vec_splat(tfrm.getCol1().get128(), 2), select_y);
+    yyyy = vec_splat( inv3, 1 );
+    zzzz = vec_splat( inv3, 2 );
+    inv3 = vec_mul( inv0, xxxx );
+    inv3 = vec_madd( inv1, yyyy, inv3 );
+    inv3 = vec_madd( inv2, zzzz, inv3 );
+    return Transform3(
+        Vector3( inv0 ),
+        Vector3( inv1 ),
+        Vector3( inv2 ),
+        Vector3( inv3 )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Transform3 absPerElem( const Transform3 & tfrm )
+{
+    return Transform3(
+        absPerElem( tfrm.getCol0() ),
+        absPerElem( tfrm.getCol1() ),
+        absPerElem( tfrm.getCol2() ),
+        absPerElem( tfrm.getCol3() )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 Transform3::operator *( const Vector3 &vec ) const
+{
+    __m128 res;
+    __m128 xxxx, yyyy, zzzz;
+    xxxx = vec_splat( vec.get128(), 0 );
+    yyyy = vec_splat( vec.get128(), 1 );
+    zzzz = vec_splat( vec.get128(), 2 );
+    res = vec_mul( mCol0.get128(), xxxx );
+    res = vec_madd( mCol1.get128(), yyyy, res );
+    res = vec_madd( mCol2.get128(), zzzz, res );
+    return Vector3( res );
+}
+
+VECTORMATH_FORCE_INLINE const Point3 Transform3::operator *( const Point3 &pnt ) const
+{
+    __m128 tmp0, tmp1, res;
+    __m128 xxxx, yyyy, zzzz;
+    xxxx = vec_splat( pnt.get128(), 0 );
+    yyyy = vec_splat( pnt.get128(), 1 );
+    zzzz = vec_splat( pnt.get128(), 2 );
+    tmp0 = vec_mul( mCol0.get128(), xxxx );
+    tmp1 = vec_mul( mCol1.get128(), yyyy );
+    tmp0 = vec_madd( mCol2.get128(), zzzz, tmp0 );
+    tmp1 = vec_add( mCol3.get128(), tmp1 );
+    res = vec_add( tmp0, tmp1 );
+    return Point3( res );
+}
+
+VECTORMATH_FORCE_INLINE const Transform3 Transform3::operator *( const Transform3 & tfrm ) const
+{
+    return Transform3(
+        ( *this * tfrm.mCol0 ),
+        ( *this * tfrm.mCol1 ),
+        ( *this * tfrm.mCol2 ),
+        Vector3( ( *this * Point3( tfrm.mCol3 ) ) )
+    );
+}
+
+VECTORMATH_FORCE_INLINE Transform3 & Transform3::operator *=( const Transform3 & tfrm )
+{
+    *this = *this * tfrm;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const Transform3 mulPerElem( const Transform3 & tfrm0, const Transform3 & tfrm1 )
+{
+    return Transform3(
+        mulPerElem( tfrm0.getCol0(), tfrm1.getCol0() ),
+        mulPerElem( tfrm0.getCol1(), tfrm1.getCol1() ),
+        mulPerElem( tfrm0.getCol2(), tfrm1.getCol2() ),
+        mulPerElem( tfrm0.getCol3(), tfrm1.getCol3() )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Transform3 Transform3::identity( )
+{
+    return Transform3(
+        Vector3::xAxis( ),
+        Vector3::yAxis( ),
+        Vector3::zAxis( ),
+        Vector3( 0.0f )
+    );
+}
+
+VECTORMATH_FORCE_INLINE Transform3 & Transform3::setUpper3x3( const Matrix3 & tfrm )
+{
+    mCol0 = tfrm.getCol0();
+    mCol1 = tfrm.getCol1();
+    mCol2 = tfrm.getCol2();
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const Matrix3 Transform3::getUpper3x3( ) const
+{
+    return Matrix3( mCol0, mCol1, mCol2 );
+}
+
+VECTORMATH_FORCE_INLINE Transform3 & Transform3::setTranslation( const Vector3 &translateVec )
+{
+    mCol3 = translateVec;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 Transform3::getTranslation( ) const
+{
+    return mCol3;
+}
+
+VECTORMATH_FORCE_INLINE const Transform3 Transform3::rotationX( float radians )
+{
+    return rotationX( floatInVec(radians) );
+}
+
+VECTORMATH_FORCE_INLINE const Transform3 Transform3::rotationX( const floatInVec &radians )
+{
+    __m128 s, c, res1, res2;
+    __m128 zero;
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_z[4] = {0, 0, 0xffffffff, 0};
+    zero = _mm_setzero_ps();
+    sincosf4( radians.get128(), &s, &c );
+    res1 = vec_sel( zero, c, select_y );
+    res1 = vec_sel( res1, s, select_z );
+    res2 = vec_sel( zero, negatef4(s), select_y );
+    res2 = vec_sel( res2, c, select_z );
+    return Transform3(
+        Vector3::xAxis( ),
+        Vector3( res1 ),
+        Vector3( res2 ),
+        Vector3( _mm_setzero_ps() )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Transform3 Transform3::rotationY( float radians )
+{
+    return rotationY( floatInVec(radians) );
+}
+
+VECTORMATH_FORCE_INLINE const Transform3 Transform3::rotationY( const floatInVec &radians )
+{
+    __m128 s, c, res0, res2;
+    __m128 zero;
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_x[4] = {0xffffffff, 0, 0, 0};
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_z[4] = {0, 0, 0xffffffff, 0};
+    zero = _mm_setzero_ps();
+    sincosf4( radians.get128(), &s, &c );
+    res0 = vec_sel( zero, c, select_x );
+    res0 = vec_sel( res0, negatef4(s), select_z );
+    res2 = vec_sel( zero, s, select_x );
+    res2 = vec_sel( res2, c, select_z );
+    return Transform3(
+        Vector3( res0 ),
+        Vector3::yAxis( ),
+        Vector3( res2 ),
+        Vector3( 0.0f )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Transform3 Transform3::rotationZ( float radians )
+{
+    return rotationZ( floatInVec(radians) );
+}
+
+VECTORMATH_FORCE_INLINE const Transform3 Transform3::rotationZ( const floatInVec &radians )
+{
+    __m128 s, c, res0, res1;
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_x[4] = {0xffffffff, 0, 0, 0};
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
+    __m128 zero = _mm_setzero_ps();
+    sincosf4( radians.get128(), &s, &c );
+    res0 = vec_sel( zero, c, select_x );
+    res0 = vec_sel( res0, s, select_y );
+    res1 = vec_sel( zero, negatef4(s), select_x );
+    res1 = vec_sel( res1, c, select_y );
+    return Transform3(
+        Vector3( res0 ),
+        Vector3( res1 ),
+        Vector3::zAxis( ),
+        Vector3( 0.0f )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Transform3 Transform3::rotationZYX( const Vector3 &radiansXYZ )
+{
+    __m128 angles, s, negS, c, X0, X1, Y0, Y1, Z0, Z1, tmp;
+    angles = Vector4( radiansXYZ, 0.0f ).get128();
+    sincosf4( angles, &s, &c );
+    negS = negatef4( s );
+    Z0 = vec_mergel( c, s );
+    Z1 = vec_mergel( negS, c );
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_xyz[4] = {0xffffffff, 0xffffffff, 0xffffffff, 0};
+    Z1 = vec_and( Z1, _mm_load_ps( (float *)select_xyz ) );
+	Y0 = _mm_shuffle_ps( c, negS, _MM_SHUFFLE(0,1,1,1) );
+	Y1 = _mm_shuffle_ps( s, c, _MM_SHUFFLE(0,1,1,1) );
+    X0 = vec_splat( s, 0 );
+    X1 = vec_splat( c, 0 );
+    tmp = vec_mul( Z0, Y1 );
+    return Transform3(
+        Vector3( vec_mul( Z0, Y0 ) ),
+        Vector3( vec_madd( Z1, X1, vec_mul( tmp, X0 ) ) ),
+        Vector3( vec_nmsub( Z1, X0, vec_mul( tmp, X1 ) ) ),
+        Vector3( 0.0f )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Transform3 Transform3::rotation( float radians, const Vector3 &unitVec )
+{
+    return rotation( floatInVec(radians), unitVec );
+}
+
+VECTORMATH_FORCE_INLINE const Transform3 Transform3::rotation( const floatInVec &radians, const Vector3 &unitVec )
+{
+    return Transform3( Matrix3::rotation( radians, unitVec ), Vector3( 0.0f ) );
+}
+
+VECTORMATH_FORCE_INLINE const Transform3 Transform3::rotation( const Quat &unitQuat )
+{
+    return Transform3( Matrix3( unitQuat ), Vector3( 0.0f ) );
+}
+
+VECTORMATH_FORCE_INLINE const Transform3 Transform3::scale( const Vector3 &scaleVec )
+{
+    __m128 zero = _mm_setzero_ps();
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_x[4] = {0xffffffff, 0, 0, 0};
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_z[4] = {0, 0, 0xffffffff, 0};
+    return Transform3(
+        Vector3( vec_sel( zero, scaleVec.get128(), select_x ) ),
+        Vector3( vec_sel( zero, scaleVec.get128(), select_y ) ),
+        Vector3( vec_sel( zero, scaleVec.get128(), select_z ) ),
+        Vector3( 0.0f )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Transform3 appendScale( const Transform3 & tfrm, const Vector3 &scaleVec )
+{
+    return Transform3(
+        ( tfrm.getCol0() * scaleVec.getX( ) ),
+        ( tfrm.getCol1() * scaleVec.getY( ) ),
+        ( tfrm.getCol2() * scaleVec.getZ( ) ),
+        tfrm.getCol3()
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Transform3 prependScale( const Vector3 &scaleVec, const Transform3 & tfrm )
+{
+    return Transform3(
+        mulPerElem( tfrm.getCol0(), scaleVec ),
+        mulPerElem( tfrm.getCol1(), scaleVec ),
+        mulPerElem( tfrm.getCol2(), scaleVec ),
+        mulPerElem( tfrm.getCol3(), scaleVec )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Transform3 Transform3::translation( const Vector3 &translateVec )
+{
+    return Transform3(
+        Vector3::xAxis( ),
+        Vector3::yAxis( ),
+        Vector3::zAxis( ),
+        translateVec
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Transform3 select( const Transform3 & tfrm0, const Transform3 & tfrm1, bool select1 )
+{
+    return Transform3(
+        select( tfrm0.getCol0(), tfrm1.getCol0(), select1 ),
+        select( tfrm0.getCol1(), tfrm1.getCol1(), select1 ),
+        select( tfrm0.getCol2(), tfrm1.getCol2(), select1 ),
+        select( tfrm0.getCol3(), tfrm1.getCol3(), select1 )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Transform3 select( const Transform3 & tfrm0, const Transform3 & tfrm1, const boolInVec &select1 )
+{
+    return Transform3(
+        select( tfrm0.getCol0(), tfrm1.getCol0(), select1 ),
+        select( tfrm0.getCol1(), tfrm1.getCol1(), select1 ),
+        select( tfrm0.getCol2(), tfrm1.getCol2(), select1 ),
+        select( tfrm0.getCol3(), tfrm1.getCol3(), select1 )
+    );
+}
+
+#ifdef _VECTORMATH_DEBUG
+
+VECTORMATH_FORCE_INLINE void print( const Transform3 & tfrm )
+{
+    print( tfrm.getRow( 0 ) );
+    print( tfrm.getRow( 1 ) );
+    print( tfrm.getRow( 2 ) );
+}
+
+VECTORMATH_FORCE_INLINE void print( const Transform3 & tfrm, const char * name )
+{
+    printf("%s:\n", name);
+    print( tfrm );
+}
+
+#endif
+
+VECTORMATH_FORCE_INLINE Quat::Quat( const Matrix3 & tfrm )
+{
+    __m128 res;
+    __m128 col0, col1, col2;
+    __m128 xx_yy, xx_yy_zz_xx, yy_zz_xx_yy, zz_xx_yy_zz, diagSum, diagDiff;
+    __m128 zy_xz_yx, yz_zx_xy, sum, diff;
+    __m128 radicand, invSqrt, scale;
+    __m128 res0, res1, res2, res3;
+    __m128 xx, yy, zz;
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_x[4] = {0xffffffff, 0, 0, 0};
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_z[4] = {0, 0, 0xffffffff, 0};
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_w[4] = {0, 0, 0, 0xffffffff};
+
+    col0 = tfrm.getCol0().get128();
+    col1 = tfrm.getCol1().get128();
+    col2 = tfrm.getCol2().get128();
+
+    /* four cases: */
+    /* trace > 0 */
+    /* else */
+    /*    xx largest diagonal element */
+    /*    yy largest diagonal element */
+    /*    zz largest diagonal element */
+
+    /* compute quaternion for each case */
+
+    xx_yy = vec_sel( col0, col1, select_y );
+    //xx_yy_zz_xx = vec_perm( xx_yy, col2, _VECTORMATH_PERM_XYCX );
+    //yy_zz_xx_yy = vec_perm( xx_yy, col2, _VECTORMATH_PERM_YCXY );
+    //zz_xx_yy_zz = vec_perm( xx_yy, col2, _VECTORMATH_PERM_CXYC );
+    xx_yy_zz_xx = _mm_shuffle_ps( xx_yy, xx_yy, _MM_SHUFFLE(0,0,1,0) );
+    xx_yy_zz_xx = vec_sel( xx_yy_zz_xx, col2, select_z ); // TODO: Ck
+    yy_zz_xx_yy = _mm_shuffle_ps( xx_yy_zz_xx, xx_yy_zz_xx, _MM_SHUFFLE(1,0,2,1) );
+    zz_xx_yy_zz = _mm_shuffle_ps( xx_yy_zz_xx, xx_yy_zz_xx, _MM_SHUFFLE(2,1,0,2) );
+
+    diagSum = vec_add( vec_add( xx_yy_zz_xx, yy_zz_xx_yy ), zz_xx_yy_zz );
+    diagDiff = vec_sub( vec_sub( xx_yy_zz_xx, yy_zz_xx_yy ), zz_xx_yy_zz );
+    radicand = vec_add( vec_sel( diagDiff, diagSum, select_w ), _mm_set1_ps(1.0f) );
+ //   invSqrt = rsqrtf4( radicand );
+	invSqrt = newtonrapson_rsqrt4( radicand );
+
+	
+
+    zy_xz_yx = vec_sel( col0, col1, select_z );									// zy_xz_yx = 00 01 12 03
+    //zy_xz_yx = vec_perm( zy_xz_yx, col2, _VECTORMATH_PERM_ZAYX );
+	zy_xz_yx = _mm_shuffle_ps( zy_xz_yx, zy_xz_yx, _MM_SHUFFLE(0,1,2,2) );		// zy_xz_yx = 12 12 01 00
+    zy_xz_yx = vec_sel( zy_xz_yx, vec_splat(col2, 0), select_y );				// zy_xz_yx = 12 20 01 00
+    yz_zx_xy = vec_sel( col0, col1, select_x );									// yz_zx_xy = 10 01 02 03
+    //yz_zx_xy = vec_perm( yz_zx_xy, col2, _VECTORMATH_PERM_BZXX );
+	yz_zx_xy = _mm_shuffle_ps( yz_zx_xy, yz_zx_xy, _MM_SHUFFLE(0,0,2,0) );		// yz_zx_xy = 10 02 10 10
+	yz_zx_xy = vec_sel( yz_zx_xy, vec_splat(col2, 1), select_x );				// yz_zx_xy = 21 02 10 10
+
+    sum = vec_add( zy_xz_yx, yz_zx_xy );
+    diff = vec_sub( zy_xz_yx, yz_zx_xy );
+
+    scale = vec_mul( invSqrt, _mm_set1_ps(0.5f) );
+
+    //res0 = vec_perm( sum, diff, _VECTORMATH_PERM_XZYA );
+	res0 = _mm_shuffle_ps( sum, sum, _MM_SHUFFLE(0,1,2,0) );
+	res0 = vec_sel( res0, vec_splat(diff, 0), select_w );  // TODO: Ck
+    //res1 = vec_perm( sum, diff, _VECTORMATH_PERM_ZXXB );
+	res1 = _mm_shuffle_ps( sum, sum, _MM_SHUFFLE(0,0,0,2) );
+	res1 = vec_sel( res1, vec_splat(diff, 1), select_w );  // TODO: Ck
+    //res2 = vec_perm( sum, diff, _VECTORMATH_PERM_YXXC );
+	res2 = _mm_shuffle_ps( sum, sum, _MM_SHUFFLE(0,0,0,1) );
+	res2 = vec_sel( res2, vec_splat(diff, 2), select_w );  // TODO: Ck
+    res3 = diff;
+    res0 = vec_sel( res0, radicand, select_x );
+    res1 = vec_sel( res1, radicand, select_y );
+    res2 = vec_sel( res2, radicand, select_z );
+    res3 = vec_sel( res3, radicand, select_w );
+    res0 = vec_mul( res0, vec_splat( scale, 0 ) );
+    res1 = vec_mul( res1, vec_splat( scale, 1 ) );
+    res2 = vec_mul( res2, vec_splat( scale, 2 ) );
+    res3 = vec_mul( res3, vec_splat( scale, 3 ) );
+
+    /* determine case and select answer */
+
+    xx = vec_splat( col0, 0 );
+    yy = vec_splat( col1, 1 );
+    zz = vec_splat( col2, 2 );
+    res = vec_sel( res0, res1, vec_cmpgt( yy, xx ) );
+    res = vec_sel( res, res2, vec_and( vec_cmpgt( zz, xx ), vec_cmpgt( zz, yy ) ) );
+    res = vec_sel( res, res3, vec_cmpgt( vec_splat( diagSum, 0 ), _mm_setzero_ps() ) );
+    mVec128 = res;
+}
+
+VECTORMATH_FORCE_INLINE const Matrix3 outer( const Vector3 &tfrm0, const Vector3 &tfrm1 )
+{
+    return Matrix3(
+        ( tfrm0 * tfrm1.getX( ) ),
+        ( tfrm0 * tfrm1.getY( ) ),
+        ( tfrm0 * tfrm1.getZ( ) )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix4 outer( const Vector4 &tfrm0, const Vector4 &tfrm1 )
+{
+    return Matrix4(
+        ( tfrm0 * tfrm1.getX( ) ),
+        ( tfrm0 * tfrm1.getY( ) ),
+        ( tfrm0 * tfrm1.getZ( ) ),
+        ( tfrm0 * tfrm1.getW( ) )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 rowMul( const Vector3 &vec, const Matrix3 & mat )
+{
+    __m128 tmp0, tmp1, mcol0, mcol1, mcol2, res;
+    __m128 xxxx, yyyy, zzzz;
+    tmp0 = vec_mergeh( mat.getCol0().get128(), mat.getCol2().get128() );
+    tmp1 = vec_mergel( mat.getCol0().get128(), mat.getCol2().get128() );
+    xxxx = vec_splat( vec.get128(), 0 );
+    mcol0 = vec_mergeh( tmp0, mat.getCol1().get128() );
+    //mcol1 = vec_perm( tmp0, mat.getCol1().get128(), _VECTORMATH_PERM_ZBWX );
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
+	mcol1 = _mm_shuffle_ps( tmp0, tmp0, _MM_SHUFFLE(0,3,2,2));
+	mcol1 = vec_sel(mcol1, mat.getCol1().get128(), select_y);
+    //mcol2 = vec_perm( tmp1, mat.getCol1().get128(), _VECTORMATH_PERM_XCYX );
+	mcol2 = _mm_shuffle_ps( tmp1, tmp1, _MM_SHUFFLE(0,1,1,0));
+	mcol2 = vec_sel(mcol2, vec_splat(mat.getCol1().get128(), 2), select_y);
+    yyyy = vec_splat( vec.get128(), 1 );
+    res = vec_mul( mcol0, xxxx );
+    zzzz = vec_splat( vec.get128(), 2 );
+    res = vec_madd( mcol1, yyyy, res );
+    res = vec_madd( mcol2, zzzz, res );
+    return Vector3( res );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix3 crossMatrix( const Vector3 &vec )
+{
+    __m128 neg, res0, res1, res2;
+    neg = negatef4( vec.get128() );
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_x[4] = {0xffffffff, 0, 0, 0};
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_y[4] = {0, 0xffffffff, 0, 0};
+	VM_ATTRIBUTE_ALIGN16 unsigned int select_z[4] = {0, 0, 0xffffffff, 0};
+    //res0 = vec_perm( vec.get128(), neg, _VECTORMATH_PERM_XZBX );
+	res0 = _mm_shuffle_ps( vec.get128(), vec.get128(), _MM_SHUFFLE(0,2,2,0) );
+	res0 = vec_sel(res0, vec_splat(neg, 1), select_z);
+    //res1 = vec_perm( vec.get128(), neg, _VECTORMATH_PERM_CXXX );
+	res1 = vec_sel(vec_splat(vec.get128(), 0), vec_splat(neg, 2), select_x);
+    //res2 = vec_perm( vec.get128(), neg, _VECTORMATH_PERM_YAXX );
+	res2 = _mm_shuffle_ps( vec.get128(), vec.get128(), _MM_SHUFFLE(0,0,1,1) );
+	res2 = vec_sel(res2, vec_splat(neg, 0), select_y);
+	VM_ATTRIBUTE_ALIGN16 unsigned int filter_x[4] = {0, 0xffffffff, 0xffffffff, 0xffffffff};
+	VM_ATTRIBUTE_ALIGN16 unsigned int filter_y[4] = {0xffffffff, 0, 0xffffffff, 0xffffffff};
+	VM_ATTRIBUTE_ALIGN16 unsigned int filter_z[4] = {0xffffffff, 0xffffffff, 0, 0xffffffff};
+    res0 = vec_and( res0, _mm_load_ps((float *)filter_x ) );
+    res1 = vec_and( res1, _mm_load_ps((float *)filter_y ) );
+    res2 = vec_and( res2, _mm_load_ps((float *)filter_z ) ); // TODO: Use selects?
+    return Matrix3(
+        Vector3( res0 ),
+        Vector3( res1 ),
+        Vector3( res2 )
+    );
+}
+
+VECTORMATH_FORCE_INLINE const Matrix3 crossMatrixMul( const Vector3 &vec, const Matrix3 & mat )
+{
+    return Matrix3( cross( vec, mat.getCol0() ), cross( vec, mat.getCol1() ), cross( vec, mat.getCol2() ) );
+}
+
+} // namespace Aos
+} // namespace Vectormath
+
+#endif
+ bullet/vectormath/sse/quat_aos.h view
@@ -0,0 +1,579 @@+/*
+   Copyright (C) 2006, 2007 Sony Computer Entertainment Inc.
+   All rights reserved.
+
+   Redistribution and use in source and binary forms,
+   with or without modification, are permitted provided that the
+   following conditions are met:
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+    * Neither the name of the Sony Computer Entertainment Inc nor the names
+      of its contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+#ifndef _VECTORMATH_QUAT_AOS_CPP_H
+#define _VECTORMATH_QUAT_AOS_CPP_H
+
+//-----------------------------------------------------------------------------
+// Definitions
+
+#ifndef _VECTORMATH_INTERNAL_FUNCTIONS
+#define _VECTORMATH_INTERNAL_FUNCTIONS
+
+#endif
+
+namespace Vectormath {
+namespace Aos {
+
+VECTORMATH_FORCE_INLINE void Quat::set128(vec_float4 vec)
+{
+    mVec128 = vec;
+}
+
+VECTORMATH_FORCE_INLINE Quat::Quat( const floatInVec &_x, const floatInVec &_y, const floatInVec &_z, const floatInVec &_w )
+{
+	mVec128 = _mm_unpacklo_ps(
+		_mm_unpacklo_ps( _x.get128(), _z.get128() ),
+		_mm_unpacklo_ps( _y.get128(), _w.get128() ) );
+}
+
+VECTORMATH_FORCE_INLINE Quat::Quat( const Vector3 &xyz, float _w )
+{
+    mVec128 = xyz.get128();
+    _vmathVfSetElement(mVec128, _w, 3);
+}
+
+
+
+VECTORMATH_FORCE_INLINE  Quat::Quat(const Quat& quat)
+{
+	mVec128 = quat.get128();
+}
+
+VECTORMATH_FORCE_INLINE Quat::Quat( float _x, float _y, float _z, float _w )
+{
+	mVec128 = _mm_setr_ps(_x, _y, _z, _w);
+}
+
+
+
+
+
+VECTORMATH_FORCE_INLINE Quat::Quat( const Vector3 &xyz, const floatInVec &_w )
+{
+    mVec128 = xyz.get128();
+    mVec128 = _vmathVfInsert(mVec128, _w.get128(), 3);
+}
+
+VECTORMATH_FORCE_INLINE Quat::Quat( const Vector4 &vec )
+{
+    mVec128 = vec.get128();
+}
+
+VECTORMATH_FORCE_INLINE Quat::Quat( float scalar )
+{
+    mVec128 = floatInVec(scalar).get128();
+}
+
+VECTORMATH_FORCE_INLINE Quat::Quat( const floatInVec &scalar )
+{
+    mVec128 = scalar.get128();
+}
+
+VECTORMATH_FORCE_INLINE Quat::Quat( __m128 vf4 )
+{
+    mVec128 = vf4;
+}
+
+VECTORMATH_FORCE_INLINE const Quat Quat::identity( )
+{
+    return Quat( _VECTORMATH_UNIT_0001 );
+}
+
+VECTORMATH_FORCE_INLINE const Quat lerp( float t, const Quat &quat0, const Quat &quat1 )
+{
+    return lerp( floatInVec(t), quat0, quat1 );
+}
+
+VECTORMATH_FORCE_INLINE const Quat lerp( const floatInVec &t, const Quat &quat0, const Quat &quat1 )
+{
+    return ( quat0 + ( ( quat1 - quat0 ) * t ) );
+}
+
+VECTORMATH_FORCE_INLINE const Quat slerp( float t, const Quat &unitQuat0, const Quat &unitQuat1 )
+{
+    return slerp( floatInVec(t), unitQuat0, unitQuat1 );
+}
+
+VECTORMATH_FORCE_INLINE const Quat slerp( const floatInVec &t, const Quat &unitQuat0, const Quat &unitQuat1 )
+{
+    Quat start;
+    vec_float4 scales, scale0, scale1, cosAngle, angle, tttt, oneMinusT, angles, sines;
+    __m128 selectMask;
+    cosAngle = _vmathVfDot4( unitQuat0.get128(), unitQuat1.get128() );
+    selectMask = (__m128)vec_cmpgt( _mm_setzero_ps(), cosAngle );
+    cosAngle = vec_sel( cosAngle, negatef4( cosAngle ), selectMask );
+    start = Quat( vec_sel( unitQuat0.get128(), negatef4( unitQuat0.get128() ), selectMask ) );
+    selectMask = (__m128)vec_cmpgt( _mm_set1_ps(_VECTORMATH_SLERP_TOL), cosAngle );
+    angle = acosf4( cosAngle );
+    tttt = t.get128();
+    oneMinusT = vec_sub( _mm_set1_ps(1.0f), tttt );
+    angles = vec_mergeh( _mm_set1_ps(1.0f), tttt );
+    angles = vec_mergeh( angles, oneMinusT );
+    angles = vec_madd( angles, angle, _mm_setzero_ps() );
+    sines = sinf4( angles );
+    scales = _mm_div_ps( sines, vec_splat( sines, 0 ) );
+    scale0 = vec_sel( oneMinusT, vec_splat( scales, 1 ), selectMask );
+    scale1 = vec_sel( tttt, vec_splat( scales, 2 ), selectMask );
+    return Quat( vec_madd( start.get128(), scale0, vec_mul( unitQuat1.get128(), scale1 ) ) );
+}
+
+VECTORMATH_FORCE_INLINE const Quat squad( float t, const Quat &unitQuat0, const Quat &unitQuat1, const Quat &unitQuat2, const Quat &unitQuat3 )
+{
+    return squad( floatInVec(t), unitQuat0, unitQuat1, unitQuat2, unitQuat3 );
+}
+
+VECTORMATH_FORCE_INLINE const Quat squad( const floatInVec &t, const Quat &unitQuat0, const Quat &unitQuat1, const Quat &unitQuat2, const Quat &unitQuat3 )
+{
+    return slerp( ( ( floatInVec(2.0f) * t ) * ( floatInVec(1.0f) - t ) ), slerp( t, unitQuat0, unitQuat3 ), slerp( t, unitQuat1, unitQuat2 ) );
+}
+
+VECTORMATH_FORCE_INLINE __m128 Quat::get128( ) const
+{
+    return mVec128;
+}
+
+VECTORMATH_FORCE_INLINE Quat & Quat::operator =( const Quat &quat )
+{
+    mVec128 = quat.mVec128;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Quat & Quat::setXYZ( const Vector3 &vec )
+{
+	VM_ATTRIBUTE_ALIGN16 unsigned int sw[4] = {0, 0, 0, 0xffffffff};
+	mVec128 = vec_sel( vec.get128(), mVec128, sw );
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 Quat::getXYZ( ) const
+{
+    return Vector3( mVec128 );
+}
+
+VECTORMATH_FORCE_INLINE Quat & Quat::setX( float _x )
+{
+    _vmathVfSetElement(mVec128, _x, 0);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Quat & Quat::setX( const floatInVec &_x )
+{
+    mVec128 = _vmathVfInsert(mVec128, _x.get128(), 0);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec Quat::getX( ) const
+{
+    return floatInVec( mVec128, 0 );
+}
+
+VECTORMATH_FORCE_INLINE Quat & Quat::setY( float _y )
+{
+    _vmathVfSetElement(mVec128, _y, 1);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Quat & Quat::setY( const floatInVec &_y )
+{
+    mVec128 = _vmathVfInsert(mVec128, _y.get128(), 1);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec Quat::getY( ) const
+{
+    return floatInVec( mVec128, 1 );
+}
+
+VECTORMATH_FORCE_INLINE Quat & Quat::setZ( float _z )
+{
+    _vmathVfSetElement(mVec128, _z, 2);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Quat & Quat::setZ( const floatInVec &_z )
+{
+    mVec128 = _vmathVfInsert(mVec128, _z.get128(), 2);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec Quat::getZ( ) const
+{
+    return floatInVec( mVec128, 2 );
+}
+
+VECTORMATH_FORCE_INLINE Quat & Quat::setW( float _w )
+{
+    _vmathVfSetElement(mVec128, _w, 3);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Quat & Quat::setW( const floatInVec &_w )
+{
+    mVec128 = _vmathVfInsert(mVec128, _w.get128(), 3);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec Quat::getW( ) const
+{
+    return floatInVec( mVec128, 3 );
+}
+
+VECTORMATH_FORCE_INLINE Quat & Quat::setElem( int idx, float value )
+{
+    _vmathVfSetElement(mVec128, value, idx);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Quat & Quat::setElem( int idx, const floatInVec &value )
+{
+    mVec128 = _vmathVfInsert(mVec128, value.get128(), idx);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec Quat::getElem( int idx ) const
+{
+    return floatInVec( mVec128, idx );
+}
+
+VECTORMATH_FORCE_INLINE VecIdx Quat::operator []( int idx )
+{
+    return VecIdx( mVec128, idx );
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec Quat::operator []( int idx ) const
+{
+    return floatInVec( mVec128, idx );
+}
+
+VECTORMATH_FORCE_INLINE const Quat Quat::operator +( const Quat &quat ) const
+{
+    return Quat( _mm_add_ps( mVec128, quat.mVec128 ) );
+}
+
+
+VECTORMATH_FORCE_INLINE const Quat Quat::operator -( const Quat &quat ) const
+{
+    return Quat( _mm_sub_ps( mVec128, quat.mVec128 ) );
+}
+
+VECTORMATH_FORCE_INLINE const Quat Quat::operator *( float scalar ) const
+{
+    return *this * floatInVec(scalar);
+}
+
+VECTORMATH_FORCE_INLINE const Quat Quat::operator *( const floatInVec &scalar ) const
+{
+    return Quat( _mm_mul_ps( mVec128, scalar.get128() ) );
+}
+
+VECTORMATH_FORCE_INLINE Quat & Quat::operator +=( const Quat &quat )
+{
+    *this = *this + quat;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Quat & Quat::operator -=( const Quat &quat )
+{
+    *this = *this - quat;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Quat & Quat::operator *=( float scalar )
+{
+    *this = *this * scalar;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Quat & Quat::operator *=( const floatInVec &scalar )
+{
+    *this = *this * scalar;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const Quat Quat::operator /( float scalar ) const
+{
+    return *this / floatInVec(scalar);
+}
+
+VECTORMATH_FORCE_INLINE const Quat Quat::operator /( const floatInVec &scalar ) const
+{
+    return Quat( _mm_div_ps( mVec128, scalar.get128() ) );
+}
+
+VECTORMATH_FORCE_INLINE Quat & Quat::operator /=( float scalar )
+{
+    *this = *this / scalar;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Quat & Quat::operator /=( const floatInVec &scalar )
+{
+    *this = *this / scalar;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const Quat Quat::operator -( ) const
+{
+	return Quat(_mm_sub_ps( _mm_setzero_ps(), mVec128 ) );
+}
+
+VECTORMATH_FORCE_INLINE const Quat operator *( float scalar, const Quat &quat )
+{
+    return floatInVec(scalar) * quat;
+}
+
+VECTORMATH_FORCE_INLINE const Quat operator *( const floatInVec &scalar, const Quat &quat )
+{
+    return quat * scalar;
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec dot( const Quat &quat0, const Quat &quat1 )
+{
+    return floatInVec( _vmathVfDot4( quat0.get128(), quat1.get128() ), 0 );
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec norm( const Quat &quat )
+{
+    return floatInVec(  _vmathVfDot4( quat.get128(), quat.get128() ), 0 );
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec length( const Quat &quat )
+{
+    return floatInVec(  _mm_sqrt_ps(_vmathVfDot4( quat.get128(), quat.get128() )), 0 );
+}
+
+VECTORMATH_FORCE_INLINE const Quat normalize( const Quat &quat )
+{
+	vec_float4 dot =_vmathVfDot4( quat.get128(), quat.get128());
+    return Quat( _mm_mul_ps( quat.get128(), newtonrapson_rsqrt4( dot ) ) );
+}
+
+
+VECTORMATH_FORCE_INLINE const Quat Quat::rotation( const Vector3 &unitVec0, const Vector3 &unitVec1 )
+{
+    Vector3 crossVec;
+    __m128 cosAngle, cosAngleX2Plus2, recipCosHalfAngleX2, cosHalfAngleX2, res;
+    cosAngle = _vmathVfDot3( unitVec0.get128(), unitVec1.get128() );
+    cosAngleX2Plus2 = vec_madd( cosAngle, _mm_set1_ps(2.0f), _mm_set1_ps(2.0f) );
+    recipCosHalfAngleX2 = _mm_rsqrt_ps( cosAngleX2Plus2 );
+    cosHalfAngleX2 = vec_mul( recipCosHalfAngleX2, cosAngleX2Plus2 );
+    crossVec = cross( unitVec0, unitVec1 );
+    res = vec_mul( crossVec.get128(), recipCosHalfAngleX2 );
+	VM_ATTRIBUTE_ALIGN16 unsigned int sw[4] = {0, 0, 0, 0xffffffff};
+    res = vec_sel( res, vec_mul( cosHalfAngleX2, _mm_set1_ps(0.5f) ), sw );
+    return Quat( res );
+}
+
+VECTORMATH_FORCE_INLINE const Quat Quat::rotation( float radians, const Vector3 &unitVec )
+{
+    return rotation( floatInVec(radians), unitVec );
+}
+
+VECTORMATH_FORCE_INLINE const Quat Quat::rotation( const floatInVec &radians, const Vector3 &unitVec )
+{
+    __m128 s, c, angle, res;
+    angle = vec_mul( radians.get128(), _mm_set1_ps(0.5f) );
+    sincosf4( angle, &s, &c );
+	VM_ATTRIBUTE_ALIGN16 unsigned int sw[4] = {0, 0, 0, 0xffffffff};
+    res = vec_sel( vec_mul( unitVec.get128(), s ), c, sw );
+    return Quat( res );
+}
+
+VECTORMATH_FORCE_INLINE const Quat Quat::rotationX( float radians )
+{
+    return rotationX( floatInVec(radians) );
+}
+
+VECTORMATH_FORCE_INLINE const Quat Quat::rotationX( const floatInVec &radians )
+{
+    __m128 s, c, angle, res;
+    angle = vec_mul( radians.get128(), _mm_set1_ps(0.5f) );
+    sincosf4( angle, &s, &c );
+	VM_ATTRIBUTE_ALIGN16 unsigned int xsw[4] = {0xffffffff, 0, 0, 0};
+	VM_ATTRIBUTE_ALIGN16 unsigned int wsw[4] = {0, 0, 0, 0xffffffff};
+    res = vec_sel( _mm_setzero_ps(), s, xsw );
+    res = vec_sel( res, c, wsw );
+    return Quat( res );
+}
+
+VECTORMATH_FORCE_INLINE const Quat Quat::rotationY( float radians )
+{
+    return rotationY( floatInVec(radians) );
+}
+
+VECTORMATH_FORCE_INLINE const Quat Quat::rotationY( const floatInVec &radians )
+{
+    __m128 s, c, angle, res;
+    angle = vec_mul( radians.get128(), _mm_set1_ps(0.5f) );
+    sincosf4( angle, &s, &c );
+	VM_ATTRIBUTE_ALIGN16 unsigned int ysw[4] = {0, 0xffffffff, 0, 0};
+	VM_ATTRIBUTE_ALIGN16 unsigned int wsw[4] = {0, 0, 0, 0xffffffff};
+    res = vec_sel( _mm_setzero_ps(), s, ysw );
+    res = vec_sel( res, c, wsw );
+    return Quat( res );
+}
+
+VECTORMATH_FORCE_INLINE const Quat Quat::rotationZ( float radians )
+{
+    return rotationZ( floatInVec(radians) );
+}
+
+VECTORMATH_FORCE_INLINE const Quat Quat::rotationZ( const floatInVec &radians )
+{
+    __m128 s, c, angle, res;
+    angle = vec_mul( radians.get128(), _mm_set1_ps(0.5f) );
+    sincosf4( angle, &s, &c );
+	VM_ATTRIBUTE_ALIGN16 unsigned int zsw[4] = {0, 0, 0xffffffff, 0};
+	VM_ATTRIBUTE_ALIGN16 unsigned int wsw[4] = {0, 0, 0, 0xffffffff};
+    res = vec_sel( _mm_setzero_ps(), s, zsw );
+    res = vec_sel( res, c, wsw );
+    return Quat( res );
+}
+
+VECTORMATH_FORCE_INLINE const Quat Quat::operator *( const Quat &quat ) const
+{
+    __m128 ldata, rdata, qv, tmp0, tmp1, tmp2, tmp3;
+    __m128 product, l_wxyz, r_wxyz, xy, qw;
+    ldata = mVec128;
+    rdata = quat.mVec128;
+    tmp0 = _mm_shuffle_ps( ldata, ldata, _MM_SHUFFLE(3,0,2,1) );
+    tmp1 = _mm_shuffle_ps( rdata, rdata, _MM_SHUFFLE(3,1,0,2) );
+    tmp2 = _mm_shuffle_ps( ldata, ldata, _MM_SHUFFLE(3,1,0,2) );
+    tmp3 = _mm_shuffle_ps( rdata, rdata, _MM_SHUFFLE(3,0,2,1) );
+    qv = vec_mul( vec_splat( ldata, 3 ), rdata );
+    qv = vec_madd( vec_splat( rdata, 3 ), ldata, qv );
+    qv = vec_madd( tmp0, tmp1, qv );
+    qv = vec_nmsub( tmp2, tmp3, qv );
+    product = vec_mul( ldata, rdata );
+    l_wxyz = vec_sld( ldata, ldata, 12 );
+    r_wxyz = vec_sld( rdata, rdata, 12 );
+    qw = vec_nmsub( l_wxyz, r_wxyz, product );
+    xy = vec_madd( l_wxyz, r_wxyz, product );
+    qw = vec_sub( qw, vec_sld( xy, xy, 8 ) );
+	VM_ATTRIBUTE_ALIGN16 unsigned int sw[4] = {0, 0, 0, 0xffffffff};
+    return Quat( vec_sel( qv, qw, sw ) );
+}
+
+VECTORMATH_FORCE_INLINE Quat & Quat::operator *=( const Quat &quat )
+{
+    *this = *this * quat;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 rotate( const Quat &quat, const Vector3 &vec )
+{    __m128 qdata, vdata, product, tmp0, tmp1, tmp2, tmp3, wwww, qv, qw, res;
+    qdata = quat.get128();
+    vdata = vec.get128();
+    tmp0 = _mm_shuffle_ps( qdata, qdata, _MM_SHUFFLE(3,0,2,1) );
+    tmp1 = _mm_shuffle_ps( vdata, vdata, _MM_SHUFFLE(3,1,0,2) );
+    tmp2 = _mm_shuffle_ps( qdata, qdata, _MM_SHUFFLE(3,1,0,2) );
+    tmp3 = _mm_shuffle_ps( vdata, vdata, _MM_SHUFFLE(3,0,2,1) );
+    wwww = vec_splat( qdata, 3 );
+    qv = vec_mul( wwww, vdata );
+    qv = vec_madd( tmp0, tmp1, qv );
+    qv = vec_nmsub( tmp2, tmp3, qv );
+    product = vec_mul( qdata, vdata );
+    qw = vec_madd( vec_sld( qdata, qdata, 4 ), vec_sld( vdata, vdata, 4 ), product );
+    qw = vec_add( vec_sld( product, product, 8 ), qw );
+    tmp1 = _mm_shuffle_ps( qv, qv, _MM_SHUFFLE(3,1,0,2) );
+    tmp3 = _mm_shuffle_ps( qv, qv, _MM_SHUFFLE(3,0,2,1) );
+    res = vec_mul( vec_splat( qw, 0 ), qdata );
+    res = vec_madd( wwww, qv, res );
+    res = vec_madd( tmp0, tmp1, res );
+    res = vec_nmsub( tmp2, tmp3, res );
+    return Vector3( res );
+}
+
+VECTORMATH_FORCE_INLINE const Quat conj( const Quat &quat )
+{
+	VM_ATTRIBUTE_ALIGN16 unsigned int sw[4] = {0x80000000,0x80000000,0x80000000,0};
+    return Quat( vec_xor( quat.get128(), _mm_load_ps((float *)sw) ) );
+}
+
+VECTORMATH_FORCE_INLINE const Quat select( const Quat &quat0, const Quat &quat1, bool select1 )
+{
+    return select( quat0, quat1, boolInVec(select1) );
+}
+
+//VECTORMATH_FORCE_INLINE const Quat select( const Quat &quat0, const Quat &quat1, const boolInVec &select1 )
+//{
+//    return Quat( vec_sel( quat0.get128(), quat1.get128(), select1.get128() ) );
+//}
+
+VECTORMATH_FORCE_INLINE void loadXYZW(Quat& quat, const float* fptr)
+{
+#ifdef USE_SSE3_LDDQU
+	quat = Quat(	SSEFloat(_mm_lddqu_si128((const __m128i*)((float*)(fptr)))).m128		);
+#else
+	SSEFloat fl;
+	fl.f[0] = fptr[0];
+	fl.f[1] = fptr[1];
+	fl.f[2] = fptr[2];
+	fl.f[3] = fptr[3];
+    quat = Quat(	fl.m128);
+#endif
+    
+
+}
+
+VECTORMATH_FORCE_INLINE void storeXYZW(const Quat& quat, float* fptr)
+{
+	fptr[0] = quat.getX();
+	fptr[1] = quat.getY();
+	fptr[2] = quat.getZ();
+	fptr[3] = quat.getW();
+//    _mm_storeu_ps((float*)quat.get128(),fptr);
+}
+
+
+
+#ifdef _VECTORMATH_DEBUG
+
+VECTORMATH_FORCE_INLINE void print( const Quat &quat )
+{
+    union { __m128 v; float s[4]; } tmp;
+    tmp.v = quat.get128();
+    printf( "( %f %f %f %f )\n", tmp.s[0], tmp.s[1], tmp.s[2], tmp.s[3] );
+}
+
+VECTORMATH_FORCE_INLINE void print( const Quat &quat, const char * name )
+{
+    union { __m128 v; float s[4]; } tmp;
+    tmp.v = quat.get128();
+    printf( "%s: ( %f %f %f %f )\n", name, tmp.s[0], tmp.s[1], tmp.s[2], tmp.s[3] );
+}
+
+#endif
+
+} // namespace Aos
+} // namespace Vectormath
+
+#endif
+ bullet/vectormath/sse/vec_aos.h view
@@ -0,0 +1,1455 @@+/*
+   Copyright (C) 2006, 2007 Sony Computer Entertainment Inc.
+   All rights reserved.
+
+   Redistribution and use in source and binary forms,
+   with or without modification, are permitted provided that the
+   following conditions are met:
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+    * Neither the name of the Sony Computer Entertainment Inc nor the names
+      of its contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef _VECTORMATH_VEC_AOS_CPP_H
+#define _VECTORMATH_VEC_AOS_CPP_H
+
+//-----------------------------------------------------------------------------
+// Constants
+// for permutes words are labeled [x,y,z,w] [a,b,c,d]
+
+#define _VECTORMATH_PERM_X 0x00010203
+#define _VECTORMATH_PERM_Y 0x04050607
+#define _VECTORMATH_PERM_Z 0x08090a0b
+#define _VECTORMATH_PERM_W 0x0c0d0e0f
+#define _VECTORMATH_PERM_A 0x10111213
+#define _VECTORMATH_PERM_B 0x14151617
+#define _VECTORMATH_PERM_C 0x18191a1b
+#define _VECTORMATH_PERM_D 0x1c1d1e1f
+#define _VECTORMATH_PERM_XYZA (vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_X, _VECTORMATH_PERM_Y, _VECTORMATH_PERM_Z, _VECTORMATH_PERM_A }
+#define _VECTORMATH_PERM_ZXYW (vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_Z, _VECTORMATH_PERM_X, _VECTORMATH_PERM_Y, _VECTORMATH_PERM_W }
+#define _VECTORMATH_PERM_YZXW (vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_Y, _VECTORMATH_PERM_Z, _VECTORMATH_PERM_X, _VECTORMATH_PERM_W }
+#define _VECTORMATH_PERM_YZAB (vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_Y, _VECTORMATH_PERM_Z, _VECTORMATH_PERM_A, _VECTORMATH_PERM_B }
+#define _VECTORMATH_PERM_ZABC (vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_Z, _VECTORMATH_PERM_A, _VECTORMATH_PERM_B, _VECTORMATH_PERM_C }
+#define _VECTORMATH_PERM_XYAW (vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_X, _VECTORMATH_PERM_Y, _VECTORMATH_PERM_A, _VECTORMATH_PERM_W }
+#define _VECTORMATH_PERM_XAZW (vec_uchar16)(vec_uint4){ _VECTORMATH_PERM_X, _VECTORMATH_PERM_A, _VECTORMATH_PERM_Z, _VECTORMATH_PERM_W }
+#define _VECTORMATH_MASK_0xF000 (vec_uint4){ 0xffffffff, 0, 0, 0 }
+#define _VECTORMATH_MASK_0x0F00 (vec_uint4){ 0, 0xffffffff, 0, 0 }
+#define _VECTORMATH_MASK_0x00F0 (vec_uint4){ 0, 0, 0xffffffff, 0 }
+#define _VECTORMATH_MASK_0x000F (vec_uint4){ 0, 0, 0, 0xffffffff }
+#define _VECTORMATH_UNIT_1000 _mm_setr_ps(1.0f,0.0f,0.0f,0.0f) // (__m128){ 1.0f, 0.0f, 0.0f, 0.0f }
+#define _VECTORMATH_UNIT_0100 _mm_setr_ps(0.0f,1.0f,0.0f,0.0f) // (__m128){ 0.0f, 1.0f, 0.0f, 0.0f }
+#define _VECTORMATH_UNIT_0010 _mm_setr_ps(0.0f,0.0f,1.0f,0.0f) // (__m128){ 0.0f, 0.0f, 1.0f, 0.0f }
+#define _VECTORMATH_UNIT_0001 _mm_setr_ps(0.0f,0.0f,0.0f,1.0f) // (__m128){ 0.0f, 0.0f, 0.0f, 1.0f }
+#define _VECTORMATH_SLERP_TOL 0.999f
+//_VECTORMATH_SLERP_TOLF
+
+//-----------------------------------------------------------------------------
+// Definitions
+
+#ifndef _VECTORMATH_INTERNAL_FUNCTIONS
+#define _VECTORMATH_INTERNAL_FUNCTIONS
+
+#define     _vmath_shufps(a, b, immx, immy, immz, immw) _mm_shuffle_ps(a, b, _MM_SHUFFLE(immw, immz, immy, immx))
+static VECTORMATH_FORCE_INLINE __m128 _vmathVfDot3( __m128 vec0, __m128 vec1 )
+{
+	__m128 result = _mm_mul_ps( vec0, vec1);
+    return _mm_add_ps( vec_splat( result, 0 ), _mm_add_ps( vec_splat( result, 1 ), vec_splat( result, 2 ) ) );
+}
+
+static VECTORMATH_FORCE_INLINE __m128 _vmathVfDot4( __m128 vec0, __m128 vec1 )
+{
+    __m128 result = _mm_mul_ps(vec0, vec1);
+	return _mm_add_ps(_mm_shuffle_ps(result, result, _MM_SHUFFLE(0,0,0,0)),
+			_mm_add_ps(_mm_shuffle_ps(result, result, _MM_SHUFFLE(1,1,1,1)),
+			_mm_add_ps(_mm_shuffle_ps(result, result, _MM_SHUFFLE(2,2,2,2)), _mm_shuffle_ps(result, result, _MM_SHUFFLE(3,3,3,3)))));
+}
+
+static VECTORMATH_FORCE_INLINE __m128 _vmathVfCross( __m128 vec0, __m128 vec1 )
+{
+    __m128 tmp0, tmp1, tmp2, tmp3, result;
+    tmp0 = _mm_shuffle_ps( vec0, vec0, _MM_SHUFFLE(3,0,2,1) );
+    tmp1 = _mm_shuffle_ps( vec1, vec1, _MM_SHUFFLE(3,1,0,2) );
+    tmp2 = _mm_shuffle_ps( vec0, vec0, _MM_SHUFFLE(3,1,0,2) );
+    tmp3 = _mm_shuffle_ps( vec1, vec1, _MM_SHUFFLE(3,0,2,1) );
+    result = vec_mul( tmp0, tmp1 );
+    result = vec_nmsub( tmp2, tmp3, result );
+    return result;
+}
+/*
+static VECTORMATH_FORCE_INLINE vec_uint4 _vmathVfToHalfFloatsUnpacked(__m128 v)
+{
+#if 0
+    vec_int4 bexp;
+    vec_uint4 mant, sign, hfloat;
+    vec_uint4 notZero, isInf;
+    const vec_uint4 hfloatInf = (vec_uint4)(0x00007c00u);
+    const vec_uint4 mergeMant = (vec_uint4)(0x000003ffu);
+    const vec_uint4 mergeSign = (vec_uint4)(0x00008000u);
+
+    sign = vec_sr((vec_uint4)v, (vec_uint4)16);
+    mant = vec_sr((vec_uint4)v, (vec_uint4)13);
+    bexp = vec_and(vec_sr((vec_int4)v, (vec_uint4)23), (vec_int4)0xff);
+
+    notZero = (vec_uint4)vec_cmpgt(bexp, (vec_int4)112);
+    isInf = (vec_uint4)vec_cmpgt(bexp, (vec_int4)142);
+
+    bexp = _mm_add_ps(bexp, (vec_int4)-112);
+    bexp = vec_sl(bexp, (vec_uint4)10);
+
+    hfloat = vec_sel((vec_uint4)bexp, mant, mergeMant);
+    hfloat = vec_sel((vec_uint4)(0), hfloat, notZero);
+    hfloat = vec_sel(hfloat, hfloatInf, isInf);
+    hfloat = vec_sel(hfloat, sign, mergeSign);
+
+    return hfloat;
+#else
+	assert(0);
+	return _mm_setzero_ps();
+#endif
+}
+
+static VECTORMATH_FORCE_INLINE vec_ushort8 _vmath2VfToHalfFloats(__m128 u, __m128 v)
+{
+#if 0
+    vec_uint4 hfloat_u, hfloat_v;
+    const vec_uchar16 pack = (vec_uchar16){2,3,6,7,10,11,14,15,18,19,22,23,26,27,30,31};
+    hfloat_u = _vmathVfToHalfFloatsUnpacked(u);
+    hfloat_v = _vmathVfToHalfFloatsUnpacked(v);
+    return (vec_ushort8)vec_perm(hfloat_u, hfloat_v, pack);
+#else
+	assert(0);
+	return _mm_setzero_si128();
+#endif
+}
+*/
+
+static VECTORMATH_FORCE_INLINE __m128 _vmathVfInsert(__m128 dst, __m128 src, int slot)
+{
+	SSEFloat s;
+	s.m128 = src;
+	SSEFloat d;
+	d.m128 = dst;
+	d.f[slot] = s.f[slot];
+	return d.m128;
+}
+
+#define _vmathVfSetElement(vec, scalar, slot) ((float *)&(vec))[slot] = scalar
+
+static VECTORMATH_FORCE_INLINE __m128 _vmathVfSplatScalar(float scalar)
+{
+	return _mm_set1_ps(scalar);
+}
+
+#endif
+
+namespace Vectormath {
+namespace Aos {
+
+	
+#ifdef _VECTORMATH_NO_SCALAR_CAST
+VECTORMATH_FORCE_INLINE VecIdx::operator floatInVec() const
+{
+    return floatInVec(ref, i);
+}
+
+VECTORMATH_FORCE_INLINE float VecIdx::getAsFloat() const
+#else
+VECTORMATH_FORCE_INLINE VecIdx::operator float() const
+#endif
+{
+    return ((float *)&ref)[i];
+}
+
+VECTORMATH_FORCE_INLINE float VecIdx::operator =( float scalar )
+{
+    _vmathVfSetElement(ref, scalar, i);
+    return scalar;
+}
+
+VECTORMATH_FORCE_INLINE floatInVec VecIdx::operator =( const floatInVec &scalar )
+{
+    ref = _vmathVfInsert(ref, scalar.get128(), i);
+    return scalar;
+}
+
+VECTORMATH_FORCE_INLINE floatInVec VecIdx::operator =( const VecIdx& scalar )
+{
+    return *this = floatInVec(scalar.ref, scalar.i);
+}
+
+VECTORMATH_FORCE_INLINE floatInVec VecIdx::operator *=( float scalar )
+{
+    return *this *= floatInVec(scalar);
+}
+
+VECTORMATH_FORCE_INLINE floatInVec VecIdx::operator *=( const floatInVec &scalar )
+{
+    return *this = floatInVec(ref, i) * scalar;
+}
+
+VECTORMATH_FORCE_INLINE floatInVec VecIdx::operator /=( float scalar )
+{
+    return *this /= floatInVec(scalar);
+}
+
+inline floatInVec VecIdx::operator /=( const floatInVec &scalar )
+{
+    return *this = floatInVec(ref, i) / scalar;
+}
+
+VECTORMATH_FORCE_INLINE floatInVec VecIdx::operator +=( float scalar )
+{
+    return *this += floatInVec(scalar);
+}
+
+VECTORMATH_FORCE_INLINE floatInVec VecIdx::operator +=( const floatInVec &scalar )
+{
+    return *this = floatInVec(ref, i) + scalar;
+}
+
+VECTORMATH_FORCE_INLINE floatInVec VecIdx::operator -=( float scalar )
+{
+    return *this -= floatInVec(scalar);
+}
+
+VECTORMATH_FORCE_INLINE floatInVec VecIdx::operator -=( const floatInVec &scalar )
+{
+    return *this = floatInVec(ref, i) - scalar;
+}
+
+VECTORMATH_FORCE_INLINE Vector3::Vector3(const Vector3& vec)
+{
+    set128(vec.get128());
+}
+
+VECTORMATH_FORCE_INLINE void Vector3::set128(vec_float4 vec)
+{
+    mVec128 = vec;
+}
+
+
+VECTORMATH_FORCE_INLINE Vector3::Vector3( float _x, float _y, float _z )
+{
+    mVec128 = _mm_setr_ps(_x, _y, _z, 0.0f);
+}
+
+VECTORMATH_FORCE_INLINE Vector3::Vector3( const floatInVec &_x, const floatInVec &_y, const floatInVec &_z )
+{
+	__m128 xz = _mm_unpacklo_ps( _x.get128(), _z.get128() );
+	mVec128 = _mm_unpacklo_ps( xz, _y.get128() );
+}
+
+VECTORMATH_FORCE_INLINE Vector3::Vector3( const Point3 &pnt )
+{
+    mVec128 = pnt.get128();
+}
+
+VECTORMATH_FORCE_INLINE Vector3::Vector3( float scalar )
+{
+    mVec128 = floatInVec(scalar).get128();
+}
+
+VECTORMATH_FORCE_INLINE Vector3::Vector3( const floatInVec &scalar )
+{
+    mVec128 = scalar.get128();
+}
+
+VECTORMATH_FORCE_INLINE Vector3::Vector3( __m128 vf4 )
+{
+    mVec128 = vf4;
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 Vector3::xAxis( )
+{
+    return Vector3( _VECTORMATH_UNIT_1000 );
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 Vector3::yAxis( )
+{
+    return Vector3( _VECTORMATH_UNIT_0100 );
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 Vector3::zAxis( )
+{
+    return Vector3( _VECTORMATH_UNIT_0010 );
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 lerp( float t, const Vector3 &vec0, const Vector3 &vec1 )
+{
+    return lerp( floatInVec(t), vec0, vec1 );
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 lerp( const floatInVec &t, const Vector3 &vec0, const Vector3 &vec1 )
+{
+    return ( vec0 + ( ( vec1 - vec0 ) * t ) );
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 slerp( float t, const Vector3 &unitVec0, const Vector3 &unitVec1 )
+{
+    return slerp( floatInVec(t), unitVec0, unitVec1 );
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 slerp( const floatInVec &t, const Vector3 &unitVec0, const Vector3 &unitVec1 )
+{
+    __m128 scales, scale0, scale1, cosAngle, angle, tttt, oneMinusT, angles, sines;
+    cosAngle = _vmathVfDot3( unitVec0.get128(), unitVec1.get128() );
+    __m128 selectMask = _mm_cmpgt_ps( _mm_set1_ps(_VECTORMATH_SLERP_TOL), cosAngle );
+    angle = acosf4( cosAngle );
+    tttt = t.get128();
+    oneMinusT = _mm_sub_ps( _mm_set1_ps(1.0f), tttt );
+    angles = _mm_unpacklo_ps( _mm_set1_ps(1.0f), tttt ); // angles = 1, t, 1, t
+    angles = _mm_unpacklo_ps( angles, oneMinusT );		// angles = 1, 1-t, t, 1-t
+    angles = _mm_mul_ps( angles, angle );
+    sines = sinf4( angles );
+    scales = _mm_div_ps( sines, vec_splat( sines, 0 ) );
+    scale0 = vec_sel( oneMinusT, vec_splat( scales, 1 ), selectMask );
+    scale1 = vec_sel( tttt, vec_splat( scales, 2 ), selectMask );
+    return Vector3( vec_madd( unitVec0.get128(), scale0, _mm_mul_ps( unitVec1.get128(), scale1 ) ) );
+}
+
+VECTORMATH_FORCE_INLINE __m128 Vector3::get128( ) const
+{
+    return mVec128;
+}
+
+VECTORMATH_FORCE_INLINE void loadXYZ(Point3& vec, const float* fptr)
+{
+#ifdef USE_SSE3_LDDQU
+	vec = Point3(	SSEFloat(_mm_lddqu_si128((const __m128i*)((float*)(fptr)))).m128 );
+#else
+	SSEFloat fl;
+	fl.f[0] = fptr[0];
+	fl.f[1] = fptr[1];
+	fl.f[2] = fptr[2];
+	fl.f[3] = fptr[3];
+    vec = Point3(	fl.m128);
+#endif //USE_SSE3_LDDQU
+	
+}
+
+
+
+VECTORMATH_FORCE_INLINE void loadXYZ(Vector3& vec, const float* fptr)
+{
+#ifdef USE_SSE3_LDDQU
+	vec = Vector3(	SSEFloat(_mm_lddqu_si128((const __m128i*)((float*)(fptr)))).m128 );
+#else
+	SSEFloat fl;
+	fl.f[0] = fptr[0];
+	fl.f[1] = fptr[1];
+	fl.f[2] = fptr[2];
+	fl.f[3] = fptr[3];
+    vec = Vector3(	fl.m128);
+#endif //USE_SSE3_LDDQU
+	
+}
+
+VECTORMATH_FORCE_INLINE void storeXYZ( const Vector3 &vec, __m128 * quad )
+{
+	__m128 dstVec = *quad;
+	VM_ATTRIBUTE_ALIGN16  unsigned int sw[4] = {0, 0, 0, 0xffffffff}; // TODO: Centralize
+	dstVec = vec_sel(vec.get128(), dstVec, sw);
+	*quad = dstVec;
+}
+
+VECTORMATH_FORCE_INLINE void storeXYZ(const Point3& vec, float* fptr)
+{
+	fptr[0] = vec.getX();
+	fptr[1] = vec.getY();
+	fptr[2] = vec.getZ();
+}
+
+VECTORMATH_FORCE_INLINE void storeXYZ(const Vector3& vec, float* fptr)
+{
+	fptr[0] = vec.getX();
+	fptr[1] = vec.getY();
+	fptr[2] = vec.getZ();
+}
+
+
+VECTORMATH_FORCE_INLINE void loadXYZArray( Vector3 & vec0, Vector3 & vec1, Vector3 & vec2, Vector3 & vec3, const __m128 * threeQuads )
+{
+	const float *quads = (float *)threeQuads;
+    vec0 = Vector3(  _mm_load_ps(quads) );
+    vec1 = Vector3( _mm_loadu_ps(quads + 3) );
+    vec2 = Vector3( _mm_loadu_ps(quads + 6) );
+    vec3 = Vector3( _mm_loadu_ps(quads + 9) );
+}
+
+VECTORMATH_FORCE_INLINE void storeXYZArray( const Vector3 &vec0, const Vector3 &vec1, const Vector3 &vec2, const Vector3 &vec3, __m128 * threeQuads )
+{
+	__m128 xxxx = _mm_shuffle_ps( vec1.get128(), vec1.get128(), _MM_SHUFFLE(0, 0, 0, 0) );
+	__m128 zzzz = _mm_shuffle_ps( vec2.get128(), vec2.get128(), _MM_SHUFFLE(2, 2, 2, 2) );
+	VM_ATTRIBUTE_ALIGN16 unsigned int xsw[4] = {0, 0, 0, 0xffffffff};
+	VM_ATTRIBUTE_ALIGN16 unsigned int zsw[4] = {0xffffffff, 0, 0, 0};
+	threeQuads[0] = vec_sel( vec0.get128(), xxxx, xsw );
+    threeQuads[1] = _mm_shuffle_ps( vec1.get128(), vec2.get128(), _MM_SHUFFLE(1, 0, 2, 1) );
+    threeQuads[2] = vec_sel( _mm_shuffle_ps( vec3.get128(), vec3.get128(), _MM_SHUFFLE(2, 1, 0, 3) ), zzzz, zsw );
+}
+/*
+VECTORMATH_FORCE_INLINE void storeHalfFloats( const Vector3 &vec0, const Vector3 &vec1, const Vector3 &vec2, const Vector3 &vec3, const Vector3 &vec4, const Vector3 &vec5, const Vector3 &vec6, const Vector3 &vec7, vec_ushort8 * threeQuads )
+{
+	assert(0);
+#if 0
+    __m128 xyz0[3];
+    __m128 xyz1[3];
+    storeXYZArray( vec0, vec1, vec2, vec3, xyz0 );
+    storeXYZArray( vec4, vec5, vec6, vec7, xyz1 );
+    threeQuads[0] = _vmath2VfToHalfFloats(xyz0[0], xyz0[1]);
+    threeQuads[1] = _vmath2VfToHalfFloats(xyz0[2], xyz1[0]);
+    threeQuads[2] = _vmath2VfToHalfFloats(xyz1[1], xyz1[2]);
+#endif
+}
+*/
+VECTORMATH_FORCE_INLINE Vector3 & Vector3::operator =( const Vector3 &vec )
+{
+    mVec128 = vec.mVec128;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Vector3 & Vector3::setX( float _x )
+{
+    _vmathVfSetElement(mVec128, _x, 0);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Vector3 & Vector3::setX( const floatInVec &_x )
+{
+    mVec128 = _vmathVfInsert(mVec128, _x.get128(), 0);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec Vector3::getX( ) const
+{
+    return floatInVec( mVec128, 0 );
+}
+
+VECTORMATH_FORCE_INLINE Vector3 & Vector3::setY( float _y )
+{
+    _vmathVfSetElement(mVec128, _y, 1);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Vector3 & Vector3::setY( const floatInVec &_y )
+{
+    mVec128 = _vmathVfInsert(mVec128, _y.get128(), 1);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec Vector3::getY( ) const
+{
+    return floatInVec( mVec128, 1 );
+}
+
+VECTORMATH_FORCE_INLINE Vector3 & Vector3::setZ( float _z )
+{
+    _vmathVfSetElement(mVec128, _z, 2);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Vector3 & Vector3::setZ( const floatInVec &_z )
+{
+    mVec128 = _vmathVfInsert(mVec128, _z.get128(), 2);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec Vector3::getZ( ) const
+{
+    return floatInVec( mVec128, 2 );
+}
+
+VECTORMATH_FORCE_INLINE Vector3 & Vector3::setElem( int idx, float value )
+{
+    _vmathVfSetElement(mVec128, value, idx);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Vector3 & Vector3::setElem( int idx, const floatInVec &value )
+{
+    mVec128 = _vmathVfInsert(mVec128, value.get128(), idx);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec Vector3::getElem( int idx ) const
+{
+    return floatInVec( mVec128, idx );
+}
+
+VECTORMATH_FORCE_INLINE VecIdx Vector3::operator []( int idx )
+{
+    return VecIdx( mVec128, idx );
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec Vector3::operator []( int idx ) const
+{
+    return floatInVec( mVec128, idx );
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 Vector3::operator +( const Vector3 &vec ) const
+{
+    return Vector3( _mm_add_ps( mVec128, vec.mVec128 ) );
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 Vector3::operator -( const Vector3 &vec ) const
+{
+    return Vector3( _mm_sub_ps( mVec128, vec.mVec128 ) );
+}
+
+VECTORMATH_FORCE_INLINE const Point3 Vector3::operator +( const Point3 &pnt ) const
+{
+    return Point3( _mm_add_ps( mVec128, pnt.get128() ) );
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 Vector3::operator *( float scalar ) const
+{
+    return *this * floatInVec(scalar);
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 Vector3::operator *( const floatInVec &scalar ) const
+{
+    return Vector3( _mm_mul_ps( mVec128, scalar.get128() ) );
+}
+
+VECTORMATH_FORCE_INLINE Vector3 & Vector3::operator +=( const Vector3 &vec )
+{
+    *this = *this + vec;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Vector3 & Vector3::operator -=( const Vector3 &vec )
+{
+    *this = *this - vec;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Vector3 & Vector3::operator *=( float scalar )
+{
+    *this = *this * scalar;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Vector3 & Vector3::operator *=( const floatInVec &scalar )
+{
+    *this = *this * scalar;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 Vector3::operator /( float scalar ) const
+{
+    return *this / floatInVec(scalar);
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 Vector3::operator /( const floatInVec &scalar ) const
+{
+    return Vector3( _mm_div_ps( mVec128, scalar.get128() ) );
+}
+
+VECTORMATH_FORCE_INLINE Vector3 & Vector3::operator /=( float scalar )
+{
+    *this = *this / scalar;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Vector3 & Vector3::operator /=( const floatInVec &scalar )
+{
+    *this = *this / scalar;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 Vector3::operator -( ) const
+{
+	//return Vector3(_mm_sub_ps( _mm_setzero_ps(), mVec128 ) );
+
+	VM_ATTRIBUTE_ALIGN16 static const int array[] = {0x80000000, 0x80000000, 0x80000000, 0x80000000};
+	__m128 NEG_MASK = SSEFloat(*(const vec_float4*)array).vf;
+	return Vector3(_mm_xor_ps(get128(),NEG_MASK));
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 operator *( float scalar, const Vector3 &vec )
+{
+    return floatInVec(scalar) * vec;
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 operator *( const floatInVec &scalar, const Vector3 &vec )
+{
+    return vec * scalar;
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 mulPerElem( const Vector3 &vec0, const Vector3 &vec1 )
+{
+    return Vector3( _mm_mul_ps( vec0.get128(), vec1.get128() ) );
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 divPerElem( const Vector3 &vec0, const Vector3 &vec1 )
+{
+    return Vector3( _mm_div_ps( vec0.get128(), vec1.get128() ) );
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 recipPerElem( const Vector3 &vec )
+{
+    return Vector3( _mm_rcp_ps( vec.get128() ) );
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 absPerElem( const Vector3 &vec )
+{
+    return Vector3( fabsf4( vec.get128() ) );
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 copySignPerElem( const Vector3 &vec0, const Vector3 &vec1 )
+{
+	__m128 vmask = toM128(0x7fffffff);
+	return Vector3( _mm_or_ps(
+		_mm_and_ps   ( vmask, vec0.get128() ),			// Value
+		_mm_andnot_ps( vmask, vec1.get128() ) ) );		// Signs
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 maxPerElem( const Vector3 &vec0, const Vector3 &vec1 )
+{
+    return Vector3( _mm_max_ps( vec0.get128(), vec1.get128() ) );
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec maxElem( const Vector3 &vec )
+{
+    return floatInVec( _mm_max_ps( _mm_max_ps( vec_splat( vec.get128(), 0 ), vec_splat( vec.get128(), 1 ) ), vec_splat( vec.get128(), 2 ) ) );
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 minPerElem( const Vector3 &vec0, const Vector3 &vec1 )
+{
+    return Vector3( _mm_min_ps( vec0.get128(), vec1.get128() ) );
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec minElem( const Vector3 &vec )
+{
+    return floatInVec( _mm_min_ps( _mm_min_ps( vec_splat( vec.get128(), 0 ), vec_splat( vec.get128(), 1 ) ), vec_splat( vec.get128(), 2 ) ) );
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec sum( const Vector3 &vec )
+{
+    return floatInVec( _mm_add_ps( _mm_add_ps( vec_splat( vec.get128(), 0 ), vec_splat( vec.get128(), 1 ) ), vec_splat( vec.get128(), 2 ) ) );
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec dot( const Vector3 &vec0, const Vector3 &vec1 )
+{
+    return floatInVec( _vmathVfDot3( vec0.get128(), vec1.get128() ), 0 );
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec lengthSqr( const Vector3 &vec )
+{
+    return floatInVec(  _vmathVfDot3( vec.get128(), vec.get128() ), 0 );
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec length( const Vector3 &vec )
+{
+    return floatInVec(  _mm_sqrt_ps(_vmathVfDot3( vec.get128(), vec.get128() )), 0 );
+}
+
+
+VECTORMATH_FORCE_INLINE const Vector3 normalizeApprox( const Vector3 &vec )
+{
+    return Vector3( _mm_mul_ps( vec.get128(), _mm_rsqrt_ps( _vmathVfDot3( vec.get128(), vec.get128() ) ) ) );
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 normalize( const Vector3 &vec )
+{
+	return Vector3( _mm_mul_ps( vec.get128(), newtonrapson_rsqrt4( _vmathVfDot3( vec.get128(), vec.get128() ) ) ) );
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 cross( const Vector3 &vec0, const Vector3 &vec1 )
+{
+    return Vector3( _vmathVfCross( vec0.get128(), vec1.get128() ) );
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 select( const Vector3 &vec0, const Vector3 &vec1, bool select1 )
+{
+    return select( vec0, vec1, boolInVec(select1) );
+}
+
+
+VECTORMATH_FORCE_INLINE  const Vector4 select(const Vector4& vec0, const Vector4& vec1, const boolInVec& select1)
+{
+    return Vector4(vec_sel(vec0.get128(), vec1.get128(), select1.get128()));
+}
+
+#ifdef _VECTORMATH_DEBUG
+
+VECTORMATH_FORCE_INLINE void print( const Vector3 &vec )
+{
+    union { __m128 v; float s[4]; } tmp;
+    tmp.v = vec.get128();
+    printf( "( %f %f %f )\n", tmp.s[0], tmp.s[1], tmp.s[2] );
+}
+
+VECTORMATH_FORCE_INLINE void print( const Vector3 &vec, const char * name )
+{
+    union { __m128 v; float s[4]; } tmp;
+    tmp.v = vec.get128();
+    printf( "%s: ( %f %f %f )\n", name, tmp.s[0], tmp.s[1], tmp.s[2] );
+}
+
+#endif
+
+VECTORMATH_FORCE_INLINE Vector4::Vector4( float _x, float _y, float _z, float _w )
+{
+    mVec128 = _mm_setr_ps(_x, _y, _z, _w); 
+ }
+
+VECTORMATH_FORCE_INLINE Vector4::Vector4( const floatInVec &_x, const floatInVec &_y, const floatInVec &_z, const floatInVec &_w )
+{
+	mVec128 = _mm_unpacklo_ps(
+		_mm_unpacklo_ps( _x.get128(), _z.get128() ),
+		_mm_unpacklo_ps( _y.get128(), _w.get128() ) );
+}
+
+VECTORMATH_FORCE_INLINE Vector4::Vector4( const Vector3 &xyz, float _w )
+{
+    mVec128 = xyz.get128();
+    _vmathVfSetElement(mVec128, _w, 3);
+}
+
+VECTORMATH_FORCE_INLINE Vector4::Vector4( const Vector3 &xyz, const floatInVec &_w )
+{
+    mVec128 = xyz.get128();
+    mVec128 = _vmathVfInsert(mVec128, _w.get128(), 3);
+}
+
+VECTORMATH_FORCE_INLINE Vector4::Vector4( const Vector3 &vec )
+{
+    mVec128 = vec.get128();
+    mVec128 = _vmathVfInsert(mVec128, _mm_setzero_ps(), 3);
+}
+
+VECTORMATH_FORCE_INLINE Vector4::Vector4( const Point3 &pnt )
+{
+    mVec128 = pnt.get128();
+    mVec128 = _vmathVfInsert(mVec128, _mm_set1_ps(1.0f), 3);
+}
+
+VECTORMATH_FORCE_INLINE Vector4::Vector4( const Quat &quat )
+{
+    mVec128 = quat.get128();
+}
+
+VECTORMATH_FORCE_INLINE Vector4::Vector4( float scalar )
+{
+    mVec128 = floatInVec(scalar).get128();
+}
+
+VECTORMATH_FORCE_INLINE Vector4::Vector4( const floatInVec &scalar )
+{
+    mVec128 = scalar.get128();
+}
+
+VECTORMATH_FORCE_INLINE Vector4::Vector4( __m128 vf4 )
+{
+    mVec128 = vf4;
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 Vector4::xAxis( )
+{
+    return Vector4( _VECTORMATH_UNIT_1000 );
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 Vector4::yAxis( )
+{
+    return Vector4( _VECTORMATH_UNIT_0100 );
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 Vector4::zAxis( )
+{
+    return Vector4( _VECTORMATH_UNIT_0010 );
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 Vector4::wAxis( )
+{
+    return Vector4( _VECTORMATH_UNIT_0001 );
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 lerp( float t, const Vector4 &vec0, const Vector4 &vec1 )
+{
+    return lerp( floatInVec(t), vec0, vec1 );
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 lerp( const floatInVec &t, const Vector4 &vec0, const Vector4 &vec1 )
+{
+    return ( vec0 + ( ( vec1 - vec0 ) * t ) );
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 slerp( float t, const Vector4 &unitVec0, const Vector4 &unitVec1 )
+{
+    return slerp( floatInVec(t), unitVec0, unitVec1 );
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 slerp( const floatInVec &t, const Vector4 &unitVec0, const Vector4 &unitVec1 )
+{
+    __m128 scales, scale0, scale1, cosAngle, angle, tttt, oneMinusT, angles, sines;
+    cosAngle = _vmathVfDot4( unitVec0.get128(), unitVec1.get128() );
+    __m128 selectMask = _mm_cmpgt_ps( _mm_set1_ps(_VECTORMATH_SLERP_TOL), cosAngle );
+    angle = acosf4( cosAngle );
+    tttt = t.get128();
+    oneMinusT = _mm_sub_ps( _mm_set1_ps(1.0f), tttt );
+    angles = _mm_unpacklo_ps( _mm_set1_ps(1.0f), tttt ); // angles = 1, t, 1, t
+    angles = _mm_unpacklo_ps( angles, oneMinusT );		// angles = 1, 1-t, t, 1-t
+    angles = _mm_mul_ps( angles, angle );
+    sines = sinf4( angles );
+    scales = _mm_div_ps( sines, vec_splat( sines, 0 ) );
+    scale0 = vec_sel( oneMinusT, vec_splat( scales, 1 ), selectMask );
+    scale1 = vec_sel( tttt, vec_splat( scales, 2 ), selectMask );
+    return Vector4( vec_madd( unitVec0.get128(), scale0, _mm_mul_ps( unitVec1.get128(), scale1 ) ) );
+}
+
+VECTORMATH_FORCE_INLINE __m128 Vector4::get128( ) const
+{
+    return mVec128;
+}
+/*
+VECTORMATH_FORCE_INLINE void storeHalfFloats( const Vector4 &vec0, const Vector4 &vec1, const Vector4 &vec2, const Vector4 &vec3, vec_ushort8 * twoQuads )
+{
+    twoQuads[0] = _vmath2VfToHalfFloats(vec0.get128(), vec1.get128());
+    twoQuads[1] = _vmath2VfToHalfFloats(vec2.get128(), vec3.get128());
+}
+*/
+VECTORMATH_FORCE_INLINE Vector4 & Vector4::operator =( const Vector4 &vec )
+{
+    mVec128 = vec.mVec128;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Vector4 & Vector4::setXYZ( const Vector3 &vec )
+{
+	VM_ATTRIBUTE_ALIGN16 unsigned int sw[4] = {0, 0, 0, 0xffffffff};
+	mVec128 = vec_sel( vec.get128(), mVec128, sw );
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 Vector4::getXYZ( ) const
+{
+    return Vector3( mVec128 );
+}
+
+VECTORMATH_FORCE_INLINE Vector4 & Vector4::setX( float _x )
+{
+    _vmathVfSetElement(mVec128, _x, 0);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Vector4 & Vector4::setX( const floatInVec &_x )
+{
+    mVec128 = _vmathVfInsert(mVec128, _x.get128(), 0);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec Vector4::getX( ) const
+{
+    return floatInVec( mVec128, 0 );
+}
+
+VECTORMATH_FORCE_INLINE Vector4 & Vector4::setY( float _y )
+{
+    _vmathVfSetElement(mVec128, _y, 1);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Vector4 & Vector4::setY( const floatInVec &_y )
+{
+    mVec128 = _vmathVfInsert(mVec128, _y.get128(), 1);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec Vector4::getY( ) const
+{
+    return floatInVec( mVec128, 1 );
+}
+
+VECTORMATH_FORCE_INLINE Vector4 & Vector4::setZ( float _z )
+{
+    _vmathVfSetElement(mVec128, _z, 2);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Vector4 & Vector4::setZ( const floatInVec &_z )
+{
+    mVec128 = _vmathVfInsert(mVec128, _z.get128(), 2);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec Vector4::getZ( ) const
+{
+    return floatInVec( mVec128, 2 );
+}
+
+VECTORMATH_FORCE_INLINE Vector4 & Vector4::setW( float _w )
+{
+    _vmathVfSetElement(mVec128, _w, 3);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Vector4 & Vector4::setW( const floatInVec &_w )
+{
+    mVec128 = _vmathVfInsert(mVec128, _w.get128(), 3);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec Vector4::getW( ) const
+{
+    return floatInVec( mVec128, 3 );
+}
+
+VECTORMATH_FORCE_INLINE Vector4 & Vector4::setElem( int idx, float value )
+{
+    _vmathVfSetElement(mVec128, value, idx);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Vector4 & Vector4::setElem( int idx, const floatInVec &value )
+{
+    mVec128 = _vmathVfInsert(mVec128, value.get128(), idx);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec Vector4::getElem( int idx ) const
+{
+    return floatInVec( mVec128, idx );
+}
+
+VECTORMATH_FORCE_INLINE VecIdx Vector4::operator []( int idx )
+{
+    return VecIdx( mVec128, idx );
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec Vector4::operator []( int idx ) const
+{
+    return floatInVec( mVec128, idx );
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 Vector4::operator +( const Vector4 &vec ) const
+{
+    return Vector4( _mm_add_ps( mVec128, vec.mVec128 ) );
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 Vector4::operator -( const Vector4 &vec ) const
+{
+    return Vector4( _mm_sub_ps( mVec128, vec.mVec128 ) );
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 Vector4::operator *( float scalar ) const
+{
+    return *this * floatInVec(scalar);
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 Vector4::operator *( const floatInVec &scalar ) const
+{
+    return Vector4( _mm_mul_ps( mVec128, scalar.get128() ) );
+}
+
+VECTORMATH_FORCE_INLINE Vector4 & Vector4::operator +=( const Vector4 &vec )
+{
+    *this = *this + vec;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Vector4 & Vector4::operator -=( const Vector4 &vec )
+{
+    *this = *this - vec;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Vector4 & Vector4::operator *=( float scalar )
+{
+    *this = *this * scalar;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Vector4 & Vector4::operator *=( const floatInVec &scalar )
+{
+    *this = *this * scalar;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 Vector4::operator /( float scalar ) const
+{
+    return *this / floatInVec(scalar);
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 Vector4::operator /( const floatInVec &scalar ) const
+{
+    return Vector4( _mm_div_ps( mVec128, scalar.get128() ) );
+}
+
+VECTORMATH_FORCE_INLINE Vector4 & Vector4::operator /=( float scalar )
+{
+    *this = *this / scalar;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Vector4 & Vector4::operator /=( const floatInVec &scalar )
+{
+    *this = *this / scalar;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 Vector4::operator -( ) const
+{
+	return Vector4(_mm_sub_ps( _mm_setzero_ps(), mVec128 ) );
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 operator *( float scalar, const Vector4 &vec )
+{
+    return floatInVec(scalar) * vec;
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 operator *( const floatInVec &scalar, const Vector4 &vec )
+{
+    return vec * scalar;
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 mulPerElem( const Vector4 &vec0, const Vector4 &vec1 )
+{
+    return Vector4( _mm_mul_ps( vec0.get128(), vec1.get128() ) );
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 divPerElem( const Vector4 &vec0, const Vector4 &vec1 )
+{
+    return Vector4( _mm_div_ps( vec0.get128(), vec1.get128() ) );
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 recipPerElem( const Vector4 &vec )
+{
+    return Vector4( _mm_rcp_ps( vec.get128() ) );
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 absPerElem( const Vector4 &vec )
+{
+    return Vector4( fabsf4( vec.get128() ) );
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 copySignPerElem( const Vector4 &vec0, const Vector4 &vec1 )
+{
+	__m128 vmask = toM128(0x7fffffff);
+	return Vector4( _mm_or_ps(
+		_mm_and_ps   ( vmask, vec0.get128() ),			// Value
+		_mm_andnot_ps( vmask, vec1.get128() ) ) );		// Signs
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 maxPerElem( const Vector4 &vec0, const Vector4 &vec1 )
+{
+    return Vector4( _mm_max_ps( vec0.get128(), vec1.get128() ) );
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec maxElem( const Vector4 &vec )
+{
+    return floatInVec( _mm_max_ps(
+		_mm_max_ps( vec_splat( vec.get128(), 0 ), vec_splat( vec.get128(), 1 ) ),
+		_mm_max_ps( vec_splat( vec.get128(), 2 ), vec_splat( vec.get128(), 3 ) ) ) );
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 minPerElem( const Vector4 &vec0, const Vector4 &vec1 )
+{
+    return Vector4( _mm_min_ps( vec0.get128(), vec1.get128() ) );
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec minElem( const Vector4 &vec )
+{
+    return floatInVec( _mm_min_ps(
+		_mm_min_ps( vec_splat( vec.get128(), 0 ), vec_splat( vec.get128(), 1 ) ),
+		_mm_min_ps( vec_splat( vec.get128(), 2 ), vec_splat( vec.get128(), 3 ) ) ) );
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec sum( const Vector4 &vec )
+{
+    return floatInVec( _mm_add_ps(
+		_mm_add_ps( vec_splat( vec.get128(), 0 ), vec_splat( vec.get128(), 1 ) ),
+		_mm_add_ps( vec_splat( vec.get128(), 2 ), vec_splat( vec.get128(), 3 ) ) ) );
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec dot( const Vector4 &vec0, const Vector4 &vec1 )
+{
+    return floatInVec( _vmathVfDot4( vec0.get128(), vec1.get128() ), 0 );
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec lengthSqr( const Vector4 &vec )
+{
+    return floatInVec(  _vmathVfDot4( vec.get128(), vec.get128() ), 0 );
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec length( const Vector4 &vec )
+{
+    return floatInVec(  _mm_sqrt_ps(_vmathVfDot4( vec.get128(), vec.get128() )), 0 );
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 normalizeApprox( const Vector4 &vec )
+{
+    return Vector4( _mm_mul_ps( vec.get128(), _mm_rsqrt_ps( _vmathVfDot4( vec.get128(), vec.get128() ) ) ) );
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 normalize( const Vector4 &vec )
+{
+    return Vector4( _mm_mul_ps( vec.get128(), newtonrapson_rsqrt4( _vmathVfDot4( vec.get128(), vec.get128() ) ) ) );
+}
+
+VECTORMATH_FORCE_INLINE const Vector4 select( const Vector4 &vec0, const Vector4 &vec1, bool select1 )
+{
+    return select( vec0, vec1, boolInVec(select1) );
+}
+
+
+#ifdef _VECTORMATH_DEBUG
+
+VECTORMATH_FORCE_INLINE void print( const Vector4 &vec )
+{
+    union { __m128 v; float s[4]; } tmp;
+    tmp.v = vec.get128();
+    printf( "( %f %f %f %f )\n", tmp.s[0], tmp.s[1], tmp.s[2], tmp.s[3] );
+}
+
+VECTORMATH_FORCE_INLINE void print( const Vector4 &vec, const char * name )
+{
+    union { __m128 v; float s[4]; } tmp;
+    tmp.v = vec.get128();
+    printf( "%s: ( %f %f %f %f )\n", name, tmp.s[0], tmp.s[1], tmp.s[2], tmp.s[3] );
+}
+
+#endif
+
+VECTORMATH_FORCE_INLINE Point3::Point3( float _x, float _y, float _z )
+{
+    mVec128 = _mm_setr_ps(_x, _y, _z, 0.0f);
+}
+
+VECTORMATH_FORCE_INLINE Point3::Point3( const floatInVec &_x, const floatInVec &_y, const floatInVec &_z )
+{
+	mVec128 = _mm_unpacklo_ps( _mm_unpacklo_ps( _x.get128(), _z.get128() ), _y.get128() );
+}
+
+VECTORMATH_FORCE_INLINE Point3::Point3( const Vector3 &vec )
+{
+    mVec128 = vec.get128();
+}
+
+VECTORMATH_FORCE_INLINE Point3::Point3( float scalar )
+{
+    mVec128 = floatInVec(scalar).get128();
+}
+
+VECTORMATH_FORCE_INLINE Point3::Point3( const floatInVec &scalar )
+{
+    mVec128 = scalar.get128();
+}
+
+VECTORMATH_FORCE_INLINE Point3::Point3( __m128 vf4 )
+{
+    mVec128 = vf4;
+}
+
+VECTORMATH_FORCE_INLINE const Point3 lerp( float t, const Point3 &pnt0, const Point3 &pnt1 )
+{
+    return lerp( floatInVec(t), pnt0, pnt1 );
+}
+
+VECTORMATH_FORCE_INLINE const Point3 lerp( const floatInVec &t, const Point3 &pnt0, const Point3 &pnt1 )
+{
+    return ( pnt0 + ( ( pnt1 - pnt0 ) * t ) );
+}
+
+VECTORMATH_FORCE_INLINE __m128 Point3::get128( ) const
+{
+    return mVec128;
+}
+
+VECTORMATH_FORCE_INLINE void storeXYZ( const Point3 &pnt, __m128 * quad )
+{
+    __m128 dstVec = *quad;
+	VM_ATTRIBUTE_ALIGN16 unsigned int sw[4] = {0, 0, 0, 0xffffffff}; // TODO: Centralize
+    dstVec = vec_sel(pnt.get128(), dstVec, sw);
+    *quad = dstVec;
+}
+
+VECTORMATH_FORCE_INLINE void loadXYZArray( Point3 & pnt0, Point3 & pnt1, Point3 & pnt2, Point3 & pnt3, const __m128 * threeQuads )
+{
+	const float *quads = (float *)threeQuads;
+    pnt0 = Point3(  _mm_load_ps(quads) );
+    pnt1 = Point3( _mm_loadu_ps(quads + 3) );
+    pnt2 = Point3( _mm_loadu_ps(quads + 6) );
+    pnt3 = Point3( _mm_loadu_ps(quads + 9) );
+}
+
+VECTORMATH_FORCE_INLINE void storeXYZArray( const Point3 &pnt0, const Point3 &pnt1, const Point3 &pnt2, const Point3 &pnt3, __m128 * threeQuads )
+{
+	__m128 xxxx = _mm_shuffle_ps( pnt1.get128(), pnt1.get128(), _MM_SHUFFLE(0, 0, 0, 0) );
+	__m128 zzzz = _mm_shuffle_ps( pnt2.get128(), pnt2.get128(), _MM_SHUFFLE(2, 2, 2, 2) );
+	VM_ATTRIBUTE_ALIGN16 unsigned int xsw[4] = {0, 0, 0, 0xffffffff};
+	VM_ATTRIBUTE_ALIGN16 unsigned int zsw[4] = {0xffffffff, 0, 0, 0};
+	threeQuads[0] = vec_sel( pnt0.get128(), xxxx, xsw );
+    threeQuads[1] = _mm_shuffle_ps( pnt1.get128(), pnt2.get128(), _MM_SHUFFLE(1, 0, 2, 1) );
+    threeQuads[2] = vec_sel( _mm_shuffle_ps( pnt3.get128(), pnt3.get128(), _MM_SHUFFLE(2, 1, 0, 3) ), zzzz, zsw );
+}
+/*
+VECTORMATH_FORCE_INLINE void storeHalfFloats( const Point3 &pnt0, const Point3 &pnt1, const Point3 &pnt2, const Point3 &pnt3, const Point3 &pnt4, const Point3 &pnt5, const Point3 &pnt6, const Point3 &pnt7, vec_ushort8 * threeQuads )
+{
+#if 0
+    __m128 xyz0[3];
+    __m128 xyz1[3];
+    storeXYZArray( pnt0, pnt1, pnt2, pnt3, xyz0 );
+    storeXYZArray( pnt4, pnt5, pnt6, pnt7, xyz1 );
+    threeQuads[0] = _vmath2VfToHalfFloats(xyz0[0], xyz0[1]);
+    threeQuads[1] = _vmath2VfToHalfFloats(xyz0[2], xyz1[0]);
+    threeQuads[2] = _vmath2VfToHalfFloats(xyz1[1], xyz1[2]);
+#else
+	assert(0);
+#endif
+}
+*/
+VECTORMATH_FORCE_INLINE Point3 & Point3::operator =( const Point3 &pnt )
+{
+    mVec128 = pnt.mVec128;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Point3 & Point3::setX( float _x )
+{
+    _vmathVfSetElement(mVec128, _x, 0);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Point3 & Point3::setX( const floatInVec &_x )
+{
+    mVec128 = _vmathVfInsert(mVec128, _x.get128(), 0);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec Point3::getX( ) const
+{
+    return floatInVec( mVec128, 0 );
+}
+
+VECTORMATH_FORCE_INLINE Point3 & Point3::setY( float _y )
+{
+    _vmathVfSetElement(mVec128, _y, 1);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Point3 & Point3::setY( const floatInVec &_y )
+{
+    mVec128 = _vmathVfInsert(mVec128, _y.get128(), 1);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec Point3::getY( ) const
+{
+    return floatInVec( mVec128, 1 );
+}
+
+VECTORMATH_FORCE_INLINE Point3 & Point3::setZ( float _z )
+{
+    _vmathVfSetElement(mVec128, _z, 2);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Point3 & Point3::setZ( const floatInVec &_z )
+{
+    mVec128 = _vmathVfInsert(mVec128, _z.get128(), 2);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec Point3::getZ( ) const
+{
+    return floatInVec( mVec128, 2 );
+}
+
+VECTORMATH_FORCE_INLINE Point3 & Point3::setElem( int idx, float value )
+{
+    _vmathVfSetElement(mVec128, value, idx);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Point3 & Point3::setElem( int idx, const floatInVec &value )
+{
+    mVec128 = _vmathVfInsert(mVec128, value.get128(), idx);
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec Point3::getElem( int idx ) const
+{
+    return floatInVec( mVec128, idx );
+}
+
+VECTORMATH_FORCE_INLINE VecIdx Point3::operator []( int idx )
+{
+    return VecIdx( mVec128, idx );
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec Point3::operator []( int idx ) const
+{
+    return floatInVec( mVec128, idx );
+}
+
+VECTORMATH_FORCE_INLINE const Vector3 Point3::operator -( const Point3 &pnt ) const
+{
+    return Vector3( _mm_sub_ps( mVec128, pnt.mVec128 ) );
+}
+
+VECTORMATH_FORCE_INLINE const Point3 Point3::operator +( const Vector3 &vec ) const
+{
+    return Point3( _mm_add_ps( mVec128, vec.get128() ) );
+}
+
+VECTORMATH_FORCE_INLINE const Point3 Point3::operator -( const Vector3 &vec ) const
+{
+    return Point3( _mm_sub_ps( mVec128, vec.get128() ) );
+}
+
+VECTORMATH_FORCE_INLINE Point3 & Point3::operator +=( const Vector3 &vec )
+{
+    *this = *this + vec;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE Point3 & Point3::operator -=( const Vector3 &vec )
+{
+    *this = *this - vec;
+    return *this;
+}
+
+VECTORMATH_FORCE_INLINE const Point3 mulPerElem( const Point3 &pnt0, const Point3 &pnt1 )
+{
+    return Point3( _mm_mul_ps( pnt0.get128(), pnt1.get128() ) );
+}
+
+VECTORMATH_FORCE_INLINE const Point3 divPerElem( const Point3 &pnt0, const Point3 &pnt1 )
+{
+    return Point3( _mm_div_ps( pnt0.get128(), pnt1.get128() ) );
+}
+
+VECTORMATH_FORCE_INLINE const Point3 recipPerElem( const Point3 &pnt )
+{
+    return Point3( _mm_rcp_ps( pnt.get128() ) );
+}
+
+VECTORMATH_FORCE_INLINE const Point3 absPerElem( const Point3 &pnt )
+{
+    return Point3( fabsf4( pnt.get128() ) );
+}
+
+VECTORMATH_FORCE_INLINE const Point3 copySignPerElem( const Point3 &pnt0, const Point3 &pnt1 )
+{
+	__m128 vmask = toM128(0x7fffffff);
+	return Point3( _mm_or_ps(
+		_mm_and_ps   ( vmask, pnt0.get128() ),			// Value
+		_mm_andnot_ps( vmask, pnt1.get128() ) ) );		// Signs
+}
+
+VECTORMATH_FORCE_INLINE const Point3 maxPerElem( const Point3 &pnt0, const Point3 &pnt1 )
+{
+    return Point3( _mm_max_ps( pnt0.get128(), pnt1.get128() ) );
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec maxElem( const Point3 &pnt )
+{
+    return floatInVec( _mm_max_ps( _mm_max_ps( vec_splat( pnt.get128(), 0 ), vec_splat( pnt.get128(), 1 ) ), vec_splat( pnt.get128(), 2 ) ) );
+}
+
+VECTORMATH_FORCE_INLINE const Point3 minPerElem( const Point3 &pnt0, const Point3 &pnt1 )
+{
+    return Point3( _mm_min_ps( pnt0.get128(), pnt1.get128() ) );
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec minElem( const Point3 &pnt )
+{
+    return floatInVec( _mm_min_ps( _mm_min_ps( vec_splat( pnt.get128(), 0 ), vec_splat( pnt.get128(), 1 ) ), vec_splat( pnt.get128(), 2 ) ) );
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec sum( const Point3 &pnt )
+{
+    return floatInVec( _mm_add_ps( _mm_add_ps( vec_splat( pnt.get128(), 0 ), vec_splat( pnt.get128(), 1 ) ), vec_splat( pnt.get128(), 2 ) ) );
+}
+
+VECTORMATH_FORCE_INLINE const Point3 scale( const Point3 &pnt, float scaleVal )
+{
+    return scale( pnt, floatInVec( scaleVal ) );
+}
+
+VECTORMATH_FORCE_INLINE const Point3 scale( const Point3 &pnt, const floatInVec &scaleVal )
+{
+    return mulPerElem( pnt, Point3( scaleVal ) );
+}
+
+VECTORMATH_FORCE_INLINE const Point3 scale( const Point3 &pnt, const Vector3 &scaleVec )
+{
+    return mulPerElem( pnt, Point3( scaleVec ) );
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec projection( const Point3 &pnt, const Vector3 &unitVec )
+{
+    return floatInVec( _vmathVfDot3( pnt.get128(), unitVec.get128() ), 0 );
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec distSqrFromOrigin( const Point3 &pnt )
+{
+    return lengthSqr( Vector3( pnt ) );
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec distFromOrigin( const Point3 &pnt )
+{
+    return length( Vector3( pnt ) );
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec distSqr( const Point3 &pnt0, const Point3 &pnt1 )
+{
+    return lengthSqr( ( pnt1 - pnt0 ) );
+}
+
+VECTORMATH_FORCE_INLINE const floatInVec dist( const Point3 &pnt0, const Point3 &pnt1 )
+{
+    return length( ( pnt1 - pnt0 ) );
+}
+
+VECTORMATH_FORCE_INLINE const Point3 select( const Point3 &pnt0, const Point3 &pnt1, bool select1 )
+{
+    return select( pnt0, pnt1, boolInVec(select1) );
+}
+
+VECTORMATH_FORCE_INLINE const Point3 select( const Point3 &pnt0, const Point3 &pnt1, const boolInVec &select1 )
+{
+    return Point3( vec_sel( pnt0.get128(), pnt1.get128(), select1.get128() ) );
+}
+
+
+
+#ifdef _VECTORMATH_DEBUG
+
+VECTORMATH_FORCE_INLINE void print( const Point3 &pnt )
+{
+    union { __m128 v; float s[4]; } tmp;
+    tmp.v = pnt.get128();
+    printf( "( %f %f %f )\n", tmp.s[0], tmp.s[1], tmp.s[2] );
+}
+
+VECTORMATH_FORCE_INLINE void print( const Point3 &pnt, const char * name )
+{
+    union { __m128 v; float s[4]; } tmp;
+    tmp.v = pnt.get128();
+    printf( "%s: ( %f %f %f )\n", name, tmp.s[0], tmp.s[1], tmp.s[2] );
+}
+
+#endif
+
+} // namespace Aos
+} // namespace Vectormath
+
+#endif
+ bullet/vectormath/sse/vecidx_aos.h view
@@ -0,0 +1,80 @@+/*
+   Copyright (C) 2006, 2007 Sony Computer Entertainment Inc.
+   All rights reserved.
+
+   Redistribution and use in source and binary forms,
+   with or without modification, are permitted provided that the
+   following conditions are met:
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+    * Neither the name of the Sony Computer Entertainment Inc nor the names
+      of its contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef _VECTORMATH_VECIDX_AOS_H
+#define _VECTORMATH_VECIDX_AOS_H
+
+
+#include "floatInVec.h"
+
+namespace Vectormath {
+namespace Aos {
+
+//-----------------------------------------------------------------------------
+// VecIdx 
+// Used in setting elements of Vector3, Vector4, Point3, or Quat with the 
+// subscripting operator.
+//
+
+VM_ATTRIBUTE_ALIGNED_CLASS16 (class) VecIdx
+{
+private:
+   __m128 &ref;
+   int i;
+public:
+    inline VecIdx( __m128& vec, int idx ): ref(vec) { i = idx; }
+
+    // implicitly casts to float unless _VECTORMATH_NO_SCALAR_CAST defined
+    // in which case, implicitly casts to floatInVec, and one must call
+    // getAsFloat to convert to float.
+    //
+#ifdef _VECTORMATH_NO_SCALAR_CAST
+    inline operator floatInVec() const;
+    inline float getAsFloat() const;
+#else
+    inline operator float() const;
+#endif
+
+    inline float operator =( float scalar );
+    inline floatInVec operator =( const floatInVec &scalar );
+    inline floatInVec operator =( const VecIdx& scalar );
+    inline floatInVec operator *=( float scalar );
+    inline floatInVec operator *=( const floatInVec &scalar );
+    inline floatInVec operator /=( float scalar );
+    inline floatInVec operator /=( const floatInVec &scalar );
+    inline floatInVec operator +=( float scalar );
+    inline floatInVec operator +=( const floatInVec &scalar );
+    inline floatInVec operator -=( float scalar );
+    inline floatInVec operator -=( const floatInVec &scalar );
+};
+
+} // namespace Aos
+} // namespace Vectormath
+
+#endif
+ bullet/vectormath/sse/vectormath_aos.h view
@@ -0,0 +1,2547 @@+/*
+   Copyright (C) 2006, 2007 Sony Computer Entertainment Inc.
+   All rights reserved.
+
+   Redistribution and use in source and binary forms,
+   with or without modification, are permitted provided that the
+   following conditions are met:
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+    * Neither the name of the Sony Computer Entertainment Inc nor the names
+      of its contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+#ifndef _VECTORMATH_AOS_CPP_SSE_H
+#define _VECTORMATH_AOS_CPP_SSE_H
+
+#include <math.h>
+#include <xmmintrin.h>
+#include <emmintrin.h>
+#include <assert.h>
+
+#define Vector3Ref Vector3&
+#define QuatRef	Quat&
+#define Matrix3Ref Matrix3&
+
+#if (defined (_WIN32) && (_MSC_VER) && _MSC_VER >= 1400)
+	#define USE_SSE3_LDDQU
+
+	#define VM_ATTRIBUTE_ALIGNED_CLASS16(a) __declspec(align(16)) a
+	#define VM_ATTRIBUTE_ALIGN16 __declspec(align(16))
+	#define VECTORMATH_FORCE_INLINE __forceinline 
+#else
+	#define VM_ATTRIBUTE_ALIGNED_CLASS16(a) a __attribute__ ((aligned (16)))	
+	#define VM_ATTRIBUTE_ALIGN16 __attribute__ ((aligned (16)))	
+	#define VECTORMATH_FORCE_INLINE inline 
+	#ifdef __SSE3__
+		#define USE_SSE3_LDDQU
+	#endif //__SSE3__
+#endif//_WIN32
+
+
+#ifdef USE_SSE3_LDDQU
+#include <pmmintrin.h>//_mm_lddqu_si128
+#endif //USE_SSE3_LDDQU
+
+
+// TODO: Tidy
+typedef __m128 vec_float4;
+typedef __m128 vec_uint4;
+typedef __m128 vec_int4;
+typedef __m128i vec_uchar16;
+typedef __m128i vec_ushort8;
+
+#define vec_splat(x, e) _mm_shuffle_ps(x, x, _MM_SHUFFLE(e,e,e,e))
+
+#define _mm_ror_ps(vec,i)	\
+	(((i)%4) ? (_mm_shuffle_ps(vec,vec, _MM_SHUFFLE((unsigned char)(i+3)%4,(unsigned char)(i+2)%4,(unsigned char)(i+1)%4,(unsigned char)(i+0)%4))) : (vec))
+#define _mm_rol_ps(vec,i)	\
+	(((i)%4) ? (_mm_shuffle_ps(vec,vec, _MM_SHUFFLE((unsigned char)(7-i)%4,(unsigned char)(6-i)%4,(unsigned char)(5-i)%4,(unsigned char)(4-i)%4))) : (vec))
+
+#define vec_sld(vec,vec2,x) _mm_ror_ps(vec, ((x)/4))
+
+#define _mm_abs_ps(vec)		_mm_andnot_ps(_MASKSIGN_,vec)
+#define _mm_neg_ps(vec)		_mm_xor_ps(_MASKSIGN_,vec)
+
+#define vec_madd(a, b, c) _mm_add_ps(c, _mm_mul_ps(a, b) )
+
+union SSEFloat
+{
+	__m128i vi;
+	__m128 m128;
+	__m128 vf;
+	unsigned int	ui[4];
+	unsigned short s[8];
+	float f[4];
+	SSEFloat(__m128 v) : m128(v) {}
+    SSEFloat(__m128i v) : vi(v) {}
+	SSEFloat() {}//uninitialized
+};
+
+static VECTORMATH_FORCE_INLINE __m128 vec_sel(__m128 a, __m128 b, __m128 mask)
+{
+	return _mm_or_ps(_mm_and_ps(mask, b), _mm_andnot_ps(mask, a));
+}
+static VECTORMATH_FORCE_INLINE __m128 vec_sel(__m128 a, __m128 b, const unsigned int *_mask)
+{
+	return vec_sel(a, b, _mm_load_ps((float *)_mask));
+}
+static VECTORMATH_FORCE_INLINE __m128 vec_sel(__m128 a, __m128 b, unsigned int _mask)
+{
+	return vec_sel(a, b, _mm_set1_ps(*(float *)&_mask));
+}
+
+static VECTORMATH_FORCE_INLINE __m128 toM128(unsigned int x)
+{
+    return _mm_set1_ps( *(float *)&x );
+}
+
+static VECTORMATH_FORCE_INLINE __m128 fabsf4(__m128 x)
+{
+    return _mm_and_ps( x, toM128( 0x7fffffff ) );
+}
+/*
+union SSE64
+{
+	__m128 m128;
+	struct
+	{
+		__m64 m01;
+		__m64 m23;
+	} m64;
+};
+
+static VECTORMATH_FORCE_INLINE __m128 vec_cts(__m128 x, int a)
+{
+	assert(a == 0); // Only 2^0 supported
+	(void)a;
+	SSE64 sse64;
+	sse64.m64.m01 = _mm_cvttps_pi32(x);
+	sse64.m64.m23 = _mm_cvttps_pi32(_mm_ror_ps(x,2));
+	_mm_empty();
+    return sse64.m128;
+}
+
+static VECTORMATH_FORCE_INLINE __m128 vec_ctf(__m128 x, int a)
+{
+	assert(a == 0); // Only 2^0 supported
+	(void)a;
+	SSE64 sse64;
+	sse64.m128 = x;
+	__m128 result =_mm_movelh_ps(
+		_mm_cvt_pi2ps(_mm_setzero_ps(), sse64.m64.m01),
+		_mm_cvt_pi2ps(_mm_setzero_ps(), sse64.m64.m23));
+	_mm_empty();
+	return result;
+}
+*/
+static VECTORMATH_FORCE_INLINE __m128 vec_cts(__m128 x, int a)
+{
+	assert(a == 0); // Only 2^0 supported
+	(void)a;
+	__m128i result = _mm_cvtps_epi32(x);
+    return (__m128 &)result;
+}
+
+static VECTORMATH_FORCE_INLINE __m128 vec_ctf(__m128 x, int a)
+{
+	assert(a == 0); // Only 2^0 supported
+	(void)a;
+	return _mm_cvtepi32_ps((__m128i &)x);
+}
+
+#define vec_nmsub(a,b,c) _mm_sub_ps( c, _mm_mul_ps( a, b ) )
+#define vec_sub(a,b) _mm_sub_ps( a, b )
+#define vec_add(a,b) _mm_add_ps( a, b )
+#define vec_mul(a,b) _mm_mul_ps( a, b )
+#define vec_xor(a,b) _mm_xor_ps( a, b )
+#define vec_and(a,b) _mm_and_ps( a, b )
+#define vec_cmpeq(a,b) _mm_cmpeq_ps( a, b )
+#define vec_cmpgt(a,b) _mm_cmpgt_ps( a, b )
+
+#define vec_mergeh(a,b) _mm_unpacklo_ps( a, b )
+#define vec_mergel(a,b) _mm_unpackhi_ps( a, b )
+
+#define vec_andc(a,b) _mm_andnot_ps( b, a )
+
+#define sqrtf4(x) _mm_sqrt_ps( x )
+#define rsqrtf4(x) _mm_rsqrt_ps( x )
+#define recipf4(x) _mm_rcp_ps( x )
+#define negatef4(x) _mm_sub_ps( _mm_setzero_ps(), x )
+
+static VECTORMATH_FORCE_INLINE __m128 newtonrapson_rsqrt4( const __m128 v )
+{   
+#define _half4 _mm_setr_ps(.5f,.5f,.5f,.5f) 
+#define _three _mm_setr_ps(3.f,3.f,3.f,3.f)
+const __m128 approx = _mm_rsqrt_ps( v );   
+const __m128 muls = _mm_mul_ps(_mm_mul_ps(v, approx), approx);   
+return _mm_mul_ps(_mm_mul_ps(_half4, approx), _mm_sub_ps(_three, muls) );
+}
+
+static VECTORMATH_FORCE_INLINE __m128 acosf4(__m128 x)
+{
+    __m128 xabs = fabsf4(x);
+	__m128 select = _mm_cmplt_ps( x, _mm_setzero_ps() );
+    __m128 t1 = sqrtf4(vec_sub(_mm_set1_ps(1.0f), xabs));
+    
+    /* Instruction counts can be reduced if the polynomial was
+     * computed entirely from nested (dependent) fma's. However, 
+     * to reduce the number of pipeline stalls, the polygon is evaluated 
+     * in two halves (hi amd lo). 
+     */
+    __m128 xabs2 = _mm_mul_ps(xabs,  xabs);
+    __m128 xabs4 = _mm_mul_ps(xabs2, xabs2);
+    __m128 hi = vec_madd(vec_madd(vec_madd(_mm_set1_ps(-0.0012624911f),
+		xabs, _mm_set1_ps(0.0066700901f)),
+			xabs, _mm_set1_ps(-0.0170881256f)),
+				xabs, _mm_set1_ps( 0.0308918810f));
+    __m128 lo = vec_madd(vec_madd(vec_madd(_mm_set1_ps(-0.0501743046f),
+		xabs, _mm_set1_ps(0.0889789874f)),
+			xabs, _mm_set1_ps(-0.2145988016f)),
+				xabs, _mm_set1_ps( 1.5707963050f));
+    
+    __m128 result = vec_madd(hi, xabs4, lo);
+    
+    // Adjust the result if x is negactive.
+    return vec_sel(
+		vec_mul(t1, result),									// Positive
+		vec_nmsub(t1, result, _mm_set1_ps(3.1415926535898f)),	// Negative
+		select);
+}
+
+static VECTORMATH_FORCE_INLINE __m128 sinf4(vec_float4 x)
+{
+
+//
+// Common constants used to evaluate sinf4/cosf4/tanf4
+//
+#define _SINCOS_CC0  -0.0013602249f
+#define _SINCOS_CC1   0.0416566950f
+#define _SINCOS_CC2  -0.4999990225f
+#define _SINCOS_SC0  -0.0001950727f
+#define _SINCOS_SC1   0.0083320758f
+#define _SINCOS_SC2  -0.1666665247f
+
+#define _SINCOS_KC1  1.57079625129f
+#define _SINCOS_KC2  7.54978995489e-8f
+
+    vec_float4 xl,xl2,xl3,res;
+
+    // Range reduction using : xl = angle * TwoOverPi;
+    //  
+    xl = vec_mul(x, _mm_set1_ps(0.63661977236f));
+
+    // Find the quadrant the angle falls in
+    // using:  q = (int) (ceil(abs(xl))*sign(xl))
+    //
+    vec_int4 q = vec_cts(xl,0);
+
+    // Compute an offset based on the quadrant that the angle falls in
+    // 
+    vec_int4 offset = _mm_and_ps(q,toM128(0x3));
+
+    // Remainder in range [-pi/4..pi/4]
+    //
+    vec_float4 qf = vec_ctf(q,0);
+    xl  = vec_nmsub(qf,_mm_set1_ps(_SINCOS_KC2),vec_nmsub(qf,_mm_set1_ps(_SINCOS_KC1),x));
+    
+    // Compute x^2 and x^3
+    //
+    xl2 = vec_mul(xl,xl);
+    xl3 = vec_mul(xl2,xl);
+    
+    // Compute both the sin and cos of the angles
+    // using a polynomial expression:
+    //   cx = 1.0f + xl2 * ((C0 * xl2 + C1) * xl2 + C2), and
+    //   sx = xl + xl3 * ((S0 * xl2 + S1) * xl2 + S2)
+    //
+    
+    vec_float4 cx =
+		vec_madd(
+			vec_madd(
+				vec_madd(_mm_set1_ps(_SINCOS_CC0),xl2,_mm_set1_ps(_SINCOS_CC1)),xl2,_mm_set1_ps(_SINCOS_CC2)),xl2,_mm_set1_ps(1.0f));
+    vec_float4 sx =
+		vec_madd(
+			vec_madd(
+				vec_madd(_mm_set1_ps(_SINCOS_SC0),xl2,_mm_set1_ps(_SINCOS_SC1)),xl2,_mm_set1_ps(_SINCOS_SC2)),xl3,xl);
+
+    // Use the cosine when the offset is odd and the sin
+    // when the offset is even
+    //
+    res = vec_sel(cx,sx,vec_cmpeq(vec_and(offset,
+                                          toM128(0x1)),
+										  _mm_setzero_ps()));
+
+    // Flip the sign of the result when (offset mod 4) = 1 or 2
+    //
+    return vec_sel(
+		vec_xor(toM128(0x80000000U), res),	// Negative
+		res,								// Positive
+		vec_cmpeq(vec_and(offset,toM128(0x2)),_mm_setzero_ps()));
+}
+
+static VECTORMATH_FORCE_INLINE void sincosf4(vec_float4 x, vec_float4* s, vec_float4* c)
+{
+    vec_float4 xl,xl2,xl3;
+    vec_int4   offsetSin, offsetCos;
+
+    // Range reduction using : xl = angle * TwoOverPi;
+    //  
+    xl = vec_mul(x, _mm_set1_ps(0.63661977236f));
+
+    // Find the quadrant the angle falls in
+    // using:  q = (int) (ceil(abs(xl))*sign(xl))
+    //
+    //vec_int4 q = vec_cts(vec_add(xl,vec_sel(_mm_set1_ps(0.5f),xl,(0x80000000))),0);
+    vec_int4 q = vec_cts(xl,0);
+     
+    // Compute the offset based on the quadrant that the angle falls in.
+    // Add 1 to the offset for the cosine. 
+    //
+    offsetSin = vec_and(q,toM128((int)0x3));
+	__m128i temp = _mm_add_epi32(_mm_set1_epi32(1),(__m128i &)offsetSin);
+	offsetCos = (__m128 &)temp;
+
+    // Remainder in range [-pi/4..pi/4]
+    //
+    vec_float4 qf = vec_ctf(q,0);
+    xl  = vec_nmsub(qf,_mm_set1_ps(_SINCOS_KC2),vec_nmsub(qf,_mm_set1_ps(_SINCOS_KC1),x));
+    
+    // Compute x^2 and x^3
+    //
+    xl2 = vec_mul(xl,xl);
+    xl3 = vec_mul(xl2,xl);
+    
+    // Compute both the sin and cos of the angles
+    // using a polynomial expression:
+    //   cx = 1.0f + xl2 * ((C0 * xl2 + C1) * xl2 + C2), and
+    //   sx = xl + xl3 * ((S0 * xl2 + S1) * xl2 + S2)
+    //
+    vec_float4 cx =
+		vec_madd(
+			vec_madd(
+				vec_madd(_mm_set1_ps(_SINCOS_CC0),xl2,_mm_set1_ps(_SINCOS_CC1)),xl2,_mm_set1_ps(_SINCOS_CC2)),xl2,_mm_set1_ps(1.0f));
+    vec_float4 sx =
+		vec_madd(
+			vec_madd(
+				vec_madd(_mm_set1_ps(_SINCOS_SC0),xl2,_mm_set1_ps(_SINCOS_SC1)),xl2,_mm_set1_ps(_SINCOS_SC2)),xl3,xl);
+
+    // Use the cosine when the offset is odd and the sin
+    // when the offset is even
+    //
+    vec_uint4 sinMask = (vec_uint4)vec_cmpeq(vec_and(offsetSin,toM128(0x1)),_mm_setzero_ps());
+    vec_uint4 cosMask = (vec_uint4)vec_cmpeq(vec_and(offsetCos,toM128(0x1)),_mm_setzero_ps());    
+    *s = vec_sel(cx,sx,sinMask);
+    *c = vec_sel(cx,sx,cosMask);
+
+    // Flip the sign of the result when (offset mod 4) = 1 or 2
+    //
+    sinMask = vec_cmpeq(vec_and(offsetSin,toM128(0x2)),_mm_setzero_ps());
+    cosMask = vec_cmpeq(vec_and(offsetCos,toM128(0x2)),_mm_setzero_ps());
+    
+    *s = vec_sel((vec_float4)vec_xor(toM128(0x80000000),(vec_uint4)*s),*s,sinMask);
+    *c = vec_sel((vec_float4)vec_xor(toM128(0x80000000),(vec_uint4)*c),*c,cosMask);    
+}
+
+#include "vecidx_aos.h"
+#include "floatInVec.h"
+#include "boolInVec.h"
+
+#ifdef _VECTORMATH_DEBUG
+#include <stdio.h>
+#endif
+namespace Vectormath {
+
+namespace Aos {
+
+//-----------------------------------------------------------------------------
+// Forward Declarations
+//
+
+class Vector3;
+class Vector4;
+class Point3;
+class Quat;
+class Matrix3;
+class Matrix4;
+class Transform3;
+
+// A 3-D vector in array-of-structures format
+//
+class Vector3
+{
+    __m128 mVec128;
+
+	VECTORMATH_FORCE_INLINE void set128(vec_float4 vec);
+	 
+	 VECTORMATH_FORCE_INLINE  vec_float4& get128Ref();
+
+public:
+    // Default constructor; does no initialization
+    // 
+    VECTORMATH_FORCE_INLINE Vector3( ) { };
+
+	// Default copy constructor
+    // 
+	VECTORMATH_FORCE_INLINE Vector3(const Vector3& vec);
+
+    // Construct a 3-D vector from x, y, and z elements
+    // 
+    VECTORMATH_FORCE_INLINE Vector3( float x, float y, float z );
+
+    // Construct a 3-D vector from x, y, and z elements (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE Vector3( const floatInVec &x, const floatInVec &y, const floatInVec &z );
+
+    // Copy elements from a 3-D point into a 3-D vector
+    // 
+    explicit VECTORMATH_FORCE_INLINE Vector3( const Point3 &pnt );
+
+    // Set all elements of a 3-D vector to the same scalar value
+    // 
+    explicit VECTORMATH_FORCE_INLINE Vector3( float scalar );
+
+    // Set all elements of a 3-D vector to the same scalar value (scalar data contained in vector data type)
+    // 
+    explicit VECTORMATH_FORCE_INLINE Vector3( const floatInVec &scalar );
+
+    // Set vector float data in a 3-D vector
+    // 
+    explicit VECTORMATH_FORCE_INLINE Vector3( __m128 vf4 );
+
+    // Get vector float data from a 3-D vector
+    // 
+    VECTORMATH_FORCE_INLINE __m128 get128( ) const;
+
+    // Assign one 3-D vector to another
+    // 
+    VECTORMATH_FORCE_INLINE Vector3 & operator =( const Vector3 &vec );
+
+    // Set the x element of a 3-D vector
+    // 
+    VECTORMATH_FORCE_INLINE Vector3 & setX( float x );
+
+    // Set the y element of a 3-D vector
+    // 
+    VECTORMATH_FORCE_INLINE Vector3 & setY( float y );
+
+    // Set the z element of a 3-D vector
+    // 
+    VECTORMATH_FORCE_INLINE Vector3 & setZ( float z );
+
+    // Set the x element of a 3-D vector (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE Vector3 & setX( const floatInVec &x );
+
+    // Set the y element of a 3-D vector (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE Vector3 & setY( const floatInVec &y );
+
+    // Set the z element of a 3-D vector (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE Vector3 & setZ( const floatInVec &z );
+
+    // Get the x element of a 3-D vector
+    // 
+    VECTORMATH_FORCE_INLINE const floatInVec getX( ) const;
+
+    // Get the y element of a 3-D vector
+    // 
+    VECTORMATH_FORCE_INLINE const floatInVec getY( ) const;
+
+    // Get the z element of a 3-D vector
+    // 
+    VECTORMATH_FORCE_INLINE const floatInVec getZ( ) const;
+
+    // Set an x, y, or z element of a 3-D vector by index
+    // 
+    VECTORMATH_FORCE_INLINE Vector3 & setElem( int idx, float value );
+
+    // Set an x, y, or z element of a 3-D vector by index (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE Vector3 & setElem( int idx, const floatInVec &value );
+
+    // Get an x, y, or z element of a 3-D vector by index
+    // 
+    VECTORMATH_FORCE_INLINE const floatInVec getElem( int idx ) const;
+
+    // Subscripting operator to set or get an element
+    // 
+    VECTORMATH_FORCE_INLINE VecIdx operator []( int idx );
+
+    // Subscripting operator to get an element
+    // 
+    VECTORMATH_FORCE_INLINE const floatInVec operator []( int idx ) const;
+
+    // Add two 3-D vectors
+    // 
+    VECTORMATH_FORCE_INLINE const Vector3 operator +( const Vector3 &vec ) const;
+
+    // Subtract a 3-D vector from another 3-D vector
+    // 
+    VECTORMATH_FORCE_INLINE const Vector3 operator -( const Vector3 &vec ) const;
+
+    // Add a 3-D vector to a 3-D point
+    // 
+    VECTORMATH_FORCE_INLINE const Point3 operator +( const Point3 &pnt ) const;
+
+    // Multiply a 3-D vector by a scalar
+    // 
+    VECTORMATH_FORCE_INLINE const Vector3 operator *( float scalar ) const;
+
+    // Divide a 3-D vector by a scalar
+    // 
+    VECTORMATH_FORCE_INLINE const Vector3 operator /( float scalar ) const;
+
+    // Multiply a 3-D vector by a scalar (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE const Vector3 operator *( const floatInVec &scalar ) const;
+
+    // Divide a 3-D vector by a scalar (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE const Vector3 operator /( const floatInVec &scalar ) const;
+
+    // Perform compound assignment and addition with a 3-D vector
+    // 
+    VECTORMATH_FORCE_INLINE Vector3 & operator +=( const Vector3 &vec );
+
+    // Perform compound assignment and subtraction by a 3-D vector
+    // 
+    VECTORMATH_FORCE_INLINE Vector3 & operator -=( const Vector3 &vec );
+
+    // Perform compound assignment and multiplication by a scalar
+    // 
+    VECTORMATH_FORCE_INLINE Vector3 & operator *=( float scalar );
+
+    // Perform compound assignment and division by a scalar
+    // 
+    VECTORMATH_FORCE_INLINE Vector3 & operator /=( float scalar );
+
+    // Perform compound assignment and multiplication by a scalar (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE Vector3 & operator *=( const floatInVec &scalar );
+
+    // Perform compound assignment and division by a scalar (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE Vector3 & operator /=( const floatInVec &scalar );
+
+    // Negate all elements of a 3-D vector
+    // 
+    VECTORMATH_FORCE_INLINE const Vector3 operator -( ) const;
+
+    // Construct x axis
+    // 
+    static VECTORMATH_FORCE_INLINE const Vector3 xAxis( );
+
+    // Construct y axis
+    // 
+    static VECTORMATH_FORCE_INLINE const Vector3 yAxis( );
+
+    // Construct z axis
+    // 
+    static VECTORMATH_FORCE_INLINE const Vector3 zAxis( );
+
+};
+
+// Multiply a 3-D vector by a scalar
+// 
+VECTORMATH_FORCE_INLINE const Vector3 operator *( float scalar, const Vector3 &vec );
+
+// Multiply a 3-D vector by a scalar (scalar data contained in vector data type)
+// 
+VECTORMATH_FORCE_INLINE const Vector3 operator *( const floatInVec &scalar, const Vector3 &vec );
+
+// Multiply two 3-D vectors per element
+// 
+VECTORMATH_FORCE_INLINE const Vector3 mulPerElem( const Vector3 &vec0, const Vector3 &vec1 );
+
+// Divide two 3-D vectors per element
+// NOTE: 
+// Floating-point behavior matches standard library function divf4.
+// 
+VECTORMATH_FORCE_INLINE const Vector3 divPerElem( const Vector3 &vec0, const Vector3 &vec1 );
+
+// Compute the reciprocal of a 3-D vector per element
+// NOTE: 
+// Floating-point behavior matches standard library function recipf4.
+// 
+VECTORMATH_FORCE_INLINE const Vector3 recipPerElem( const Vector3 &vec );
+
+// Compute the absolute value of a 3-D vector per element
+// 
+VECTORMATH_FORCE_INLINE const Vector3 absPerElem( const Vector3 &vec );
+
+// Copy sign from one 3-D vector to another, per element
+// 
+VECTORMATH_FORCE_INLINE const Vector3 copySignPerElem( const Vector3 &vec0, const Vector3 &vec1 );
+
+// Maximum of two 3-D vectors per element
+// 
+VECTORMATH_FORCE_INLINE const Vector3 maxPerElem( const Vector3 &vec0, const Vector3 &vec1 );
+
+// Minimum of two 3-D vectors per element
+// 
+VECTORMATH_FORCE_INLINE const Vector3 minPerElem( const Vector3 &vec0, const Vector3 &vec1 );
+
+// Maximum element of a 3-D vector
+// 
+VECTORMATH_FORCE_INLINE const floatInVec maxElem( const Vector3 &vec );
+
+// Minimum element of a 3-D vector
+// 
+VECTORMATH_FORCE_INLINE const floatInVec minElem( const Vector3 &vec );
+
+// Compute the sum of all elements of a 3-D vector
+// 
+VECTORMATH_FORCE_INLINE const floatInVec sum( const Vector3 &vec );
+
+// Compute the dot product of two 3-D vectors
+// 
+VECTORMATH_FORCE_INLINE const floatInVec dot( const Vector3 &vec0, const Vector3 &vec1 );
+
+// Compute the square of the length of a 3-D vector
+// 
+VECTORMATH_FORCE_INLINE const floatInVec lengthSqr( const Vector3 &vec );
+
+// Compute the length of a 3-D vector
+// 
+VECTORMATH_FORCE_INLINE const floatInVec length( const Vector3 &vec );
+
+// Normalize a 3-D vector
+// NOTE: 
+// The result is unpredictable when all elements of vec are at or near zero.
+// 
+VECTORMATH_FORCE_INLINE const Vector3 normalize( const Vector3 &vec );
+
+// Compute cross product of two 3-D vectors
+// 
+VECTORMATH_FORCE_INLINE const Vector3 cross( const Vector3 &vec0, const Vector3 &vec1 );
+
+// Outer product of two 3-D vectors
+// 
+VECTORMATH_FORCE_INLINE const Matrix3 outer( const Vector3 &vec0, const Vector3 &vec1 );
+
+// Pre-multiply a row vector by a 3x3 matrix
+// NOTE: 
+// Slower than column post-multiply.
+// 
+VECTORMATH_FORCE_INLINE const Vector3 rowMul( const Vector3 &vec, const Matrix3 & mat );
+
+// Cross-product matrix of a 3-D vector
+// 
+VECTORMATH_FORCE_INLINE const Matrix3 crossMatrix( const Vector3 &vec );
+
+// Create cross-product matrix and multiply
+// NOTE: 
+// Faster than separately creating a cross-product matrix and multiplying.
+// 
+VECTORMATH_FORCE_INLINE const Matrix3 crossMatrixMul( const Vector3 &vec, const Matrix3 & mat );
+
+// Linear interpolation between two 3-D vectors
+// NOTE: 
+// Does not clamp t between 0 and 1.
+// 
+VECTORMATH_FORCE_INLINE const Vector3 lerp( float t, const Vector3 &vec0, const Vector3 &vec1 );
+
+// Linear interpolation between two 3-D vectors (scalar data contained in vector data type)
+// NOTE: 
+// Does not clamp t between 0 and 1.
+// 
+VECTORMATH_FORCE_INLINE const Vector3 lerp( const floatInVec &t, const Vector3 &vec0, const Vector3 &vec1 );
+
+// Spherical linear interpolation between two 3-D vectors
+// NOTE: 
+// The result is unpredictable if the vectors point in opposite directions.
+// Does not clamp t between 0 and 1.
+// 
+VECTORMATH_FORCE_INLINE const Vector3 slerp( float t, const Vector3 &unitVec0, const Vector3 &unitVec1 );
+
+// Spherical linear interpolation between two 3-D vectors (scalar data contained in vector data type)
+// NOTE: 
+// The result is unpredictable if the vectors point in opposite directions.
+// Does not clamp t between 0 and 1.
+// 
+VECTORMATH_FORCE_INLINE const Vector3 slerp( const floatInVec &t, const Vector3 &unitVec0, const Vector3 &unitVec1 );
+
+// Conditionally select between two 3-D vectors
+// NOTE: 
+// This function uses a conditional select instruction to avoid a branch.
+// However, the transfer of select1 to a VMX register may use more processing time than a branch.
+// Use the boolInVec version for better performance.
+// 
+VECTORMATH_FORCE_INLINE const Vector3 select( const Vector3 &vec0, const Vector3 &vec1, bool select1 );
+
+// Conditionally select between two 3-D vectors (scalar data contained in vector data type)
+// NOTE: 
+// This function uses a conditional select instruction to avoid a branch.
+// 
+VECTORMATH_FORCE_INLINE const Vector3 select( const Vector3 &vec0, const Vector3 &vec1, const boolInVec &select1 );
+
+// Store x, y, and z elements of 3-D vector in first three words of a quadword, preserving fourth word
+// 
+VECTORMATH_FORCE_INLINE void storeXYZ( const Vector3 &vec, __m128 * quad );
+
+// Load four three-float 3-D vectors, stored in three quadwords
+// 
+VECTORMATH_FORCE_INLINE void loadXYZArray( Vector3 & vec0, Vector3 & vec1, Vector3 & vec2, Vector3 & vec3, const __m128 * threeQuads );
+
+// Store four 3-D vectors in three quadwords
+// 
+VECTORMATH_FORCE_INLINE void storeXYZArray( const Vector3 &vec0, const Vector3 &vec1, const Vector3 &vec2, const Vector3 &vec3, __m128 * threeQuads );
+
+// Store eight 3-D vectors as half-floats
+// 
+VECTORMATH_FORCE_INLINE void storeHalfFloats( const Vector3 &vec0, const Vector3 &vec1, const Vector3 &vec2, const Vector3 &vec3, const Vector3 &vec4, const Vector3 &vec5, const Vector3 &vec6, const Vector3 &vec7, vec_ushort8 * threeQuads );
+
+#ifdef _VECTORMATH_DEBUG
+
+// Print a 3-D vector
+// NOTE: 
+// Function is only defined when _VECTORMATH_DEBUG is defined.
+// 
+VECTORMATH_FORCE_INLINE void print( const Vector3 &vec );
+
+// Print a 3-D vector and an associated string identifier
+// NOTE: 
+// Function is only defined when _VECTORMATH_DEBUG is defined.
+// 
+VECTORMATH_FORCE_INLINE void print( const Vector3 &vec, const char * name );
+
+#endif
+
+// A 4-D vector in array-of-structures format
+//
+class Vector4
+{
+    __m128 mVec128;
+
+public:
+    // Default constructor; does no initialization
+    // 
+    VECTORMATH_FORCE_INLINE Vector4( ) { };
+
+    // Construct a 4-D vector from x, y, z, and w elements
+    // 
+    VECTORMATH_FORCE_INLINE Vector4( float x, float y, float z, float w );
+
+    // Construct a 4-D vector from x, y, z, and w elements (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE Vector4( const floatInVec &x, const floatInVec &y, const floatInVec &z, const floatInVec &w );
+
+    // Construct a 4-D vector from a 3-D vector and a scalar
+    // 
+    VECTORMATH_FORCE_INLINE Vector4( const Vector3 &xyz, float w );
+
+    // Construct a 4-D vector from a 3-D vector and a scalar (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE Vector4( const Vector3 &xyz, const floatInVec &w );
+
+    // Copy x, y, and z from a 3-D vector into a 4-D vector, and set w to 0
+    // 
+    explicit VECTORMATH_FORCE_INLINE Vector4( const Vector3 &vec );
+
+    // Copy x, y, and z from a 3-D point into a 4-D vector, and set w to 1
+    // 
+    explicit VECTORMATH_FORCE_INLINE Vector4( const Point3 &pnt );
+
+    // Copy elements from a quaternion into a 4-D vector
+    // 
+    explicit VECTORMATH_FORCE_INLINE Vector4( const Quat &quat );
+
+    // Set all elements of a 4-D vector to the same scalar value
+    // 
+    explicit VECTORMATH_FORCE_INLINE Vector4( float scalar );
+
+    // Set all elements of a 4-D vector to the same scalar value (scalar data contained in vector data type)
+    // 
+    explicit VECTORMATH_FORCE_INLINE Vector4( const floatInVec &scalar );
+
+    // Set vector float data in a 4-D vector
+    // 
+    explicit VECTORMATH_FORCE_INLINE Vector4( __m128 vf4 );
+
+    // Get vector float data from a 4-D vector
+    // 
+    VECTORMATH_FORCE_INLINE __m128 get128( ) const;
+
+    // Assign one 4-D vector to another
+    // 
+    VECTORMATH_FORCE_INLINE Vector4 & operator =( const Vector4 &vec );
+
+    // Set the x, y, and z elements of a 4-D vector
+    // NOTE: 
+    // This function does not change the w element.
+    // 
+    VECTORMATH_FORCE_INLINE Vector4 & setXYZ( const Vector3 &vec );
+
+    // Get the x, y, and z elements of a 4-D vector
+    // 
+    VECTORMATH_FORCE_INLINE const Vector3 getXYZ( ) const;
+
+    // Set the x element of a 4-D vector
+    // 
+    VECTORMATH_FORCE_INLINE Vector4 & setX( float x );
+
+    // Set the y element of a 4-D vector
+    // 
+    VECTORMATH_FORCE_INLINE Vector4 & setY( float y );
+
+    // Set the z element of a 4-D vector
+    // 
+    VECTORMATH_FORCE_INLINE Vector4 & setZ( float z );
+
+    // Set the w element of a 4-D vector
+    // 
+    VECTORMATH_FORCE_INLINE Vector4 & setW( float w );
+
+    // Set the x element of a 4-D vector (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE Vector4 & setX( const floatInVec &x );
+
+    // Set the y element of a 4-D vector (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE Vector4 & setY( const floatInVec &y );
+
+    // Set the z element of a 4-D vector (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE Vector4 & setZ( const floatInVec &z );
+
+    // Set the w element of a 4-D vector (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE Vector4 & setW( const floatInVec &w );
+
+    // Get the x element of a 4-D vector
+    // 
+    VECTORMATH_FORCE_INLINE const floatInVec getX( ) const;
+
+    // Get the y element of a 4-D vector
+    // 
+    VECTORMATH_FORCE_INLINE const floatInVec getY( ) const;
+
+    // Get the z element of a 4-D vector
+    // 
+    VECTORMATH_FORCE_INLINE const floatInVec getZ( ) const;
+
+    // Get the w element of a 4-D vector
+    // 
+    VECTORMATH_FORCE_INLINE const floatInVec getW( ) const;
+
+    // Set an x, y, z, or w element of a 4-D vector by index
+    // 
+    VECTORMATH_FORCE_INLINE Vector4 & setElem( int idx, float value );
+
+    // Set an x, y, z, or w element of a 4-D vector by index (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE Vector4 & setElem( int idx, const floatInVec &value );
+
+    // Get an x, y, z, or w element of a 4-D vector by index
+    // 
+    VECTORMATH_FORCE_INLINE const floatInVec getElem( int idx ) const;
+
+    // Subscripting operator to set or get an element
+    // 
+    VECTORMATH_FORCE_INLINE VecIdx operator []( int idx );
+
+    // Subscripting operator to get an element
+    // 
+    VECTORMATH_FORCE_INLINE const floatInVec operator []( int idx ) const;
+
+    // Add two 4-D vectors
+    // 
+    VECTORMATH_FORCE_INLINE const Vector4 operator +( const Vector4 &vec ) const;
+
+    // Subtract a 4-D vector from another 4-D vector
+    // 
+    VECTORMATH_FORCE_INLINE const Vector4 operator -( const Vector4 &vec ) const;
+
+    // Multiply a 4-D vector by a scalar
+    // 
+    VECTORMATH_FORCE_INLINE const Vector4 operator *( float scalar ) const;
+
+    // Divide a 4-D vector by a scalar
+    // 
+    VECTORMATH_FORCE_INLINE const Vector4 operator /( float scalar ) const;
+
+    // Multiply a 4-D vector by a scalar (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE const Vector4 operator *( const floatInVec &scalar ) const;
+
+    // Divide a 4-D vector by a scalar (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE const Vector4 operator /( const floatInVec &scalar ) const;
+
+    // Perform compound assignment and addition with a 4-D vector
+    // 
+    VECTORMATH_FORCE_INLINE Vector4 & operator +=( const Vector4 &vec );
+
+    // Perform compound assignment and subtraction by a 4-D vector
+    // 
+    VECTORMATH_FORCE_INLINE Vector4 & operator -=( const Vector4 &vec );
+
+    // Perform compound assignment and multiplication by a scalar
+    // 
+    VECTORMATH_FORCE_INLINE Vector4 & operator *=( float scalar );
+
+    // Perform compound assignment and division by a scalar
+    // 
+    VECTORMATH_FORCE_INLINE Vector4 & operator /=( float scalar );
+
+    // Perform compound assignment and multiplication by a scalar (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE Vector4 & operator *=( const floatInVec &scalar );
+
+    // Perform compound assignment and division by a scalar (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE Vector4 & operator /=( const floatInVec &scalar );
+
+    // Negate all elements of a 4-D vector
+    // 
+    VECTORMATH_FORCE_INLINE const Vector4 operator -( ) const;
+
+    // Construct x axis
+    // 
+    static VECTORMATH_FORCE_INLINE const Vector4 xAxis( );
+
+    // Construct y axis
+    // 
+    static VECTORMATH_FORCE_INLINE const Vector4 yAxis( );
+
+    // Construct z axis
+    // 
+    static VECTORMATH_FORCE_INLINE const Vector4 zAxis( );
+
+    // Construct w axis
+    // 
+    static VECTORMATH_FORCE_INLINE const Vector4 wAxis( );
+
+};
+
+// Multiply a 4-D vector by a scalar
+// 
+VECTORMATH_FORCE_INLINE const Vector4 operator *( float scalar, const Vector4 &vec );
+
+// Multiply a 4-D vector by a scalar (scalar data contained in vector data type)
+// 
+VECTORMATH_FORCE_INLINE const Vector4 operator *( const floatInVec &scalar, const Vector4 &vec );
+
+// Multiply two 4-D vectors per element
+// 
+VECTORMATH_FORCE_INLINE const Vector4 mulPerElem( const Vector4 &vec0, const Vector4 &vec1 );
+
+// Divide two 4-D vectors per element
+// NOTE: 
+// Floating-point behavior matches standard library function divf4.
+// 
+VECTORMATH_FORCE_INLINE const Vector4 divPerElem( const Vector4 &vec0, const Vector4 &vec1 );
+
+// Compute the reciprocal of a 4-D vector per element
+// NOTE: 
+// Floating-point behavior matches standard library function recipf4.
+// 
+VECTORMATH_FORCE_INLINE const Vector4 recipPerElem( const Vector4 &vec );
+
+// Compute the absolute value of a 4-D vector per element
+// 
+VECTORMATH_FORCE_INLINE const Vector4 absPerElem( const Vector4 &vec );
+
+// Copy sign from one 4-D vector to another, per element
+// 
+VECTORMATH_FORCE_INLINE const Vector4 copySignPerElem( const Vector4 &vec0, const Vector4 &vec1 );
+
+// Maximum of two 4-D vectors per element
+// 
+VECTORMATH_FORCE_INLINE const Vector4 maxPerElem( const Vector4 &vec0, const Vector4 &vec1 );
+
+// Minimum of two 4-D vectors per element
+// 
+VECTORMATH_FORCE_INLINE const Vector4 minPerElem( const Vector4 &vec0, const Vector4 &vec1 );
+
+// Maximum element of a 4-D vector
+// 
+VECTORMATH_FORCE_INLINE const floatInVec maxElem( const Vector4 &vec );
+
+// Minimum element of a 4-D vector
+// 
+VECTORMATH_FORCE_INLINE const floatInVec minElem( const Vector4 &vec );
+
+// Compute the sum of all elements of a 4-D vector
+// 
+VECTORMATH_FORCE_INLINE const floatInVec sum( const Vector4 &vec );
+
+// Compute the dot product of two 4-D vectors
+// 
+VECTORMATH_FORCE_INLINE const floatInVec dot( const Vector4 &vec0, const Vector4 &vec1 );
+
+// Compute the square of the length of a 4-D vector
+// 
+VECTORMATH_FORCE_INLINE const floatInVec lengthSqr( const Vector4 &vec );
+
+// Compute the length of a 4-D vector
+// 
+VECTORMATH_FORCE_INLINE const floatInVec length( const Vector4 &vec );
+
+// Normalize a 4-D vector
+// NOTE: 
+// The result is unpredictable when all elements of vec are at or near zero.
+// 
+VECTORMATH_FORCE_INLINE const Vector4 normalize( const Vector4 &vec );
+
+// Outer product of two 4-D vectors
+// 
+VECTORMATH_FORCE_INLINE const Matrix4 outer( const Vector4 &vec0, const Vector4 &vec1 );
+
+// Linear interpolation between two 4-D vectors
+// NOTE: 
+// Does not clamp t between 0 and 1.
+// 
+VECTORMATH_FORCE_INLINE const Vector4 lerp( float t, const Vector4 &vec0, const Vector4 &vec1 );
+
+// Linear interpolation between two 4-D vectors (scalar data contained in vector data type)
+// NOTE: 
+// Does not clamp t between 0 and 1.
+// 
+VECTORMATH_FORCE_INLINE const Vector4 lerp( const floatInVec &t, const Vector4 &vec0, const Vector4 &vec1 );
+
+// Spherical linear interpolation between two 4-D vectors
+// NOTE: 
+// The result is unpredictable if the vectors point in opposite directions.
+// Does not clamp t between 0 and 1.
+// 
+VECTORMATH_FORCE_INLINE const Vector4 slerp( float t, const Vector4 &unitVec0, const Vector4 &unitVec1 );
+
+// Spherical linear interpolation between two 4-D vectors (scalar data contained in vector data type)
+// NOTE: 
+// The result is unpredictable if the vectors point in opposite directions.
+// Does not clamp t between 0 and 1.
+// 
+VECTORMATH_FORCE_INLINE const Vector4 slerp( const floatInVec &t, const Vector4 &unitVec0, const Vector4 &unitVec1 );
+
+// Conditionally select between two 4-D vectors
+// NOTE: 
+// This function uses a conditional select instruction to avoid a branch.
+// However, the transfer of select1 to a VMX register may use more processing time than a branch.
+// Use the boolInVec version for better performance.
+// 
+VECTORMATH_FORCE_INLINE const Vector4 select( const Vector4 &vec0, const Vector4 &vec1, bool select1 );
+
+// Conditionally select between two 4-D vectors (scalar data contained in vector data type)
+// NOTE: 
+// This function uses a conditional select instruction to avoid a branch.
+// 
+VECTORMATH_FORCE_INLINE const Vector4 select( const Vector4 &vec0, const Vector4 &vec1, const boolInVec &select1 );
+
+// Store four 4-D vectors as half-floats
+// 
+VECTORMATH_FORCE_INLINE void storeHalfFloats( const Vector4 &vec0, const Vector4 &vec1, const Vector4 &vec2, const Vector4 &vec3, vec_ushort8 * twoQuads );
+
+#ifdef _VECTORMATH_DEBUG
+
+// Print a 4-D vector
+// NOTE: 
+// Function is only defined when _VECTORMATH_DEBUG is defined.
+// 
+VECTORMATH_FORCE_INLINE void print( const Vector4 &vec );
+
+// Print a 4-D vector and an associated string identifier
+// NOTE: 
+// Function is only defined when _VECTORMATH_DEBUG is defined.
+// 
+VECTORMATH_FORCE_INLINE void print( const Vector4 &vec, const char * name );
+
+#endif
+
+// A 3-D point in array-of-structures format
+//
+class Point3
+{
+    __m128 mVec128;
+
+public:
+    // Default constructor; does no initialization
+    // 
+    VECTORMATH_FORCE_INLINE Point3( ) { };
+
+    // Construct a 3-D point from x, y, and z elements
+    // 
+    VECTORMATH_FORCE_INLINE Point3( float x, float y, float z );
+
+    // Construct a 3-D point from x, y, and z elements (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE Point3( const floatInVec &x, const floatInVec &y, const floatInVec &z );
+
+    // Copy elements from a 3-D vector into a 3-D point
+    // 
+    explicit VECTORMATH_FORCE_INLINE Point3( const Vector3 &vec );
+
+    // Set all elements of a 3-D point to the same scalar value
+    // 
+    explicit VECTORMATH_FORCE_INLINE Point3( float scalar );
+
+    // Set all elements of a 3-D point to the same scalar value (scalar data contained in vector data type)
+    // 
+    explicit VECTORMATH_FORCE_INLINE Point3( const floatInVec &scalar );
+
+    // Set vector float data in a 3-D point
+    // 
+    explicit VECTORMATH_FORCE_INLINE Point3( __m128 vf4 );
+
+    // Get vector float data from a 3-D point
+    // 
+    VECTORMATH_FORCE_INLINE __m128 get128( ) const;
+
+    // Assign one 3-D point to another
+    // 
+    VECTORMATH_FORCE_INLINE Point3 & operator =( const Point3 &pnt );
+
+    // Set the x element of a 3-D point
+    // 
+    VECTORMATH_FORCE_INLINE Point3 & setX( float x );
+
+    // Set the y element of a 3-D point
+    // 
+    VECTORMATH_FORCE_INLINE Point3 & setY( float y );
+
+    // Set the z element of a 3-D point
+    // 
+    VECTORMATH_FORCE_INLINE Point3 & setZ( float z );
+
+    // Set the x element of a 3-D point (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE Point3 & setX( const floatInVec &x );
+
+    // Set the y element of a 3-D point (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE Point3 & setY( const floatInVec &y );
+
+    // Set the z element of a 3-D point (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE Point3 & setZ( const floatInVec &z );
+
+    // Get the x element of a 3-D point
+    // 
+    VECTORMATH_FORCE_INLINE const floatInVec getX( ) const;
+
+    // Get the y element of a 3-D point
+    // 
+    VECTORMATH_FORCE_INLINE const floatInVec getY( ) const;
+
+    // Get the z element of a 3-D point
+    // 
+    VECTORMATH_FORCE_INLINE const floatInVec getZ( ) const;
+
+    // Set an x, y, or z element of a 3-D point by index
+    // 
+    VECTORMATH_FORCE_INLINE Point3 & setElem( int idx, float value );
+
+    // Set an x, y, or z element of a 3-D point by index (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE Point3 & setElem( int idx, const floatInVec &value );
+
+    // Get an x, y, or z element of a 3-D point by index
+    // 
+    VECTORMATH_FORCE_INLINE const floatInVec getElem( int idx ) const;
+
+    // Subscripting operator to set or get an element
+    // 
+    VECTORMATH_FORCE_INLINE VecIdx operator []( int idx );
+
+    // Subscripting operator to get an element
+    // 
+    VECTORMATH_FORCE_INLINE const floatInVec operator []( int idx ) const;
+
+    // Subtract a 3-D point from another 3-D point
+    // 
+    VECTORMATH_FORCE_INLINE const Vector3 operator -( const Point3 &pnt ) const;
+
+    // Add a 3-D point to a 3-D vector
+    // 
+    VECTORMATH_FORCE_INLINE const Point3 operator +( const Vector3 &vec ) const;
+
+    // Subtract a 3-D vector from a 3-D point
+    // 
+    VECTORMATH_FORCE_INLINE const Point3 operator -( const Vector3 &vec ) const;
+
+    // Perform compound assignment and addition with a 3-D vector
+    // 
+    VECTORMATH_FORCE_INLINE Point3 & operator +=( const Vector3 &vec );
+
+    // Perform compound assignment and subtraction by a 3-D vector
+    // 
+    VECTORMATH_FORCE_INLINE Point3 & operator -=( const Vector3 &vec );
+
+};
+
+// Multiply two 3-D points per element
+// 
+VECTORMATH_FORCE_INLINE const Point3 mulPerElem( const Point3 &pnt0, const Point3 &pnt1 );
+
+// Divide two 3-D points per element
+// NOTE: 
+// Floating-point behavior matches standard library function divf4.
+// 
+VECTORMATH_FORCE_INLINE const Point3 divPerElem( const Point3 &pnt0, const Point3 &pnt1 );
+
+// Compute the reciprocal of a 3-D point per element
+// NOTE: 
+// Floating-point behavior matches standard library function recipf4.
+// 
+VECTORMATH_FORCE_INLINE const Point3 recipPerElem( const Point3 &pnt );
+
+// Compute the absolute value of a 3-D point per element
+// 
+VECTORMATH_FORCE_INLINE const Point3 absPerElem( const Point3 &pnt );
+
+// Copy sign from one 3-D point to another, per element
+// 
+VECTORMATH_FORCE_INLINE const Point3 copySignPerElem( const Point3 &pnt0, const Point3 &pnt1 );
+
+// Maximum of two 3-D points per element
+// 
+VECTORMATH_FORCE_INLINE const Point3 maxPerElem( const Point3 &pnt0, const Point3 &pnt1 );
+
+// Minimum of two 3-D points per element
+// 
+VECTORMATH_FORCE_INLINE const Point3 minPerElem( const Point3 &pnt0, const Point3 &pnt1 );
+
+// Maximum element of a 3-D point
+// 
+VECTORMATH_FORCE_INLINE const floatInVec maxElem( const Point3 &pnt );
+
+// Minimum element of a 3-D point
+// 
+VECTORMATH_FORCE_INLINE const floatInVec minElem( const Point3 &pnt );
+
+// Compute the sum of all elements of a 3-D point
+// 
+VECTORMATH_FORCE_INLINE const floatInVec sum( const Point3 &pnt );
+
+// Apply uniform scale to a 3-D point
+// 
+VECTORMATH_FORCE_INLINE const Point3 scale( const Point3 &pnt, float scaleVal );
+
+// Apply uniform scale to a 3-D point (scalar data contained in vector data type)
+// 
+VECTORMATH_FORCE_INLINE const Point3 scale( const Point3 &pnt, const floatInVec &scaleVal );
+
+// Apply non-uniform scale to a 3-D point
+// 
+VECTORMATH_FORCE_INLINE const Point3 scale( const Point3 &pnt, const Vector3 &scaleVec );
+
+// Scalar projection of a 3-D point on a unit-length 3-D vector
+// 
+VECTORMATH_FORCE_INLINE const floatInVec projection( const Point3 &pnt, const Vector3 &unitVec );
+
+// Compute the square of the distance of a 3-D point from the coordinate-system origin
+// 
+VECTORMATH_FORCE_INLINE const floatInVec distSqrFromOrigin( const Point3 &pnt );
+
+// Compute the distance of a 3-D point from the coordinate-system origin
+// 
+VECTORMATH_FORCE_INLINE const floatInVec distFromOrigin( const Point3 &pnt );
+
+// Compute the square of the distance between two 3-D points
+// 
+VECTORMATH_FORCE_INLINE const floatInVec distSqr( const Point3 &pnt0, const Point3 &pnt1 );
+
+// Compute the distance between two 3-D points
+// 
+VECTORMATH_FORCE_INLINE const floatInVec dist( const Point3 &pnt0, const Point3 &pnt1 );
+
+// Linear interpolation between two 3-D points
+// NOTE: 
+// Does not clamp t between 0 and 1.
+// 
+VECTORMATH_FORCE_INLINE const Point3 lerp( float t, const Point3 &pnt0, const Point3 &pnt1 );
+
+// Linear interpolation between two 3-D points (scalar data contained in vector data type)
+// NOTE: 
+// Does not clamp t between 0 and 1.
+// 
+VECTORMATH_FORCE_INLINE const Point3 lerp( const floatInVec &t, const Point3 &pnt0, const Point3 &pnt1 );
+
+// Conditionally select between two 3-D points
+// NOTE: 
+// This function uses a conditional select instruction to avoid a branch.
+// However, the transfer of select1 to a VMX register may use more processing time than a branch.
+// Use the boolInVec version for better performance.
+// 
+VECTORMATH_FORCE_INLINE const Point3 select( const Point3 &pnt0, const Point3 &pnt1, bool select1 );
+
+// Conditionally select between two 3-D points (scalar data contained in vector data type)
+// NOTE: 
+// This function uses a conditional select instruction to avoid a branch.
+// 
+VECTORMATH_FORCE_INLINE const Point3 select( const Point3 &pnt0, const Point3 &pnt1, const boolInVec &select1 );
+
+// Store x, y, and z elements of 3-D point in first three words of a quadword, preserving fourth word
+// 
+VECTORMATH_FORCE_INLINE void storeXYZ( const Point3 &pnt, __m128 * quad );
+
+// Load four three-float 3-D points, stored in three quadwords
+// 
+VECTORMATH_FORCE_INLINE void loadXYZArray( Point3 & pnt0, Point3 & pnt1, Point3 & pnt2, Point3 & pnt3, const __m128 * threeQuads );
+
+// Store four 3-D points in three quadwords
+// 
+VECTORMATH_FORCE_INLINE void storeXYZArray( const Point3 &pnt0, const Point3 &pnt1, const Point3 &pnt2, const Point3 &pnt3, __m128 * threeQuads );
+
+// Store eight 3-D points as half-floats
+// 
+VECTORMATH_FORCE_INLINE void storeHalfFloats( const Point3 &pnt0, const Point3 &pnt1, const Point3 &pnt2, const Point3 &pnt3, const Point3 &pnt4, const Point3 &pnt5, const Point3 &pnt6, const Point3 &pnt7, vec_ushort8 * threeQuads );
+
+#ifdef _VECTORMATH_DEBUG
+
+// Print a 3-D point
+// NOTE: 
+// Function is only defined when _VECTORMATH_DEBUG is defined.
+// 
+VECTORMATH_FORCE_INLINE void print( const Point3 &pnt );
+
+// Print a 3-D point and an associated string identifier
+// NOTE: 
+// Function is only defined when _VECTORMATH_DEBUG is defined.
+// 
+VECTORMATH_FORCE_INLINE void print( const Point3 &pnt, const char * name );
+
+#endif
+
+// A quaternion in array-of-structures format
+//
+class Quat
+{
+    __m128 mVec128;
+
+public:
+    // Default constructor; does no initialization
+    // 
+    VECTORMATH_FORCE_INLINE Quat( ) { };
+
+	VECTORMATH_FORCE_INLINE  Quat(const Quat& quat);
+
+    // Construct a quaternion from x, y, z, and w elements
+    // 
+    VECTORMATH_FORCE_INLINE Quat( float x, float y, float z, float w );
+
+    // Construct a quaternion from x, y, z, and w elements (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE Quat( const floatInVec &x, const floatInVec &y, const floatInVec &z, const floatInVec &w );
+
+    // Construct a quaternion from a 3-D vector and a scalar
+    // 
+    VECTORMATH_FORCE_INLINE Quat( const Vector3 &xyz, float w );
+
+    // Construct a quaternion from a 3-D vector and a scalar (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE Quat( const Vector3 &xyz, const floatInVec &w );
+
+    // Copy elements from a 4-D vector into a quaternion
+    // 
+    explicit VECTORMATH_FORCE_INLINE Quat( const Vector4 &vec );
+
+    // Convert a rotation matrix to a unit-length quaternion
+    // 
+    explicit VECTORMATH_FORCE_INLINE Quat( const Matrix3 & rotMat );
+
+    // Set all elements of a quaternion to the same scalar value
+    // 
+    explicit VECTORMATH_FORCE_INLINE Quat( float scalar );
+
+    // Set all elements of a quaternion to the same scalar value (scalar data contained in vector data type)
+    // 
+    explicit VECTORMATH_FORCE_INLINE Quat( const floatInVec &scalar );
+
+    // Set vector float data in a quaternion
+    // 
+    explicit VECTORMATH_FORCE_INLINE Quat( __m128 vf4 );
+
+    // Get vector float data from a quaternion
+    // 
+    VECTORMATH_FORCE_INLINE __m128 get128( ) const;
+
+	// Set a quaterion from vector float data
+    //
+	VECTORMATH_FORCE_INLINE void set128(vec_float4 vec);
+
+    // Assign one quaternion to another
+    // 
+    VECTORMATH_FORCE_INLINE Quat & operator =( const Quat &quat );
+
+    // Set the x, y, and z elements of a quaternion
+    // NOTE: 
+    // This function does not change the w element.
+    // 
+    VECTORMATH_FORCE_INLINE Quat & setXYZ( const Vector3 &vec );
+
+    // Get the x, y, and z elements of a quaternion
+    // 
+    VECTORMATH_FORCE_INLINE const Vector3 getXYZ( ) const;
+
+    // Set the x element of a quaternion
+    // 
+    VECTORMATH_FORCE_INLINE Quat & setX( float x );
+
+    // Set the y element of a quaternion
+    // 
+    VECTORMATH_FORCE_INLINE Quat & setY( float y );
+
+    // Set the z element of a quaternion
+    // 
+    VECTORMATH_FORCE_INLINE Quat & setZ( float z );
+
+    // Set the w element of a quaternion
+    // 
+    VECTORMATH_FORCE_INLINE Quat & setW( float w );
+
+    // Set the x element of a quaternion (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE Quat & setX( const floatInVec &x );
+
+    // Set the y element of a quaternion (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE Quat & setY( const floatInVec &y );
+
+    // Set the z element of a quaternion (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE Quat & setZ( const floatInVec &z );
+
+    // Set the w element of a quaternion (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE Quat & setW( const floatInVec &w );
+
+    // Get the x element of a quaternion
+    // 
+    VECTORMATH_FORCE_INLINE const floatInVec getX( ) const;
+
+    // Get the y element of a quaternion
+    // 
+    VECTORMATH_FORCE_INLINE const floatInVec getY( ) const;
+
+    // Get the z element of a quaternion
+    // 
+    VECTORMATH_FORCE_INLINE const floatInVec getZ( ) const;
+
+    // Get the w element of a quaternion
+    // 
+    VECTORMATH_FORCE_INLINE const floatInVec getW( ) const;
+
+    // Set an x, y, z, or w element of a quaternion by index
+    // 
+    VECTORMATH_FORCE_INLINE Quat & setElem( int idx, float value );
+
+    // Set an x, y, z, or w element of a quaternion by index (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE Quat & setElem( int idx, const floatInVec &value );
+
+    // Get an x, y, z, or w element of a quaternion by index
+    // 
+    VECTORMATH_FORCE_INLINE const floatInVec getElem( int idx ) const;
+
+    // Subscripting operator to set or get an element
+    // 
+    VECTORMATH_FORCE_INLINE VecIdx operator []( int idx );
+
+    // Subscripting operator to get an element
+    // 
+    VECTORMATH_FORCE_INLINE const floatInVec operator []( int idx ) const;
+
+    // Add two quaternions
+    // 
+    VECTORMATH_FORCE_INLINE const Quat operator +( const Quat &quat ) const;
+
+    // Subtract a quaternion from another quaternion
+    // 
+    VECTORMATH_FORCE_INLINE const Quat operator -( const Quat &quat ) const;
+
+    // Multiply two quaternions
+    // 
+    VECTORMATH_FORCE_INLINE const Quat operator *( const Quat &quat ) const;
+
+    // Multiply a quaternion by a scalar
+    // 
+    VECTORMATH_FORCE_INLINE const Quat operator *( float scalar ) const;
+
+    // Divide a quaternion by a scalar
+    // 
+    VECTORMATH_FORCE_INLINE const Quat operator /( float scalar ) const;
+
+    // Multiply a quaternion by a scalar (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE const Quat operator *( const floatInVec &scalar ) const;
+
+    // Divide a quaternion by a scalar (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE const Quat operator /( const floatInVec &scalar ) const;
+
+    // Perform compound assignment and addition with a quaternion
+    // 
+    VECTORMATH_FORCE_INLINE Quat & operator +=( const Quat &quat );
+
+    // Perform compound assignment and subtraction by a quaternion
+    // 
+    VECTORMATH_FORCE_INLINE Quat & operator -=( const Quat &quat );
+
+    // Perform compound assignment and multiplication by a quaternion
+    // 
+    VECTORMATH_FORCE_INLINE Quat & operator *=( const Quat &quat );
+
+    // Perform compound assignment and multiplication by a scalar
+    // 
+    VECTORMATH_FORCE_INLINE Quat & operator *=( float scalar );
+
+    // Perform compound assignment and division by a scalar
+    // 
+    VECTORMATH_FORCE_INLINE Quat & operator /=( float scalar );
+
+    // Perform compound assignment and multiplication by a scalar (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE Quat & operator *=( const floatInVec &scalar );
+
+    // Perform compound assignment and division by a scalar (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE Quat & operator /=( const floatInVec &scalar );
+
+    // Negate all elements of a quaternion
+    // 
+    VECTORMATH_FORCE_INLINE const Quat operator -( ) const;
+
+    // Construct an identity quaternion
+    // 
+    static VECTORMATH_FORCE_INLINE const Quat identity( );
+
+    // Construct a quaternion to rotate between two unit-length 3-D vectors
+    // NOTE: 
+    // The result is unpredictable if unitVec0 and unitVec1 point in opposite directions.
+    // 
+    static VECTORMATH_FORCE_INLINE const Quat rotation( const Vector3 &unitVec0, const Vector3 &unitVec1 );
+
+    // Construct a quaternion to rotate around a unit-length 3-D vector
+    // 
+    static VECTORMATH_FORCE_INLINE const Quat rotation( float radians, const Vector3 &unitVec );
+
+    // Construct a quaternion to rotate around a unit-length 3-D vector (scalar data contained in vector data type)
+    // 
+    static VECTORMATH_FORCE_INLINE const Quat rotation( const floatInVec &radians, const Vector3 &unitVec );
+
+    // Construct a quaternion to rotate around the x axis
+    // 
+    static VECTORMATH_FORCE_INLINE const Quat rotationX( float radians );
+
+    // Construct a quaternion to rotate around the y axis
+    // 
+    static VECTORMATH_FORCE_INLINE const Quat rotationY( float radians );
+
+    // Construct a quaternion to rotate around the z axis
+    // 
+    static VECTORMATH_FORCE_INLINE const Quat rotationZ( float radians );
+
+    // Construct a quaternion to rotate around the x axis (scalar data contained in vector data type)
+    // 
+    static VECTORMATH_FORCE_INLINE const Quat rotationX( const floatInVec &radians );
+
+    // Construct a quaternion to rotate around the y axis (scalar data contained in vector data type)
+    // 
+    static VECTORMATH_FORCE_INLINE const Quat rotationY( const floatInVec &radians );
+
+    // Construct a quaternion to rotate around the z axis (scalar data contained in vector data type)
+    // 
+    static VECTORMATH_FORCE_INLINE const Quat rotationZ( const floatInVec &radians );
+
+};
+
+// Multiply a quaternion by a scalar
+// 
+VECTORMATH_FORCE_INLINE const Quat operator *( float scalar, const Quat &quat );
+
+// Multiply a quaternion by a scalar (scalar data contained in vector data type)
+// 
+VECTORMATH_FORCE_INLINE const Quat operator *( const floatInVec &scalar, const Quat &quat );
+
+// Compute the conjugate of a quaternion
+// 
+VECTORMATH_FORCE_INLINE const Quat conj( const Quat &quat );
+
+// Use a unit-length quaternion to rotate a 3-D vector
+// 
+VECTORMATH_FORCE_INLINE const Vector3 rotate( const Quat &unitQuat, const Vector3 &vec );
+
+// Compute the dot product of two quaternions
+// 
+VECTORMATH_FORCE_INLINE const floatInVec dot( const Quat &quat0, const Quat &quat1 );
+
+// Compute the norm of a quaternion
+// 
+VECTORMATH_FORCE_INLINE const floatInVec norm( const Quat &quat );
+
+// Compute the length of a quaternion
+// 
+VECTORMATH_FORCE_INLINE const floatInVec length( const Quat &quat );
+
+// Normalize a quaternion
+// NOTE: 
+// The result is unpredictable when all elements of quat are at or near zero.
+// 
+VECTORMATH_FORCE_INLINE const Quat normalize( const Quat &quat );
+
+// Linear interpolation between two quaternions
+// NOTE: 
+// Does not clamp t between 0 and 1.
+// 
+VECTORMATH_FORCE_INLINE const Quat lerp( float t, const Quat &quat0, const Quat &quat1 );
+
+// Linear interpolation between two quaternions (scalar data contained in vector data type)
+// NOTE: 
+// Does not clamp t between 0 and 1.
+// 
+VECTORMATH_FORCE_INLINE const Quat lerp( const floatInVec &t, const Quat &quat0, const Quat &quat1 );
+
+// Spherical linear interpolation between two quaternions
+// NOTE: 
+// Interpolates along the shortest path between orientations.
+// Does not clamp t between 0 and 1.
+// 
+VECTORMATH_FORCE_INLINE const Quat slerp( float t, const Quat &unitQuat0, const Quat &unitQuat1 );
+
+// Spherical linear interpolation between two quaternions (scalar data contained in vector data type)
+// NOTE: 
+// Interpolates along the shortest path between orientations.
+// Does not clamp t between 0 and 1.
+// 
+VECTORMATH_FORCE_INLINE const Quat slerp( const floatInVec &t, const Quat &unitQuat0, const Quat &unitQuat1 );
+
+// Spherical quadrangle interpolation
+// 
+VECTORMATH_FORCE_INLINE const Quat squad( float t, const Quat &unitQuat0, const Quat &unitQuat1, const Quat &unitQuat2, const Quat &unitQuat3 );
+
+// Spherical quadrangle interpolation (scalar data contained in vector data type)
+// 
+VECTORMATH_FORCE_INLINE const Quat squad( const floatInVec &t, const Quat &unitQuat0, const Quat &unitQuat1, const Quat &unitQuat2, const Quat &unitQuat3 );
+
+// Conditionally select between two quaternions
+// NOTE: 
+// This function uses a conditional select instruction to avoid a branch.
+// However, the transfer of select1 to a VMX register may use more processing time than a branch.
+// Use the boolInVec version for better performance.
+// 
+VECTORMATH_FORCE_INLINE const Quat select( const Quat &quat0, const Quat &quat1, bool select1 );
+
+// Conditionally select between two quaternions (scalar data contained in vector data type)
+// NOTE: 
+// This function uses a conditional select instruction to avoid a branch.
+// 
+VECTORMATH_FORCE_INLINE const Quat select( const Quat &quat0, const Quat &quat1, const boolInVec &select1 );
+
+#ifdef _VECTORMATH_DEBUG
+
+// Print a quaternion
+// NOTE: 
+// Function is only defined when _VECTORMATH_DEBUG is defined.
+// 
+VECTORMATH_FORCE_INLINE void print( const Quat &quat );
+
+// Print a quaternion and an associated string identifier
+// NOTE: 
+// Function is only defined when _VECTORMATH_DEBUG is defined.
+// 
+VECTORMATH_FORCE_INLINE void print( const Quat &quat, const char * name );
+
+#endif
+
+// A 3x3 matrix in array-of-structures format
+//
+class Matrix3
+{
+    Vector3 mCol0;
+    Vector3 mCol1;
+    Vector3 mCol2;
+
+public:
+    // Default constructor; does no initialization
+    // 
+    VECTORMATH_FORCE_INLINE Matrix3( ) { };
+
+    // Copy a 3x3 matrix
+    // 
+    VECTORMATH_FORCE_INLINE Matrix3( const Matrix3 & mat );
+
+    // Construct a 3x3 matrix containing the specified columns
+    // 
+    VECTORMATH_FORCE_INLINE Matrix3( const Vector3 &col0, const Vector3 &col1, const Vector3 &col2 );
+
+    // Construct a 3x3 rotation matrix from a unit-length quaternion
+    // 
+    explicit VECTORMATH_FORCE_INLINE Matrix3( const Quat &unitQuat );
+
+    // Set all elements of a 3x3 matrix to the same scalar value
+    // 
+    explicit VECTORMATH_FORCE_INLINE Matrix3( float scalar );
+
+    // Set all elements of a 3x3 matrix to the same scalar value (scalar data contained in vector data type)
+    // 
+    explicit VECTORMATH_FORCE_INLINE Matrix3( const floatInVec &scalar );
+
+    // Assign one 3x3 matrix to another
+    // 
+    VECTORMATH_FORCE_INLINE Matrix3 & operator =( const Matrix3 & mat );
+
+    // Set column 0 of a 3x3 matrix
+    // 
+    VECTORMATH_FORCE_INLINE Matrix3 & setCol0( const Vector3 &col0 );
+
+    // Set column 1 of a 3x3 matrix
+    // 
+    VECTORMATH_FORCE_INLINE Matrix3 & setCol1( const Vector3 &col1 );
+
+    // Set column 2 of a 3x3 matrix
+    // 
+    VECTORMATH_FORCE_INLINE Matrix3 & setCol2( const Vector3 &col2 );
+
+    // Get column 0 of a 3x3 matrix
+    // 
+    VECTORMATH_FORCE_INLINE const Vector3 getCol0( ) const;
+
+    // Get column 1 of a 3x3 matrix
+    // 
+    VECTORMATH_FORCE_INLINE const Vector3 getCol1( ) const;
+
+    // Get column 2 of a 3x3 matrix
+    // 
+    VECTORMATH_FORCE_INLINE const Vector3 getCol2( ) const;
+
+    // Set the column of a 3x3 matrix referred to by the specified index
+    // 
+    VECTORMATH_FORCE_INLINE Matrix3 & setCol( int col, const Vector3 &vec );
+
+    // Set the row of a 3x3 matrix referred to by the specified index
+    // 
+    VECTORMATH_FORCE_INLINE Matrix3 & setRow( int row, const Vector3 &vec );
+
+    // Get the column of a 3x3 matrix referred to by the specified index
+    // 
+    VECTORMATH_FORCE_INLINE const Vector3 getCol( int col ) const;
+
+    // Get the row of a 3x3 matrix referred to by the specified index
+    // 
+    VECTORMATH_FORCE_INLINE const Vector3 getRow( int row ) const;
+
+    // Subscripting operator to set or get a column
+    // 
+    VECTORMATH_FORCE_INLINE Vector3 & operator []( int col );
+
+    // Subscripting operator to get a column
+    // 
+    VECTORMATH_FORCE_INLINE const Vector3 operator []( int col ) const;
+
+    // Set the element of a 3x3 matrix referred to by column and row indices
+    // 
+    VECTORMATH_FORCE_INLINE Matrix3 & setElem( int col, int row, float val );
+
+    // Set the element of a 3x3 matrix referred to by column and row indices (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE Matrix3 & setElem( int col, int row, const floatInVec &val );
+
+    // Get the element of a 3x3 matrix referred to by column and row indices
+    // 
+    VECTORMATH_FORCE_INLINE const floatInVec getElem( int col, int row ) const;
+
+    // Add two 3x3 matrices
+    // 
+    VECTORMATH_FORCE_INLINE const Matrix3 operator +( const Matrix3 & mat ) const;
+
+    // Subtract a 3x3 matrix from another 3x3 matrix
+    // 
+    VECTORMATH_FORCE_INLINE const Matrix3 operator -( const Matrix3 & mat ) const;
+
+    // Negate all elements of a 3x3 matrix
+    // 
+    VECTORMATH_FORCE_INLINE const Matrix3 operator -( ) const;
+
+    // Multiply a 3x3 matrix by a scalar
+    // 
+    VECTORMATH_FORCE_INLINE const Matrix3 operator *( float scalar ) const;
+
+    // Multiply a 3x3 matrix by a scalar (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE const Matrix3 operator *( const floatInVec &scalar ) const;
+
+    // Multiply a 3x3 matrix by a 3-D vector
+    // 
+    VECTORMATH_FORCE_INLINE const Vector3 operator *( const Vector3 &vec ) const;
+
+    // Multiply two 3x3 matrices
+    // 
+    VECTORMATH_FORCE_INLINE const Matrix3 operator *( const Matrix3 & mat ) const;
+
+    // Perform compound assignment and addition with a 3x3 matrix
+    // 
+    VECTORMATH_FORCE_INLINE Matrix3 & operator +=( const Matrix3 & mat );
+
+    // Perform compound assignment and subtraction by a 3x3 matrix
+    // 
+    VECTORMATH_FORCE_INLINE Matrix3 & operator -=( const Matrix3 & mat );
+
+    // Perform compound assignment and multiplication by a scalar
+    // 
+    VECTORMATH_FORCE_INLINE Matrix3 & operator *=( float scalar );
+
+    // Perform compound assignment and multiplication by a scalar (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE Matrix3 & operator *=( const floatInVec &scalar );
+
+    // Perform compound assignment and multiplication by a 3x3 matrix
+    // 
+    VECTORMATH_FORCE_INLINE Matrix3 & operator *=( const Matrix3 & mat );
+
+    // Construct an identity 3x3 matrix
+    // 
+    static VECTORMATH_FORCE_INLINE const Matrix3 identity( );
+
+    // Construct a 3x3 matrix to rotate around the x axis
+    // 
+    static VECTORMATH_FORCE_INLINE const Matrix3 rotationX( float radians );
+
+    // Construct a 3x3 matrix to rotate around the y axis
+    // 
+    static VECTORMATH_FORCE_INLINE const Matrix3 rotationY( float radians );
+
+    // Construct a 3x3 matrix to rotate around the z axis
+    // 
+    static VECTORMATH_FORCE_INLINE const Matrix3 rotationZ( float radians );
+
+    // Construct a 3x3 matrix to rotate around the x axis (scalar data contained in vector data type)
+    // 
+    static VECTORMATH_FORCE_INLINE const Matrix3 rotationX( const floatInVec &radians );
+
+    // Construct a 3x3 matrix to rotate around the y axis (scalar data contained in vector data type)
+    // 
+    static VECTORMATH_FORCE_INLINE const Matrix3 rotationY( const floatInVec &radians );
+
+    // Construct a 3x3 matrix to rotate around the z axis (scalar data contained in vector data type)
+    // 
+    static VECTORMATH_FORCE_INLINE const Matrix3 rotationZ( const floatInVec &radians );
+
+    // Construct a 3x3 matrix to rotate around the x, y, and z axes
+    // 
+    static VECTORMATH_FORCE_INLINE const Matrix3 rotationZYX( const Vector3 &radiansXYZ );
+
+    // Construct a 3x3 matrix to rotate around a unit-length 3-D vector
+    // 
+    static VECTORMATH_FORCE_INLINE const Matrix3 rotation( float radians, const Vector3 &unitVec );
+
+    // Construct a 3x3 matrix to rotate around a unit-length 3-D vector (scalar data contained in vector data type)
+    // 
+    static VECTORMATH_FORCE_INLINE const Matrix3 rotation( const floatInVec &radians, const Vector3 &unitVec );
+
+    // Construct a rotation matrix from a unit-length quaternion
+    // 
+    static VECTORMATH_FORCE_INLINE const Matrix3 rotation( const Quat &unitQuat );
+
+    // Construct a 3x3 matrix to perform scaling
+    // 
+    static VECTORMATH_FORCE_INLINE const Matrix3 scale( const Vector3 &scaleVec );
+
+};
+// Multiply a 3x3 matrix by a scalar
+// 
+VECTORMATH_FORCE_INLINE const Matrix3 operator *( float scalar, const Matrix3 & mat );
+
+// Multiply a 3x3 matrix by a scalar (scalar data contained in vector data type)
+// 
+VECTORMATH_FORCE_INLINE const Matrix3 operator *( const floatInVec &scalar, const Matrix3 & mat );
+
+// Append (post-multiply) a scale transformation to a 3x3 matrix
+// NOTE: 
+// Faster than creating and multiplying a scale transformation matrix.
+// 
+VECTORMATH_FORCE_INLINE const Matrix3 appendScale( const Matrix3 & mat, const Vector3 &scaleVec );
+
+// Prepend (pre-multiply) a scale transformation to a 3x3 matrix
+// NOTE: 
+// Faster than creating and multiplying a scale transformation matrix.
+// 
+VECTORMATH_FORCE_INLINE const Matrix3 prependScale( const Vector3 &scaleVec, const Matrix3 & mat );
+
+// Multiply two 3x3 matrices per element
+// 
+VECTORMATH_FORCE_INLINE const Matrix3 mulPerElem( const Matrix3 & mat0, const Matrix3 & mat1 );
+
+// Compute the absolute value of a 3x3 matrix per element
+// 
+VECTORMATH_FORCE_INLINE const Matrix3 absPerElem( const Matrix3 & mat );
+
+// Transpose of a 3x3 matrix
+// 
+VECTORMATH_FORCE_INLINE const Matrix3 transpose( const Matrix3 & mat );
+
+// Compute the inverse of a 3x3 matrix
+// NOTE: 
+// Result is unpredictable when the determinant of mat is equal to or near 0.
+// 
+VECTORMATH_FORCE_INLINE const Matrix3 inverse( const Matrix3 & mat );
+
+// Determinant of a 3x3 matrix
+// 
+VECTORMATH_FORCE_INLINE const floatInVec determinant( const Matrix3 & mat );
+
+// Conditionally select between two 3x3 matrices
+// NOTE: 
+// This function uses a conditional select instruction to avoid a branch.
+// However, the transfer of select1 to a VMX register may use more processing time than a branch.
+// Use the boolInVec version for better performance.
+// 
+VECTORMATH_FORCE_INLINE const Matrix3 select( const Matrix3 & mat0, const Matrix3 & mat1, bool select1 );
+
+// Conditionally select between two 3x3 matrices (scalar data contained in vector data type)
+// NOTE: 
+// This function uses a conditional select instruction to avoid a branch.
+// 
+VECTORMATH_FORCE_INLINE const Matrix3 select( const Matrix3 & mat0, const Matrix3 & mat1, const boolInVec &select1 );
+
+#ifdef _VECTORMATH_DEBUG
+
+// Print a 3x3 matrix
+// NOTE: 
+// Function is only defined when _VECTORMATH_DEBUG is defined.
+// 
+VECTORMATH_FORCE_INLINE void print( const Matrix3 & mat );
+
+// Print a 3x3 matrix and an associated string identifier
+// NOTE: 
+// Function is only defined when _VECTORMATH_DEBUG is defined.
+// 
+VECTORMATH_FORCE_INLINE void print( const Matrix3 & mat, const char * name );
+
+#endif
+
+// A 4x4 matrix in array-of-structures format
+//
+class Matrix4
+{
+    Vector4 mCol0;
+    Vector4 mCol1;
+    Vector4 mCol2;
+    Vector4 mCol3;
+
+public:
+    // Default constructor; does no initialization
+    // 
+    VECTORMATH_FORCE_INLINE Matrix4( ) { };
+
+    // Copy a 4x4 matrix
+    // 
+    VECTORMATH_FORCE_INLINE Matrix4( const Matrix4 & mat );
+
+    // Construct a 4x4 matrix containing the specified columns
+    // 
+    VECTORMATH_FORCE_INLINE Matrix4( const Vector4 &col0, const Vector4 &col1, const Vector4 &col2, const Vector4 &col3 );
+
+    // Construct a 4x4 matrix from a 3x4 transformation matrix
+    // 
+    explicit VECTORMATH_FORCE_INLINE Matrix4( const Transform3 & mat );
+
+    // Construct a 4x4 matrix from a 3x3 matrix and a 3-D vector
+    // 
+    VECTORMATH_FORCE_INLINE Matrix4( const Matrix3 & mat, const Vector3 &translateVec );
+
+    // Construct a 4x4 matrix from a unit-length quaternion and a 3-D vector
+    // 
+    VECTORMATH_FORCE_INLINE Matrix4( const Quat &unitQuat, const Vector3 &translateVec );
+
+    // Set all elements of a 4x4 matrix to the same scalar value
+    // 
+    explicit VECTORMATH_FORCE_INLINE Matrix4( float scalar );
+
+    // Set all elements of a 4x4 matrix to the same scalar value (scalar data contained in vector data type)
+    // 
+    explicit VECTORMATH_FORCE_INLINE Matrix4( const floatInVec &scalar );
+
+    // Assign one 4x4 matrix to another
+    // 
+    VECTORMATH_FORCE_INLINE Matrix4 & operator =( const Matrix4 & mat );
+
+    // Set the upper-left 3x3 submatrix
+    // NOTE: 
+    // This function does not change the bottom row elements.
+    // 
+    VECTORMATH_FORCE_INLINE Matrix4 & setUpper3x3( const Matrix3 & mat3 );
+
+    // Get the upper-left 3x3 submatrix of a 4x4 matrix
+    // 
+    VECTORMATH_FORCE_INLINE const Matrix3 getUpper3x3( ) const;
+
+    // Set translation component
+    // NOTE: 
+    // This function does not change the bottom row elements.
+    // 
+    VECTORMATH_FORCE_INLINE Matrix4 & setTranslation( const Vector3 &translateVec );
+
+    // Get the translation component of a 4x4 matrix
+    // 
+    VECTORMATH_FORCE_INLINE const Vector3 getTranslation( ) const;
+
+    // Set column 0 of a 4x4 matrix
+    // 
+    VECTORMATH_FORCE_INLINE Matrix4 & setCol0( const Vector4 &col0 );
+
+    // Set column 1 of a 4x4 matrix
+    // 
+    VECTORMATH_FORCE_INLINE Matrix4 & setCol1( const Vector4 &col1 );
+
+    // Set column 2 of a 4x4 matrix
+    // 
+    VECTORMATH_FORCE_INLINE Matrix4 & setCol2( const Vector4 &col2 );
+
+    // Set column 3 of a 4x4 matrix
+    // 
+    VECTORMATH_FORCE_INLINE Matrix4 & setCol3( const Vector4 &col3 );
+
+    // Get column 0 of a 4x4 matrix
+    // 
+    VECTORMATH_FORCE_INLINE const Vector4 getCol0( ) const;
+
+    // Get column 1 of a 4x4 matrix
+    // 
+    VECTORMATH_FORCE_INLINE const Vector4 getCol1( ) const;
+
+    // Get column 2 of a 4x4 matrix
+    // 
+    VECTORMATH_FORCE_INLINE const Vector4 getCol2( ) const;
+
+    // Get column 3 of a 4x4 matrix
+    // 
+    VECTORMATH_FORCE_INLINE const Vector4 getCol3( ) const;
+
+    // Set the column of a 4x4 matrix referred to by the specified index
+    // 
+    VECTORMATH_FORCE_INLINE Matrix4 & setCol( int col, const Vector4 &vec );
+
+    // Set the row of a 4x4 matrix referred to by the specified index
+    // 
+    VECTORMATH_FORCE_INLINE Matrix4 & setRow( int row, const Vector4 &vec );
+
+    // Get the column of a 4x4 matrix referred to by the specified index
+    // 
+    VECTORMATH_FORCE_INLINE const Vector4 getCol( int col ) const;
+
+    // Get the row of a 4x4 matrix referred to by the specified index
+    // 
+    VECTORMATH_FORCE_INLINE const Vector4 getRow( int row ) const;
+
+    // Subscripting operator to set or get a column
+    // 
+    VECTORMATH_FORCE_INLINE Vector4 & operator []( int col );
+
+    // Subscripting operator to get a column
+    // 
+    VECTORMATH_FORCE_INLINE const Vector4 operator []( int col ) const;
+
+    // Set the element of a 4x4 matrix referred to by column and row indices
+    // 
+    VECTORMATH_FORCE_INLINE Matrix4 & setElem( int col, int row, float val );
+
+    // Set the element of a 4x4 matrix referred to by column and row indices (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE Matrix4 & setElem( int col, int row, const floatInVec &val );
+
+    // Get the element of a 4x4 matrix referred to by column and row indices
+    // 
+    VECTORMATH_FORCE_INLINE const floatInVec getElem( int col, int row ) const;
+
+    // Add two 4x4 matrices
+    // 
+    VECTORMATH_FORCE_INLINE const Matrix4 operator +( const Matrix4 & mat ) const;
+
+    // Subtract a 4x4 matrix from another 4x4 matrix
+    // 
+    VECTORMATH_FORCE_INLINE const Matrix4 operator -( const Matrix4 & mat ) const;
+
+    // Negate all elements of a 4x4 matrix
+    // 
+    VECTORMATH_FORCE_INLINE const Matrix4 operator -( ) const;
+
+    // Multiply a 4x4 matrix by a scalar
+    // 
+    VECTORMATH_FORCE_INLINE const Matrix4 operator *( float scalar ) const;
+
+    // Multiply a 4x4 matrix by a scalar (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE const Matrix4 operator *( const floatInVec &scalar ) const;
+
+    // Multiply a 4x4 matrix by a 4-D vector
+    // 
+    VECTORMATH_FORCE_INLINE const Vector4 operator *( const Vector4 &vec ) const;
+
+    // Multiply a 4x4 matrix by a 3-D vector
+    // 
+    VECTORMATH_FORCE_INLINE const Vector4 operator *( const Vector3 &vec ) const;
+
+    // Multiply a 4x4 matrix by a 3-D point
+    // 
+    VECTORMATH_FORCE_INLINE const Vector4 operator *( const Point3 &pnt ) const;
+
+    // Multiply two 4x4 matrices
+    // 
+    VECTORMATH_FORCE_INLINE const Matrix4 operator *( const Matrix4 & mat ) const;
+
+    // Multiply a 4x4 matrix by a 3x4 transformation matrix
+    // 
+    VECTORMATH_FORCE_INLINE const Matrix4 operator *( const Transform3 & tfrm ) const;
+
+    // Perform compound assignment and addition with a 4x4 matrix
+    // 
+    VECTORMATH_FORCE_INLINE Matrix4 & operator +=( const Matrix4 & mat );
+
+    // Perform compound assignment and subtraction by a 4x4 matrix
+    // 
+    VECTORMATH_FORCE_INLINE Matrix4 & operator -=( const Matrix4 & mat );
+
+    // Perform compound assignment and multiplication by a scalar
+    // 
+    VECTORMATH_FORCE_INLINE Matrix4 & operator *=( float scalar );
+
+    // Perform compound assignment and multiplication by a scalar (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE Matrix4 & operator *=( const floatInVec &scalar );
+
+    // Perform compound assignment and multiplication by a 4x4 matrix
+    // 
+    VECTORMATH_FORCE_INLINE Matrix4 & operator *=( const Matrix4 & mat );
+
+    // Perform compound assignment and multiplication by a 3x4 transformation matrix
+    // 
+    VECTORMATH_FORCE_INLINE Matrix4 & operator *=( const Transform3 & tfrm );
+
+    // Construct an identity 4x4 matrix
+    // 
+    static VECTORMATH_FORCE_INLINE const Matrix4 identity( );
+
+    // Construct a 4x4 matrix to rotate around the x axis
+    // 
+    static VECTORMATH_FORCE_INLINE const Matrix4 rotationX( float radians );
+
+    // Construct a 4x4 matrix to rotate around the y axis
+    // 
+    static VECTORMATH_FORCE_INLINE const Matrix4 rotationY( float radians );
+
+    // Construct a 4x4 matrix to rotate around the z axis
+    // 
+    static VECTORMATH_FORCE_INLINE const Matrix4 rotationZ( float radians );
+
+    // Construct a 4x4 matrix to rotate around the x axis (scalar data contained in vector data type)
+    // 
+    static VECTORMATH_FORCE_INLINE const Matrix4 rotationX( const floatInVec &radians );
+
+    // Construct a 4x4 matrix to rotate around the y axis (scalar data contained in vector data type)
+    // 
+    static VECTORMATH_FORCE_INLINE const Matrix4 rotationY( const floatInVec &radians );
+
+    // Construct a 4x4 matrix to rotate around the z axis (scalar data contained in vector data type)
+    // 
+    static VECTORMATH_FORCE_INLINE const Matrix4 rotationZ( const floatInVec &radians );
+
+    // Construct a 4x4 matrix to rotate around the x, y, and z axes
+    // 
+    static VECTORMATH_FORCE_INLINE const Matrix4 rotationZYX( const Vector3 &radiansXYZ );
+
+    // Construct a 4x4 matrix to rotate around a unit-length 3-D vector
+    // 
+    static VECTORMATH_FORCE_INLINE const Matrix4 rotation( float radians, const Vector3 &unitVec );
+
+    // Construct a 4x4 matrix to rotate around a unit-length 3-D vector (scalar data contained in vector data type)
+    // 
+    static VECTORMATH_FORCE_INLINE const Matrix4 rotation( const floatInVec &radians, const Vector3 &unitVec );
+
+    // Construct a rotation matrix from a unit-length quaternion
+    // 
+    static VECTORMATH_FORCE_INLINE const Matrix4 rotation( const Quat &unitQuat );
+
+    // Construct a 4x4 matrix to perform scaling
+    // 
+    static VECTORMATH_FORCE_INLINE const Matrix4 scale( const Vector3 &scaleVec );
+
+    // Construct a 4x4 matrix to perform translation
+    // 
+    static VECTORMATH_FORCE_INLINE const Matrix4 translation( const Vector3 &translateVec );
+
+    // Construct viewing matrix based on eye, position looked at, and up direction
+    // 
+    static VECTORMATH_FORCE_INLINE const Matrix4 lookAt( const Point3 &eyePos, const Point3 &lookAtPos, const Vector3 &upVec );
+
+    // Construct a perspective projection matrix
+    // 
+    static VECTORMATH_FORCE_INLINE const Matrix4 perspective( float fovyRadians, float aspect, float zNear, float zFar );
+
+    // Construct a perspective projection matrix based on frustum
+    // 
+    static VECTORMATH_FORCE_INLINE const Matrix4 frustum( float left, float right, float bottom, float top, float zNear, float zFar );
+
+    // Construct an orthographic projection matrix
+    // 
+    static VECTORMATH_FORCE_INLINE const Matrix4 orthographic( float left, float right, float bottom, float top, float zNear, float zFar );
+
+};
+// Multiply a 4x4 matrix by a scalar
+// 
+VECTORMATH_FORCE_INLINE const Matrix4 operator *( float scalar, const Matrix4 & mat );
+
+// Multiply a 4x4 matrix by a scalar (scalar data contained in vector data type)
+// 
+VECTORMATH_FORCE_INLINE const Matrix4 operator *( const floatInVec &scalar, const Matrix4 & mat );
+
+// Append (post-multiply) a scale transformation to a 4x4 matrix
+// NOTE: 
+// Faster than creating and multiplying a scale transformation matrix.
+// 
+VECTORMATH_FORCE_INLINE const Matrix4 appendScale( const Matrix4 & mat, const Vector3 &scaleVec );
+
+// Prepend (pre-multiply) a scale transformation to a 4x4 matrix
+// NOTE: 
+// Faster than creating and multiplying a scale transformation matrix.
+// 
+VECTORMATH_FORCE_INLINE const Matrix4 prependScale( const Vector3 &scaleVec, const Matrix4 & mat );
+
+// Multiply two 4x4 matrices per element
+// 
+VECTORMATH_FORCE_INLINE const Matrix4 mulPerElem( const Matrix4 & mat0, const Matrix4 & mat1 );
+
+// Compute the absolute value of a 4x4 matrix per element
+// 
+VECTORMATH_FORCE_INLINE const Matrix4 absPerElem( const Matrix4 & mat );
+
+// Transpose of a 4x4 matrix
+// 
+VECTORMATH_FORCE_INLINE const Matrix4 transpose( const Matrix4 & mat );
+
+// Compute the inverse of a 4x4 matrix
+// NOTE: 
+// Result is unpredictable when the determinant of mat is equal to or near 0.
+// 
+VECTORMATH_FORCE_INLINE const Matrix4 inverse( const Matrix4 & mat );
+
+// Compute the inverse of a 4x4 matrix, which is expected to be an affine matrix
+// NOTE: 
+// This can be used to achieve better performance than a general inverse when the specified 4x4 matrix meets the given restrictions.  The result is unpredictable when the determinant of mat is equal to or near 0.
+// 
+VECTORMATH_FORCE_INLINE const Matrix4 affineInverse( const Matrix4 & mat );
+
+// Compute the inverse of a 4x4 matrix, which is expected to be an affine matrix with an orthogonal upper-left 3x3 submatrix
+// NOTE: 
+// This can be used to achieve better performance than a general inverse when the specified 4x4 matrix meets the given restrictions.
+// 
+VECTORMATH_FORCE_INLINE const Matrix4 orthoInverse( const Matrix4 & mat );
+
+// Determinant of a 4x4 matrix
+// 
+VECTORMATH_FORCE_INLINE const floatInVec determinant( const Matrix4 & mat );
+
+// Conditionally select between two 4x4 matrices
+// NOTE: 
+// This function uses a conditional select instruction to avoid a branch.
+// However, the transfer of select1 to a VMX register may use more processing time than a branch.
+// Use the boolInVec version for better performance.
+// 
+VECTORMATH_FORCE_INLINE const Matrix4 select( const Matrix4 & mat0, const Matrix4 & mat1, bool select1 );
+
+// Conditionally select between two 4x4 matrices (scalar data contained in vector data type)
+// NOTE: 
+// This function uses a conditional select instruction to avoid a branch.
+// 
+VECTORMATH_FORCE_INLINE const Matrix4 select( const Matrix4 & mat0, const Matrix4 & mat1, const boolInVec &select1 );
+
+#ifdef _VECTORMATH_DEBUG
+
+// Print a 4x4 matrix
+// NOTE: 
+// Function is only defined when _VECTORMATH_DEBUG is defined.
+// 
+VECTORMATH_FORCE_INLINE void print( const Matrix4 & mat );
+
+// Print a 4x4 matrix and an associated string identifier
+// NOTE: 
+// Function is only defined when _VECTORMATH_DEBUG is defined.
+// 
+VECTORMATH_FORCE_INLINE void print( const Matrix4 & mat, const char * name );
+
+#endif
+
+// A 3x4 transformation matrix in array-of-structures format
+//
+class Transform3
+{
+    Vector3 mCol0;
+    Vector3 mCol1;
+    Vector3 mCol2;
+    Vector3 mCol3;
+
+public:
+    // Default constructor; does no initialization
+    // 
+    VECTORMATH_FORCE_INLINE Transform3( ) { };
+
+    // Copy a 3x4 transformation matrix
+    // 
+    VECTORMATH_FORCE_INLINE Transform3( const Transform3 & tfrm );
+
+    // Construct a 3x4 transformation matrix containing the specified columns
+    // 
+    VECTORMATH_FORCE_INLINE Transform3( const Vector3 &col0, const Vector3 &col1, const Vector3 &col2, const Vector3 &col3 );
+
+    // Construct a 3x4 transformation matrix from a 3x3 matrix and a 3-D vector
+    // 
+    VECTORMATH_FORCE_INLINE Transform3( const Matrix3 & tfrm, const Vector3 &translateVec );
+
+    // Construct a 3x4 transformation matrix from a unit-length quaternion and a 3-D vector
+    // 
+    VECTORMATH_FORCE_INLINE Transform3( const Quat &unitQuat, const Vector3 &translateVec );
+
+    // Set all elements of a 3x4 transformation matrix to the same scalar value
+    // 
+    explicit VECTORMATH_FORCE_INLINE Transform3( float scalar );
+
+    // Set all elements of a 3x4 transformation matrix to the same scalar value (scalar data contained in vector data type)
+    // 
+    explicit VECTORMATH_FORCE_INLINE Transform3( const floatInVec &scalar );
+
+    // Assign one 3x4 transformation matrix to another
+    // 
+    VECTORMATH_FORCE_INLINE Transform3 & operator =( const Transform3 & tfrm );
+
+    // Set the upper-left 3x3 submatrix
+    // 
+    VECTORMATH_FORCE_INLINE Transform3 & setUpper3x3( const Matrix3 & mat3 );
+
+    // Get the upper-left 3x3 submatrix of a 3x4 transformation matrix
+    // 
+    VECTORMATH_FORCE_INLINE const Matrix3 getUpper3x3( ) const;
+
+    // Set translation component
+    // 
+    VECTORMATH_FORCE_INLINE Transform3 & setTranslation( const Vector3 &translateVec );
+
+    // Get the translation component of a 3x4 transformation matrix
+    // 
+    VECTORMATH_FORCE_INLINE const Vector3 getTranslation( ) const;
+
+    // Set column 0 of a 3x4 transformation matrix
+    // 
+    VECTORMATH_FORCE_INLINE Transform3 & setCol0( const Vector3 &col0 );
+
+    // Set column 1 of a 3x4 transformation matrix
+    // 
+    VECTORMATH_FORCE_INLINE Transform3 & setCol1( const Vector3 &col1 );
+
+    // Set column 2 of a 3x4 transformation matrix
+    // 
+    VECTORMATH_FORCE_INLINE Transform3 & setCol2( const Vector3 &col2 );
+
+    // Set column 3 of a 3x4 transformation matrix
+    // 
+    VECTORMATH_FORCE_INLINE Transform3 & setCol3( const Vector3 &col3 );
+
+    // Get column 0 of a 3x4 transformation matrix
+    // 
+    VECTORMATH_FORCE_INLINE const Vector3 getCol0( ) const;
+
+    // Get column 1 of a 3x4 transformation matrix
+    // 
+    VECTORMATH_FORCE_INLINE const Vector3 getCol1( ) const;
+
+    // Get column 2 of a 3x4 transformation matrix
+    // 
+    VECTORMATH_FORCE_INLINE const Vector3 getCol2( ) const;
+
+    // Get column 3 of a 3x4 transformation matrix
+    // 
+    VECTORMATH_FORCE_INLINE const Vector3 getCol3( ) const;
+
+    // Set the column of a 3x4 transformation matrix referred to by the specified index
+    // 
+    VECTORMATH_FORCE_INLINE Transform3 & setCol( int col, const Vector3 &vec );
+
+    // Set the row of a 3x4 transformation matrix referred to by the specified index
+    // 
+    VECTORMATH_FORCE_INLINE Transform3 & setRow( int row, const Vector4 &vec );
+
+    // Get the column of a 3x4 transformation matrix referred to by the specified index
+    // 
+    VECTORMATH_FORCE_INLINE const Vector3 getCol( int col ) const;
+
+    // Get the row of a 3x4 transformation matrix referred to by the specified index
+    // 
+    VECTORMATH_FORCE_INLINE const Vector4 getRow( int row ) const;
+
+    // Subscripting operator to set or get a column
+    // 
+    VECTORMATH_FORCE_INLINE Vector3 & operator []( int col );
+
+    // Subscripting operator to get a column
+    // 
+    VECTORMATH_FORCE_INLINE const Vector3 operator []( int col ) const;
+
+    // Set the element of a 3x4 transformation matrix referred to by column and row indices
+    // 
+    VECTORMATH_FORCE_INLINE Transform3 & setElem( int col, int row, float val );
+
+    // Set the element of a 3x4 transformation matrix referred to by column and row indices (scalar data contained in vector data type)
+    // 
+    VECTORMATH_FORCE_INLINE Transform3 & setElem( int col, int row, const floatInVec &val );
+
+    // Get the element of a 3x4 transformation matrix referred to by column and row indices
+    // 
+    VECTORMATH_FORCE_INLINE const floatInVec getElem( int col, int row ) const;
+
+    // Multiply a 3x4 transformation matrix by a 3-D vector
+    // 
+    VECTORMATH_FORCE_INLINE const Vector3 operator *( const Vector3 &vec ) const;
+
+    // Multiply a 3x4 transformation matrix by a 3-D point
+    // 
+    VECTORMATH_FORCE_INLINE const Point3 operator *( const Point3 &pnt ) const;
+
+    // Multiply two 3x4 transformation matrices
+    // 
+    VECTORMATH_FORCE_INLINE const Transform3 operator *( const Transform3 & tfrm ) const;
+
+    // Perform compound assignment and multiplication by a 3x4 transformation matrix
+    // 
+    VECTORMATH_FORCE_INLINE Transform3 & operator *=( const Transform3 & tfrm );
+
+    // Construct an identity 3x4 transformation matrix
+    // 
+    static VECTORMATH_FORCE_INLINE const Transform3 identity( );
+
+    // Construct a 3x4 transformation matrix to rotate around the x axis
+    // 
+    static VECTORMATH_FORCE_INLINE const Transform3 rotationX( float radians );
+
+    // Construct a 3x4 transformation matrix to rotate around the y axis
+    // 
+    static VECTORMATH_FORCE_INLINE const Transform3 rotationY( float radians );
+
+    // Construct a 3x4 transformation matrix to rotate around the z axis
+    // 
+    static VECTORMATH_FORCE_INLINE const Transform3 rotationZ( float radians );
+
+    // Construct a 3x4 transformation matrix to rotate around the x axis (scalar data contained in vector data type)
+    // 
+    static VECTORMATH_FORCE_INLINE const Transform3 rotationX( const floatInVec &radians );
+
+    // Construct a 3x4 transformation matrix to rotate around the y axis (scalar data contained in vector data type)
+    // 
+    static VECTORMATH_FORCE_INLINE const Transform3 rotationY( const floatInVec &radians );
+
+    // Construct a 3x4 transformation matrix to rotate around the z axis (scalar data contained in vector data type)
+    // 
+    static VECTORMATH_FORCE_INLINE const Transform3 rotationZ( const floatInVec &radians );
+
+    // Construct a 3x4 transformation matrix to rotate around the x, y, and z axes
+    // 
+    static VECTORMATH_FORCE_INLINE const Transform3 rotationZYX( const Vector3 &radiansXYZ );
+
+    // Construct a 3x4 transformation matrix to rotate around a unit-length 3-D vector
+    // 
+    static VECTORMATH_FORCE_INLINE const Transform3 rotation( float radians, const Vector3 &unitVec );
+
+    // Construct a 3x4 transformation matrix to rotate around a unit-length 3-D vector (scalar data contained in vector data type)
+    // 
+    static VECTORMATH_FORCE_INLINE const Transform3 rotation( const floatInVec &radians, const Vector3 &unitVec );
+
+    // Construct a rotation matrix from a unit-length quaternion
+    // 
+    static VECTORMATH_FORCE_INLINE const Transform3 rotation( const Quat &unitQuat );
+
+    // Construct a 3x4 transformation matrix to perform scaling
+    // 
+    static VECTORMATH_FORCE_INLINE const Transform3 scale( const Vector3 &scaleVec );
+
+    // Construct a 3x4 transformation matrix to perform translation
+    // 
+    static VECTORMATH_FORCE_INLINE const Transform3 translation( const Vector3 &translateVec );
+
+};
+// Append (post-multiply) a scale transformation to a 3x4 transformation matrix
+// NOTE: 
+// Faster than creating and multiplying a scale transformation matrix.
+// 
+VECTORMATH_FORCE_INLINE const Transform3 appendScale( const Transform3 & tfrm, const Vector3 &scaleVec );
+
+// Prepend (pre-multiply) a scale transformation to a 3x4 transformation matrix
+// NOTE: 
+// Faster than creating and multiplying a scale transformation matrix.
+// 
+VECTORMATH_FORCE_INLINE const Transform3 prependScale( const Vector3 &scaleVec, const Transform3 & tfrm );
+
+// Multiply two 3x4 transformation matrices per element
+// 
+VECTORMATH_FORCE_INLINE const Transform3 mulPerElem( const Transform3 & tfrm0, const Transform3 & tfrm1 );
+
+// Compute the absolute value of a 3x4 transformation matrix per element
+// 
+VECTORMATH_FORCE_INLINE const Transform3 absPerElem( const Transform3 & tfrm );
+
+// Inverse of a 3x4 transformation matrix
+// NOTE: 
+// Result is unpredictable when the determinant of the left 3x3 submatrix is equal to or near 0.
+// 
+VECTORMATH_FORCE_INLINE const Transform3 inverse( const Transform3 & tfrm );
+
+// Compute the inverse of a 3x4 transformation matrix, expected to have an orthogonal upper-left 3x3 submatrix
+// NOTE: 
+// This can be used to achieve better performance than a general inverse when the specified 3x4 transformation matrix meets the given restrictions.
+// 
+VECTORMATH_FORCE_INLINE const Transform3 orthoInverse( const Transform3 & tfrm );
+
+// Conditionally select between two 3x4 transformation matrices
+// NOTE: 
+// This function uses a conditional select instruction to avoid a branch.
+// However, the transfer of select1 to a VMX register may use more processing time than a branch.
+// Use the boolInVec version for better performance.
+// 
+VECTORMATH_FORCE_INLINE const Transform3 select( const Transform3 & tfrm0, const Transform3 & tfrm1, bool select1 );
+
+// Conditionally select between two 3x4 transformation matrices (scalar data contained in vector data type)
+// NOTE: 
+// This function uses a conditional select instruction to avoid a branch.
+// 
+VECTORMATH_FORCE_INLINE const Transform3 select( const Transform3 & tfrm0, const Transform3 & tfrm1, const boolInVec &select1 );
+
+#ifdef _VECTORMATH_DEBUG
+
+// Print a 3x4 transformation matrix
+// NOTE: 
+// Function is only defined when _VECTORMATH_DEBUG is defined.
+// 
+VECTORMATH_FORCE_INLINE void print( const Transform3 & tfrm );
+
+// Print a 3x4 transformation matrix and an associated string identifier
+// NOTE: 
+// Function is only defined when _VECTORMATH_DEBUG is defined.
+// 
+VECTORMATH_FORCE_INLINE void print( const Transform3 & tfrm, const char * name );
+
+#endif
+
+} // namespace Aos
+} // namespace Vectormath
+
+#include "vec_aos.h"
+#include "quat_aos.h"
+#include "mat_aos.h"
+
+#endif
+ bullet/vectormath/vmInclude.h view
@@ -0,0 +1,27 @@+
+#ifndef __VM_INCLUDE_H
+#define __VM_INCLUDE_H
+
+#include "LinearMath/btScalar.h"
+
+#if defined (USE_SYSTEM_VECTORMATH) || defined (__CELLOS_LV2__)
+	#include <vectormath_aos.h>
+#else //(USE_SYSTEM_VECTORMATH)
+	#if defined (BT_USE_SSE) && defined (_WIN32)
+		#include "sse/vectormath_aos.h"
+	#else //all other platforms
+		#include "scalar/vectormath_aos.h"
+	#endif //(BT_USE_SSE) && defined (_WIN32)
+#endif //(USE_SYSTEM_VECTORMATH)
+
+
+
+typedef Vectormath::Aos::Vector3    vmVector3;
+typedef Vectormath::Aos::Quat       vmQuat;
+typedef Vectormath::Aos::Matrix3    vmMatrix3;
+typedef Vectormath::Aos::Transform3 vmTransform3;
+typedef Vectormath::Aos::Point3     vmPoint3;
+
+#endif //__VM_INCLUDE_H
+
+
+ cbits/Bullet.cpp view
@@ -0,0 +1,24611 @@+#include "Bullet.h"+#include "HaskellBulletAPI.h"+#include "LinearMath/btAlignedAllocator.h"+// ::btGLDebugDrawer+//constructor: btGLDebugDrawer  ( ::btGLDebugDrawer::* )(  ) +void* btGLDebugDrawer_new() {+	::btGLDebugDrawer *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btGLDebugDrawer),16);+	o = new (mem)::btGLDebugDrawer();+	return (void*)o;+}+void btGLDebugDrawer_free(void *c) {+	::btGLDebugDrawer *o = (::btGLDebugDrawer*)c;+	delete o;+}+//method: draw3dText void ( ::btGLDebugDrawer::* )( ::btVector3 const &,char const * ) +void btGLDebugDrawer_draw3dText(void *c,float* p0,char const * p1) {+	::btGLDebugDrawer *o = (::btGLDebugDrawer*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->draw3dText(tp0,p1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: drawTriangle void ( ::btGLDebugDrawer::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btScalar ) +void btGLDebugDrawer_drawTriangle(void *c,float* p0,float* p1,float* p2,float* p3,float p4) {+	::btGLDebugDrawer *o = (::btGLDebugDrawer*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	o->drawTriangle(tp0,tp1,tp2,tp3,p4);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+}+//method: drawBox void ( ::btGLDebugDrawer::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btScalar ) +void btGLDebugDrawer_drawBox(void *c,float* p0,float* p1,float* p2,float p3) {+	::btGLDebugDrawer *o = (::btGLDebugDrawer*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->drawBox(tp0,tp1,tp2,p3);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: drawContactPoint void ( ::btGLDebugDrawer::* )( ::btVector3 const &,::btVector3 const &,::btScalar,int,::btVector3 const & ) +void btGLDebugDrawer_drawContactPoint(void *c,float* p0,float* p1,float p2,int p3,float* p4) {+	::btGLDebugDrawer *o = (::btGLDebugDrawer*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp4(p4[0],p4[1],p4[2]);+	o->drawContactPoint(tp0,tp1,p2,p3,tp4);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p4[0]=tp4.m_floats[0];p4[1]=tp4.m_floats[1];p4[2]=tp4.m_floats[2];+}+//method: drawLine void ( ::btGLDebugDrawer::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void btGLDebugDrawer_drawLine(void *c,float* p0,float* p1,float* p2,float* p3) {+	::btGLDebugDrawer *o = (::btGLDebugDrawer*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	o->drawLine(tp0,tp1,tp2,tp3);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+}+//method: drawLine void ( ::btGLDebugDrawer::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void btGLDebugDrawer_drawLine0(void *c,float* p0,float* p1,float* p2,float* p3) {+	::btGLDebugDrawer *o = (::btGLDebugDrawer*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	o->drawLine(tp0,tp1,tp2,tp3);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+}+//method: drawLine void ( ::btGLDebugDrawer::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void btGLDebugDrawer_drawLine1(void *c,float* p0,float* p1,float* p2) {+	::btGLDebugDrawer *o = (::btGLDebugDrawer*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->drawLine(tp0,tp1,tp2);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: reportErrorWarning void ( ::btGLDebugDrawer::* )( char const * ) +void btGLDebugDrawer_reportErrorWarning(void *c,char const * p0) {+	::btGLDebugDrawer *o = (::btGLDebugDrawer*)c;+	o->reportErrorWarning(p0);+}+//method: getDebugMode int ( ::btGLDebugDrawer::* )(  ) const+int btGLDebugDrawer_getDebugMode(void *c) {+	::btGLDebugDrawer *o = (::btGLDebugDrawer*)c;+	int retVal = (int)o->getDebugMode();+	return retVal;+}+//method: setDebugMode void ( ::btGLDebugDrawer::* )( int ) +void btGLDebugDrawer_setDebugMode(void *c,int p0) {+	::btGLDebugDrawer *o = (::btGLDebugDrawer*)c;+	o->setDebugMode(p0);+}+//method: drawSphere void ( ::btGLDebugDrawer::* )( ::btVector3 const &,::btScalar,::btVector3 const & ) +void btGLDebugDrawer_drawSphere(void *c,float* p0,float p1,float* p2) {+	::btGLDebugDrawer *o = (::btGLDebugDrawer*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->drawSphere(tp0,p1,tp2);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}++// ::btSoftBody::AJoint+//constructor: AJoint  ( ::btSoftBody::AJoint::* )(  ) +void* btSoftBody_AJoint_new() {+	::btSoftBody::AJoint *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::AJoint),16);+	o = new (mem)::btSoftBody::AJoint();+	return (void*)o;+}+void btSoftBody_AJoint_free(void *c) {+	::btSoftBody::AJoint *o = (::btSoftBody::AJoint*)c;+	delete o;+}+//method: Terminate void ( ::btSoftBody::AJoint::* )( ::btScalar ) +void btSoftBody_AJoint_Terminate(void *c,float p0) {+	::btSoftBody::AJoint *o = (::btSoftBody::AJoint*)c;+	o->Terminate(p0);+}+//not supported method: Type ::btSoftBody::Joint::eType::_ ( ::btSoftBody::AJoint::* )(  ) const+//method: Solve void ( ::btSoftBody::AJoint::* )( ::btScalar,::btScalar ) +void btSoftBody_AJoint_Solve(void *c,float p0,float p1) {+	::btSoftBody::AJoint *o = (::btSoftBody::AJoint*)c;+	o->Solve(p0,p1);+}+//method: Prepare void ( ::btSoftBody::AJoint::* )( ::btScalar,int ) +void btSoftBody_AJoint_Prepare(void *c,float p0,int p1) {+	::btSoftBody::AJoint *o = (::btSoftBody::AJoint*)c;+	o->Prepare(p0,p1);+}+//attribute: ::btVector3[2] btSoftBody_AJoint->m_axis+// attribute not supported: //attribute: ::btVector3[2] btSoftBody_AJoint->m_axis+//attribute: ::btSoftBody::AJoint::IControl * btSoftBody_AJoint->m_icontrol+void btSoftBody_AJoint_m_icontrol_set(void *c,void* a) {+	::btSoftBody::AJoint *o = (::btSoftBody::AJoint*)c;+	::btSoftBody::AJoint::IControl * ta = (::btSoftBody::AJoint::IControl *)a;+	o->m_icontrol = ta;+}+// attriibute getter not supported: //attribute: ::btSoftBody::AJoint::IControl * btSoftBody_AJoint->m_icontrol++// ::btSoftBody::Anchor+//constructor: Anchor  ( ::btSoftBody::Anchor::* )(  ) +void* btSoftBody_Anchor_new() {+	::btSoftBody::Anchor *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::Anchor),16);+	o = new (mem)::btSoftBody::Anchor();+	return (void*)o;+}+void btSoftBody_Anchor_free(void *c) {+	::btSoftBody::Anchor *o = (::btSoftBody::Anchor*)c;+	delete o;+}+//attribute: ::btSoftBody::Node * btSoftBody_Anchor->m_node+void btSoftBody_Anchor_m_node_set(void *c,void* a) {+	::btSoftBody::Anchor *o = (::btSoftBody::Anchor*)c;+	::btSoftBody::Node * ta = (::btSoftBody::Node *)a;+	o->m_node = ta;+}+// attriibute getter not supported: //attribute: ::btSoftBody::Node * btSoftBody_Anchor->m_node+//attribute: ::btVector3 btSoftBody_Anchor->m_local+void btSoftBody_Anchor_m_local_set(void *c,float* a) {+	::btSoftBody::Anchor *o = (::btSoftBody::Anchor*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_local = ta;+}+void btSoftBody_Anchor_m_local_get(void *c,float* a) {+	::btSoftBody::Anchor *o = (::btSoftBody::Anchor*)c;+	a[0]=(o->m_local).m_floats[0];a[1]=(o->m_local).m_floats[1];a[2]=(o->m_local).m_floats[2];+}++//attribute: ::btRigidBody * btSoftBody_Anchor->m_body+void btSoftBody_Anchor_m_body_set(void *c,void* a) {+	::btSoftBody::Anchor *o = (::btSoftBody::Anchor*)c;+	::btRigidBody * ta = (::btRigidBody *)a;+	o->m_body = ta;+}+// attriibute getter not supported: //attribute: ::btRigidBody * btSoftBody_Anchor->m_body+//attribute: ::btScalar btSoftBody_Anchor->m_influence+void btSoftBody_Anchor_m_influence_set(void *c,float a) {+	::btSoftBody::Anchor *o = (::btSoftBody::Anchor*)c;+	o->m_influence = a;+}+float btSoftBody_Anchor_m_influence_get(void *c) {+	::btSoftBody::Anchor *o = (::btSoftBody::Anchor*)c;+	return (float)(o->m_influence);+}++//attribute: ::btMatrix3x3 btSoftBody_Anchor->m_c0+void btSoftBody_Anchor_m_c0_set(void *c,float* a) {+	::btSoftBody::Anchor *o = (::btSoftBody::Anchor*)c;+	btMatrix3x3 ta(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]);+	o->m_c0 = ta;+}+void btSoftBody_Anchor_m_c0_get(void *c,float* a) {+	::btSoftBody::Anchor *o = (::btSoftBody::Anchor*)c;+	a[0]=(o->m_c0).getRow(0).m_floats[0];a[1]=(o->m_c0).getRow(0).m_floats[1];a[2]=(o->m_c0).getRow(0).m_floats[2];a[3]=(o->m_c0).getRow(1).m_floats[0];a[4]=(o->m_c0).getRow(1).m_floats[1];a[5]=(o->m_c0).getRow(1).m_floats[2];a[6]=(o->m_c0).getRow(2).m_floats[0];a[7]=(o->m_c0).getRow(2).m_floats[1];a[8]=(o->m_c0).getRow(2).m_floats[2];+}++//attribute: ::btVector3 btSoftBody_Anchor->m_c1+void btSoftBody_Anchor_m_c1_set(void *c,float* a) {+	::btSoftBody::Anchor *o = (::btSoftBody::Anchor*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_c1 = ta;+}+void btSoftBody_Anchor_m_c1_get(void *c,float* a) {+	::btSoftBody::Anchor *o = (::btSoftBody::Anchor*)c;+	a[0]=(o->m_c1).m_floats[0];a[1]=(o->m_c1).m_floats[1];a[2]=(o->m_c1).m_floats[2];+}++//attribute: ::btScalar btSoftBody_Anchor->m_c2+void btSoftBody_Anchor_m_c2_set(void *c,float a) {+	::btSoftBody::Anchor *o = (::btSoftBody::Anchor*)c;+	o->m_c2 = a;+}+float btSoftBody_Anchor_m_c2_get(void *c) {+	::btSoftBody::Anchor *o = (::btSoftBody::Anchor*)c;+	return (float)(o->m_c2);+}+++// ::btSoftBody::Body+//constructor: Body  ( ::btSoftBody::Body::* )(  ) +void* btSoftBody_Body_new0() {+	::btSoftBody::Body *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::Body),16);+	o = new (mem)::btSoftBody::Body();+	return (void*)o;+}+//constructor: Body  ( ::btSoftBody::Body::* )( ::btSoftBody::Cluster * ) +void* btSoftBody_Body_new1(void* p0) {+	::btSoftBody::Body *o = 0;+	 void *mem = 0;+	::btSoftBody::Cluster * tp0 = (::btSoftBody::Cluster *)p0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::Body),16);+	o = new (mem)::btSoftBody::Body(tp0);+	return (void*)o;+}+//constructor: Body  ( ::btSoftBody::Body::* )( ::btCollisionObject * ) +void* btSoftBody_Body_new2(void* p0) {+	::btSoftBody::Body *o = 0;+	 void *mem = 0;+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::Body),16);+	o = new (mem)::btSoftBody::Body(tp0);+	return (void*)o;+}+void btSoftBody_Body_free(void *c) {+	::btSoftBody::Body *o = (::btSoftBody::Body*)c;+	delete o;+}+//method: invWorldInertia ::btMatrix3x3 const & ( ::btSoftBody::Body::* )(  ) const+void btSoftBody_Body_invWorldInertia(void *c,float* ret) {+	::btSoftBody::Body *o = (::btSoftBody::Body*)c;+	btMatrix3x3 tret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	tret = o->invWorldInertia();+	ret[0]=tret.getRow(0).m_floats[0];ret[1]=tret.getRow(0).m_floats[1];ret[2]=tret.getRow(0).m_floats[2];ret[3]=tret.getRow(1).m_floats[0];ret[4]=tret.getRow(1).m_floats[1];ret[5]=tret.getRow(1).m_floats[2];ret[6]=tret.getRow(2).m_floats[0];ret[7]=tret.getRow(2).m_floats[1];ret[8]=tret.getRow(2).m_floats[2];+}+//method: activate void ( ::btSoftBody::Body::* )(  ) const+void btSoftBody_Body_activate(void *c) {+	::btSoftBody::Body *o = (::btSoftBody::Body*)c;+	o->activate();+}+//method: linearVelocity ::btVector3 ( ::btSoftBody::Body::* )(  ) const+void btSoftBody_Body_linearVelocity(void *c,float* ret) {+	::btSoftBody::Body *o = (::btSoftBody::Body*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->linearVelocity();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: applyVImpulse void ( ::btSoftBody::Body::* )( ::btVector3 const &,::btVector3 const & ) const+void btSoftBody_Body_applyVImpulse(void *c,float* p0,float* p1) {+	::btSoftBody::Body *o = (::btSoftBody::Body*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->applyVImpulse(tp0,tp1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: applyDImpulse void ( ::btSoftBody::Body::* )( ::btVector3 const &,::btVector3 const & ) const+void btSoftBody_Body_applyDImpulse(void *c,float* p0,float* p1) {+	::btSoftBody::Body *o = (::btSoftBody::Body*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->applyDImpulse(tp0,tp1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: applyDCImpulse void ( ::btSoftBody::Body::* )( ::btVector3 const & ) const+void btSoftBody_Body_applyDCImpulse(void *c,float* p0) {+	::btSoftBody::Body *o = (::btSoftBody::Body*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->applyDCImpulse(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: applyAImpulse void ( ::btSoftBody::Body::* )( ::btSoftBody::Impulse const & ) const+void btSoftBody_Body_applyAImpulse(void *c,void* p0) {+	::btSoftBody::Body *o = (::btSoftBody::Body*)c;+	::btSoftBody::Impulse const & tp0 = *(::btSoftBody::Impulse const *)p0;+	o->applyAImpulse(tp0);+}+//method: angularVelocity ::btVector3 ( ::btSoftBody::Body::* )( ::btVector3 const & ) const+void btSoftBody_Body_angularVelocity(void *c,float* p0,float* ret) {+	::btSoftBody::Body *o = (::btSoftBody::Body*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->angularVelocity(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: angularVelocity ::btVector3 ( ::btSoftBody::Body::* )( ::btVector3 const & ) const+void btSoftBody_Body_angularVelocity0(void *c,float* p0,float* ret) {+	::btSoftBody::Body *o = (::btSoftBody::Body*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->angularVelocity(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: angularVelocity ::btVector3 ( ::btSoftBody::Body::* )(  ) const+void btSoftBody_Body_angularVelocity1(void *c,float* ret) {+	::btSoftBody::Body *o = (::btSoftBody::Body*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->angularVelocity();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: applyVAImpulse void ( ::btSoftBody::Body::* )( ::btVector3 const & ) const+void btSoftBody_Body_applyVAImpulse(void *c,float* p0) {+	::btSoftBody::Body *o = (::btSoftBody::Body*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->applyVAImpulse(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: applyImpulse void ( ::btSoftBody::Body::* )( ::btSoftBody::Impulse const &,::btVector3 const & ) const+void btSoftBody_Body_applyImpulse(void *c,void* p0,float* p1) {+	::btSoftBody::Body *o = (::btSoftBody::Body*)c;+	::btSoftBody::Impulse const & tp0 = *(::btSoftBody::Impulse const *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->applyImpulse(tp0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: applyDAImpulse void ( ::btSoftBody::Body::* )( ::btVector3 const & ) const+void btSoftBody_Body_applyDAImpulse(void *c,float* p0) {+	::btSoftBody::Body *o = (::btSoftBody::Body*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->applyDAImpulse(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: velocity ::btVector3 ( ::btSoftBody::Body::* )( ::btVector3 const & ) const+void btSoftBody_Body_velocity(void *c,float* p0,float* ret) {+	::btSoftBody::Body *o = (::btSoftBody::Body*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->velocity(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: invMass ::btScalar ( ::btSoftBody::Body::* )(  ) const+float btSoftBody_Body_invMass(void *c) {+	::btSoftBody::Body *o = (::btSoftBody::Body*)c;+	float retVal = (float)o->invMass();+	return retVal;+}+//method: xform ::btTransform const & ( ::btSoftBody::Body::* )(  ) const+void btSoftBody_Body_xform(void *c,float* ret) {+	::btSoftBody::Body *o = (::btSoftBody::Body*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->xform();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//attribute: ::btSoftBody::Cluster * btSoftBody_Body->m_soft+void btSoftBody_Body_m_soft_set(void *c,void* a) {+	::btSoftBody::Body *o = (::btSoftBody::Body*)c;+	::btSoftBody::Cluster * ta = (::btSoftBody::Cluster *)a;+	o->m_soft = ta;+}+// attriibute getter not supported: //attribute: ::btSoftBody::Cluster * btSoftBody_Body->m_soft+//attribute: ::btRigidBody * btSoftBody_Body->m_rigid+void btSoftBody_Body_m_rigid_set(void *c,void* a) {+	::btSoftBody::Body *o = (::btSoftBody::Body*)c;+	::btRigidBody * ta = (::btRigidBody *)a;+	o->m_rigid = ta;+}+// attriibute getter not supported: //attribute: ::btRigidBody * btSoftBody_Body->m_rigid+//attribute: ::btCollisionObject * btSoftBody_Body->m_collisionObject+void btSoftBody_Body_m_collisionObject_set(void *c,void* a) {+	::btSoftBody::Body *o = (::btSoftBody::Body*)c;+	::btCollisionObject * ta = (::btCollisionObject *)a;+	o->m_collisionObject = ta;+}+// attriibute getter not supported: //attribute: ::btCollisionObject * btSoftBody_Body->m_collisionObject++// ::btSoftBody::CJoint+//constructor: CJoint  ( ::btSoftBody::CJoint::* )(  ) +void* btSoftBody_CJoint_new() {+	::btSoftBody::CJoint *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::CJoint),16);+	o = new (mem)::btSoftBody::CJoint();+	return (void*)o;+}+void btSoftBody_CJoint_free(void *c) {+	::btSoftBody::CJoint *o = (::btSoftBody::CJoint*)c;+	delete o;+}+//method: Terminate void ( ::btSoftBody::CJoint::* )( ::btScalar ) +void btSoftBody_CJoint_Terminate(void *c,float p0) {+	::btSoftBody::CJoint *o = (::btSoftBody::CJoint*)c;+	o->Terminate(p0);+}+//not supported method: Type ::btSoftBody::Joint::eType::_ ( ::btSoftBody::CJoint::* )(  ) const+//method: Solve void ( ::btSoftBody::CJoint::* )( ::btScalar,::btScalar ) +void btSoftBody_CJoint_Solve(void *c,float p0,float p1) {+	::btSoftBody::CJoint *o = (::btSoftBody::CJoint*)c;+	o->Solve(p0,p1);+}+//method: Prepare void ( ::btSoftBody::CJoint::* )( ::btScalar,int ) +void btSoftBody_CJoint_Prepare(void *c,float p0,int p1) {+	::btSoftBody::CJoint *o = (::btSoftBody::CJoint*)c;+	o->Prepare(p0,p1);+}+//attribute: int btSoftBody_CJoint->m_life+void btSoftBody_CJoint_m_life_set(void *c,int a) {+	::btSoftBody::CJoint *o = (::btSoftBody::CJoint*)c;+	o->m_life = a;+}+int btSoftBody_CJoint_m_life_get(void *c) {+	::btSoftBody::CJoint *o = (::btSoftBody::CJoint*)c;+	return (int)(o->m_life);+}++//attribute: int btSoftBody_CJoint->m_maxlife+void btSoftBody_CJoint_m_maxlife_set(void *c,int a) {+	::btSoftBody::CJoint *o = (::btSoftBody::CJoint*)c;+	o->m_maxlife = a;+}+int btSoftBody_CJoint_m_maxlife_get(void *c) {+	::btSoftBody::CJoint *o = (::btSoftBody::CJoint*)c;+	return (int)(o->m_maxlife);+}++//attribute: ::btVector3[2] btSoftBody_CJoint->m_rpos+// attribute not supported: //attribute: ::btVector3[2] btSoftBody_CJoint->m_rpos+//attribute: ::btVector3 btSoftBody_CJoint->m_normal+void btSoftBody_CJoint_m_normal_set(void *c,float* a) {+	::btSoftBody::CJoint *o = (::btSoftBody::CJoint*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_normal = ta;+}+void btSoftBody_CJoint_m_normal_get(void *c,float* a) {+	::btSoftBody::CJoint *o = (::btSoftBody::CJoint*)c;+	a[0]=(o->m_normal).m_floats[0];a[1]=(o->m_normal).m_floats[1];a[2]=(o->m_normal).m_floats[2];+}++//attribute: ::btScalar btSoftBody_CJoint->m_friction+void btSoftBody_CJoint_m_friction_set(void *c,float a) {+	::btSoftBody::CJoint *o = (::btSoftBody::CJoint*)c;+	o->m_friction = a;+}+float btSoftBody_CJoint_m_friction_get(void *c) {+	::btSoftBody::CJoint *o = (::btSoftBody::CJoint*)c;+	return (float)(o->m_friction);+}+++// ::btSoftBody::Cluster+//constructor: Cluster  ( ::btSoftBody::Cluster::* )(  ) +void* btSoftBody_Cluster_new() {+	::btSoftBody::Cluster *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::Cluster),16);+	o = new (mem)::btSoftBody::Cluster();+	return (void*)o;+}+void btSoftBody_Cluster_free(void *c) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	delete o;+}+//attribute: ::btScalar btSoftBody_Cluster->m_adamping+void btSoftBody_Cluster_m_adamping_set(void *c,float a) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	o->m_adamping = a;+}+float btSoftBody_Cluster_m_adamping_get(void *c) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	return (float)(o->m_adamping);+}++//attribute: ::btVector3 btSoftBody_Cluster->m_av+void btSoftBody_Cluster_m_av_set(void *c,float* a) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_av = ta;+}+void btSoftBody_Cluster_m_av_get(void *c,float* a) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	a[0]=(o->m_av).m_floats[0];a[1]=(o->m_av).m_floats[1];a[2]=(o->m_av).m_floats[2];+}++//attribute: int btSoftBody_Cluster->m_clusterIndex+void btSoftBody_Cluster_m_clusterIndex_set(void *c,int a) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	o->m_clusterIndex = a;+}+int btSoftBody_Cluster_m_clusterIndex_get(void *c) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	return (int)(o->m_clusterIndex);+}++//attribute: bool btSoftBody_Cluster->m_collide+void btSoftBody_Cluster_m_collide_set(void *c,int a) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	o->m_collide = a;+}+int btSoftBody_Cluster_m_collide_get(void *c) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	return (int)(o->m_collide);+}++//attribute: ::btVector3 btSoftBody_Cluster->m_com+void btSoftBody_Cluster_m_com_set(void *c,float* a) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_com = ta;+}+void btSoftBody_Cluster_m_com_get(void *c,float* a) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	a[0]=(o->m_com).m_floats[0];a[1]=(o->m_com).m_floats[1];a[2]=(o->m_com).m_floats[2];+}++//attribute: bool btSoftBody_Cluster->m_containsAnchor+void btSoftBody_Cluster_m_containsAnchor_set(void *c,int a) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	o->m_containsAnchor = a;+}+int btSoftBody_Cluster_m_containsAnchor_get(void *c) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	return (int)(o->m_containsAnchor);+}++//attribute: ::btVector3[2] btSoftBody_Cluster->m_dimpulses+// attribute not supported: //attribute: ::btVector3[2] btSoftBody_Cluster->m_dimpulses+//attribute: ::btAlignedObjectArray<btVector3> btSoftBody_Cluster->m_framerefs+// attribute not supported: //attribute: ::btAlignedObjectArray<btVector3> btSoftBody_Cluster->m_framerefs+//attribute: ::btTransform btSoftBody_Cluster->m_framexform+void btSoftBody_Cluster_m_framexform_set(void *c,float* a) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	btMatrix3x3 mta(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]);+	btVector3 vta(a[9],a[10],a[11]);+	btTransform ta(mta,vta);+	o->m_framexform = ta;+}+void btSoftBody_Cluster_m_framexform_get(void *c,float* a) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	a[0]=(o->m_framexform).getBasis().getRow(0).m_floats[0];a[1]=(o->m_framexform).getBasis().getRow(0).m_floats[1];a[2]=(o->m_framexform).getBasis().getRow(0).m_floats[2];a[3]=(o->m_framexform).getBasis().getRow(1).m_floats[0];a[4]=(o->m_framexform).getBasis().getRow(1).m_floats[1];a[5]=(o->m_framexform).getBasis().getRow(1).m_floats[2];a[6]=(o->m_framexform).getBasis().getRow(2).m_floats[0];a[7]=(o->m_framexform).getBasis().getRow(2).m_floats[1];a[8]=(o->m_framexform).getBasis().getRow(2).m_floats[2];+	a[9]=(o->m_framexform).getOrigin().m_floats[0];a[10]=(o->m_framexform).getOrigin().m_floats[1];a[11]=(o->m_framexform).getOrigin().m_floats[2];+}++//attribute: ::btScalar btSoftBody_Cluster->m_idmass+void btSoftBody_Cluster_m_idmass_set(void *c,float a) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	o->m_idmass = a;+}+float btSoftBody_Cluster_m_idmass_get(void *c) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	return (float)(o->m_idmass);+}++//attribute: ::btScalar btSoftBody_Cluster->m_imass+void btSoftBody_Cluster_m_imass_set(void *c,float a) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	o->m_imass = a;+}+float btSoftBody_Cluster_m_imass_get(void *c) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	return (float)(o->m_imass);+}++//attribute: ::btMatrix3x3 btSoftBody_Cluster->m_invwi+void btSoftBody_Cluster_m_invwi_set(void *c,float* a) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	btMatrix3x3 ta(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]);+	o->m_invwi = ta;+}+void btSoftBody_Cluster_m_invwi_get(void *c,float* a) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	a[0]=(o->m_invwi).getRow(0).m_floats[0];a[1]=(o->m_invwi).getRow(0).m_floats[1];a[2]=(o->m_invwi).getRow(0).m_floats[2];a[3]=(o->m_invwi).getRow(1).m_floats[0];a[4]=(o->m_invwi).getRow(1).m_floats[1];a[5]=(o->m_invwi).getRow(1).m_floats[2];a[6]=(o->m_invwi).getRow(2).m_floats[0];a[7]=(o->m_invwi).getRow(2).m_floats[1];a[8]=(o->m_invwi).getRow(2).m_floats[2];+}++//attribute: ::btScalar btSoftBody_Cluster->m_ldamping+void btSoftBody_Cluster_m_ldamping_set(void *c,float a) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	o->m_ldamping = a;+}+float btSoftBody_Cluster_m_ldamping_get(void *c) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	return (float)(o->m_ldamping);+}++//attribute: ::btDbvtNode * btSoftBody_Cluster->m_leaf+void btSoftBody_Cluster_m_leaf_set(void *c,void* a) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	::btDbvtNode * ta = (::btDbvtNode *)a;+	o->m_leaf = ta;+}+// attriibute getter not supported: //attribute: ::btDbvtNode * btSoftBody_Cluster->m_leaf+//attribute: ::btMatrix3x3 btSoftBody_Cluster->m_locii+void btSoftBody_Cluster_m_locii_set(void *c,float* a) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	btMatrix3x3 ta(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]);+	o->m_locii = ta;+}+void btSoftBody_Cluster_m_locii_get(void *c,float* a) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	a[0]=(o->m_locii).getRow(0).m_floats[0];a[1]=(o->m_locii).getRow(0).m_floats[1];a[2]=(o->m_locii).getRow(0).m_floats[2];a[3]=(o->m_locii).getRow(1).m_floats[0];a[4]=(o->m_locii).getRow(1).m_floats[1];a[5]=(o->m_locii).getRow(1).m_floats[2];a[6]=(o->m_locii).getRow(2).m_floats[0];a[7]=(o->m_locii).getRow(2).m_floats[1];a[8]=(o->m_locii).getRow(2).m_floats[2];+}++//attribute: ::btVector3 btSoftBody_Cluster->m_lv+void btSoftBody_Cluster_m_lv_set(void *c,float* a) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_lv = ta;+}+void btSoftBody_Cluster_m_lv_get(void *c,float* a) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	a[0]=(o->m_lv).m_floats[0];a[1]=(o->m_lv).m_floats[1];a[2]=(o->m_lv).m_floats[2];+}++//attribute: ::btAlignedObjectArray<float> btSoftBody_Cluster->m_masses+// attribute not supported: //attribute: ::btAlignedObjectArray<float> btSoftBody_Cluster->m_masses+//attribute: ::btScalar btSoftBody_Cluster->m_matching+void btSoftBody_Cluster_m_matching_set(void *c,float a) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	o->m_matching = a;+}+float btSoftBody_Cluster_m_matching_get(void *c) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	return (float)(o->m_matching);+}++//attribute: ::btScalar btSoftBody_Cluster->m_maxSelfCollisionImpulse+void btSoftBody_Cluster_m_maxSelfCollisionImpulse_set(void *c,float a) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	o->m_maxSelfCollisionImpulse = a;+}+float btSoftBody_Cluster_m_maxSelfCollisionImpulse_get(void *c) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	return (float)(o->m_maxSelfCollisionImpulse);+}++//attribute: ::btScalar btSoftBody_Cluster->m_ndamping+void btSoftBody_Cluster_m_ndamping_set(void *c,float a) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	o->m_ndamping = a;+}+float btSoftBody_Cluster_m_ndamping_get(void *c) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	return (float)(o->m_ndamping);+}++//attribute: int btSoftBody_Cluster->m_ndimpulses+void btSoftBody_Cluster_m_ndimpulses_set(void *c,int a) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	o->m_ndimpulses = a;+}+int btSoftBody_Cluster_m_ndimpulses_get(void *c) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	return (int)(o->m_ndimpulses);+}++//attribute: ::btAlignedObjectArray<btSoftBody::Node*> btSoftBody_Cluster->m_nodes+// attribute not supported: //attribute: ::btAlignedObjectArray<btSoftBody::Node*> btSoftBody_Cluster->m_nodes+//attribute: int btSoftBody_Cluster->m_nvimpulses+void btSoftBody_Cluster_m_nvimpulses_set(void *c,int a) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	o->m_nvimpulses = a;+}+int btSoftBody_Cluster_m_nvimpulses_get(void *c) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	return (int)(o->m_nvimpulses);+}++//attribute: ::btScalar btSoftBody_Cluster->m_selfCollisionImpulseFactor+void btSoftBody_Cluster_m_selfCollisionImpulseFactor_set(void *c,float a) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	o->m_selfCollisionImpulseFactor = a;+}+float btSoftBody_Cluster_m_selfCollisionImpulseFactor_get(void *c) {+	::btSoftBody::Cluster *o = (::btSoftBody::Cluster*)c;+	return (float)(o->m_selfCollisionImpulseFactor);+}++//attribute: ::btVector3[2] btSoftBody_Cluster->m_vimpulses+// attribute not supported: //attribute: ::btVector3[2] btSoftBody_Cluster->m_vimpulses++// ::btSoftBody::Config+//constructor: Config  ( ::btSoftBody::Config::* )(  ) +void* btSoftBody_Config_new() {+	::btSoftBody::Config *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::Config),16);+	o = new (mem)::btSoftBody::Config();+	return (void*)o;+}+void btSoftBody_Config_free(void *c) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	delete o;+}+//attribute: ::btSoftBody::eAeroModel::_ btSoftBody_Config->aeromodel+// attribute not supported: //attribute: ::btSoftBody::eAeroModel::_ btSoftBody_Config->aeromodel+//attribute: ::btScalar btSoftBody_Config->kVCF+void btSoftBody_Config_kVCF_set(void *c,float a) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	o->kVCF = a;+}+float btSoftBody_Config_kVCF_get(void *c) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	return (float)(o->kVCF);+}++//attribute: ::btScalar btSoftBody_Config->kDP+void btSoftBody_Config_kDP_set(void *c,float a) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	o->kDP = a;+}+float btSoftBody_Config_kDP_get(void *c) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	return (float)(o->kDP);+}++//attribute: ::btScalar btSoftBody_Config->kDG+void btSoftBody_Config_kDG_set(void *c,float a) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	o->kDG = a;+}+float btSoftBody_Config_kDG_get(void *c) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	return (float)(o->kDG);+}++//attribute: ::btScalar btSoftBody_Config->kLF+void btSoftBody_Config_kLF_set(void *c,float a) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	o->kLF = a;+}+float btSoftBody_Config_kLF_get(void *c) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	return (float)(o->kLF);+}++//attribute: ::btScalar btSoftBody_Config->kPR+void btSoftBody_Config_kPR_set(void *c,float a) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	o->kPR = a;+}+float btSoftBody_Config_kPR_get(void *c) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	return (float)(o->kPR);+}++//attribute: ::btScalar btSoftBody_Config->kVC+void btSoftBody_Config_kVC_set(void *c,float a) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	o->kVC = a;+}+float btSoftBody_Config_kVC_get(void *c) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	return (float)(o->kVC);+}++//attribute: ::btScalar btSoftBody_Config->kDF+void btSoftBody_Config_kDF_set(void *c,float a) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	o->kDF = a;+}+float btSoftBody_Config_kDF_get(void *c) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	return (float)(o->kDF);+}++//attribute: ::btScalar btSoftBody_Config->kMT+void btSoftBody_Config_kMT_set(void *c,float a) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	o->kMT = a;+}+float btSoftBody_Config_kMT_get(void *c) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	return (float)(o->kMT);+}++//attribute: ::btScalar btSoftBody_Config->kCHR+void btSoftBody_Config_kCHR_set(void *c,float a) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	o->kCHR = a;+}+float btSoftBody_Config_kCHR_get(void *c) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	return (float)(o->kCHR);+}++//attribute: ::btScalar btSoftBody_Config->kKHR+void btSoftBody_Config_kKHR_set(void *c,float a) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	o->kKHR = a;+}+float btSoftBody_Config_kKHR_get(void *c) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	return (float)(o->kKHR);+}++//attribute: ::btScalar btSoftBody_Config->kSHR+void btSoftBody_Config_kSHR_set(void *c,float a) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	o->kSHR = a;+}+float btSoftBody_Config_kSHR_get(void *c) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	return (float)(o->kSHR);+}++//attribute: ::btScalar btSoftBody_Config->kAHR+void btSoftBody_Config_kAHR_set(void *c,float a) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	o->kAHR = a;+}+float btSoftBody_Config_kAHR_get(void *c) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	return (float)(o->kAHR);+}++//attribute: ::btScalar btSoftBody_Config->kSRHR_CL+void btSoftBody_Config_kSRHR_CL_set(void *c,float a) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	o->kSRHR_CL = a;+}+float btSoftBody_Config_kSRHR_CL_get(void *c) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	return (float)(o->kSRHR_CL);+}++//attribute: ::btScalar btSoftBody_Config->kSKHR_CL+void btSoftBody_Config_kSKHR_CL_set(void *c,float a) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	o->kSKHR_CL = a;+}+float btSoftBody_Config_kSKHR_CL_get(void *c) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	return (float)(o->kSKHR_CL);+}++//attribute: ::btScalar btSoftBody_Config->kSSHR_CL+void btSoftBody_Config_kSSHR_CL_set(void *c,float a) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	o->kSSHR_CL = a;+}+float btSoftBody_Config_kSSHR_CL_get(void *c) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	return (float)(o->kSSHR_CL);+}++//attribute: ::btScalar btSoftBody_Config->kSR_SPLT_CL+void btSoftBody_Config_kSR_SPLT_CL_set(void *c,float a) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	o->kSR_SPLT_CL = a;+}+float btSoftBody_Config_kSR_SPLT_CL_get(void *c) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	return (float)(o->kSR_SPLT_CL);+}++//attribute: ::btScalar btSoftBody_Config->kSK_SPLT_CL+void btSoftBody_Config_kSK_SPLT_CL_set(void *c,float a) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	o->kSK_SPLT_CL = a;+}+float btSoftBody_Config_kSK_SPLT_CL_get(void *c) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	return (float)(o->kSK_SPLT_CL);+}++//attribute: ::btScalar btSoftBody_Config->kSS_SPLT_CL+void btSoftBody_Config_kSS_SPLT_CL_set(void *c,float a) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	o->kSS_SPLT_CL = a;+}+float btSoftBody_Config_kSS_SPLT_CL_get(void *c) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	return (float)(o->kSS_SPLT_CL);+}++//attribute: ::btScalar btSoftBody_Config->maxvolume+void btSoftBody_Config_maxvolume_set(void *c,float a) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	o->maxvolume = a;+}+float btSoftBody_Config_maxvolume_get(void *c) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	return (float)(o->maxvolume);+}++//attribute: ::btScalar btSoftBody_Config->timescale+void btSoftBody_Config_timescale_set(void *c,float a) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	o->timescale = a;+}+float btSoftBody_Config_timescale_get(void *c) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	return (float)(o->timescale);+}++//attribute: int btSoftBody_Config->viterations+void btSoftBody_Config_viterations_set(void *c,int a) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	o->viterations = a;+}+int btSoftBody_Config_viterations_get(void *c) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	return (int)(o->viterations);+}++//attribute: int btSoftBody_Config->piterations+void btSoftBody_Config_piterations_set(void *c,int a) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	o->piterations = a;+}+int btSoftBody_Config_piterations_get(void *c) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	return (int)(o->piterations);+}++//attribute: int btSoftBody_Config->diterations+void btSoftBody_Config_diterations_set(void *c,int a) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	o->diterations = a;+}+int btSoftBody_Config_diterations_get(void *c) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	return (int)(o->diterations);+}++//attribute: int btSoftBody_Config->citerations+void btSoftBody_Config_citerations_set(void *c,int a) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	o->citerations = a;+}+int btSoftBody_Config_citerations_get(void *c) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	return (int)(o->citerations);+}++//attribute: int btSoftBody_Config->collisions+void btSoftBody_Config_collisions_set(void *c,int a) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	o->collisions = a;+}+int btSoftBody_Config_collisions_get(void *c) {+	::btSoftBody::Config *o = (::btSoftBody::Config*)c;+	return (int)(o->collisions);+}++//attribute: ::btAlignedObjectArray<btSoftBody::eVSolver::_> btSoftBody_Config->m_vsequence+// attribute not supported: //attribute: ::btAlignedObjectArray<btSoftBody::eVSolver::_> btSoftBody_Config->m_vsequence+//attribute: ::btAlignedObjectArray<btSoftBody::ePSolver::_> btSoftBody_Config->m_psequence+// attribute not supported: //attribute: ::btAlignedObjectArray<btSoftBody::ePSolver::_> btSoftBody_Config->m_psequence+//attribute: ::btAlignedObjectArray<btSoftBody::ePSolver::_> btSoftBody_Config->m_dsequence+// attribute not supported: //attribute: ::btAlignedObjectArray<btSoftBody::ePSolver::_> btSoftBody_Config->m_dsequence++// ::btSoftBody::Element+//constructor: Element  ( ::btSoftBody::Element::* )(  ) +void* btSoftBody_Element_new() {+	::btSoftBody::Element *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::Element),16);+	o = new (mem)::btSoftBody::Element();+	return (void*)o;+}+void btSoftBody_Element_free(void *c) {+	::btSoftBody::Element *o = (::btSoftBody::Element*)c;+	delete o;+}+//attribute: void * btSoftBody_Element->m_tag+// attribute not supported: //attribute: void * btSoftBody_Element->m_tag++// ::btSoftBody::Face+//constructor: Face  ( ::btSoftBody::Face::* )(  ) +void* btSoftBody_Face_new() {+	::btSoftBody::Face *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::Face),16);+	o = new (mem)::btSoftBody::Face();+	return (void*)o;+}+void btSoftBody_Face_free(void *c) {+	::btSoftBody::Face *o = (::btSoftBody::Face*)c;+	delete o;+}+//attribute: ::btSoftBody::Node *[3] btSoftBody_Face->m_n+// attribute not supported: //attribute: ::btSoftBody::Node *[3] btSoftBody_Face->m_n+//attribute: ::btVector3 btSoftBody_Face->m_normal+void btSoftBody_Face_m_normal_set(void *c,float* a) {+	::btSoftBody::Face *o = (::btSoftBody::Face*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_normal = ta;+}+void btSoftBody_Face_m_normal_get(void *c,float* a) {+	::btSoftBody::Face *o = (::btSoftBody::Face*)c;+	a[0]=(o->m_normal).m_floats[0];a[1]=(o->m_normal).m_floats[1];a[2]=(o->m_normal).m_floats[2];+}++//attribute: ::btScalar btSoftBody_Face->m_ra+void btSoftBody_Face_m_ra_set(void *c,float a) {+	::btSoftBody::Face *o = (::btSoftBody::Face*)c;+	o->m_ra = a;+}+float btSoftBody_Face_m_ra_get(void *c) {+	::btSoftBody::Face *o = (::btSoftBody::Face*)c;+	return (float)(o->m_ra);+}++//attribute: ::btDbvtNode * btSoftBody_Face->m_leaf+void btSoftBody_Face_m_leaf_set(void *c,void* a) {+	::btSoftBody::Face *o = (::btSoftBody::Face*)c;+	::btDbvtNode * ta = (::btDbvtNode *)a;+	o->m_leaf = ta;+}+// attriibute getter not supported: //attribute: ::btDbvtNode * btSoftBody_Face->m_leaf++// ::btSoftBody::Feature+//constructor: Feature  ( ::btSoftBody::Feature::* )(  ) +void* btSoftBody_Feature_new() {+	::btSoftBody::Feature *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::Feature),16);+	o = new (mem)::btSoftBody::Feature();+	return (void*)o;+}+void btSoftBody_Feature_free(void *c) {+	::btSoftBody::Feature *o = (::btSoftBody::Feature*)c;+	delete o;+}+//attribute: ::btSoftBody::Material * btSoftBody_Feature->m_material+void btSoftBody_Feature_m_material_set(void *c,void* a) {+	::btSoftBody::Feature *o = (::btSoftBody::Feature*)c;+	::btSoftBody::Material * ta = (::btSoftBody::Material *)a;+	o->m_material = ta;+}+// attriibute getter not supported: //attribute: ::btSoftBody::Material * btSoftBody_Feature->m_material++// ::btSoftBody::AJoint::IControl+//constructor: IControl  ( ::btSoftBody::AJoint::IControl::* )(  ) +void* btSoftBody_AJoint_IControl_new() {+	::btSoftBody::AJoint::IControl *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::AJoint::IControl),16);+	o = new (mem)::btSoftBody::AJoint::IControl();+	return (void*)o;+}+void btSoftBody_AJoint_IControl_free(void *c) {+	::btSoftBody::AJoint::IControl *o = (::btSoftBody::AJoint::IControl*)c;+	delete o;+}+//method: Default ::btSoftBody::AJoint::IControl * (*)(  )+void* btSoftBody_AJoint_IControl_Default() {+	void* retVal = (void*) ::btSoftBody::AJoint::IControl::Default();+	return retVal;+}+//method: Speed ::btScalar ( ::btSoftBody::AJoint::IControl::* )( ::btSoftBody::AJoint *,::btScalar ) +float btSoftBody_AJoint_IControl_Speed(void *c,void* p0,float p1) {+	::btSoftBody::AJoint::IControl *o = (::btSoftBody::AJoint::IControl*)c;+	::btSoftBody::AJoint * tp0 = (::btSoftBody::AJoint *)p0;+	float retVal = (float)o->Speed(tp0,p1);+	return retVal;+}+//method: Prepare void ( ::btSoftBody::AJoint::IControl::* )( ::btSoftBody::AJoint * ) +void btSoftBody_AJoint_IControl_Prepare(void *c,void* p0) {+	::btSoftBody::AJoint::IControl *o = (::btSoftBody::AJoint::IControl*)c;+	::btSoftBody::AJoint * tp0 = (::btSoftBody::AJoint *)p0;+	o->Prepare(tp0);+}++// ::btSoftBody::ImplicitFn+//method: Eval ::btScalar ( ::btSoftBody::ImplicitFn::* )( ::btVector3 const & ) +float btSoftBody_ImplicitFn_Eval(void *c,float* p0) {+	::btSoftBody::ImplicitFn *o = (::btSoftBody::ImplicitFn*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	float retVal = (float)o->Eval(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	return retVal;+}++// ::btSoftBody::Impulse+//constructor: Impulse  ( ::btSoftBody::Impulse::* )(  ) +void* btSoftBody_Impulse_new() {+	::btSoftBody::Impulse *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::Impulse),16);+	o = new (mem)::btSoftBody::Impulse();+	return (void*)o;+}+void btSoftBody_Impulse_free(void *c) {+	::btSoftBody::Impulse *o = (::btSoftBody::Impulse*)c;+	delete o;+}+//attribute: int btSoftBody_Impulse->m_asDrift+void btSoftBody_Impulse_m_asDrift_set(void *c,int a) {+	::btSoftBody::Impulse *o = (::btSoftBody::Impulse*)c;+	o->m_asDrift = a;+}+int btSoftBody_Impulse_m_asDrift_get(void *c) {+	::btSoftBody::Impulse *o = (::btSoftBody::Impulse*)c;+	return (int)(o->m_asDrift);+}++//attribute: int btSoftBody_Impulse->m_asVelocity+void btSoftBody_Impulse_m_asVelocity_set(void *c,int a) {+	::btSoftBody::Impulse *o = (::btSoftBody::Impulse*)c;+	o->m_asVelocity = a;+}+int btSoftBody_Impulse_m_asVelocity_get(void *c) {+	::btSoftBody::Impulse *o = (::btSoftBody::Impulse*)c;+	return (int)(o->m_asVelocity);+}++//attribute: ::btVector3 btSoftBody_Impulse->m_drift+void btSoftBody_Impulse_m_drift_set(void *c,float* a) {+	::btSoftBody::Impulse *o = (::btSoftBody::Impulse*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_drift = ta;+}+void btSoftBody_Impulse_m_drift_get(void *c,float* a) {+	::btSoftBody::Impulse *o = (::btSoftBody::Impulse*)c;+	a[0]=(o->m_drift).m_floats[0];a[1]=(o->m_drift).m_floats[1];a[2]=(o->m_drift).m_floats[2];+}++//attribute: ::btVector3 btSoftBody_Impulse->m_velocity+void btSoftBody_Impulse_m_velocity_set(void *c,float* a) {+	::btSoftBody::Impulse *o = (::btSoftBody::Impulse*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_velocity = ta;+}+void btSoftBody_Impulse_m_velocity_get(void *c,float* a) {+	::btSoftBody::Impulse *o = (::btSoftBody::Impulse*)c;+	a[0]=(o->m_velocity).m_floats[0];a[1]=(o->m_velocity).m_floats[1];a[2]=(o->m_velocity).m_floats[2];+}+++// ::btSoftBody::Joint+//method: Terminate void ( ::btSoftBody::Joint::* )( ::btScalar ) +void btSoftBody_Joint_Terminate(void *c,float p0) {+	::btSoftBody::Joint *o = (::btSoftBody::Joint*)c;+	o->Terminate(p0);+}+//not supported method: Type ::btSoftBody::Joint::eType::_ ( ::btSoftBody::Joint::* )(  ) const+//method: Solve void ( ::btSoftBody::Joint::* )( ::btScalar,::btScalar ) +void btSoftBody_Joint_Solve(void *c,float p0,float p1) {+	::btSoftBody::Joint *o = (::btSoftBody::Joint*)c;+	o->Solve(p0,p1);+}+//method: Prepare void ( ::btSoftBody::Joint::* )( ::btScalar,int ) +void btSoftBody_Joint_Prepare(void *c,float p0,int p1) {+	::btSoftBody::Joint *o = (::btSoftBody::Joint*)c;+	o->Prepare(p0,p1);+}+//attribute: ::btSoftBody::Body[2] btSoftBody_Joint->m_bodies+// attribute not supported: //attribute: ::btSoftBody::Body[2] btSoftBody_Joint->m_bodies+//attribute: ::btVector3[2] btSoftBody_Joint->m_refs+// attribute not supported: //attribute: ::btVector3[2] btSoftBody_Joint->m_refs+//attribute: ::btScalar btSoftBody_Joint->m_cfm+void btSoftBody_Joint_m_cfm_set(void *c,float a) {+	::btSoftBody::Joint *o = (::btSoftBody::Joint*)c;+	o->m_cfm = a;+}+float btSoftBody_Joint_m_cfm_get(void *c) {+	::btSoftBody::Joint *o = (::btSoftBody::Joint*)c;+	return (float)(o->m_cfm);+}++//attribute: ::btScalar btSoftBody_Joint->m_erp+void btSoftBody_Joint_m_erp_set(void *c,float a) {+	::btSoftBody::Joint *o = (::btSoftBody::Joint*)c;+	o->m_erp = a;+}+float btSoftBody_Joint_m_erp_get(void *c) {+	::btSoftBody::Joint *o = (::btSoftBody::Joint*)c;+	return (float)(o->m_erp);+}++//attribute: ::btScalar btSoftBody_Joint->m_split+void btSoftBody_Joint_m_split_set(void *c,float a) {+	::btSoftBody::Joint *o = (::btSoftBody::Joint*)c;+	o->m_split = a;+}+float btSoftBody_Joint_m_split_get(void *c) {+	::btSoftBody::Joint *o = (::btSoftBody::Joint*)c;+	return (float)(o->m_split);+}++//attribute: ::btVector3 btSoftBody_Joint->m_drift+void btSoftBody_Joint_m_drift_set(void *c,float* a) {+	::btSoftBody::Joint *o = (::btSoftBody::Joint*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_drift = ta;+}+void btSoftBody_Joint_m_drift_get(void *c,float* a) {+	::btSoftBody::Joint *o = (::btSoftBody::Joint*)c;+	a[0]=(o->m_drift).m_floats[0];a[1]=(o->m_drift).m_floats[1];a[2]=(o->m_drift).m_floats[2];+}++//attribute: ::btVector3 btSoftBody_Joint->m_sdrift+void btSoftBody_Joint_m_sdrift_set(void *c,float* a) {+	::btSoftBody::Joint *o = (::btSoftBody::Joint*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_sdrift = ta;+}+void btSoftBody_Joint_m_sdrift_get(void *c,float* a) {+	::btSoftBody::Joint *o = (::btSoftBody::Joint*)c;+	a[0]=(o->m_sdrift).m_floats[0];a[1]=(o->m_sdrift).m_floats[1];a[2]=(o->m_sdrift).m_floats[2];+}++//attribute: ::btMatrix3x3 btSoftBody_Joint->m_massmatrix+void btSoftBody_Joint_m_massmatrix_set(void *c,float* a) {+	::btSoftBody::Joint *o = (::btSoftBody::Joint*)c;+	btMatrix3x3 ta(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]);+	o->m_massmatrix = ta;+}+void btSoftBody_Joint_m_massmatrix_get(void *c,float* a) {+	::btSoftBody::Joint *o = (::btSoftBody::Joint*)c;+	a[0]=(o->m_massmatrix).getRow(0).m_floats[0];a[1]=(o->m_massmatrix).getRow(0).m_floats[1];a[2]=(o->m_massmatrix).getRow(0).m_floats[2];a[3]=(o->m_massmatrix).getRow(1).m_floats[0];a[4]=(o->m_massmatrix).getRow(1).m_floats[1];a[5]=(o->m_massmatrix).getRow(1).m_floats[2];a[6]=(o->m_massmatrix).getRow(2).m_floats[0];a[7]=(o->m_massmatrix).getRow(2).m_floats[1];a[8]=(o->m_massmatrix).getRow(2).m_floats[2];+}++//attribute: bool btSoftBody_Joint->m_delete+void btSoftBody_Joint_m_delete_set(void *c,int a) {+	::btSoftBody::Joint *o = (::btSoftBody::Joint*)c;+	o->m_delete = a;+}+int btSoftBody_Joint_m_delete_get(void *c) {+	::btSoftBody::Joint *o = (::btSoftBody::Joint*)c;+	return (int)(o->m_delete);+}+++// ::btSoftBody::LJoint+//constructor: LJoint  ( ::btSoftBody::LJoint::* )(  ) +void* btSoftBody_LJoint_new() {+	::btSoftBody::LJoint *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::LJoint),16);+	o = new (mem)::btSoftBody::LJoint();+	return (void*)o;+}+void btSoftBody_LJoint_free(void *c) {+	::btSoftBody::LJoint *o = (::btSoftBody::LJoint*)c;+	delete o;+}+//method: Terminate void ( ::btSoftBody::LJoint::* )( ::btScalar ) +void btSoftBody_LJoint_Terminate(void *c,float p0) {+	::btSoftBody::LJoint *o = (::btSoftBody::LJoint*)c;+	o->Terminate(p0);+}+//not supported method: Type ::btSoftBody::Joint::eType::_ ( ::btSoftBody::LJoint::* )(  ) const+//method: Solve void ( ::btSoftBody::LJoint::* )( ::btScalar,::btScalar ) +void btSoftBody_LJoint_Solve(void *c,float p0,float p1) {+	::btSoftBody::LJoint *o = (::btSoftBody::LJoint*)c;+	o->Solve(p0,p1);+}+//method: Prepare void ( ::btSoftBody::LJoint::* )( ::btScalar,int ) +void btSoftBody_LJoint_Prepare(void *c,float p0,int p1) {+	::btSoftBody::LJoint *o = (::btSoftBody::LJoint*)c;+	o->Prepare(p0,p1);+}+//attribute: ::btVector3[2] btSoftBody_LJoint->m_rpos+// attribute not supported: //attribute: ::btVector3[2] btSoftBody_LJoint->m_rpos++// ::btSoftBody::Link+//constructor: Link  ( ::btSoftBody::Link::* )(  ) +void* btSoftBody_Link_new() {+	::btSoftBody::Link *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::Link),16);+	o = new (mem)::btSoftBody::Link();+	return (void*)o;+}+void btSoftBody_Link_free(void *c) {+	::btSoftBody::Link *o = (::btSoftBody::Link*)c;+	delete o;+}+//attribute: ::btSoftBody::Node *[2] btSoftBody_Link->m_n+// attribute not supported: //attribute: ::btSoftBody::Node *[2] btSoftBody_Link->m_n+//attribute: ::btScalar btSoftBody_Link->m_rl+void btSoftBody_Link_m_rl_set(void *c,float a) {+	::btSoftBody::Link *o = (::btSoftBody::Link*)c;+	o->m_rl = a;+}+float btSoftBody_Link_m_rl_get(void *c) {+	::btSoftBody::Link *o = (::btSoftBody::Link*)c;+	return (float)(o->m_rl);+}++//attribute: int btSoftBody_Link->m_bbending+void btSoftBody_Link_m_bbending_set(void *c,int a) {+	::btSoftBody::Link *o = (::btSoftBody::Link*)c;+	o->m_bbending = a;+}+int btSoftBody_Link_m_bbending_get(void *c) {+	::btSoftBody::Link *o = (::btSoftBody::Link*)c;+	return (int)(o->m_bbending);+}++//attribute: ::btScalar btSoftBody_Link->m_c0+void btSoftBody_Link_m_c0_set(void *c,float a) {+	::btSoftBody::Link *o = (::btSoftBody::Link*)c;+	o->m_c0 = a;+}+float btSoftBody_Link_m_c0_get(void *c) {+	::btSoftBody::Link *o = (::btSoftBody::Link*)c;+	return (float)(o->m_c0);+}++//attribute: ::btScalar btSoftBody_Link->m_c1+void btSoftBody_Link_m_c1_set(void *c,float a) {+	::btSoftBody::Link *o = (::btSoftBody::Link*)c;+	o->m_c1 = a;+}+float btSoftBody_Link_m_c1_get(void *c) {+	::btSoftBody::Link *o = (::btSoftBody::Link*)c;+	return (float)(o->m_c1);+}++//attribute: ::btScalar btSoftBody_Link->m_c2+void btSoftBody_Link_m_c2_set(void *c,float a) {+	::btSoftBody::Link *o = (::btSoftBody::Link*)c;+	o->m_c2 = a;+}+float btSoftBody_Link_m_c2_get(void *c) {+	::btSoftBody::Link *o = (::btSoftBody::Link*)c;+	return (float)(o->m_c2);+}++//attribute: ::btVector3 btSoftBody_Link->m_c3+void btSoftBody_Link_m_c3_set(void *c,float* a) {+	::btSoftBody::Link *o = (::btSoftBody::Link*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_c3 = ta;+}+void btSoftBody_Link_m_c3_get(void *c,float* a) {+	::btSoftBody::Link *o = (::btSoftBody::Link*)c;+	a[0]=(o->m_c3).m_floats[0];a[1]=(o->m_c3).m_floats[1];a[2]=(o->m_c3).m_floats[2];+}+++// ::btSoftBody::Material+//constructor: Material  ( ::btSoftBody::Material::* )(  ) +void* btSoftBody_Material_new() {+	::btSoftBody::Material *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::Material),16);+	o = new (mem)::btSoftBody::Material();+	return (void*)o;+}+void btSoftBody_Material_free(void *c) {+	::btSoftBody::Material *o = (::btSoftBody::Material*)c;+	delete o;+}+//attribute: int btSoftBody_Material->m_flags+void btSoftBody_Material_m_flags_set(void *c,int a) {+	::btSoftBody::Material *o = (::btSoftBody::Material*)c;+	o->m_flags = a;+}+int btSoftBody_Material_m_flags_get(void *c) {+	::btSoftBody::Material *o = (::btSoftBody::Material*)c;+	return (int)(o->m_flags);+}++//attribute: ::btScalar btSoftBody_Material->m_kAST+void btSoftBody_Material_m_kAST_set(void *c,float a) {+	::btSoftBody::Material *o = (::btSoftBody::Material*)c;+	o->m_kAST = a;+}+float btSoftBody_Material_m_kAST_get(void *c) {+	::btSoftBody::Material *o = (::btSoftBody::Material*)c;+	return (float)(o->m_kAST);+}++//attribute: ::btScalar btSoftBody_Material->m_kLST+void btSoftBody_Material_m_kLST_set(void *c,float a) {+	::btSoftBody::Material *o = (::btSoftBody::Material*)c;+	o->m_kLST = a;+}+float btSoftBody_Material_m_kLST_get(void *c) {+	::btSoftBody::Material *o = (::btSoftBody::Material*)c;+	return (float)(o->m_kLST);+}++//attribute: ::btScalar btSoftBody_Material->m_kVST+void btSoftBody_Material_m_kVST_set(void *c,float a) {+	::btSoftBody::Material *o = (::btSoftBody::Material*)c;+	o->m_kVST = a;+}+float btSoftBody_Material_m_kVST_get(void *c) {+	::btSoftBody::Material *o = (::btSoftBody::Material*)c;+	return (float)(o->m_kVST);+}+++// ::btSoftBody::Node+//constructor: Node  ( ::btSoftBody::Node::* )(  ) +void* btSoftBody_Node_new() {+	::btSoftBody::Node *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::Node),16);+	o = new (mem)::btSoftBody::Node();+	return (void*)o;+}+void btSoftBody_Node_free(void *c) {+	::btSoftBody::Node *o = (::btSoftBody::Node*)c;+	delete o;+}+//attribute: ::btScalar btSoftBody_Node->m_area+void btSoftBody_Node_m_area_set(void *c,float a) {+	::btSoftBody::Node *o = (::btSoftBody::Node*)c;+	o->m_area = a;+}+float btSoftBody_Node_m_area_get(void *c) {+	::btSoftBody::Node *o = (::btSoftBody::Node*)c;+	return (float)(o->m_area);+}++//attribute: int btSoftBody_Node->m_battach+void btSoftBody_Node_m_battach_set(void *c,int a) {+	::btSoftBody::Node *o = (::btSoftBody::Node*)c;+	o->m_battach = a;+}+int btSoftBody_Node_m_battach_get(void *c) {+	::btSoftBody::Node *o = (::btSoftBody::Node*)c;+	return (int)(o->m_battach);+}++//attribute: ::btVector3 btSoftBody_Node->m_f+void btSoftBody_Node_m_f_set(void *c,float* a) {+	::btSoftBody::Node *o = (::btSoftBody::Node*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_f = ta;+}+void btSoftBody_Node_m_f_get(void *c,float* a) {+	::btSoftBody::Node *o = (::btSoftBody::Node*)c;+	a[0]=(o->m_f).m_floats[0];a[1]=(o->m_f).m_floats[1];a[2]=(o->m_f).m_floats[2];+}++//attribute: ::btScalar btSoftBody_Node->m_im+void btSoftBody_Node_m_im_set(void *c,float a) {+	::btSoftBody::Node *o = (::btSoftBody::Node*)c;+	o->m_im = a;+}+float btSoftBody_Node_m_im_get(void *c) {+	::btSoftBody::Node *o = (::btSoftBody::Node*)c;+	return (float)(o->m_im);+}++//attribute: ::btDbvtNode * btSoftBody_Node->m_leaf+void btSoftBody_Node_m_leaf_set(void *c,void* a) {+	::btSoftBody::Node *o = (::btSoftBody::Node*)c;+	::btDbvtNode * ta = (::btDbvtNode *)a;+	o->m_leaf = ta;+}+// attriibute getter not supported: //attribute: ::btDbvtNode * btSoftBody_Node->m_leaf+//attribute: ::btVector3 btSoftBody_Node->m_n+void btSoftBody_Node_m_n_set(void *c,float* a) {+	::btSoftBody::Node *o = (::btSoftBody::Node*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_n = ta;+}+void btSoftBody_Node_m_n_get(void *c,float* a) {+	::btSoftBody::Node *o = (::btSoftBody::Node*)c;+	a[0]=(o->m_n).m_floats[0];a[1]=(o->m_n).m_floats[1];a[2]=(o->m_n).m_floats[2];+}++//attribute: ::btVector3 btSoftBody_Node->m_q+void btSoftBody_Node_m_q_set(void *c,float* a) {+	::btSoftBody::Node *o = (::btSoftBody::Node*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_q = ta;+}+void btSoftBody_Node_m_q_get(void *c,float* a) {+	::btSoftBody::Node *o = (::btSoftBody::Node*)c;+	a[0]=(o->m_q).m_floats[0];a[1]=(o->m_q).m_floats[1];a[2]=(o->m_q).m_floats[2];+}++//attribute: ::btVector3 btSoftBody_Node->m_v+void btSoftBody_Node_m_v_set(void *c,float* a) {+	::btSoftBody::Node *o = (::btSoftBody::Node*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_v = ta;+}+void btSoftBody_Node_m_v_get(void *c,float* a) {+	::btSoftBody::Node *o = (::btSoftBody::Node*)c;+	a[0]=(o->m_v).m_floats[0];a[1]=(o->m_v).m_floats[1];a[2]=(o->m_v).m_floats[2];+}++//attribute: ::btVector3 btSoftBody_Node->m_x+void btSoftBody_Node_m_x_set(void *c,float* a) {+	::btSoftBody::Node *o = (::btSoftBody::Node*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_x = ta;+}+void btSoftBody_Node_m_x_get(void *c,float* a) {+	::btSoftBody::Node *o = (::btSoftBody::Node*)c;+	a[0]=(o->m_x).m_floats[0];a[1]=(o->m_x).m_floats[1];a[2]=(o->m_x).m_floats[2];+}+++// ::btSoftBody::Note+//constructor: Note  ( ::btSoftBody::Note::* )(  ) +void* btSoftBody_Note_new() {+	::btSoftBody::Note *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::Note),16);+	o = new (mem)::btSoftBody::Note();+	return (void*)o;+}+void btSoftBody_Note_free(void *c) {+	::btSoftBody::Note *o = (::btSoftBody::Note*)c;+	delete o;+}+//attribute: char const * btSoftBody_Note->m_text+void btSoftBody_Note_m_text_set(void *c,char const * a) {+	::btSoftBody::Note *o = (::btSoftBody::Note*)c;+	o->m_text = a;+}+char const * btSoftBody_Note_m_text_get(void *c) {+	::btSoftBody::Note *o = (::btSoftBody::Note*)c;+	return (char const *)(o->m_text);+}++//attribute: ::btVector3 btSoftBody_Note->m_offset+void btSoftBody_Note_m_offset_set(void *c,float* a) {+	::btSoftBody::Note *o = (::btSoftBody::Note*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_offset = ta;+}+void btSoftBody_Note_m_offset_get(void *c,float* a) {+	::btSoftBody::Note *o = (::btSoftBody::Note*)c;+	a[0]=(o->m_offset).m_floats[0];a[1]=(o->m_offset).m_floats[1];a[2]=(o->m_offset).m_floats[2];+}++//attribute: int btSoftBody_Note->m_rank+void btSoftBody_Note_m_rank_set(void *c,int a) {+	::btSoftBody::Note *o = (::btSoftBody::Note*)c;+	o->m_rank = a;+}+int btSoftBody_Note_m_rank_get(void *c) {+	::btSoftBody::Note *o = (::btSoftBody::Note*)c;+	return (int)(o->m_rank);+}++//attribute: ::btSoftBody::Node *[4] btSoftBody_Note->m_nodes+// attribute not supported: //attribute: ::btSoftBody::Node *[4] btSoftBody_Note->m_nodes+//attribute: ::btScalar[4] btSoftBody_Note->m_coords+// attribute not supported: //attribute: ::btScalar[4] btSoftBody_Note->m_coords++// ::btSoftBody::Pose+//constructor: Pose  ( ::btSoftBody::Pose::* )(  ) +void* btSoftBody_Pose_new() {+	::btSoftBody::Pose *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::Pose),16);+	o = new (mem)::btSoftBody::Pose();+	return (void*)o;+}+void btSoftBody_Pose_free(void *c) {+	::btSoftBody::Pose *o = (::btSoftBody::Pose*)c;+	delete o;+}+//attribute: bool btSoftBody_Pose->m_bvolume+void btSoftBody_Pose_m_bvolume_set(void *c,int a) {+	::btSoftBody::Pose *o = (::btSoftBody::Pose*)c;+	o->m_bvolume = a;+}+int btSoftBody_Pose_m_bvolume_get(void *c) {+	::btSoftBody::Pose *o = (::btSoftBody::Pose*)c;+	return (int)(o->m_bvolume);+}++//attribute: bool btSoftBody_Pose->m_bframe+void btSoftBody_Pose_m_bframe_set(void *c,int a) {+	::btSoftBody::Pose *o = (::btSoftBody::Pose*)c;+	o->m_bframe = a;+}+int btSoftBody_Pose_m_bframe_get(void *c) {+	::btSoftBody::Pose *o = (::btSoftBody::Pose*)c;+	return (int)(o->m_bframe);+}++//attribute: ::btScalar btSoftBody_Pose->m_volume+void btSoftBody_Pose_m_volume_set(void *c,float a) {+	::btSoftBody::Pose *o = (::btSoftBody::Pose*)c;+	o->m_volume = a;+}+float btSoftBody_Pose_m_volume_get(void *c) {+	::btSoftBody::Pose *o = (::btSoftBody::Pose*)c;+	return (float)(o->m_volume);+}++//attribute: ::btAlignedObjectArray<btVector3> btSoftBody_Pose->m_pos+// attribute not supported: //attribute: ::btAlignedObjectArray<btVector3> btSoftBody_Pose->m_pos+//attribute: ::btAlignedObjectArray<float> btSoftBody_Pose->m_wgh+// attribute not supported: //attribute: ::btAlignedObjectArray<float> btSoftBody_Pose->m_wgh+//attribute: ::btVector3 btSoftBody_Pose->m_com+void btSoftBody_Pose_m_com_set(void *c,float* a) {+	::btSoftBody::Pose *o = (::btSoftBody::Pose*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_com = ta;+}+void btSoftBody_Pose_m_com_get(void *c,float* a) {+	::btSoftBody::Pose *o = (::btSoftBody::Pose*)c;+	a[0]=(o->m_com).m_floats[0];a[1]=(o->m_com).m_floats[1];a[2]=(o->m_com).m_floats[2];+}++//attribute: ::btMatrix3x3 btSoftBody_Pose->m_rot+void btSoftBody_Pose_m_rot_set(void *c,float* a) {+	::btSoftBody::Pose *o = (::btSoftBody::Pose*)c;+	btMatrix3x3 ta(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]);+	o->m_rot = ta;+}+void btSoftBody_Pose_m_rot_get(void *c,float* a) {+	::btSoftBody::Pose *o = (::btSoftBody::Pose*)c;+	a[0]=(o->m_rot).getRow(0).m_floats[0];a[1]=(o->m_rot).getRow(0).m_floats[1];a[2]=(o->m_rot).getRow(0).m_floats[2];a[3]=(o->m_rot).getRow(1).m_floats[0];a[4]=(o->m_rot).getRow(1).m_floats[1];a[5]=(o->m_rot).getRow(1).m_floats[2];a[6]=(o->m_rot).getRow(2).m_floats[0];a[7]=(o->m_rot).getRow(2).m_floats[1];a[8]=(o->m_rot).getRow(2).m_floats[2];+}++//attribute: ::btMatrix3x3 btSoftBody_Pose->m_scl+void btSoftBody_Pose_m_scl_set(void *c,float* a) {+	::btSoftBody::Pose *o = (::btSoftBody::Pose*)c;+	btMatrix3x3 ta(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]);+	o->m_scl = ta;+}+void btSoftBody_Pose_m_scl_get(void *c,float* a) {+	::btSoftBody::Pose *o = (::btSoftBody::Pose*)c;+	a[0]=(o->m_scl).getRow(0).m_floats[0];a[1]=(o->m_scl).getRow(0).m_floats[1];a[2]=(o->m_scl).getRow(0).m_floats[2];a[3]=(o->m_scl).getRow(1).m_floats[0];a[4]=(o->m_scl).getRow(1).m_floats[1];a[5]=(o->m_scl).getRow(1).m_floats[2];a[6]=(o->m_scl).getRow(2).m_floats[0];a[7]=(o->m_scl).getRow(2).m_floats[1];a[8]=(o->m_scl).getRow(2).m_floats[2];+}++//attribute: ::btMatrix3x3 btSoftBody_Pose->m_aqq+void btSoftBody_Pose_m_aqq_set(void *c,float* a) {+	::btSoftBody::Pose *o = (::btSoftBody::Pose*)c;+	btMatrix3x3 ta(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]);+	o->m_aqq = ta;+}+void btSoftBody_Pose_m_aqq_get(void *c,float* a) {+	::btSoftBody::Pose *o = (::btSoftBody::Pose*)c;+	a[0]=(o->m_aqq).getRow(0).m_floats[0];a[1]=(o->m_aqq).getRow(0).m_floats[1];a[2]=(o->m_aqq).getRow(0).m_floats[2];a[3]=(o->m_aqq).getRow(1).m_floats[0];a[4]=(o->m_aqq).getRow(1).m_floats[1];a[5]=(o->m_aqq).getRow(1).m_floats[2];a[6]=(o->m_aqq).getRow(2).m_floats[0];a[7]=(o->m_aqq).getRow(2).m_floats[1];a[8]=(o->m_aqq).getRow(2).m_floats[2];+}+++// ::btSoftBody::RContact+//constructor: RContact  ( ::btSoftBody::RContact::* )(  ) +void* btSoftBody_RContact_new() {+	::btSoftBody::RContact *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::RContact),16);+	o = new (mem)::btSoftBody::RContact();+	return (void*)o;+}+void btSoftBody_RContact_free(void *c) {+	::btSoftBody::RContact *o = (::btSoftBody::RContact*)c;+	delete o;+}+//attribute: ::btSoftBody::sCti btSoftBody_RContact->m_cti+// attribute not supported: //attribute: ::btSoftBody::sCti btSoftBody_RContact->m_cti+//attribute: ::btSoftBody::Node * btSoftBody_RContact->m_node+void btSoftBody_RContact_m_node_set(void *c,void* a) {+	::btSoftBody::RContact *o = (::btSoftBody::RContact*)c;+	::btSoftBody::Node * ta = (::btSoftBody::Node *)a;+	o->m_node = ta;+}+// attriibute getter not supported: //attribute: ::btSoftBody::Node * btSoftBody_RContact->m_node+//attribute: ::btMatrix3x3 btSoftBody_RContact->m_c0+void btSoftBody_RContact_m_c0_set(void *c,float* a) {+	::btSoftBody::RContact *o = (::btSoftBody::RContact*)c;+	btMatrix3x3 ta(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]);+	o->m_c0 = ta;+}+void btSoftBody_RContact_m_c0_get(void *c,float* a) {+	::btSoftBody::RContact *o = (::btSoftBody::RContact*)c;+	a[0]=(o->m_c0).getRow(0).m_floats[0];a[1]=(o->m_c0).getRow(0).m_floats[1];a[2]=(o->m_c0).getRow(0).m_floats[2];a[3]=(o->m_c0).getRow(1).m_floats[0];a[4]=(o->m_c0).getRow(1).m_floats[1];a[5]=(o->m_c0).getRow(1).m_floats[2];a[6]=(o->m_c0).getRow(2).m_floats[0];a[7]=(o->m_c0).getRow(2).m_floats[1];a[8]=(o->m_c0).getRow(2).m_floats[2];+}++//attribute: ::btVector3 btSoftBody_RContact->m_c1+void btSoftBody_RContact_m_c1_set(void *c,float* a) {+	::btSoftBody::RContact *o = (::btSoftBody::RContact*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_c1 = ta;+}+void btSoftBody_RContact_m_c1_get(void *c,float* a) {+	::btSoftBody::RContact *o = (::btSoftBody::RContact*)c;+	a[0]=(o->m_c1).m_floats[0];a[1]=(o->m_c1).m_floats[1];a[2]=(o->m_c1).m_floats[2];+}++//attribute: ::btScalar btSoftBody_RContact->m_c2+void btSoftBody_RContact_m_c2_set(void *c,float a) {+	::btSoftBody::RContact *o = (::btSoftBody::RContact*)c;+	o->m_c2 = a;+}+float btSoftBody_RContact_m_c2_get(void *c) {+	::btSoftBody::RContact *o = (::btSoftBody::RContact*)c;+	return (float)(o->m_c2);+}++//attribute: ::btScalar btSoftBody_RContact->m_c3+void btSoftBody_RContact_m_c3_set(void *c,float a) {+	::btSoftBody::RContact *o = (::btSoftBody::RContact*)c;+	o->m_c3 = a;+}+float btSoftBody_RContact_m_c3_get(void *c) {+	::btSoftBody::RContact *o = (::btSoftBody::RContact*)c;+	return (float)(o->m_c3);+}++//attribute: ::btScalar btSoftBody_RContact->m_c4+void btSoftBody_RContact_m_c4_set(void *c,float a) {+	::btSoftBody::RContact *o = (::btSoftBody::RContact*)c;+	o->m_c4 = a;+}+float btSoftBody_RContact_m_c4_get(void *c) {+	::btSoftBody::RContact *o = (::btSoftBody::RContact*)c;+	return (float)(o->m_c4);+}+++// ::btSoftBody::RayFromToCaster+//constructor: RayFromToCaster  ( ::btSoftBody::RayFromToCaster::* )( ::btVector3 const &,::btVector3 const &,::btScalar ) +void* btSoftBody_RayFromToCaster_new(float* p0,float* p1,float p2) {+	::btSoftBody::RayFromToCaster *o = 0;+	 void *mem = 0;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	mem = btAlignedAlloc(sizeof(::btSoftBody::RayFromToCaster),16);+	o = new (mem)::btSoftBody::RayFromToCaster(tp0,tp1,p2);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	return (void*)o;+}+void btSoftBody_RayFromToCaster_free(void *c) {+	::btSoftBody::RayFromToCaster *o = (::btSoftBody::RayFromToCaster*)c;+	delete o;+}+//method: Process void ( ::btSoftBody::RayFromToCaster::* )( ::btDbvtNode const * ) +void btSoftBody_RayFromToCaster_Process(void *c,void* p0) {+	::btSoftBody::RayFromToCaster *o = (::btSoftBody::RayFromToCaster*)c;+	::btDbvtNode const * tp0 = (::btDbvtNode const *)p0;+	o->Process(tp0);+}+//attribute: ::btVector3 btSoftBody_RayFromToCaster->m_rayFrom+void btSoftBody_RayFromToCaster_m_rayFrom_set(void *c,float* a) {+	::btSoftBody::RayFromToCaster *o = (::btSoftBody::RayFromToCaster*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_rayFrom = ta;+}+void btSoftBody_RayFromToCaster_m_rayFrom_get(void *c,float* a) {+	::btSoftBody::RayFromToCaster *o = (::btSoftBody::RayFromToCaster*)c;+	a[0]=(o->m_rayFrom).m_floats[0];a[1]=(o->m_rayFrom).m_floats[1];a[2]=(o->m_rayFrom).m_floats[2];+}++//attribute: ::btVector3 btSoftBody_RayFromToCaster->m_rayTo+void btSoftBody_RayFromToCaster_m_rayTo_set(void *c,float* a) {+	::btSoftBody::RayFromToCaster *o = (::btSoftBody::RayFromToCaster*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_rayTo = ta;+}+void btSoftBody_RayFromToCaster_m_rayTo_get(void *c,float* a) {+	::btSoftBody::RayFromToCaster *o = (::btSoftBody::RayFromToCaster*)c;+	a[0]=(o->m_rayTo).m_floats[0];a[1]=(o->m_rayTo).m_floats[1];a[2]=(o->m_rayTo).m_floats[2];+}++//attribute: ::btVector3 btSoftBody_RayFromToCaster->m_rayNormalizedDirection+void btSoftBody_RayFromToCaster_m_rayNormalizedDirection_set(void *c,float* a) {+	::btSoftBody::RayFromToCaster *o = (::btSoftBody::RayFromToCaster*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_rayNormalizedDirection = ta;+}+void btSoftBody_RayFromToCaster_m_rayNormalizedDirection_get(void *c,float* a) {+	::btSoftBody::RayFromToCaster *o = (::btSoftBody::RayFromToCaster*)c;+	a[0]=(o->m_rayNormalizedDirection).m_floats[0];a[1]=(o->m_rayNormalizedDirection).m_floats[1];a[2]=(o->m_rayNormalizedDirection).m_floats[2];+}++//attribute: ::btScalar btSoftBody_RayFromToCaster->m_mint+void btSoftBody_RayFromToCaster_m_mint_set(void *c,float a) {+	::btSoftBody::RayFromToCaster *o = (::btSoftBody::RayFromToCaster*)c;+	o->m_mint = a;+}+float btSoftBody_RayFromToCaster_m_mint_get(void *c) {+	::btSoftBody::RayFromToCaster *o = (::btSoftBody::RayFromToCaster*)c;+	return (float)(o->m_mint);+}++//attribute: ::btSoftBody::Face * btSoftBody_RayFromToCaster->m_face+void btSoftBody_RayFromToCaster_m_face_set(void *c,void* a) {+	::btSoftBody::RayFromToCaster *o = (::btSoftBody::RayFromToCaster*)c;+	::btSoftBody::Face * ta = (::btSoftBody::Face *)a;+	o->m_face = ta;+}+// attriibute getter not supported: //attribute: ::btSoftBody::Face * btSoftBody_RayFromToCaster->m_face+//attribute: int btSoftBody_RayFromToCaster->m_tests+void btSoftBody_RayFromToCaster_m_tests_set(void *c,int a) {+	::btSoftBody::RayFromToCaster *o = (::btSoftBody::RayFromToCaster*)c;+	o->m_tests = a;+}+int btSoftBody_RayFromToCaster_m_tests_get(void *c) {+	::btSoftBody::RayFromToCaster *o = (::btSoftBody::RayFromToCaster*)c;+	return (int)(o->m_tests);+}+++// ::btSoftBody::SContact+//constructor: SContact  ( ::btSoftBody::SContact::* )(  ) +void* btSoftBody_SContact_new() {+	::btSoftBody::SContact *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::SContact),16);+	o = new (mem)::btSoftBody::SContact();+	return (void*)o;+}+void btSoftBody_SContact_free(void *c) {+	::btSoftBody::SContact *o = (::btSoftBody::SContact*)c;+	delete o;+}+//attribute: ::btSoftBody::Node * btSoftBody_SContact->m_node+void btSoftBody_SContact_m_node_set(void *c,void* a) {+	::btSoftBody::SContact *o = (::btSoftBody::SContact*)c;+	::btSoftBody::Node * ta = (::btSoftBody::Node *)a;+	o->m_node = ta;+}+// attriibute getter not supported: //attribute: ::btSoftBody::Node * btSoftBody_SContact->m_node+//attribute: ::btSoftBody::Face * btSoftBody_SContact->m_face+void btSoftBody_SContact_m_face_set(void *c,void* a) {+	::btSoftBody::SContact *o = (::btSoftBody::SContact*)c;+	::btSoftBody::Face * ta = (::btSoftBody::Face *)a;+	o->m_face = ta;+}+// attriibute getter not supported: //attribute: ::btSoftBody::Face * btSoftBody_SContact->m_face+//attribute: ::btVector3 btSoftBody_SContact->m_weights+void btSoftBody_SContact_m_weights_set(void *c,float* a) {+	::btSoftBody::SContact *o = (::btSoftBody::SContact*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_weights = ta;+}+void btSoftBody_SContact_m_weights_get(void *c,float* a) {+	::btSoftBody::SContact *o = (::btSoftBody::SContact*)c;+	a[0]=(o->m_weights).m_floats[0];a[1]=(o->m_weights).m_floats[1];a[2]=(o->m_weights).m_floats[2];+}++//attribute: ::btVector3 btSoftBody_SContact->m_normal+void btSoftBody_SContact_m_normal_set(void *c,float* a) {+	::btSoftBody::SContact *o = (::btSoftBody::SContact*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_normal = ta;+}+void btSoftBody_SContact_m_normal_get(void *c,float* a) {+	::btSoftBody::SContact *o = (::btSoftBody::SContact*)c;+	a[0]=(o->m_normal).m_floats[0];a[1]=(o->m_normal).m_floats[1];a[2]=(o->m_normal).m_floats[2];+}++//attribute: ::btScalar btSoftBody_SContact->m_margin+void btSoftBody_SContact_m_margin_set(void *c,float a) {+	::btSoftBody::SContact *o = (::btSoftBody::SContact*)c;+	o->m_margin = a;+}+float btSoftBody_SContact_m_margin_get(void *c) {+	::btSoftBody::SContact *o = (::btSoftBody::SContact*)c;+	return (float)(o->m_margin);+}++//attribute: ::btScalar btSoftBody_SContact->m_friction+void btSoftBody_SContact_m_friction_set(void *c,float a) {+	::btSoftBody::SContact *o = (::btSoftBody::SContact*)c;+	o->m_friction = a;+}+float btSoftBody_SContact_m_friction_get(void *c) {+	::btSoftBody::SContact *o = (::btSoftBody::SContact*)c;+	return (float)(o->m_friction);+}++//attribute: ::btScalar[2] btSoftBody_SContact->m_cfm+// attribute not supported: //attribute: ::btScalar[2] btSoftBody_SContact->m_cfm++// ::btSoftBody::SolverState+//constructor: SolverState  ( ::btSoftBody::SolverState::* )(  ) +void* btSoftBody_SolverState_new() {+	::btSoftBody::SolverState *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::SolverState),16);+	o = new (mem)::btSoftBody::SolverState();+	return (void*)o;+}+void btSoftBody_SolverState_free(void *c) {+	::btSoftBody::SolverState *o = (::btSoftBody::SolverState*)c;+	delete o;+}+//attribute: ::btScalar btSoftBody_SolverState->sdt+void btSoftBody_SolverState_sdt_set(void *c,float a) {+	::btSoftBody::SolverState *o = (::btSoftBody::SolverState*)c;+	o->sdt = a;+}+float btSoftBody_SolverState_sdt_get(void *c) {+	::btSoftBody::SolverState *o = (::btSoftBody::SolverState*)c;+	return (float)(o->sdt);+}++//attribute: ::btScalar btSoftBody_SolverState->isdt+void btSoftBody_SolverState_isdt_set(void *c,float a) {+	::btSoftBody::SolverState *o = (::btSoftBody::SolverState*)c;+	o->isdt = a;+}+float btSoftBody_SolverState_isdt_get(void *c) {+	::btSoftBody::SolverState *o = (::btSoftBody::SolverState*)c;+	return (float)(o->isdt);+}++//attribute: ::btScalar btSoftBody_SolverState->velmrg+void btSoftBody_SolverState_velmrg_set(void *c,float a) {+	::btSoftBody::SolverState *o = (::btSoftBody::SolverState*)c;+	o->velmrg = a;+}+float btSoftBody_SolverState_velmrg_get(void *c) {+	::btSoftBody::SolverState *o = (::btSoftBody::SolverState*)c;+	return (float)(o->velmrg);+}++//attribute: ::btScalar btSoftBody_SolverState->radmrg+void btSoftBody_SolverState_radmrg_set(void *c,float a) {+	::btSoftBody::SolverState *o = (::btSoftBody::SolverState*)c;+	o->radmrg = a;+}+float btSoftBody_SolverState_radmrg_get(void *c) {+	::btSoftBody::SolverState *o = (::btSoftBody::SolverState*)c;+	return (float)(o->radmrg);+}++//attribute: ::btScalar btSoftBody_SolverState->updmrg+void btSoftBody_SolverState_updmrg_set(void *c,float a) {+	::btSoftBody::SolverState *o = (::btSoftBody::SolverState*)c;+	o->updmrg = a;+}+float btSoftBody_SolverState_updmrg_get(void *c) {+	::btSoftBody::SolverState *o = (::btSoftBody::SolverState*)c;+	return (float)(o->updmrg);+}+++// ::btSoftBody::Joint::Specs+//constructor: Specs  ( ::btSoftBody::Joint::Specs::* )(  ) +void* btSoftBody_Joint_Specs_new() {+	::btSoftBody::Joint::Specs *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::Joint::Specs),16);+	o = new (mem)::btSoftBody::Joint::Specs();+	return (void*)o;+}+void btSoftBody_Joint_Specs_free(void *c) {+	::btSoftBody::Joint::Specs *o = (::btSoftBody::Joint::Specs*)c;+	delete o;+}+//attribute: ::btScalar btSoftBody_Joint_Specs->erp+void btSoftBody_Joint_Specs_erp_set(void *c,float a) {+	::btSoftBody::Joint::Specs *o = (::btSoftBody::Joint::Specs*)c;+	o->erp = a;+}+float btSoftBody_Joint_Specs_erp_get(void *c) {+	::btSoftBody::Joint::Specs *o = (::btSoftBody::Joint::Specs*)c;+	return (float)(o->erp);+}++//attribute: ::btScalar btSoftBody_Joint_Specs->cfm+void btSoftBody_Joint_Specs_cfm_set(void *c,float a) {+	::btSoftBody::Joint::Specs *o = (::btSoftBody::Joint::Specs*)c;+	o->cfm = a;+}+float btSoftBody_Joint_Specs_cfm_get(void *c) {+	::btSoftBody::Joint::Specs *o = (::btSoftBody::Joint::Specs*)c;+	return (float)(o->cfm);+}++//attribute: ::btScalar btSoftBody_Joint_Specs->split+void btSoftBody_Joint_Specs_split_set(void *c,float a) {+	::btSoftBody::Joint::Specs *o = (::btSoftBody::Joint::Specs*)c;+	o->split = a;+}+float btSoftBody_Joint_Specs_split_get(void *c) {+	::btSoftBody::Joint::Specs *o = (::btSoftBody::Joint::Specs*)c;+	return (float)(o->split);+}+++// ::btSoftBody::LJoint::Specs+//constructor: Specs  ( ::btSoftBody::LJoint::Specs::* )(  ) +void* btSoftBody_LJoint_Specs_new() {+	::btSoftBody::LJoint::Specs *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::LJoint::Specs),16);+	o = new (mem)::btSoftBody::LJoint::Specs();+	return (void*)o;+}+void btSoftBody_LJoint_Specs_free(void *c) {+	::btSoftBody::LJoint::Specs *o = (::btSoftBody::LJoint::Specs*)c;+	delete o;+}+//attribute: ::btVector3 btSoftBody_LJoint_Specs->position+void btSoftBody_LJoint_Specs_position_set(void *c,float* a) {+	::btSoftBody::LJoint::Specs *o = (::btSoftBody::LJoint::Specs*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->position = ta;+}+void btSoftBody_LJoint_Specs_position_get(void *c,float* a) {+	::btSoftBody::LJoint::Specs *o = (::btSoftBody::LJoint::Specs*)c;+	a[0]=(o->position).m_floats[0];a[1]=(o->position).m_floats[1];a[2]=(o->position).m_floats[2];+}+++// ::btSoftBody::AJoint::Specs+//constructor: Specs  ( ::btSoftBody::AJoint::Specs::* )(  ) +void* btSoftBody_AJoint_Specs_new() {+	::btSoftBody::AJoint::Specs *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::AJoint::Specs),16);+	o = new (mem)::btSoftBody::AJoint::Specs();+	return (void*)o;+}+void btSoftBody_AJoint_Specs_free(void *c) {+	::btSoftBody::AJoint::Specs *o = (::btSoftBody::AJoint::Specs*)c;+	delete o;+}+//attribute: ::btVector3 btSoftBody_AJoint_Specs->axis+void btSoftBody_AJoint_Specs_axis_set(void *c,float* a) {+	::btSoftBody::AJoint::Specs *o = (::btSoftBody::AJoint::Specs*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->axis = ta;+}+void btSoftBody_AJoint_Specs_axis_get(void *c,float* a) {+	::btSoftBody::AJoint::Specs *o = (::btSoftBody::AJoint::Specs*)c;+	a[0]=(o->axis).m_floats[0];a[1]=(o->axis).m_floats[1];a[2]=(o->axis).m_floats[2];+}++//attribute: ::btSoftBody::AJoint::IControl * btSoftBody_AJoint_Specs->icontrol+void btSoftBody_AJoint_Specs_icontrol_set(void *c,void* a) {+	::btSoftBody::AJoint::Specs *o = (::btSoftBody::AJoint::Specs*)c;+	::btSoftBody::AJoint::IControl * ta = (::btSoftBody::AJoint::IControl *)a;+	o->icontrol = ta;+}+// attriibute getter not supported: //attribute: ::btSoftBody::AJoint::IControl * btSoftBody_AJoint_Specs->icontrol++// ::btSoftBody::Tetra+//constructor: Tetra  ( ::btSoftBody::Tetra::* )(  ) +void* btSoftBody_Tetra_new() {+	::btSoftBody::Tetra *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::Tetra),16);+	o = new (mem)::btSoftBody::Tetra();+	return (void*)o;+}+void btSoftBody_Tetra_free(void *c) {+	::btSoftBody::Tetra *o = (::btSoftBody::Tetra*)c;+	delete o;+}+//attribute: ::btSoftBody::Node *[4] btSoftBody_Tetra->m_n+// attribute not supported: //attribute: ::btSoftBody::Node *[4] btSoftBody_Tetra->m_n+//attribute: ::btScalar btSoftBody_Tetra->m_rv+void btSoftBody_Tetra_m_rv_set(void *c,float a) {+	::btSoftBody::Tetra *o = (::btSoftBody::Tetra*)c;+	o->m_rv = a;+}+float btSoftBody_Tetra_m_rv_get(void *c) {+	::btSoftBody::Tetra *o = (::btSoftBody::Tetra*)c;+	return (float)(o->m_rv);+}++//attribute: ::btDbvtNode * btSoftBody_Tetra->m_leaf+void btSoftBody_Tetra_m_leaf_set(void *c,void* a) {+	::btSoftBody::Tetra *o = (::btSoftBody::Tetra*)c;+	::btDbvtNode * ta = (::btDbvtNode *)a;+	o->m_leaf = ta;+}+// attriibute getter not supported: //attribute: ::btDbvtNode * btSoftBody_Tetra->m_leaf+//attribute: ::btVector3[4] btSoftBody_Tetra->m_c0+// attribute not supported: //attribute: ::btVector3[4] btSoftBody_Tetra->m_c0+//attribute: ::btScalar btSoftBody_Tetra->m_c1+void btSoftBody_Tetra_m_c1_set(void *c,float a) {+	::btSoftBody::Tetra *o = (::btSoftBody::Tetra*)c;+	o->m_c1 = a;+}+float btSoftBody_Tetra_m_c1_get(void *c) {+	::btSoftBody::Tetra *o = (::btSoftBody::Tetra*)c;+	return (float)(o->m_c1);+}++//attribute: ::btScalar btSoftBody_Tetra->m_c2+void btSoftBody_Tetra_m_c2_set(void *c,float a) {+	::btSoftBody::Tetra *o = (::btSoftBody::Tetra*)c;+	o->m_c2 = a;+}+float btSoftBody_Tetra_m_c2_get(void *c) {+	::btSoftBody::Tetra *o = (::btSoftBody::Tetra*)c;+	return (float)(o->m_c2);+}+++// ::btSoftBody+//not supported constructor: btSoftBody  ( ::btSoftBody::* )( ::btSoftBodyWorldInfo *,int,::btVector3 const *,::btScalar const * ) +//constructor: btSoftBody  ( ::btSoftBody::* )( ::btSoftBodyWorldInfo * ) +void* btSoftBody_new1(void* p0) {+	::btSoftBody *o = 0;+	 void *mem = 0;+	::btSoftBodyWorldInfo * tp0 = (::btSoftBodyWorldInfo *)p0;+	mem = btAlignedAlloc(sizeof(::btSoftBody),16);+	o = new (mem)::btSoftBody(tp0);+	return (void*)o;+}+void btSoftBody_free(void *c) {+	::btSoftBody *o = (::btSoftBody*)c;+	delete o;+}+//method: getVolume ::btScalar ( ::btSoftBody::* )(  ) const+float btSoftBody_getVolume(void *c) {+	::btSoftBody *o = (::btSoftBody*)c;+	float retVal = (float)o->getVolume();+	return retVal;+}+//method: cutLink bool ( ::btSoftBody::* )( int,int,::btScalar ) +int btSoftBody_cutLink(void *c,int p0,int p1,float p2) {+	::btSoftBody *o = (::btSoftBody*)c;+	int retVal = (int)o->cutLink(p0,p1,p2);+	return retVal;+}+//method: cutLink bool ( ::btSoftBody::* )( int,int,::btScalar ) +int btSoftBody_cutLink0(void *c,int p0,int p1,float p2) {+	::btSoftBody *o = (::btSoftBody*)c;+	int retVal = (int)o->cutLink(p0,p1,p2);+	return retVal;+}+//method: cutLink bool ( ::btSoftBody::* )( ::btSoftBody::Node const *,::btSoftBody::Node const *,::btScalar ) +int btSoftBody_cutLink1(void *c,void* p0,void* p1,float p2) {+	::btSoftBody *o = (::btSoftBody*)c;+	::btSoftBody::Node const * tp0 = (::btSoftBody::Node const *)p0;+	::btSoftBody::Node const * tp1 = (::btSoftBody::Node const *)p1;+	int retVal = (int)o->cutLink(tp0,tp1,p2);+	return retVal;+}+//method: PSolve_Links void (*)( ::btSoftBody *,::btScalar,::btScalar )+void btSoftBody_PSolve_Links(void* p0,float p1,float p2) {+	::btSoftBody * tp0 = (::btSoftBody *)p0;+	::btSoftBody::PSolve_Links(tp0,p1,p2);+}+//method: generateClusters int ( ::btSoftBody::* )( int,int ) +int btSoftBody_generateClusters(void *c,int p0,int p1) {+	::btSoftBody *o = (::btSoftBody*)c;+	int retVal = (int)o->generateClusters(p0,p1);+	return retVal;+}+//method: setCollisionShape void ( ::btSoftBody::* )( ::btCollisionShape * ) +void btSoftBody_setCollisionShape(void *c,void* p0) {+	::btSoftBody *o = (::btSoftBody*)c;+	::btCollisionShape * tp0 = (::btCollisionShape *)p0;+	o->setCollisionShape(tp0);+}+//method: initializeClusters void ( ::btSoftBody::* )(  ) +void btSoftBody_initializeClusters(void *c) {+	::btSoftBody *o = (::btSoftBody*)c;+	o->initializeClusters();+}+//method: clusterVAImpulse void (*)( ::btSoftBody::Cluster *,::btVector3 const & )+void btSoftBody_clusterVAImpulse(void* p0,float* p1) {+	::btSoftBody::Cluster * tp0 = (::btSoftBody::Cluster *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	::btSoftBody::clusterVAImpulse(tp0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: addForce void ( ::btSoftBody::* )( ::btVector3 const & ) +void btSoftBody_addForce(void *c,float* p0) {+	::btSoftBody *o = (::btSoftBody*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->addForce(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: addForce void ( ::btSoftBody::* )( ::btVector3 const & ) +void btSoftBody_addForce0(void *c,float* p0) {+	::btSoftBody *o = (::btSoftBody*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->addForce(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: addForce void ( ::btSoftBody::* )( ::btVector3 const &,int ) +void btSoftBody_addForce1(void *c,float* p0,int p1) {+	::btSoftBody *o = (::btSoftBody*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->addForce(tp0,p1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//not supported method: serialize char const * ( ::btSoftBody::* )( void *,::btSerializer * ) const+//method: updateBounds void ( ::btSoftBody::* )(  ) +void btSoftBody_updateBounds(void *c) {+	::btSoftBody *o = (::btSoftBody*)c;+	o->updateBounds();+}+//method: rotate void ( ::btSoftBody::* )( ::btQuaternion const & ) +void btSoftBody_rotate(void *c,float* p0) {+	::btSoftBody *o = (::btSoftBody*)c;+	btQuaternion tp0(p0[0],p0[1],p0[2],p0[3]);+	o->rotate(tp0);+	p0[0]=tp0.getX();p0[1]=tp0.getY();p0[2]=tp0.getZ();p0[3]=tp0.getW();+}+//method: releaseCluster void ( ::btSoftBody::* )( int ) +void btSoftBody_releaseCluster(void *c,int p0) {+	::btSoftBody *o = (::btSoftBody*)c;+	o->releaseCluster(p0);+}+//method: updateNormals void ( ::btSoftBody::* )(  ) +void btSoftBody_updateNormals(void *c) {+	::btSoftBody *o = (::btSoftBody*)c;+	o->updateNormals();+}+//method: prepareClusters void ( ::btSoftBody::* )( int ) +void btSoftBody_prepareClusters(void *c,int p0) {+	::btSoftBody *o = (::btSoftBody*)c;+	o->prepareClusters(p0);+}+//method: releaseClusters void ( ::btSoftBody::* )(  ) +void btSoftBody_releaseClusters(void *c) {+	::btSoftBody *o = (::btSoftBody*)c;+	o->releaseClusters();+}+//method: getTotalMass ::btScalar ( ::btSoftBody::* )(  ) const+float btSoftBody_getTotalMass(void *c) {+	::btSoftBody *o = (::btSoftBody*)c;+	float retVal = (float)o->getTotalMass();+	return retVal;+}+//method: checkContact bool ( ::btSoftBody::* )( ::btCollisionObject *,::btVector3 const &,::btScalar,::btSoftBody::sCti & ) const+int btSoftBody_checkContact(void *c,void* p0,float* p1,float p2,void* p3) {+	::btSoftBody *o = (::btSoftBody*)c;+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	::btSoftBody::sCti & tp3 = *(::btSoftBody::sCti *)p3;+	int retVal = (int)o->checkContact(tp0,tp1,p2,tp3);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	return retVal;+}+//not supported method: indicesToPointers void ( ::btSoftBody::* )( int const * ) +//method: clusterDImpulse void (*)( ::btSoftBody::Cluster *,::btVector3 const &,::btVector3 const & )+void btSoftBody_clusterDImpulse(void* p0,float* p1,float* p2) {+	::btSoftBody::Cluster * tp0 = (::btSoftBody::Cluster *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	::btSoftBody::clusterDImpulse(tp0,tp1,tp2);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: initDefaults void ( ::btSoftBody::* )(  ) +void btSoftBody_initDefaults(void *c) {+	::btSoftBody *o = (::btSoftBody*)c;+	o->initDefaults();+}+//method: checkLink bool ( ::btSoftBody::* )( int,int ) const+int btSoftBody_checkLink(void *c,int p0,int p1) {+	::btSoftBody *o = (::btSoftBody*)c;+	int retVal = (int)o->checkLink(p0,p1);+	return retVal;+}+//method: checkLink bool ( ::btSoftBody::* )( int,int ) const+int btSoftBody_checkLink0(void *c,int p0,int p1) {+	::btSoftBody *o = (::btSoftBody*)c;+	int retVal = (int)o->checkLink(p0,p1);+	return retVal;+}+//method: checkLink bool ( ::btSoftBody::* )( ::btSoftBody::Node const *,::btSoftBody::Node const * ) const+int btSoftBody_checkLink1(void *c,void* p0,void* p1) {+	::btSoftBody *o = (::btSoftBody*)c;+	::btSoftBody::Node const * tp0 = (::btSoftBody::Node const *)p0;+	::btSoftBody::Node const * tp1 = (::btSoftBody::Node const *)p1;+	int retVal = (int)o->checkLink(tp0,tp1);+	return retVal;+}+//method: setVolumeMass void ( ::btSoftBody::* )( ::btScalar ) +void btSoftBody_setVolumeMass(void *c,float p0) {+	::btSoftBody *o = (::btSoftBody*)c;+	o->setVolumeMass(p0);+}+//method: clusterImpulse void (*)( ::btSoftBody::Cluster *,::btVector3 const &,::btSoftBody::Impulse const & )+void btSoftBody_clusterImpulse(void* p0,float* p1,void* p2) {+	::btSoftBody::Cluster * tp0 = (::btSoftBody::Cluster *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	::btSoftBody::Impulse const & tp2 = *(::btSoftBody::Impulse const *)p2;+	::btSoftBody::clusterImpulse(tp0,tp1,tp2);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: checkFace bool ( ::btSoftBody::* )( int,int,int ) const+int btSoftBody_checkFace(void *c,int p0,int p1,int p2) {+	::btSoftBody *o = (::btSoftBody*)c;+	int retVal = (int)o->checkFace(p0,p1,p2);+	return retVal;+}+//method: evaluateCom ::btVector3 ( ::btSoftBody::* )(  ) const+void btSoftBody_evaluateCom(void *c,float* ret) {+	::btSoftBody *o = (::btSoftBody*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->evaluateCom();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: clusterDAImpulse void (*)( ::btSoftBody::Cluster *,::btVector3 const & )+void btSoftBody_clusterDAImpulse(void* p0,float* p1) {+	::btSoftBody::Cluster * tp0 = (::btSoftBody::Cluster *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	::btSoftBody::clusterDAImpulse(tp0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: VSolve_Links void (*)( ::btSoftBody *,::btScalar )+void btSoftBody_VSolve_Links(void* p0,float p1) {+	::btSoftBody * tp0 = (::btSoftBody *)p0;+	::btSoftBody::VSolve_Links(tp0,p1);+}+//method: setTotalMass void ( ::btSoftBody::* )( ::btScalar,bool ) +void btSoftBody_setTotalMass(void *c,float p0,int p1) {+	::btSoftBody *o = (::btSoftBody*)c;+	o->setTotalMass(p0,p1);+}+//method: clusterDCImpulse void (*)( ::btSoftBody::Cluster *,::btVector3 const & )+void btSoftBody_clusterDCImpulse(void* p0,float* p1) {+	::btSoftBody::Cluster * tp0 = (::btSoftBody::Cluster *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	::btSoftBody::clusterDCImpulse(tp0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: clusterVelocity ::btVector3 (*)( ::btSoftBody::Cluster const *,::btVector3 const & )+void btSoftBody_clusterVelocity(void* p0,float* p1,float* ret) {+	::btSoftBody::Cluster const * tp0 = (::btSoftBody::Cluster const *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = ::btSoftBody::clusterVelocity(tp0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: generateBendingConstraints int ( ::btSoftBody::* )( int,::btSoftBody::Material * ) +int btSoftBody_generateBendingConstraints(void *c,int p0,void* p1) {+	::btSoftBody *o = (::btSoftBody*)c;+	::btSoftBody::Material * tp1 = (::btSoftBody::Material *)p1;+	int retVal = (int)o->generateBendingConstraints(p0,tp1);+	return retVal;+}+//method: updateClusters void ( ::btSoftBody::* )(  ) +void btSoftBody_updateClusters(void *c) {+	::btSoftBody *o = (::btSoftBody*)c;+	o->updateClusters();+}+//method: appendAnchor void ( ::btSoftBody::* )( int,::btRigidBody *,bool,::btScalar ) +void btSoftBody_appendAnchor(void *c,int p0,void* p1,int p2,float p3) {+	::btSoftBody *o = (::btSoftBody*)c;+	::btRigidBody * tp1 = (::btRigidBody *)p1;+	o->appendAnchor(p0,tp1,p2,p3);+}+//method: appendAnchor void ( ::btSoftBody::* )( int,::btRigidBody *,bool,::btScalar ) +void btSoftBody_appendAnchor0(void *c,int p0,void* p1,int p2,float p3) {+	::btSoftBody *o = (::btSoftBody*)c;+	::btRigidBody * tp1 = (::btRigidBody *)p1;+	o->appendAnchor(p0,tp1,p2,p3);+}+//method: appendAnchor void ( ::btSoftBody::* )( int,::btRigidBody *,::btVector3 const &,bool,::btScalar ) +void btSoftBody_appendAnchor1(void *c,int p0,void* p1,float* p2,int p3,float p4) {+	::btSoftBody *o = (::btSoftBody*)c;+	::btRigidBody * tp1 = (::btRigidBody *)p1;+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->appendAnchor(p0,tp1,tp2,p3,p4);+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: applyClusters void ( ::btSoftBody::* )( bool ) +void btSoftBody_applyClusters(void *c,int p0) {+	::btSoftBody *o = (::btSoftBody*)c;+	o->applyClusters(p0);+}+//method: setVelocity void ( ::btSoftBody::* )( ::btVector3 const & ) +void btSoftBody_setVelocity(void *c,float* p0) {+	::btSoftBody *o = (::btSoftBody*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setVelocity(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: clusterCount int ( ::btSoftBody::* )(  ) const+int btSoftBody_clusterCount(void *c) {+	::btSoftBody *o = (::btSoftBody*)c;+	int retVal = (int)o->clusterCount();+	return retVal;+}+//method: upcast ::btSoftBody const * (*)( ::btCollisionObject const * )+void* btSoftBody_upcast(void* p0) {+	::btCollisionObject const * tp0 = (::btCollisionObject const *)p0;+	void* retVal = (void*) ::btSoftBody::upcast(tp0);+	return retVal;+}+//method: upcast ::btSoftBody const * (*)( ::btCollisionObject const * )+void* btSoftBody_upcast0(void* p0) {+	::btCollisionObject const * tp0 = (::btCollisionObject const *)p0;+	void* retVal = (void*) ::btSoftBody::upcast(tp0);+	return retVal;+}+//method: upcast ::btSoftBody * (*)( ::btCollisionObject * )+void* btSoftBody_upcast1(void* p0) {+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	void* retVal = (void*) ::btSoftBody::upcast(tp0);+	return retVal;+}+//method: getWindVelocity ::btVector3 const & ( ::btSoftBody::* )(  ) +void btSoftBody_getWindVelocity(void *c,float* ret) {+	::btSoftBody *o = (::btSoftBody*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getWindVelocity();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: predictMotion void ( ::btSoftBody::* )( ::btScalar ) +void btSoftBody_predictMotion(void *c,float p0) {+	::btSoftBody *o = (::btSoftBody*)c;+	o->predictMotion(p0);+}+//method: pointersToIndices void ( ::btSoftBody::* )(  ) +void btSoftBody_pointersToIndices(void *c) {+	::btSoftBody *o = (::btSoftBody*)c;+	o->pointersToIndices();+}+//method: getMass ::btScalar ( ::btSoftBody::* )( int ) const+float btSoftBody_getMass(void *c,int p0) {+	::btSoftBody *o = (::btSoftBody*)c;+	float retVal = (float)o->getMass(p0);+	return retVal;+}+//method: PSolve_RContacts void (*)( ::btSoftBody *,::btScalar,::btScalar )+void btSoftBody_PSolve_RContacts(void* p0,float p1,float p2) {+	::btSoftBody * tp0 = (::btSoftBody *)p0;+	::btSoftBody::PSolve_RContacts(tp0,p1,p2);+}+//method: initializeFaceTree void ( ::btSoftBody::* )(  ) +void btSoftBody_initializeFaceTree(void *c) {+	::btSoftBody *o = (::btSoftBody*)c;+	o->initializeFaceTree();+}+//method: addVelocity void ( ::btSoftBody::* )( ::btVector3 const & ) +void btSoftBody_addVelocity(void *c,float* p0) {+	::btSoftBody *o = (::btSoftBody*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->addVelocity(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: addVelocity void ( ::btSoftBody::* )( ::btVector3 const & ) +void btSoftBody_addVelocity0(void *c,float* p0) {+	::btSoftBody *o = (::btSoftBody*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->addVelocity(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: addVelocity void ( ::btSoftBody::* )( ::btVector3 const &,int ) +void btSoftBody_addVelocity1(void *c,float* p0,int p1) {+	::btSoftBody *o = (::btSoftBody*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->addVelocity(tp0,p1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: PSolve_Anchors void (*)( ::btSoftBody *,::btScalar,::btScalar )+void btSoftBody_PSolve_Anchors(void* p0,float p1,float p2) {+	::btSoftBody * tp0 = (::btSoftBody *)p0;+	::btSoftBody::PSolve_Anchors(tp0,p1,p2);+}+//method: cleanupClusters void ( ::btSoftBody::* )(  ) +void btSoftBody_cleanupClusters(void *c) {+	::btSoftBody *o = (::btSoftBody*)c;+	o->cleanupClusters();+}+//method: transform void ( ::btSoftBody::* )( ::btTransform const & ) +void btSoftBody_transform(void *c,float* p0) {+	::btSoftBody *o = (::btSoftBody*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	o->transform(tp0);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+}+//not supported method: appendLinearJoint void ( ::btSoftBody::* )( ::btSoftBody::LJoint::Specs const &,::btSoftBody::Cluster *,::btSoftBody::Body ) +//not supported method: appendLinearJoint void ( ::btSoftBody::* )( ::btSoftBody::LJoint::Specs const &,::btSoftBody::Cluster *,::btSoftBody::Body ) +//not supported method: appendLinearJoint void ( ::btSoftBody::* )( ::btSoftBody::LJoint::Specs const &,::btSoftBody::Body ) +//method: appendLinearJoint void ( ::btSoftBody::* )( ::btSoftBody::LJoint::Specs const &,::btSoftBody * ) +void btSoftBody_appendLinearJoint2(void *c,void* p0,void* p1) {+	::btSoftBody *o = (::btSoftBody*)c;+	::btSoftBody::LJoint::Specs const & tp0 = *(::btSoftBody::LJoint::Specs const *)p0;+	::btSoftBody * tp1 = (::btSoftBody *)p1;+	o->appendLinearJoint(tp0,tp1);+}+//method: randomizeConstraints void ( ::btSoftBody::* )(  ) +void btSoftBody_randomizeConstraints(void *c) {+	::btSoftBody *o = (::btSoftBody*)c;+	o->randomizeConstraints();+}+//method: updatePose void ( ::btSoftBody::* )(  ) +void btSoftBody_updatePose(void *c) {+	::btSoftBody *o = (::btSoftBody*)c;+	o->updatePose();+}+//method: translate void ( ::btSoftBody::* )( ::btVector3 const & ) +void btSoftBody_translate(void *c,float* p0) {+	::btSoftBody *o = (::btSoftBody*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->translate(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: getAabb void ( ::btSoftBody::* )( ::btVector3 &,::btVector3 & ) const+void btSoftBody_getAabb(void *c,float* p0,float* p1) {+	::btSoftBody *o = (::btSoftBody*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->getAabb(tp0,tp1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: PSolve_SContacts void (*)( ::btSoftBody *,::btScalar,::btScalar )+void btSoftBody_PSolve_SContacts(void* p0,float p1,float p2) {+	::btSoftBody * tp0 = (::btSoftBody *)p0;+	::btSoftBody::PSolve_SContacts(tp0,p1,p2);+}+//method: appendMaterial ::btSoftBody::Material * ( ::btSoftBody::* )(  ) +void* btSoftBody_appendMaterial(void *c) {+	::btSoftBody *o = (::btSoftBody*)c;+	void* retVal = (void*) o->appendMaterial();+	return retVal;+}+//method: appendNode void ( ::btSoftBody::* )( ::btVector3 const &,::btScalar ) +void btSoftBody_appendNode(void *c,float* p0,float p1) {+	::btSoftBody *o = (::btSoftBody*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->appendNode(tp0,p1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: setMass void ( ::btSoftBody::* )( int,::btScalar ) +void btSoftBody_setMass(void *c,int p0,float p1) {+	::btSoftBody *o = (::btSoftBody*)c;+	o->setMass(p0,p1);+}+//method: integrateMotion void ( ::btSoftBody::* )(  ) +void btSoftBody_integrateMotion(void *c) {+	::btSoftBody *o = (::btSoftBody*)c;+	o->integrateMotion();+}+//method: defaultCollisionHandler void ( ::btSoftBody::* )( ::btCollisionObject * ) +void btSoftBody_defaultCollisionHandler(void *c,void* p0) {+	::btSoftBody *o = (::btSoftBody*)c;+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	o->defaultCollisionHandler(tp0);+}+//method: defaultCollisionHandler void ( ::btSoftBody::* )( ::btCollisionObject * ) +void btSoftBody_defaultCollisionHandler0(void *c,void* p0) {+	::btSoftBody *o = (::btSoftBody*)c;+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	o->defaultCollisionHandler(tp0);+}+//method: defaultCollisionHandler void ( ::btSoftBody::* )( ::btSoftBody * ) +void btSoftBody_defaultCollisionHandler1(void *c,void* p0) {+	::btSoftBody *o = (::btSoftBody*)c;+	::btSoftBody * tp0 = (::btSoftBody *)p0;+	o->defaultCollisionHandler(tp0);+}+//method: solveConstraints void ( ::btSoftBody::* )(  ) +void btSoftBody_solveConstraints(void *c) {+	::btSoftBody *o = (::btSoftBody*)c;+	o->solveConstraints();+}+//method: setTotalDensity void ( ::btSoftBody::* )( ::btScalar ) +void btSoftBody_setTotalDensity(void *c,float p0) {+	::btSoftBody *o = (::btSoftBody*)c;+	o->setTotalDensity(p0);+}+//method: appendNote void ( ::btSoftBody::* )( char const *,::btVector3 const &,::btVector4 const &,::btSoftBody::Node *,::btSoftBody::Node *,::btSoftBody::Node *,::btSoftBody::Node * ) +void btSoftBody_appendNote(void *c,char const * p0,float* p1,float* p2,void* p3,void* p4,void* p5,void* p6) {+	::btSoftBody *o = (::btSoftBody*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector4 tp2(p2[0],p2[1],p2[2],p2[3]);+	::btSoftBody::Node * tp3 = (::btSoftBody::Node *)p3;+	::btSoftBody::Node * tp4 = (::btSoftBody::Node *)p4;+	::btSoftBody::Node * tp5 = (::btSoftBody::Node *)p5;+	::btSoftBody::Node * tp6 = (::btSoftBody::Node *)p6;+	o->appendNote(p0,tp1,tp2,tp3,tp4,tp5,tp6);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.getX();p2[1]=tp2.getY();p2[2]=tp2.getZ();p2[3]=tp2.getW();+}+//method: appendNote void ( ::btSoftBody::* )( char const *,::btVector3 const &,::btVector4 const &,::btSoftBody::Node *,::btSoftBody::Node *,::btSoftBody::Node *,::btSoftBody::Node * ) +void btSoftBody_appendNote0(void *c,char const * p0,float* p1,float* p2,void* p3,void* p4,void* p5,void* p6) {+	::btSoftBody *o = (::btSoftBody*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector4 tp2(p2[0],p2[1],p2[2],p2[3]);+	::btSoftBody::Node * tp3 = (::btSoftBody::Node *)p3;+	::btSoftBody::Node * tp4 = (::btSoftBody::Node *)p4;+	::btSoftBody::Node * tp5 = (::btSoftBody::Node *)p5;+	::btSoftBody::Node * tp6 = (::btSoftBody::Node *)p6;+	o->appendNote(p0,tp1,tp2,tp3,tp4,tp5,tp6);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.getX();p2[1]=tp2.getY();p2[2]=tp2.getZ();p2[3]=tp2.getW();+}+//method: appendNote void ( ::btSoftBody::* )( char const *,::btVector3 const &,::btSoftBody::Node * ) +void btSoftBody_appendNote1(void *c,char const * p0,float* p1,void* p2) {+	::btSoftBody *o = (::btSoftBody*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	::btSoftBody::Node * tp2 = (::btSoftBody::Node *)p2;+	o->appendNote(p0,tp1,tp2);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: appendNote void ( ::btSoftBody::* )( char const *,::btVector3 const &,::btSoftBody::Link * ) +void btSoftBody_appendNote2(void *c,char const * p0,float* p1,void* p2) {+	::btSoftBody *o = (::btSoftBody*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	::btSoftBody::Link * tp2 = (::btSoftBody::Link *)p2;+	o->appendNote(p0,tp1,tp2);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: appendNote void ( ::btSoftBody::* )( char const *,::btVector3 const &,::btSoftBody::Face * ) +void btSoftBody_appendNote3(void *c,char const * p0,float* p1,void* p2) {+	::btSoftBody *o = (::btSoftBody*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	::btSoftBody::Face * tp2 = (::btSoftBody::Face *)p2;+	o->appendNote(p0,tp1,tp2);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: setVolumeDensity void ( ::btSoftBody::* )( ::btScalar ) +void btSoftBody_setVolumeDensity(void *c,float p0) {+	::btSoftBody *o = (::btSoftBody*)c;+	o->setVolumeDensity(p0);+}+//not supported method: solveCommonConstraints void (*)( ::btSoftBody * *,int,int )+//method: updateConstants void ( ::btSoftBody::* )(  ) +void btSoftBody_updateConstants(void *c) {+	::btSoftBody *o = (::btSoftBody*)c;+	o->updateConstants();+}+//method: staticSolve void ( ::btSoftBody::* )( int ) +void btSoftBody_staticSolve(void *c,int p0) {+	::btSoftBody *o = (::btSoftBody*)c;+	o->staticSolve(p0);+}+//not supported method: getSoftBodySolver ::btSoftBodySolver * ( ::btSoftBody::* )(  ) +//not supported method: getSoftBodySolver ::btSoftBodySolver * ( ::btSoftBody::* )(  ) +//not supported method: getSoftBodySolver ::btSoftBodySolver * ( ::btSoftBody::* )(  ) const+//method: refine void ( ::btSoftBody::* )( ::btSoftBody::ImplicitFn *,::btScalar,bool ) +void btSoftBody_refine(void *c,void* p0,float p1,int p2) {+	::btSoftBody *o = (::btSoftBody*)c;+	::btSoftBody::ImplicitFn * tp0 = (::btSoftBody::ImplicitFn *)p0;+	o->refine(tp0,p1,p2);+}+//method: appendLink void ( ::btSoftBody::* )( int,::btSoftBody::Material * ) +void btSoftBody_appendLink(void *c,int p0,void* p1) {+	::btSoftBody *o = (::btSoftBody*)c;+	::btSoftBody::Material * tp1 = (::btSoftBody::Material *)p1;+	o->appendLink(p0,tp1);+}+//method: appendLink void ( ::btSoftBody::* )( int,::btSoftBody::Material * ) +void btSoftBody_appendLink0(void *c,int p0,void* p1) {+	::btSoftBody *o = (::btSoftBody*)c;+	::btSoftBody::Material * tp1 = (::btSoftBody::Material *)p1;+	o->appendLink(p0,tp1);+}+//method: appendLink void ( ::btSoftBody::* )( int,int,::btSoftBody::Material *,bool ) +void btSoftBody_appendLink1(void *c,int p0,int p1,void* p2,int p3) {+	::btSoftBody *o = (::btSoftBody*)c;+	::btSoftBody::Material * tp2 = (::btSoftBody::Material *)p2;+	o->appendLink(p0,p1,tp2,p3);+}+//method: appendLink void ( ::btSoftBody::* )( ::btSoftBody::Node *,::btSoftBody::Node *,::btSoftBody::Material *,bool ) +void btSoftBody_appendLink2(void *c,void* p0,void* p1,void* p2,int p3) {+	::btSoftBody *o = (::btSoftBody*)c;+	::btSoftBody::Node * tp0 = (::btSoftBody::Node *)p0;+	::btSoftBody::Node * tp1 = (::btSoftBody::Node *)p1;+	::btSoftBody::Material * tp2 = (::btSoftBody::Material *)p2;+	o->appendLink(tp0,tp1,tp2,p3);+}+//method: calculateSerializeBufferSize int ( ::btSoftBody::* )(  ) const+int btSoftBody_calculateSerializeBufferSize(void *c) {+	::btSoftBody *o = (::btSoftBody*)c;+	int retVal = (int)o->calculateSerializeBufferSize();+	return retVal;+}+//not supported method: solveClusters void (*)( ::btAlignedObjectArray<btSoftBody*> const & )+//not supported method: solveClusters void (*)( ::btAlignedObjectArray<btSoftBody*> const & )+//method: solveClusters void ( ::btSoftBody::* )( ::btScalar ) +void btSoftBody_solveClusters1(void *c,float p0) {+	::btSoftBody *o = (::btSoftBody*)c;+	o->solveClusters(p0);+}+//method: rayTest bool ( ::btSoftBody::* )( ::btVector3 const &,::btVector3 const &,::btSoftBody::sRayCast & ) +int btSoftBody_rayTest(void *c,float* p0,float* p1,void* p2) {+	::btSoftBody *o = (::btSoftBody*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	::btSoftBody::sRayCast & tp2 = *(::btSoftBody::sRayCast *)p2;+	int retVal = (int)o->rayTest(tp0,tp1,tp2);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	return retVal;+}+//method: rayTest bool ( ::btSoftBody::* )( ::btVector3 const &,::btVector3 const &,::btSoftBody::sRayCast & ) +int btSoftBody_rayTest0(void *c,float* p0,float* p1,void* p2) {+	::btSoftBody *o = (::btSoftBody*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	::btSoftBody::sRayCast & tp2 = *(::btSoftBody::sRayCast *)p2;+	int retVal = (int)o->rayTest(tp0,tp1,tp2);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	return retVal;+}+//not supported method: rayTest int ( ::btSoftBody::* )( ::btVector3 const &,::btVector3 const &,::btScalar &,::btSoftBody::eFeature::_ &,int &,bool ) const+//method: setPose void ( ::btSoftBody::* )( bool,bool ) +void btSoftBody_setPose(void *c,int p0,int p1) {+	::btSoftBody *o = (::btSoftBody*)c;+	o->setPose(p0,p1);+}+//method: appendFace void ( ::btSoftBody::* )( int,::btSoftBody::Material * ) +void btSoftBody_appendFace(void *c,int p0,void* p1) {+	::btSoftBody *o = (::btSoftBody*)c;+	::btSoftBody::Material * tp1 = (::btSoftBody::Material *)p1;+	o->appendFace(p0,tp1);+}+//method: appendFace void ( ::btSoftBody::* )( int,::btSoftBody::Material * ) +void btSoftBody_appendFace0(void *c,int p0,void* p1) {+	::btSoftBody *o = (::btSoftBody*)c;+	::btSoftBody::Material * tp1 = (::btSoftBody::Material *)p1;+	o->appendFace(p0,tp1);+}+//method: appendFace void ( ::btSoftBody::* )( int,int,int,::btSoftBody::Material * ) +void btSoftBody_appendFace1(void *c,int p0,int p1,int p2,void* p3) {+	::btSoftBody *o = (::btSoftBody*)c;+	::btSoftBody::Material * tp3 = (::btSoftBody::Material *)p3;+	o->appendFace(p0,p1,p2,tp3);+}+//method: dampClusters void ( ::btSoftBody::* )(  ) +void btSoftBody_dampClusters(void *c) {+	::btSoftBody *o = (::btSoftBody*)c;+	o->dampClusters();+}+//method: getWorldInfo ::btSoftBodyWorldInfo * ( ::btSoftBody::* )(  ) +void* btSoftBody_getWorldInfo(void *c) {+	::btSoftBody *o = (::btSoftBody*)c;+	void* retVal = (void*) o->getWorldInfo();+	return retVal;+}+//not supported method: appendAngularJoint void ( ::btSoftBody::* )( ::btSoftBody::AJoint::Specs const &,::btSoftBody::Cluster *,::btSoftBody::Body ) +//not supported method: appendAngularJoint void ( ::btSoftBody::* )( ::btSoftBody::AJoint::Specs const &,::btSoftBody::Cluster *,::btSoftBody::Body ) +//not supported method: appendAngularJoint void ( ::btSoftBody::* )( ::btSoftBody::AJoint::Specs const &,::btSoftBody::Body ) +//method: appendAngularJoint void ( ::btSoftBody::* )( ::btSoftBody::AJoint::Specs const &,::btSoftBody * ) +void btSoftBody_appendAngularJoint2(void *c,void* p0,void* p1) {+	::btSoftBody *o = (::btSoftBody*)c;+	::btSoftBody::AJoint::Specs const & tp0 = *(::btSoftBody::AJoint::Specs const *)p0;+	::btSoftBody * tp1 = (::btSoftBody *)p1;+	o->appendAngularJoint(tp0,tp1);+}+//not supported method: setSolver void ( ::btSoftBody::* )( ::btSoftBody::eSolverPresets::_ ) +//method: clusterVImpulse void (*)( ::btSoftBody::Cluster *,::btVector3 const &,::btVector3 const & )+void btSoftBody_clusterVImpulse(void* p0,float* p1,float* p2) {+	::btSoftBody::Cluster * tp0 = (::btSoftBody::Cluster *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	::btSoftBody::clusterVImpulse(tp0,tp1,tp2);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: scale void ( ::btSoftBody::* )( ::btVector3 const & ) +void btSoftBody_scale(void *c,float* p0) {+	::btSoftBody *o = (::btSoftBody*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->scale(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: clusterAImpulse void (*)( ::btSoftBody::Cluster *,::btSoftBody::Impulse const & )+void btSoftBody_clusterAImpulse(void* p0,void* p1) {+	::btSoftBody::Cluster * tp0 = (::btSoftBody::Cluster *)p0;+	::btSoftBody::Impulse const & tp1 = *(::btSoftBody::Impulse const *)p1;+	::btSoftBody::clusterAImpulse(tp0,tp1);+}+//method: clusterCom ::btVector3 (*)( ::btSoftBody::Cluster const * )+void btSoftBody_clusterCom(void* p0,float* ret) {+	::btSoftBody::Cluster const * tp0 = (::btSoftBody::Cluster const *)p0;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = ::btSoftBody::clusterCom(tp0);+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: clusterCom ::btVector3 (*)( ::btSoftBody::Cluster const * )+void btSoftBody_clusterCom0(void* p0,float* ret) {+	::btSoftBody::Cluster const * tp0 = (::btSoftBody::Cluster const *)p0;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = ::btSoftBody::clusterCom(tp0);+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: clusterCom ::btVector3 ( ::btSoftBody::* )( int ) const+void btSoftBody_clusterCom1(void *c,int p0,float* ret) {+	::btSoftBody *o = (::btSoftBody*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->clusterCom(p0);+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//not supported method: setSoftBodySolver void ( ::btSoftBody::* )( ::btSoftBodySolver * ) +//method: setWindVelocity void ( ::btSoftBody::* )( ::btVector3 const & ) +void btSoftBody_setWindVelocity(void *c,float* p0) {+	::btSoftBody *o = (::btSoftBody*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setWindVelocity(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//not supported method: getSolver void (*)( ::btSoftBody *,::btScalar,::btScalar ) * (*)( ::btSoftBody::ePSolver::_ )+//not supported method: getSolver void (*)( ::btSoftBody *,::btScalar,::btScalar ) * (*)( ::btSoftBody::ePSolver::_ )+//not supported method: getSolver void (*)( ::btSoftBody *,::btScalar ) * (*)( ::btSoftBody::eVSolver::_ )+//method: applyForces void ( ::btSoftBody::* )(  ) +void btSoftBody_applyForces(void *c) {+	::btSoftBody *o = (::btSoftBody*)c;+	o->applyForces();+}+//method: appendTetra void ( ::btSoftBody::* )( int,::btSoftBody::Material * ) +void btSoftBody_appendTetra(void *c,int p0,void* p1) {+	::btSoftBody *o = (::btSoftBody*)c;+	::btSoftBody::Material * tp1 = (::btSoftBody::Material *)p1;+	o->appendTetra(p0,tp1);+}+//method: appendTetra void ( ::btSoftBody::* )( int,::btSoftBody::Material * ) +void btSoftBody_appendTetra0(void *c,int p0,void* p1) {+	::btSoftBody *o = (::btSoftBody*)c;+	::btSoftBody::Material * tp1 = (::btSoftBody::Material *)p1;+	o->appendTetra(p0,tp1);+}+//method: appendTetra void ( ::btSoftBody::* )( int,int,int,int,::btSoftBody::Material * ) +void btSoftBody_appendTetra1(void *c,int p0,int p1,int p2,int p3,void* p4) {+	::btSoftBody *o = (::btSoftBody*)c;+	::btSoftBody::Material * tp4 = (::btSoftBody::Material *)p4;+	o->appendTetra(p0,p1,p2,p3,tp4);+}+//attribute: ::btAlignedObjectArray<btSoftBody::Anchor> btSoftBody->m_anchors+// attribute not supported: //attribute: ::btAlignedObjectArray<btSoftBody::Anchor> btSoftBody->m_anchors+//attribute: bool btSoftBody->m_bUpdateRtCst+void btSoftBody_m_bUpdateRtCst_set(void *c,int a) {+	::btSoftBody *o = (::btSoftBody*)c;+	o->m_bUpdateRtCst = a;+}+int btSoftBody_m_bUpdateRtCst_get(void *c) {+	::btSoftBody *o = (::btSoftBody*)c;+	return (int)(o->m_bUpdateRtCst);+}++//attribute: ::btVector3[2] btSoftBody->m_bounds+// attribute not supported: //attribute: ::btVector3[2] btSoftBody->m_bounds+//attribute: ::btDbvt btSoftBody->m_cdbvt+// attribute not supported: //attribute: ::btDbvt btSoftBody->m_cdbvt+//attribute: ::btSoftBody::Config btSoftBody->m_cfg+// attribute not supported: //attribute: ::btSoftBody::Config btSoftBody->m_cfg+//attribute: ::btAlignedObjectArray<bool> btSoftBody->m_clusterConnectivity+// attribute not supported: //attribute: ::btAlignedObjectArray<bool> btSoftBody->m_clusterConnectivity+//attribute: ::btAlignedObjectArray<btSoftBody::Cluster*> btSoftBody->m_clusters+// attribute not supported: //attribute: ::btAlignedObjectArray<btSoftBody::Cluster*> btSoftBody->m_clusters+//attribute: ::btAlignedObjectArray<btCollisionObject*> btSoftBody->m_collisionDisabledObjects+// attribute not supported: //attribute: ::btAlignedObjectArray<btCollisionObject*> btSoftBody->m_collisionDisabledObjects+//attribute: ::btAlignedObjectArray<btSoftBody::Face> btSoftBody->m_faces+// attribute not supported: //attribute: ::btAlignedObjectArray<btSoftBody::Face> btSoftBody->m_faces+//attribute: ::btDbvt btSoftBody->m_fdbvt+// attribute not supported: //attribute: ::btDbvt btSoftBody->m_fdbvt+//attribute: ::btTransform btSoftBody->m_initialWorldTransform+void btSoftBody_m_initialWorldTransform_set(void *c,float* a) {+	::btSoftBody *o = (::btSoftBody*)c;+	btMatrix3x3 mta(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]);+	btVector3 vta(a[9],a[10],a[11]);+	btTransform ta(mta,vta);+	o->m_initialWorldTransform = ta;+}+void btSoftBody_m_initialWorldTransform_get(void *c,float* a) {+	::btSoftBody *o = (::btSoftBody*)c;+	a[0]=(o->m_initialWorldTransform).getBasis().getRow(0).m_floats[0];a[1]=(o->m_initialWorldTransform).getBasis().getRow(0).m_floats[1];a[2]=(o->m_initialWorldTransform).getBasis().getRow(0).m_floats[2];a[3]=(o->m_initialWorldTransform).getBasis().getRow(1).m_floats[0];a[4]=(o->m_initialWorldTransform).getBasis().getRow(1).m_floats[1];a[5]=(o->m_initialWorldTransform).getBasis().getRow(1).m_floats[2];a[6]=(o->m_initialWorldTransform).getBasis().getRow(2).m_floats[0];a[7]=(o->m_initialWorldTransform).getBasis().getRow(2).m_floats[1];a[8]=(o->m_initialWorldTransform).getBasis().getRow(2).m_floats[2];+	a[9]=(o->m_initialWorldTransform).getOrigin().m_floats[0];a[10]=(o->m_initialWorldTransform).getOrigin().m_floats[1];a[11]=(o->m_initialWorldTransform).getOrigin().m_floats[2];+}++//attribute: ::btAlignedObjectArray<btSoftBody::Joint*> btSoftBody->m_joints+// attribute not supported: //attribute: ::btAlignedObjectArray<btSoftBody::Joint*> btSoftBody->m_joints+//attribute: ::btAlignedObjectArray<btSoftBody::Link> btSoftBody->m_links+// attribute not supported: //attribute: ::btAlignedObjectArray<btSoftBody::Link> btSoftBody->m_links+//attribute: ::btAlignedObjectArray<btSoftBody::Material*> btSoftBody->m_materials+// attribute not supported: //attribute: ::btAlignedObjectArray<btSoftBody::Material*> btSoftBody->m_materials+//attribute: ::btDbvt btSoftBody->m_ndbvt+// attribute not supported: //attribute: ::btDbvt btSoftBody->m_ndbvt+//attribute: ::btAlignedObjectArray<btSoftBody::Node> btSoftBody->m_nodes+// attribute not supported: //attribute: ::btAlignedObjectArray<btSoftBody::Node> btSoftBody->m_nodes+//attribute: ::btAlignedObjectArray<btSoftBody::Note> btSoftBody->m_notes+// attribute not supported: //attribute: ::btAlignedObjectArray<btSoftBody::Note> btSoftBody->m_notes+//attribute: ::btSoftBody::Pose btSoftBody->m_pose+// attribute not supported: //attribute: ::btSoftBody::Pose btSoftBody->m_pose+//attribute: ::btAlignedObjectArray<btSoftBody::RContact> btSoftBody->m_rcontacts+// attribute not supported: //attribute: ::btAlignedObjectArray<btSoftBody::RContact> btSoftBody->m_rcontacts+//attribute: ::btAlignedObjectArray<btSoftBody::SContact> btSoftBody->m_scontacts+// attribute not supported: //attribute: ::btAlignedObjectArray<btSoftBody::SContact> btSoftBody->m_scontacts+//attribute: ::btSoftBodySolver * btSoftBody->m_softBodySolver+// attribute not supported: //attribute: ::btSoftBodySolver * btSoftBody->m_softBodySolver+//attribute: ::btSoftBody::SolverState btSoftBody->m_sst+// attribute not supported: //attribute: ::btSoftBody::SolverState btSoftBody->m_sst+//attribute: void * btSoftBody->m_tag+// attribute not supported: //attribute: void * btSoftBody->m_tag+//attribute: ::btAlignedObjectArray<btSoftBody::Tetra> btSoftBody->m_tetras+// attribute not supported: //attribute: ::btAlignedObjectArray<btSoftBody::Tetra> btSoftBody->m_tetras+//attribute: ::btScalar btSoftBody->m_timeacc+void btSoftBody_m_timeacc_set(void *c,float a) {+	::btSoftBody *o = (::btSoftBody*)c;+	o->m_timeacc = a;+}+float btSoftBody_m_timeacc_get(void *c) {+	::btSoftBody *o = (::btSoftBody*)c;+	return (float)(o->m_timeacc);+}++//attribute: ::btAlignedObjectArray<int> btSoftBody->m_userIndexMapping+// attribute not supported: //attribute: ::btAlignedObjectArray<int> btSoftBody->m_userIndexMapping+//attribute: ::btVector3 btSoftBody->m_windVelocity+void btSoftBody_m_windVelocity_set(void *c,float* a) {+	::btSoftBody *o = (::btSoftBody*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_windVelocity = ta;+}+void btSoftBody_m_windVelocity_get(void *c,float* a) {+	::btSoftBody *o = (::btSoftBody*)c;+	a[0]=(o->m_windVelocity).m_floats[0];a[1]=(o->m_windVelocity).m_floats[1];a[2]=(o->m_windVelocity).m_floats[2];+}++//attribute: ::btSoftBodyWorldInfo * btSoftBody->m_worldInfo+void btSoftBody_m_worldInfo_set(void *c,void* a) {+	::btSoftBody *o = (::btSoftBody*)c;+	::btSoftBodyWorldInfo * ta = (::btSoftBodyWorldInfo *)a;+	o->m_worldInfo = ta;+}+// attriibute getter not supported: //attribute: ::btSoftBodyWorldInfo * btSoftBody->m_worldInfo++// ::btSoftBodyHelpers+//constructor: btSoftBodyHelpers  ( ::btSoftBodyHelpers::* )(  ) +void* btSoftBodyHelpers_new() {+	::btSoftBodyHelpers *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBodyHelpers),16);+	o = new (mem)::btSoftBodyHelpers();+	return (void*)o;+}+void btSoftBodyHelpers_free(void *c) {+	::btSoftBodyHelpers *o = (::btSoftBodyHelpers*)c;+	delete o;+}+//method: DrawInfos void (*)( ::btSoftBody *,::btIDebugDraw *,bool,bool,bool )+void btSoftBodyHelpers_DrawInfos(void* p0,void* p1,int p2,int p3,int p4) {+	::btSoftBody * tp0 = (::btSoftBody *)p0;+	::btIDebugDraw * tp1 = (::btIDebugDraw *)p1;+	::btSoftBodyHelpers::DrawInfos(tp0,tp1,p2,p3,p4);+}+//method: Draw void (*)( ::btSoftBody *,::btIDebugDraw *,int )+void btSoftBodyHelpers_Draw(void* p0,void* p1,int p2) {+	::btSoftBody * tp0 = (::btSoftBody *)p0;+	::btIDebugDraw * tp1 = (::btIDebugDraw *)p1;+	::btSoftBodyHelpers::Draw(tp0,tp1,p2);+}+//method: CreateEllipsoid ::btSoftBody * (*)( ::btSoftBodyWorldInfo &,::btVector3 const &,::btVector3 const &,int )+void* btSoftBodyHelpers_CreateEllipsoid(void* p0,float* p1,float* p2,int p3) {+	::btSoftBodyWorldInfo & tp0 = *(::btSoftBodyWorldInfo *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	void* retVal = (void*) ::btSoftBodyHelpers::CreateEllipsoid(tp0,tp1,tp2,p3);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	return retVal;+}+//method: CreateFromTetGenData ::btSoftBody * (*)( ::btSoftBodyWorldInfo &,char const *,char const *,char const *,bool,bool,bool )+void* btSoftBodyHelpers_CreateFromTetGenData(void* p0,char const * p1,char const * p2,char const * p3,int p4,int p5,int p6) {+	::btSoftBodyWorldInfo & tp0 = *(::btSoftBodyWorldInfo *)p0;+	void* retVal = (void*) ::btSoftBodyHelpers::CreateFromTetGenData(tp0,p1,p2,p3,p4,p5,p6);+	return retVal;+}+//method: DrawFrame void (*)( ::btSoftBody *,::btIDebugDraw * )+void btSoftBodyHelpers_DrawFrame(void* p0,void* p1) {+	::btSoftBody * tp0 = (::btSoftBody *)p0;+	::btIDebugDraw * tp1 = (::btIDebugDraw *)p1;+	::btSoftBodyHelpers::DrawFrame(tp0,tp1);+}+//method: CreateRope ::btSoftBody * (*)( ::btSoftBodyWorldInfo &,::btVector3 const &,::btVector3 const &,int,int )+void* btSoftBodyHelpers_CreateRope(void* p0,float* p1,float* p2,int p3,int p4) {+	::btSoftBodyWorldInfo & tp0 = *(::btSoftBodyWorldInfo *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	void* retVal = (void*) ::btSoftBodyHelpers::CreateRope(tp0,tp1,tp2,p3,p4);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	return retVal;+}+//method: CalculateUV float (*)( int,int,int,int,int )+float btSoftBodyHelpers_CalculateUV(int p0,int p1,int p2,int p3,int p4) {+	float retVal = (float)::btSoftBodyHelpers::CalculateUV(p0,p1,p2,p3,p4);+	return retVal;+}+//method: DrawFaceTree void (*)( ::btSoftBody *,::btIDebugDraw *,int,int )+void btSoftBodyHelpers_DrawFaceTree(void* p0,void* p1,int p2,int p3) {+	::btSoftBody * tp0 = (::btSoftBody *)p0;+	::btIDebugDraw * tp1 = (::btIDebugDraw *)p1;+	::btSoftBodyHelpers::DrawFaceTree(tp0,tp1,p2,p3);+}+//method: DrawClusterTree void (*)( ::btSoftBody *,::btIDebugDraw *,int,int )+void btSoftBodyHelpers_DrawClusterTree(void* p0,void* p1,int p2,int p3) {+	::btSoftBody * tp0 = (::btSoftBody *)p0;+	::btIDebugDraw * tp1 = (::btIDebugDraw *)p1;+	::btSoftBodyHelpers::DrawClusterTree(tp0,tp1,p2,p3);+}+//not supported method: CreateFromTriMesh ::btSoftBody * (*)( ::btSoftBodyWorldInfo &,::btScalar const *,int const *,int,bool )+//method: DrawNodeTree void (*)( ::btSoftBody *,::btIDebugDraw *,int,int )+void btSoftBodyHelpers_DrawNodeTree(void* p0,void* p1,int p2,int p3) {+	::btSoftBody * tp0 = (::btSoftBody *)p0;+	::btIDebugDraw * tp1 = (::btIDebugDraw *)p1;+	::btSoftBodyHelpers::DrawNodeTree(tp0,tp1,p2,p3);+}+//not supported method: CreateFromConvexHull ::btSoftBody * (*)( ::btSoftBodyWorldInfo &,::btVector3 const *,int,bool )+//method: CreatePatch ::btSoftBody * (*)( ::btSoftBodyWorldInfo &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,int,int,int,bool )+void* btSoftBodyHelpers_CreatePatch(void* p0,float* p1,float* p2,float* p3,float* p4,int p5,int p6,int p7,int p8) {+	::btSoftBodyWorldInfo & tp0 = *(::btSoftBodyWorldInfo *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	btVector3 tp4(p4[0],p4[1],p4[2]);+	void* retVal = (void*) ::btSoftBodyHelpers::CreatePatch(tp0,tp1,tp2,tp3,tp4,p5,p6,p7,p8);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+	p4[0]=tp4.m_floats[0];p4[1]=tp4.m_floats[1];p4[2]=tp4.m_floats[2];+	return retVal;+}+//not supported method: CreatePatchUV ::btSoftBody * (*)( ::btSoftBodyWorldInfo &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,int,int,int,bool,float * )++// ::btSoftBodyRigidBodyCollisionConfiguration+//constructor: btSoftBodyRigidBodyCollisionConfiguration  ( ::btSoftBodyRigidBodyCollisionConfiguration::* )( ::btDefaultCollisionConstructionInfo const & ) +void* btSoftBodyRigidBodyCollisionConfiguration_new(void* p0) {+	::btSoftBodyRigidBodyCollisionConfiguration *o = 0;+	 void *mem = 0;+	::btDefaultCollisionConstructionInfo const & tp0 = *(::btDefaultCollisionConstructionInfo const *)p0;+	mem = btAlignedAlloc(sizeof(::btSoftBodyRigidBodyCollisionConfiguration),16);+	o = new (mem)::btSoftBodyRigidBodyCollisionConfiguration(tp0);+	return (void*)o;+}+void btSoftBodyRigidBodyCollisionConfiguration_free(void *c) {+	::btSoftBodyRigidBodyCollisionConfiguration *o = (::btSoftBodyRigidBodyCollisionConfiguration*)c;+	delete o;+}+//method: getCollisionAlgorithmCreateFunc ::btCollisionAlgorithmCreateFunc * ( ::btSoftBodyRigidBodyCollisionConfiguration::* )( int,int ) +void* btSoftBodyRigidBodyCollisionConfiguration_getCollisionAlgorithmCreateFunc(void *c,int p0,int p1) {+	::btSoftBodyRigidBodyCollisionConfiguration *o = (::btSoftBodyRigidBodyCollisionConfiguration*)c;+	void* retVal = (void*) o->getCollisionAlgorithmCreateFunc(p0,p1);+	return retVal;+}++// ::btSoftBodyWorldInfo+//constructor: btSoftBodyWorldInfo  ( ::btSoftBodyWorldInfo::* )(  ) +void* btSoftBodyWorldInfo_new() {+	::btSoftBodyWorldInfo *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBodyWorldInfo),16);+	o = new (mem)::btSoftBodyWorldInfo();+	return (void*)o;+}+void btSoftBodyWorldInfo_free(void *c) {+	::btSoftBodyWorldInfo *o = (::btSoftBodyWorldInfo*)c;+	delete o;+}+//attribute: ::btScalar btSoftBodyWorldInfo->air_density+void btSoftBodyWorldInfo_air_density_set(void *c,float a) {+	::btSoftBodyWorldInfo *o = (::btSoftBodyWorldInfo*)c;+	o->air_density = a;+}+float btSoftBodyWorldInfo_air_density_get(void *c) {+	::btSoftBodyWorldInfo *o = (::btSoftBodyWorldInfo*)c;+	return (float)(o->air_density);+}++//attribute: ::btBroadphaseInterface * btSoftBodyWorldInfo->m_broadphase+void btSoftBodyWorldInfo_m_broadphase_set(void *c,void* a) {+	::btSoftBodyWorldInfo *o = (::btSoftBodyWorldInfo*)c;+	::btBroadphaseInterface * ta = (::btBroadphaseInterface *)a;+	o->m_broadphase = ta;+}+// attriibute getter not supported: //attribute: ::btBroadphaseInterface * btSoftBodyWorldInfo->m_broadphase+//attribute: ::btDispatcher * btSoftBodyWorldInfo->m_dispatcher+void btSoftBodyWorldInfo_m_dispatcher_set(void *c,void* a) {+	::btSoftBodyWorldInfo *o = (::btSoftBodyWorldInfo*)c;+	::btDispatcher * ta = (::btDispatcher *)a;+	o->m_dispatcher = ta;+}+// attriibute getter not supported: //attribute: ::btDispatcher * btSoftBodyWorldInfo->m_dispatcher+//attribute: ::btVector3 btSoftBodyWorldInfo->m_gravity+void btSoftBodyWorldInfo_m_gravity_set(void *c,float* a) {+	::btSoftBodyWorldInfo *o = (::btSoftBodyWorldInfo*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_gravity = ta;+}+void btSoftBodyWorldInfo_m_gravity_get(void *c,float* a) {+	::btSoftBodyWorldInfo *o = (::btSoftBodyWorldInfo*)c;+	a[0]=(o->m_gravity).m_floats[0];a[1]=(o->m_gravity).m_floats[1];a[2]=(o->m_gravity).m_floats[2];+}++//attribute: ::btSparseSdf<3> btSoftBodyWorldInfo->m_sparsesdf+// attribute not supported: //attribute: ::btSparseSdf<3> btSoftBodyWorldInfo->m_sparsesdf+//attribute: ::btScalar btSoftBodyWorldInfo->water_density+void btSoftBodyWorldInfo_water_density_set(void *c,float a) {+	::btSoftBodyWorldInfo *o = (::btSoftBodyWorldInfo*)c;+	o->water_density = a;+}+float btSoftBodyWorldInfo_water_density_get(void *c) {+	::btSoftBodyWorldInfo *o = (::btSoftBodyWorldInfo*)c;+	return (float)(o->water_density);+}++//attribute: ::btVector3 btSoftBodyWorldInfo->water_normal+void btSoftBodyWorldInfo_water_normal_set(void *c,float* a) {+	::btSoftBodyWorldInfo *o = (::btSoftBodyWorldInfo*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->water_normal = ta;+}+void btSoftBodyWorldInfo_water_normal_get(void *c,float* a) {+	::btSoftBodyWorldInfo *o = (::btSoftBodyWorldInfo*)c;+	a[0]=(o->water_normal).m_floats[0];a[1]=(o->water_normal).m_floats[1];a[2]=(o->water_normal).m_floats[2];+}++//attribute: ::btScalar btSoftBodyWorldInfo->water_offset+void btSoftBodyWorldInfo_water_offset_set(void *c,float a) {+	::btSoftBodyWorldInfo *o = (::btSoftBodyWorldInfo*)c;+	o->water_offset = a;+}+float btSoftBodyWorldInfo_water_offset_get(void *c) {+	::btSoftBodyWorldInfo *o = (::btSoftBodyWorldInfo*)c;+	return (float)(o->water_offset);+}+++// ::btSoftRigidDynamicsWorld+//not supported constructor: btSoftRigidDynamicsWorld  ( ::btSoftRigidDynamicsWorld::* )( ::btDispatcher *,::btBroadphaseInterface *,::btConstraintSolver *,::btCollisionConfiguration *,::btSoftBodySolver * ) +void btSoftRigidDynamicsWorld_free(void *c) {+	::btSoftRigidDynamicsWorld *o = (::btSoftRigidDynamicsWorld*)c;+	delete o;+}+//method: getWorldInfo ::btSoftBodyWorldInfo & ( ::btSoftRigidDynamicsWorld::* )(  ) +void* btSoftRigidDynamicsWorld_getWorldInfo(void *c) {+	::btSoftRigidDynamicsWorld *o = (::btSoftRigidDynamicsWorld*)c;+	void* retVal = (void*) &(o->getWorldInfo());+	return retVal;+}+//method: getWorldInfo ::btSoftBodyWorldInfo & ( ::btSoftRigidDynamicsWorld::* )(  ) +void* btSoftRigidDynamicsWorld_getWorldInfo0(void *c) {+	::btSoftRigidDynamicsWorld *o = (::btSoftRigidDynamicsWorld*)c;+	void* retVal = (void*) &(o->getWorldInfo());+	return retVal;+}+//method: getWorldInfo ::btSoftBodyWorldInfo const & ( ::btSoftRigidDynamicsWorld::* )(  ) const+void* btSoftRigidDynamicsWorld_getWorldInfo1(void *c) {+	::btSoftRigidDynamicsWorld *o = (::btSoftRigidDynamicsWorld*)c;+	void* retVal = (void*) &(o->getWorldInfo());+	return retVal;+}+//method: setDrawFlags void ( ::btSoftRigidDynamicsWorld::* )( int ) +void btSoftRigidDynamicsWorld_setDrawFlags(void *c,int p0) {+	::btSoftRigidDynamicsWorld *o = (::btSoftRigidDynamicsWorld*)c;+	o->setDrawFlags(p0);+}+//not supported method: getSoftBodyArray ::btSoftBodyArray & ( ::btSoftRigidDynamicsWorld::* )(  ) +//not supported method: getSoftBodyArray ::btSoftBodyArray & ( ::btSoftRigidDynamicsWorld::* )(  ) +//not supported method: getSoftBodyArray ::btSoftBodyArray const & ( ::btSoftRigidDynamicsWorld::* )(  ) const+//method: serialize void ( ::btSoftRigidDynamicsWorld::* )( ::btSerializer * ) +void btSoftRigidDynamicsWorld_serialize(void *c,void* p0) {+	::btSoftRigidDynamicsWorld *o = (::btSoftRigidDynamicsWorld*)c;+	::btSerializer * tp0 = (::btSerializer *)p0;+	o->serialize(tp0);+}+//method: rayTest void ( ::btSoftRigidDynamicsWorld::* )( ::btVector3 const &,::btVector3 const &,::btCollisionWorld::RayResultCallback & ) const+void btSoftRigidDynamicsWorld_rayTest(void *c,float* p0,float* p1,void* p2) {+	::btSoftRigidDynamicsWorld *o = (::btSoftRigidDynamicsWorld*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	::btCollisionWorld::RayResultCallback & tp2 = *(::btCollisionWorld::RayResultCallback *)p2;+	o->rayTest(tp0,tp1,tp2);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//not supported method: getWorldType ::btDynamicsWorldType ( ::btSoftRigidDynamicsWorld::* )(  ) const+//method: addSoftBody void ( ::btSoftRigidDynamicsWorld::* )( ::btSoftBody *,short int,short int ) +void btSoftRigidDynamicsWorld_addSoftBody(void *c,void* p0,short int p1,short int p2) {+	::btSoftRigidDynamicsWorld *o = (::btSoftRigidDynamicsWorld*)c;+	::btSoftBody * tp0 = (::btSoftBody *)p0;+	o->addSoftBody(tp0,p1,p2);+}+//method: removeCollisionObject void ( ::btSoftRigidDynamicsWorld::* )( ::btCollisionObject * ) +void btSoftRigidDynamicsWorld_removeCollisionObject(void *c,void* p0) {+	::btSoftRigidDynamicsWorld *o = (::btSoftRigidDynamicsWorld*)c;+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	o->removeCollisionObject(tp0);+}+//method: rayTestSingle void (*)( ::btTransform const &,::btTransform const &,::btCollisionObject *,::btCollisionShape const *,::btTransform const &,::btCollisionWorld::RayResultCallback & )+void btSoftRigidDynamicsWorld_rayTestSingle(float* p0,float* p1,void* p2,void* p3,float* p4,void* p5) {+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	::btCollisionObject * tp2 = (::btCollisionObject *)p2;+	::btCollisionShape const * tp3 = (::btCollisionShape const *)p3;+	btMatrix3x3 mtp4(p4[0],p4[1],p4[2],p4[3],p4[4],p4[5],p4[6],p4[7],p4[8]);+	btVector3 vtp4(p4[9],p4[10],p4[11]);+	btTransform tp4(mtp4,vtp4);+	::btCollisionWorld::RayResultCallback & tp5 = *(::btCollisionWorld::RayResultCallback *)p5;+	::btSoftRigidDynamicsWorld::rayTestSingle(tp0,tp1,tp2,tp3,tp4,tp5);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+	p4[0]=tp4.getBasis().getRow(0).m_floats[0];p4[1]=tp4.getBasis().getRow(0).m_floats[1];p4[2]=tp4.getBasis().getRow(0).m_floats[2];p4[3]=tp4.getBasis().getRow(1).m_floats[0];p4[4]=tp4.getBasis().getRow(1).m_floats[1];p4[5]=tp4.getBasis().getRow(1).m_floats[2];p4[6]=tp4.getBasis().getRow(2).m_floats[0];p4[7]=tp4.getBasis().getRow(2).m_floats[1];p4[8]=tp4.getBasis().getRow(2).m_floats[2];+	p4[9]=tp4.getOrigin().m_floats[0];p4[10]=tp4.getOrigin().m_floats[1];p4[11]=tp4.getOrigin().m_floats[2];+}+//method: removeSoftBody void ( ::btSoftRigidDynamicsWorld::* )( ::btSoftBody * ) +void btSoftRigidDynamicsWorld_removeSoftBody(void *c,void* p0) {+	::btSoftRigidDynamicsWorld *o = (::btSoftRigidDynamicsWorld*)c;+	::btSoftBody * tp0 = (::btSoftBody *)p0;+	o->removeSoftBody(tp0);+}+//method: debugDrawWorld void ( ::btSoftRigidDynamicsWorld::* )(  ) +void btSoftRigidDynamicsWorld_debugDrawWorld(void *c) {+	::btSoftRigidDynamicsWorld *o = (::btSoftRigidDynamicsWorld*)c;+	o->debugDrawWorld();+}+//method: getDrawFlags int ( ::btSoftRigidDynamicsWorld::* )(  ) const+int btSoftRigidDynamicsWorld_getDrawFlags(void *c) {+	::btSoftRigidDynamicsWorld *o = (::btSoftRigidDynamicsWorld*)c;+	int retVal = (int)o->getDrawFlags();+	return retVal;+}++// ::btSoftBody::eAeroModel+//constructor: eAeroModel  ( ::btSoftBody::eAeroModel::* )(  ) +void* btSoftBody_eAeroModel_new() {+	::btSoftBody::eAeroModel *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::eAeroModel),16);+	o = new (mem)::btSoftBody::eAeroModel();+	return (void*)o;+}+void btSoftBody_eAeroModel_free(void *c) {+	::btSoftBody::eAeroModel *o = (::btSoftBody::eAeroModel*)c;+	delete o;+}++// ::btSoftBody::eFeature+//constructor: eFeature  ( ::btSoftBody::eFeature::* )(  ) +void* btSoftBody_eFeature_new() {+	::btSoftBody::eFeature *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::eFeature),16);+	o = new (mem)::btSoftBody::eFeature();+	return (void*)o;+}+void btSoftBody_eFeature_free(void *c) {+	::btSoftBody::eFeature *o = (::btSoftBody::eFeature*)c;+	delete o;+}++// ::btSoftBody::ePSolver+//constructor: ePSolver  ( ::btSoftBody::ePSolver::* )(  ) +void* btSoftBody_ePSolver_new() {+	::btSoftBody::ePSolver *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::ePSolver),16);+	o = new (mem)::btSoftBody::ePSolver();+	return (void*)o;+}+void btSoftBody_ePSolver_free(void *c) {+	::btSoftBody::ePSolver *o = (::btSoftBody::ePSolver*)c;+	delete o;+}++// ::btSoftBody::eSolverPresets+//constructor: eSolverPresets  ( ::btSoftBody::eSolverPresets::* )(  ) +void* btSoftBody_eSolverPresets_new() {+	::btSoftBody::eSolverPresets *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::eSolverPresets),16);+	o = new (mem)::btSoftBody::eSolverPresets();+	return (void*)o;+}+void btSoftBody_eSolverPresets_free(void *c) {+	::btSoftBody::eSolverPresets *o = (::btSoftBody::eSolverPresets*)c;+	delete o;+}++// ::btSoftBody::Joint::eType+//constructor: eType  ( ::btSoftBody::Joint::eType::* )(  ) +void* btSoftBody_Joint_eType_new() {+	::btSoftBody::Joint::eType *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::Joint::eType),16);+	o = new (mem)::btSoftBody::Joint::eType();+	return (void*)o;+}+void btSoftBody_Joint_eType_free(void *c) {+	::btSoftBody::Joint::eType *o = (::btSoftBody::Joint::eType*)c;+	delete o;+}++// ::btSoftBody::eVSolver+//constructor: eVSolver  ( ::btSoftBody::eVSolver::* )(  ) +void* btSoftBody_eVSolver_new() {+	::btSoftBody::eVSolver *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::eVSolver),16);+	o = new (mem)::btSoftBody::eVSolver();+	return (void*)o;+}+void btSoftBody_eVSolver_free(void *c) {+	::btSoftBody::eVSolver *o = (::btSoftBody::eVSolver*)c;+	delete o;+}++// ::btSoftBody::fCollision+//constructor: fCollision  ( ::btSoftBody::fCollision::* )(  ) +void* btSoftBody_fCollision_new() {+	::btSoftBody::fCollision *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::fCollision),16);+	o = new (mem)::btSoftBody::fCollision();+	return (void*)o;+}+void btSoftBody_fCollision_free(void *c) {+	::btSoftBody::fCollision *o = (::btSoftBody::fCollision*)c;+	delete o;+}++// ::fDrawFlags+//constructor: fDrawFlags  ( ::fDrawFlags::* )(  ) +void* fDrawFlags_new() {+	::fDrawFlags *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::fDrawFlags),16);+	o = new (mem)::fDrawFlags();+	return (void*)o;+}+void fDrawFlags_free(void *c) {+	::fDrawFlags *o = (::fDrawFlags*)c;+	delete o;+}++// ::btSoftBody::fMaterial+//constructor: fMaterial  ( ::btSoftBody::fMaterial::* )(  ) +void* btSoftBody_fMaterial_new() {+	::btSoftBody::fMaterial *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::fMaterial),16);+	o = new (mem)::btSoftBody::fMaterial();+	return (void*)o;+}+void btSoftBody_fMaterial_free(void *c) {+	::btSoftBody::fMaterial *o = (::btSoftBody::fMaterial*)c;+	delete o;+}++// ::btSoftBody::sCti+//constructor: sCti  ( ::btSoftBody::sCti::* )(  ) +void* btSoftBody_sCti_new() {+	::btSoftBody::sCti *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::sCti),16);+	o = new (mem)::btSoftBody::sCti();+	return (void*)o;+}+void btSoftBody_sCti_free(void *c) {+	::btSoftBody::sCti *o = (::btSoftBody::sCti*)c;+	delete o;+}+//attribute: ::btCollisionObject * btSoftBody_sCti->m_colObj+void btSoftBody_sCti_m_colObj_set(void *c,void* a) {+	::btSoftBody::sCti *o = (::btSoftBody::sCti*)c;+	::btCollisionObject * ta = (::btCollisionObject *)a;+	o->m_colObj = ta;+}+// attriibute getter not supported: //attribute: ::btCollisionObject * btSoftBody_sCti->m_colObj+//attribute: ::btVector3 btSoftBody_sCti->m_normal+void btSoftBody_sCti_m_normal_set(void *c,float* a) {+	::btSoftBody::sCti *o = (::btSoftBody::sCti*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_normal = ta;+}+void btSoftBody_sCti_m_normal_get(void *c,float* a) {+	::btSoftBody::sCti *o = (::btSoftBody::sCti*)c;+	a[0]=(o->m_normal).m_floats[0];a[1]=(o->m_normal).m_floats[1];a[2]=(o->m_normal).m_floats[2];+}++//attribute: ::btScalar btSoftBody_sCti->m_offset+void btSoftBody_sCti_m_offset_set(void *c,float a) {+	::btSoftBody::sCti *o = (::btSoftBody::sCti*)c;+	o->m_offset = a;+}+float btSoftBody_sCti_m_offset_get(void *c) {+	::btSoftBody::sCti *o = (::btSoftBody::sCti*)c;+	return (float)(o->m_offset);+}+++// ::btSoftBody::sMedium+//constructor: sMedium  ( ::btSoftBody::sMedium::* )(  ) +void* btSoftBody_sMedium_new() {+	::btSoftBody::sMedium *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::sMedium),16);+	o = new (mem)::btSoftBody::sMedium();+	return (void*)o;+}+void btSoftBody_sMedium_free(void *c) {+	::btSoftBody::sMedium *o = (::btSoftBody::sMedium*)c;+	delete o;+}+//attribute: ::btScalar btSoftBody_sMedium->m_density+void btSoftBody_sMedium_m_density_set(void *c,float a) {+	::btSoftBody::sMedium *o = (::btSoftBody::sMedium*)c;+	o->m_density = a;+}+float btSoftBody_sMedium_m_density_get(void *c) {+	::btSoftBody::sMedium *o = (::btSoftBody::sMedium*)c;+	return (float)(o->m_density);+}++//attribute: ::btScalar btSoftBody_sMedium->m_pressure+void btSoftBody_sMedium_m_pressure_set(void *c,float a) {+	::btSoftBody::sMedium *o = (::btSoftBody::sMedium*)c;+	o->m_pressure = a;+}+float btSoftBody_sMedium_m_pressure_get(void *c) {+	::btSoftBody::sMedium *o = (::btSoftBody::sMedium*)c;+	return (float)(o->m_pressure);+}++//attribute: ::btVector3 btSoftBody_sMedium->m_velocity+void btSoftBody_sMedium_m_velocity_set(void *c,float* a) {+	::btSoftBody::sMedium *o = (::btSoftBody::sMedium*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_velocity = ta;+}+void btSoftBody_sMedium_m_velocity_get(void *c,float* a) {+	::btSoftBody::sMedium *o = (::btSoftBody::sMedium*)c;+	a[0]=(o->m_velocity).m_floats[0];a[1]=(o->m_velocity).m_floats[1];a[2]=(o->m_velocity).m_floats[2];+}+++// ::btSoftBody::sRayCast+//constructor: sRayCast  ( ::btSoftBody::sRayCast::* )(  ) +void* btSoftBody_sRayCast_new() {+	::btSoftBody::sRayCast *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSoftBody::sRayCast),16);+	o = new (mem)::btSoftBody::sRayCast();+	return (void*)o;+}+void btSoftBody_sRayCast_free(void *c) {+	::btSoftBody::sRayCast *o = (::btSoftBody::sRayCast*)c;+	delete o;+}+//attribute: ::btSoftBody * btSoftBody_sRayCast->body+void btSoftBody_sRayCast_body_set(void *c,void* a) {+	::btSoftBody::sRayCast *o = (::btSoftBody::sRayCast*)c;+	::btSoftBody * ta = (::btSoftBody *)a;+	o->body = ta;+}+// attriibute getter not supported: //attribute: ::btSoftBody * btSoftBody_sRayCast->body+//attribute: ::btSoftBody::eFeature::_ btSoftBody_sRayCast->feature+// attribute not supported: //attribute: ::btSoftBody::eFeature::_ btSoftBody_sRayCast->feature+//attribute: ::btScalar btSoftBody_sRayCast->fraction+void btSoftBody_sRayCast_fraction_set(void *c,float a) {+	::btSoftBody::sRayCast *o = (::btSoftBody::sRayCast*)c;+	o->fraction = a;+}+float btSoftBody_sRayCast_fraction_get(void *c) {+	::btSoftBody::sRayCast *o = (::btSoftBody::sRayCast*)c;+	return (float)(o->fraction);+}++//attribute: int btSoftBody_sRayCast->index+void btSoftBody_sRayCast_index_set(void *c,int a) {+	::btSoftBody::sRayCast *o = (::btSoftBody::sRayCast*)c;+	o->index = a;+}+int btSoftBody_sRayCast_index_get(void *c) {+	::btSoftBody::sRayCast *o = (::btSoftBody::sRayCast*)c;+	return (int)(o->index);+}+++// ::CProfileIterator+void cProfileIterator_free(void *c) {+	::CProfileIterator *o = (::CProfileIterator*)c;+	delete o;+}+//method: Get_Current_Name char const * ( ::CProfileIterator::* )(  ) +char const * cProfileIterator_Get_Current_Name(void *c) {+	::CProfileIterator *o = (::CProfileIterator*)c;+	char const * retVal = (char const *)o->Get_Current_Name();+	return retVal;+}+//method: Get_Current_Total_Calls int ( ::CProfileIterator::* )(  ) +int cProfileIterator_Get_Current_Total_Calls(void *c) {+	::CProfileIterator *o = (::CProfileIterator*)c;+	int retVal = (int)o->Get_Current_Total_Calls();+	return retVal;+}+//method: Get_Current_Total_Time float ( ::CProfileIterator::* )(  ) +float cProfileIterator_Get_Current_Total_Time(void *c) {+	::CProfileIterator *o = (::CProfileIterator*)c;+	float retVal = (float)o->Get_Current_Total_Time();+	return retVal;+}+//method: Enter_Child void ( ::CProfileIterator::* )( int ) +void cProfileIterator_Enter_Child(void *c,int p0) {+	::CProfileIterator *o = (::CProfileIterator*)c;+	o->Enter_Child(p0);+}+//method: Is_Done bool ( ::CProfileIterator::* )(  ) +int cProfileIterator_Is_Done(void *c) {+	::CProfileIterator *o = (::CProfileIterator*)c;+	int retVal = (int)o->Is_Done();+	return retVal;+}+//method: Next void ( ::CProfileIterator::* )(  ) +void cProfileIterator_Next(void *c) {+	::CProfileIterator *o = (::CProfileIterator*)c;+	o->Next();+}+//method: Is_Root bool ( ::CProfileIterator::* )(  ) +int cProfileIterator_Is_Root(void *c) {+	::CProfileIterator *o = (::CProfileIterator*)c;+	int retVal = (int)o->Is_Root();+	return retVal;+}+//method: Get_Current_Parent_Name char const * ( ::CProfileIterator::* )(  ) +char const * cProfileIterator_Get_Current_Parent_Name(void *c) {+	::CProfileIterator *o = (::CProfileIterator*)c;+	char const * retVal = (char const *)o->Get_Current_Parent_Name();+	return retVal;+}+//method: Get_Current_Parent_Total_Calls int ( ::CProfileIterator::* )(  ) +int cProfileIterator_Get_Current_Parent_Total_Calls(void *c) {+	::CProfileIterator *o = (::CProfileIterator*)c;+	int retVal = (int)o->Get_Current_Parent_Total_Calls();+	return retVal;+}+//method: Get_Current_Parent_Total_Time float ( ::CProfileIterator::* )(  ) +float cProfileIterator_Get_Current_Parent_Total_Time(void *c) {+	::CProfileIterator *o = (::CProfileIterator*)c;+	float retVal = (float)o->Get_Current_Parent_Total_Time();+	return retVal;+}+//method: Enter_Parent void ( ::CProfileIterator::* )(  ) +void cProfileIterator_Enter_Parent(void *c) {+	::CProfileIterator *o = (::CProfileIterator*)c;+	o->Enter_Parent();+}+//method: First void ( ::CProfileIterator::* )(  ) +void cProfileIterator_First(void *c) {+	::CProfileIterator *o = (::CProfileIterator*)c;+	o->First();+}++// ::CProfileManager+//constructor: CProfileManager  ( ::CProfileManager::* )(  ) +void* cProfileManager_new() {+	::CProfileManager *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::CProfileManager),16);+	o = new (mem)::CProfileManager();+	return (void*)o;+}+void cProfileManager_free(void *c) {+	::CProfileManager *o = (::CProfileManager*)c;+	delete o;+}+//method: Reset void (*)(  )+void cProfileManager_Reset() {+	::CProfileManager::Reset();+}+//method: dumpAll void (*)(  )+void cProfileManager_dumpAll() {+	::CProfileManager::dumpAll();+}+//method: Get_Frame_Count_Since_Reset int (*)(  )+int cProfileManager_Get_Frame_Count_Since_Reset() {+	int retVal = (int)::CProfileManager::Get_Frame_Count_Since_Reset();+	return retVal;+}+//method: Release_Iterator void (*)( ::CProfileIterator * )+void cProfileManager_Release_Iterator(void* p0) {+	::CProfileIterator * tp0 = (::CProfileIterator *)p0;+	::CProfileManager::Release_Iterator(tp0);+}+//method: Stop_Profile void (*)(  )+void cProfileManager_Stop_Profile() {+	::CProfileManager::Stop_Profile();+}+//method: CleanupMemory void (*)(  )+void cProfileManager_CleanupMemory() {+	::CProfileManager::CleanupMemory();+}+//method: Get_Time_Since_Reset float (*)(  )+float cProfileManager_Get_Time_Since_Reset() {+	float retVal = (float)::CProfileManager::Get_Time_Since_Reset();+	return retVal;+}+//method: Start_Profile void (*)( char const * )+void cProfileManager_Start_Profile(char const * p0) {+	::CProfileManager::Start_Profile(p0);+}+//method: Increment_Frame_Counter void (*)(  )+void cProfileManager_Increment_Frame_Counter() {+	::CProfileManager::Increment_Frame_Counter();+}+//method: dumpRecursive void (*)( ::CProfileIterator *,int )+void cProfileManager_dumpRecursive(void* p0,int p1) {+	::CProfileIterator * tp0 = (::CProfileIterator *)p0;+	::CProfileManager::dumpRecursive(tp0,p1);+}+//method: Get_Iterator ::CProfileIterator * (*)(  )+void* cProfileManager_Get_Iterator() {+	void* retVal = (void*) ::CProfileManager::Get_Iterator();+	return retVal;+}++// ::CProfileNode+//constructor: CProfileNode  ( ::CProfileNode::* )( char const *,::CProfileNode * ) +void* cProfileNode_new(char const * p0,void* p1) {+	::CProfileNode *o = 0;+	 void *mem = 0;+	::CProfileNode * tp1 = (::CProfileNode *)p1;+	mem = btAlignedAlloc(sizeof(::CProfileNode),16);+	o = new (mem)::CProfileNode(p0,tp1);+	return (void*)o;+}+void cProfileNode_free(void *c) {+	::CProfileNode *o = (::CProfileNode*)c;+	delete o;+}+//method: Reset void ( ::CProfileNode::* )(  ) +void cProfileNode_Reset(void *c) {+	::CProfileNode *o = (::CProfileNode*)c;+	o->Reset();+}+//method: Return bool ( ::CProfileNode::* )(  ) +int cProfileNode_Return(void *c) {+	::CProfileNode *o = (::CProfileNode*)c;+	int retVal = (int)o->Return();+	return retVal;+}+//method: Get_Sub_Node ::CProfileNode * ( ::CProfileNode::* )( char const * ) +void* cProfileNode_Get_Sub_Node(void *c,char const * p0) {+	::CProfileNode *o = (::CProfileNode*)c;+	void* retVal = (void*) o->Get_Sub_Node(p0);+	return retVal;+}+//method: CleanupMemory void ( ::CProfileNode::* )(  ) +void cProfileNode_CleanupMemory(void *c) {+	::CProfileNode *o = (::CProfileNode*)c;+	o->CleanupMemory();+}+//method: Get_Parent ::CProfileNode * ( ::CProfileNode::* )(  ) +void* cProfileNode_Get_Parent(void *c) {+	::CProfileNode *o = (::CProfileNode*)c;+	void* retVal = (void*) o->Get_Parent();+	return retVal;+}+//method: Get_Total_Calls int ( ::CProfileNode::* )(  ) +int cProfileNode_Get_Total_Calls(void *c) {+	::CProfileNode *o = (::CProfileNode*)c;+	int retVal = (int)o->Get_Total_Calls();+	return retVal;+}+//method: Get_Name char const * ( ::CProfileNode::* )(  ) +char const * cProfileNode_Get_Name(void *c) {+	::CProfileNode *o = (::CProfileNode*)c;+	char const * retVal = (char const *)o->Get_Name();+	return retVal;+}+//method: Get_Total_Time float ( ::CProfileNode::* )(  ) +float cProfileNode_Get_Total_Time(void *c) {+	::CProfileNode *o = (::CProfileNode*)c;+	float retVal = (float)o->Get_Total_Time();+	return retVal;+}+//method: Call void ( ::CProfileNode::* )(  ) +void cProfileNode_Call(void *c) {+	::CProfileNode *o = (::CProfileNode*)c;+	o->Call();+}+//method: Get_Sibling ::CProfileNode * ( ::CProfileNode::* )(  ) +void* cProfileNode_Get_Sibling(void *c) {+	::CProfileNode *o = (::CProfileNode*)c;+	void* retVal = (void*) o->Get_Sibling();+	return retVal;+}+//method: Get_Child ::CProfileNode * ( ::CProfileNode::* )(  ) +void* cProfileNode_Get_Child(void *c) {+	::CProfileNode *o = (::CProfileNode*)c;+	void* retVal = (void*) o->Get_Child();+	return retVal;+}++// ::CProfileSample+//constructor: CProfileSample  ( ::CProfileSample::* )( char const * ) +void* cProfileSample_new(char const * p0) {+	::CProfileSample *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::CProfileSample),16);+	o = new (mem)::CProfileSample(p0);+	return (void*)o;+}+void cProfileSample_free(void *c) {+	::CProfileSample *o = (::CProfileSample*)c;+	delete o;+}++// ::btBlock+//constructor: btBlock  ( ::btBlock::* )(  ) +void* btBlock_new() {+	::btBlock *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btBlock),16);+	o = new (mem)::btBlock();+	return (void*)o;+}+void btBlock_free(void *c) {+	::btBlock *o = (::btBlock*)c;+	delete o;+}+//attribute: ::btBlock * btBlock->previous+void btBlock_previous_set(void *c,void* a) {+	::btBlock *o = (::btBlock*)c;+	::btBlock * ta = (::btBlock *)a;+	o->previous = ta;+}+// attriibute getter not supported: //attribute: ::btBlock * btBlock->previous+//attribute: unsigned char * btBlock->address+// attribute not supported: //attribute: unsigned char * btBlock->address++// ::btChunk+//constructor: btChunk  ( ::btChunk::* )(  ) +void* btChunk_new() {+	::btChunk *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btChunk),16);+	o = new (mem)::btChunk();+	return (void*)o;+}+void btChunk_free(void *c) {+	::btChunk *o = (::btChunk*)c;+	delete o;+}+//attribute: int btChunk->m_chunkCode+void btChunk_m_chunkCode_set(void *c,int a) {+	::btChunk *o = (::btChunk*)c;+	o->m_chunkCode = a;+}+int btChunk_m_chunkCode_get(void *c) {+	::btChunk *o = (::btChunk*)c;+	return (int)(o->m_chunkCode);+}++//attribute: int btChunk->m_length+void btChunk_m_length_set(void *c,int a) {+	::btChunk *o = (::btChunk*)c;+	o->m_length = a;+}+int btChunk_m_length_get(void *c) {+	::btChunk *o = (::btChunk*)c;+	return (int)(o->m_length);+}++//attribute: void * btChunk->m_oldPtr+// attribute not supported: //attribute: void * btChunk->m_oldPtr+//attribute: int btChunk->m_dna_nr+void btChunk_m_dna_nr_set(void *c,int a) {+	::btChunk *o = (::btChunk*)c;+	o->m_dna_nr = a;+}+int btChunk_m_dna_nr_get(void *c) {+	::btChunk *o = (::btChunk*)c;+	return (int)(o->m_dna_nr);+}++//attribute: int btChunk->m_number+void btChunk_m_number_set(void *c,int a) {+	::btChunk *o = (::btChunk*)c;+	o->m_number = a;+}+int btChunk_m_number_get(void *c) {+	::btChunk *o = (::btChunk*)c;+	return (int)(o->m_number);+}+++// ::btClock+//constructor: btClock  ( ::btClock::* )(  ) +void* btClock_new() {+	::btClock *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btClock),16);+	o = new (mem)::btClock();+	return (void*)o;+}+void btClock_free(void *c) {+	::btClock *o = (::btClock*)c;+	delete o;+}+//method: reset void ( ::btClock::* )(  ) +void btClock_reset(void *c) {+	::btClock *o = (::btClock*)c;+	o->reset();+}+//method: getTimeMilliseconds long unsigned int ( ::btClock::* )(  ) +long unsigned int btClock_getTimeMilliseconds(void *c) {+	::btClock *o = (::btClock*)c;+	long unsigned int retVal = (long unsigned int)o->getTimeMilliseconds();+	return retVal;+}+//method: getTimeMicroseconds long unsigned int ( ::btClock::* )(  ) +long unsigned int btClock_getTimeMicroseconds(void *c) {+	::btClock *o = (::btClock*)c;+	long unsigned int retVal = (long unsigned int)o->getTimeMicroseconds();+	return retVal;+}++// ::btConvexSeparatingDistanceUtil+//constructor: btConvexSeparatingDistanceUtil  ( ::btConvexSeparatingDistanceUtil::* )( ::btScalar,::btScalar ) +void* btConvexSeparatingDistanceUtil_new(float p0,float p1) {+	::btConvexSeparatingDistanceUtil *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btConvexSeparatingDistanceUtil),16);+	o = new (mem)::btConvexSeparatingDistanceUtil(p0,p1);+	return (void*)o;+}+void btConvexSeparatingDistanceUtil_free(void *c) {+	::btConvexSeparatingDistanceUtil *o = (::btConvexSeparatingDistanceUtil*)c;+	delete o;+}+//method: updateSeparatingDistance void ( ::btConvexSeparatingDistanceUtil::* )( ::btTransform const &,::btTransform const & ) +void btConvexSeparatingDistanceUtil_updateSeparatingDistance(void *c,float* p0,float* p1) {+	::btConvexSeparatingDistanceUtil *o = (::btConvexSeparatingDistanceUtil*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	o->updateSeparatingDistance(tp0,tp1);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+}+//method: getConservativeSeparatingDistance ::btScalar ( ::btConvexSeparatingDistanceUtil::* )(  ) +float btConvexSeparatingDistanceUtil_getConservativeSeparatingDistance(void *c) {+	::btConvexSeparatingDistanceUtil *o = (::btConvexSeparatingDistanceUtil*)c;+	float retVal = (float)o->getConservativeSeparatingDistance();+	return retVal;+}+//method: initSeparatingDistance void ( ::btConvexSeparatingDistanceUtil::* )( ::btVector3 const &,::btScalar,::btTransform const &,::btTransform const & ) +void btConvexSeparatingDistanceUtil_initSeparatingDistance(void *c,float* p0,float p1,float* p2,float* p3) {+	::btConvexSeparatingDistanceUtil *o = (::btConvexSeparatingDistanceUtil*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btMatrix3x3 mtp2(p2[0],p2[1],p2[2],p2[3],p2[4],p2[5],p2[6],p2[7],p2[8]);+	btVector3 vtp2(p2[9],p2[10],p2[11]);+	btTransform tp2(mtp2,vtp2);+	btMatrix3x3 mtp3(p3[0],p3[1],p3[2],p3[3],p3[4],p3[5],p3[6],p3[7],p3[8]);+	btVector3 vtp3(p3[9],p3[10],p3[11]);+	btTransform tp3(mtp3,vtp3);+	o->initSeparatingDistance(tp0,p1,tp2,tp3);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p2[0]=tp2.getBasis().getRow(0).m_floats[0];p2[1]=tp2.getBasis().getRow(0).m_floats[1];p2[2]=tp2.getBasis().getRow(0).m_floats[2];p2[3]=tp2.getBasis().getRow(1).m_floats[0];p2[4]=tp2.getBasis().getRow(1).m_floats[1];p2[5]=tp2.getBasis().getRow(1).m_floats[2];p2[6]=tp2.getBasis().getRow(2).m_floats[0];p2[7]=tp2.getBasis().getRow(2).m_floats[1];p2[8]=tp2.getBasis().getRow(2).m_floats[2];+	p2[9]=tp2.getOrigin().m_floats[0];p2[10]=tp2.getOrigin().m_floats[1];p2[11]=tp2.getOrigin().m_floats[2];+	p3[0]=tp3.getBasis().getRow(0).m_floats[0];p3[1]=tp3.getBasis().getRow(0).m_floats[1];p3[2]=tp3.getBasis().getRow(0).m_floats[2];p3[3]=tp3.getBasis().getRow(1).m_floats[0];p3[4]=tp3.getBasis().getRow(1).m_floats[1];p3[5]=tp3.getBasis().getRow(1).m_floats[2];p3[6]=tp3.getBasis().getRow(2).m_floats[0];p3[7]=tp3.getBasis().getRow(2).m_floats[1];p3[8]=tp3.getBasis().getRow(2).m_floats[2];+	p3[9]=tp3.getOrigin().m_floats[0];p3[10]=tp3.getOrigin().m_floats[1];p3[11]=tp3.getOrigin().m_floats[2];+}++// ::btDefaultMotionState+//constructor: btDefaultMotionState  ( ::btDefaultMotionState::* )( ::btTransform const &,::btTransform const & ) +void* btDefaultMotionState_new(float* p0,float* p1) {+	::btDefaultMotionState *o = 0;+	 void *mem = 0;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	mem = btAlignedAlloc(sizeof(::btDefaultMotionState),16);+	o = new (mem)::btDefaultMotionState(tp0,tp1);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+	return (void*)o;+}+void btDefaultMotionState_free(void *c) {+	::btDefaultMotionState *o = (::btDefaultMotionState*)c;+	delete o;+}+//method: setWorldTransform void ( ::btDefaultMotionState::* )( ::btTransform const & ) +void btDefaultMotionState_setWorldTransform(void *c,float* p0) {+	::btDefaultMotionState *o = (::btDefaultMotionState*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	o->setWorldTransform(tp0);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+}+//method: getWorldTransform void ( ::btDefaultMotionState::* )( ::btTransform & ) const+void btDefaultMotionState_getWorldTransform(void *c,float* p0) {+	::btDefaultMotionState *o = (::btDefaultMotionState*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	o->getWorldTransform(tp0);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+}+//attribute: ::btTransform btDefaultMotionState->m_graphicsWorldTrans+void btDefaultMotionState_m_graphicsWorldTrans_set(void *c,float* a) {+	::btDefaultMotionState *o = (::btDefaultMotionState*)c;+	btMatrix3x3 mta(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]);+	btVector3 vta(a[9],a[10],a[11]);+	btTransform ta(mta,vta);+	o->m_graphicsWorldTrans = ta;+}+void btDefaultMotionState_m_graphicsWorldTrans_get(void *c,float* a) {+	::btDefaultMotionState *o = (::btDefaultMotionState*)c;+	a[0]=(o->m_graphicsWorldTrans).getBasis().getRow(0).m_floats[0];a[1]=(o->m_graphicsWorldTrans).getBasis().getRow(0).m_floats[1];a[2]=(o->m_graphicsWorldTrans).getBasis().getRow(0).m_floats[2];a[3]=(o->m_graphicsWorldTrans).getBasis().getRow(1).m_floats[0];a[4]=(o->m_graphicsWorldTrans).getBasis().getRow(1).m_floats[1];a[5]=(o->m_graphicsWorldTrans).getBasis().getRow(1).m_floats[2];a[6]=(o->m_graphicsWorldTrans).getBasis().getRow(2).m_floats[0];a[7]=(o->m_graphicsWorldTrans).getBasis().getRow(2).m_floats[1];a[8]=(o->m_graphicsWorldTrans).getBasis().getRow(2).m_floats[2];+	a[9]=(o->m_graphicsWorldTrans).getOrigin().m_floats[0];a[10]=(o->m_graphicsWorldTrans).getOrigin().m_floats[1];a[11]=(o->m_graphicsWorldTrans).getOrigin().m_floats[2];+}++//attribute: ::btTransform btDefaultMotionState->m_centerOfMassOffset+void btDefaultMotionState_m_centerOfMassOffset_set(void *c,float* a) {+	::btDefaultMotionState *o = (::btDefaultMotionState*)c;+	btMatrix3x3 mta(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]);+	btVector3 vta(a[9],a[10],a[11]);+	btTransform ta(mta,vta);+	o->m_centerOfMassOffset = ta;+}+void btDefaultMotionState_m_centerOfMassOffset_get(void *c,float* a) {+	::btDefaultMotionState *o = (::btDefaultMotionState*)c;+	a[0]=(o->m_centerOfMassOffset).getBasis().getRow(0).m_floats[0];a[1]=(o->m_centerOfMassOffset).getBasis().getRow(0).m_floats[1];a[2]=(o->m_centerOfMassOffset).getBasis().getRow(0).m_floats[2];a[3]=(o->m_centerOfMassOffset).getBasis().getRow(1).m_floats[0];a[4]=(o->m_centerOfMassOffset).getBasis().getRow(1).m_floats[1];a[5]=(o->m_centerOfMassOffset).getBasis().getRow(1).m_floats[2];a[6]=(o->m_centerOfMassOffset).getBasis().getRow(2).m_floats[0];a[7]=(o->m_centerOfMassOffset).getBasis().getRow(2).m_floats[1];a[8]=(o->m_centerOfMassOffset).getBasis().getRow(2).m_floats[2];+	a[9]=(o->m_centerOfMassOffset).getOrigin().m_floats[0];a[10]=(o->m_centerOfMassOffset).getOrigin().m_floats[1];a[11]=(o->m_centerOfMassOffset).getOrigin().m_floats[2];+}++//attribute: ::btTransform btDefaultMotionState->m_startWorldTrans+void btDefaultMotionState_m_startWorldTrans_set(void *c,float* a) {+	::btDefaultMotionState *o = (::btDefaultMotionState*)c;+	btMatrix3x3 mta(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]);+	btVector3 vta(a[9],a[10],a[11]);+	btTransform ta(mta,vta);+	o->m_startWorldTrans = ta;+}+void btDefaultMotionState_m_startWorldTrans_get(void *c,float* a) {+	::btDefaultMotionState *o = (::btDefaultMotionState*)c;+	a[0]=(o->m_startWorldTrans).getBasis().getRow(0).m_floats[0];a[1]=(o->m_startWorldTrans).getBasis().getRow(0).m_floats[1];a[2]=(o->m_startWorldTrans).getBasis().getRow(0).m_floats[2];a[3]=(o->m_startWorldTrans).getBasis().getRow(1).m_floats[0];a[4]=(o->m_startWorldTrans).getBasis().getRow(1).m_floats[1];a[5]=(o->m_startWorldTrans).getBasis().getRow(1).m_floats[2];a[6]=(o->m_startWorldTrans).getBasis().getRow(2).m_floats[0];a[7]=(o->m_startWorldTrans).getBasis().getRow(2).m_floats[1];a[8]=(o->m_startWorldTrans).getBasis().getRow(2).m_floats[2];+	a[9]=(o->m_startWorldTrans).getOrigin().m_floats[0];a[10]=(o->m_startWorldTrans).getOrigin().m_floats[1];a[11]=(o->m_startWorldTrans).getOrigin().m_floats[2];+}++//attribute: void * btDefaultMotionState->m_userPointer+// attribute not supported: //attribute: void * btDefaultMotionState->m_userPointer++// ::btDefaultSerializer+//constructor: btDefaultSerializer  ( ::btDefaultSerializer::* )( int ) +void* btDefaultSerializer_new(int p0) {+	::btDefaultSerializer *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btDefaultSerializer),16);+	o = new (mem)::btDefaultSerializer(p0);+	return (void*)o;+}+void btDefaultSerializer_free(void *c) {+	::btDefaultSerializer *o = (::btDefaultSerializer*)c;+	delete o;+}+//method: setSerializationFlags void ( ::btDefaultSerializer::* )( int ) +void btDefaultSerializer_setSerializationFlags(void *c,int p0) {+	::btDefaultSerializer *o = (::btDefaultSerializer*)c;+	o->setSerializationFlags(p0);+}+//not supported method: findNameForPointer char const * ( ::btDefaultSerializer::* )( void const * ) const+//not supported method: writeHeader void ( ::btDefaultSerializer::* )( unsigned char * ) const+//method: startSerialization void ( ::btDefaultSerializer::* )(  ) +void btDefaultSerializer_startSerialization(void *c) {+	::btDefaultSerializer *o = (::btDefaultSerializer*)c;+	o->startSerialization();+}+//method: getSerializationFlags int ( ::btDefaultSerializer::* )(  ) const+int btDefaultSerializer_getSerializationFlags(void *c) {+	::btDefaultSerializer *o = (::btDefaultSerializer*)c;+	int retVal = (int)o->getSerializationFlags();+	return retVal;+}+//method: finishSerialization void ( ::btDefaultSerializer::* )(  ) +void btDefaultSerializer_finishSerialization(void *c) {+	::btDefaultSerializer *o = (::btDefaultSerializer*)c;+	o->finishSerialization();+}+//not supported method: finalizeChunk void ( ::btDefaultSerializer::* )( ::btChunk *,char const *,int,void * ) +//not supported method: getBufferPointer unsigned char const * ( ::btDefaultSerializer::* )(  ) const+//method: getCurrentBufferSize int ( ::btDefaultSerializer::* )(  ) const+int btDefaultSerializer_getCurrentBufferSize(void *c) {+	::btDefaultSerializer *o = (::btDefaultSerializer*)c;+	int retVal = (int)o->getCurrentBufferSize();+	return retVal;+}+//not supported method: getUniquePointer void * ( ::btDefaultSerializer::* )( void * ) +//method: serializeName void ( ::btDefaultSerializer::* )( char const * ) +void btDefaultSerializer_serializeName(void *c,char const * p0) {+	::btDefaultSerializer *o = (::btDefaultSerializer*)c;+	o->serializeName(p0);+}+//not supported method: internalAlloc unsigned char * ( ::btDefaultSerializer::* )( ::size_t ) +//not supported method: registerNameForPointer void ( ::btDefaultSerializer::* )( void const *,char const * ) +//not supported method: allocate ::btChunk * ( ::btDefaultSerializer::* )( ::size_t,int ) ++// ::btGeometryUtil+//constructor: btGeometryUtil  ( ::btGeometryUtil::* )(  ) +void* btGeometryUtil_new() {+	::btGeometryUtil *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btGeometryUtil),16);+	o = new (mem)::btGeometryUtil();+	return (void*)o;+}+void btGeometryUtil_free(void *c) {+	::btGeometryUtil *o = (::btGeometryUtil*)c;+	delete o;+}+//not supported method: isPointInsidePlanes bool (*)( ::btAlignedObjectArray<btVector3> const &,::btVector3 const &,::btScalar )+//not supported method: getVerticesFromPlaneEquations void (*)( ::btAlignedObjectArray<btVector3> const &,::btAlignedObjectArray<btVector3> & )+//not supported method: isInside bool (*)( ::btAlignedObjectArray<btVector3> const &,::btVector3 const &,::btScalar )+//not supported method: areVerticesBehindPlane bool (*)( ::btVector3 const &,::btAlignedObjectArray<btVector3> const &,::btScalar )+//not supported method: getPlaneEquationsFromVertices void (*)( ::btAlignedObjectArray<btVector3> &,::btAlignedObjectArray<btVector3> & )++// ::btHashInt+//constructor: btHashInt  ( ::btHashInt::* )( int ) +void* btHashInt_new(int p0) {+	::btHashInt *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btHashInt),16);+	o = new (mem)::btHashInt(p0);+	return (void*)o;+}+void btHashInt_free(void *c) {+	::btHashInt *o = (::btHashInt*)c;+	delete o;+}+//method: getUid1 int ( ::btHashInt::* )(  ) const+int btHashInt_getUid1(void *c) {+	::btHashInt *o = (::btHashInt*)c;+	int retVal = (int)o->getUid1();+	return retVal;+}+//method: getHash unsigned int ( ::btHashInt::* )(  ) const+unsigned int btHashInt_getHash(void *c) {+	::btHashInt *o = (::btHashInt*)c;+	unsigned int retVal = (unsigned int)o->getHash();+	return retVal;+}+//method: setUid1 void ( ::btHashInt::* )( int ) +void btHashInt_setUid1(void *c,int p0) {+	::btHashInt *o = (::btHashInt*)c;+	o->setUid1(p0);+}+//method: equals bool ( ::btHashInt::* )( ::btHashInt const & ) const+int btHashInt_equals(void *c,void* p0) {+	::btHashInt *o = (::btHashInt*)c;+	::btHashInt const & tp0 = *(::btHashInt const *)p0;+	int retVal = (int)o->equals(tp0);+	return retVal;+}++// ::btHashPtr+//not supported constructor: btHashPtr  ( ::btHashPtr::* )( void const * ) +void btHashPtr_free(void *c) {+	::btHashPtr *o = (::btHashPtr*)c;+	delete o;+}+//method: getHash unsigned int ( ::btHashPtr::* )(  ) const+unsigned int btHashPtr_getHash(void *c) {+	::btHashPtr *o = (::btHashPtr*)c;+	unsigned int retVal = (unsigned int)o->getHash();+	return retVal;+}+//not supported method: getPointer void const * ( ::btHashPtr::* )(  ) const+//method: equals bool ( ::btHashPtr::* )( ::btHashPtr const & ) const+int btHashPtr_equals(void *c,void* p0) {+	::btHashPtr *o = (::btHashPtr*)c;+	::btHashPtr const & tp0 = *(::btHashPtr const *)p0;+	int retVal = (int)o->equals(tp0);+	return retVal;+}++// ::btHashString+//constructor: btHashString  ( ::btHashString::* )( char const * ) +void* btHashString_new(char const * p0) {+	::btHashString *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btHashString),16);+	o = new (mem)::btHashString(p0);+	return (void*)o;+}+void btHashString_free(void *c) {+	::btHashString *o = (::btHashString*)c;+	delete o;+}+//method: getHash unsigned int ( ::btHashString::* )(  ) const+unsigned int btHashString_getHash(void *c) {+	::btHashString *o = (::btHashString*)c;+	unsigned int retVal = (unsigned int)o->getHash();+	return retVal;+}+//method: equals bool ( ::btHashString::* )( ::btHashString const & ) const+int btHashString_equals(void *c,void* p0) {+	::btHashString *o = (::btHashString*)c;+	::btHashString const & tp0 = *(::btHashString const *)p0;+	int retVal = (int)o->equals(tp0);+	return retVal;+}+//method: portableStringCompare int ( ::btHashString::* )( char const *,char const * ) const+int btHashString_portableStringCompare(void *c,char const * p0,char const * p1) {+	::btHashString *o = (::btHashString*)c;+	int retVal = (int)o->portableStringCompare(p0,p1);+	return retVal;+}+//attribute: unsigned int btHashString->m_hash+void btHashString_m_hash_set(void *c,unsigned int a) {+	::btHashString *o = (::btHashString*)c;+	o->m_hash = a;+}+unsigned int btHashString_m_hash_get(void *c) {+	::btHashString *o = (::btHashString*)c;+	return (unsigned int)(o->m_hash);+}++//attribute: char const * btHashString->m_string+void btHashString_m_string_set(void *c,char const * a) {+	::btHashString *o = (::btHashString*)c;+	o->m_string = a;+}+char const * btHashString_m_string_get(void *c) {+	::btHashString *o = (::btHashString*)c;+	return (char const *)(o->m_string);+}+++// ::btIDebugDraw+//method: draw3dText void ( ::btIDebugDraw::* )( ::btVector3 const &,char const * ) +void btIDebugDraw_draw3dText(void *c,float* p0,char const * p1) {+	::btIDebugDraw *o = (::btIDebugDraw*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->draw3dText(tp0,p1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: drawBox void ( ::btIDebugDraw::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void btIDebugDraw_drawBox(void *c,float* p0,float* p1,float* p2) {+	::btIDebugDraw *o = (::btIDebugDraw*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->drawBox(tp0,tp1,tp2);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: drawBox void ( ::btIDebugDraw::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void btIDebugDraw_drawBox0(void *c,float* p0,float* p1,float* p2) {+	::btIDebugDraw *o = (::btIDebugDraw*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->drawBox(tp0,tp1,tp2);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: drawBox void ( ::btIDebugDraw::* )( ::btVector3 const &,::btVector3 const &,::btTransform const &,::btVector3 const & ) +void btIDebugDraw_drawBox1(void *c,float* p0,float* p1,float* p2,float* p3) {+	::btIDebugDraw *o = (::btIDebugDraw*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btMatrix3x3 mtp2(p2[0],p2[1],p2[2],p2[3],p2[4],p2[5],p2[6],p2[7],p2[8]);+	btVector3 vtp2(p2[9],p2[10],p2[11]);+	btTransform tp2(mtp2,vtp2);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	o->drawBox(tp0,tp1,tp2,tp3);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.getBasis().getRow(0).m_floats[0];p2[1]=tp2.getBasis().getRow(0).m_floats[1];p2[2]=tp2.getBasis().getRow(0).m_floats[2];p2[3]=tp2.getBasis().getRow(1).m_floats[0];p2[4]=tp2.getBasis().getRow(1).m_floats[1];p2[5]=tp2.getBasis().getRow(1).m_floats[2];p2[6]=tp2.getBasis().getRow(2).m_floats[0];p2[7]=tp2.getBasis().getRow(2).m_floats[1];p2[8]=tp2.getBasis().getRow(2).m_floats[2];+	p2[9]=tp2.getOrigin().m_floats[0];p2[10]=tp2.getOrigin().m_floats[1];p2[11]=tp2.getOrigin().m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+}+//method: drawCone void ( ::btIDebugDraw::* )( ::btScalar,::btScalar,int,::btTransform const &,::btVector3 const & ) +void btIDebugDraw_drawCone(void *c,float p0,float p1,int p2,float* p3,float* p4) {+	::btIDebugDraw *o = (::btIDebugDraw*)c;+	btMatrix3x3 mtp3(p3[0],p3[1],p3[2],p3[3],p3[4],p3[5],p3[6],p3[7],p3[8]);+	btVector3 vtp3(p3[9],p3[10],p3[11]);+	btTransform tp3(mtp3,vtp3);+	btVector3 tp4(p4[0],p4[1],p4[2]);+	o->drawCone(p0,p1,p2,tp3,tp4);+	p3[0]=tp3.getBasis().getRow(0).m_floats[0];p3[1]=tp3.getBasis().getRow(0).m_floats[1];p3[2]=tp3.getBasis().getRow(0).m_floats[2];p3[3]=tp3.getBasis().getRow(1).m_floats[0];p3[4]=tp3.getBasis().getRow(1).m_floats[1];p3[5]=tp3.getBasis().getRow(1).m_floats[2];p3[6]=tp3.getBasis().getRow(2).m_floats[0];p3[7]=tp3.getBasis().getRow(2).m_floats[1];p3[8]=tp3.getBasis().getRow(2).m_floats[2];+	p3[9]=tp3.getOrigin().m_floats[0];p3[10]=tp3.getOrigin().m_floats[1];p3[11]=tp3.getOrigin().m_floats[2];+	p4[0]=tp4.m_floats[0];p4[1]=tp4.m_floats[1];p4[2]=tp4.m_floats[2];+}+//method: drawCapsule void ( ::btIDebugDraw::* )( ::btScalar,::btScalar,int,::btTransform const &,::btVector3 const & ) +void btIDebugDraw_drawCapsule(void *c,float p0,float p1,int p2,float* p3,float* p4) {+	::btIDebugDraw *o = (::btIDebugDraw*)c;+	btMatrix3x3 mtp3(p3[0],p3[1],p3[2],p3[3],p3[4],p3[5],p3[6],p3[7],p3[8]);+	btVector3 vtp3(p3[9],p3[10],p3[11]);+	btTransform tp3(mtp3,vtp3);+	btVector3 tp4(p4[0],p4[1],p4[2]);+	o->drawCapsule(p0,p1,p2,tp3,tp4);+	p3[0]=tp3.getBasis().getRow(0).m_floats[0];p3[1]=tp3.getBasis().getRow(0).m_floats[1];p3[2]=tp3.getBasis().getRow(0).m_floats[2];p3[3]=tp3.getBasis().getRow(1).m_floats[0];p3[4]=tp3.getBasis().getRow(1).m_floats[1];p3[5]=tp3.getBasis().getRow(1).m_floats[2];p3[6]=tp3.getBasis().getRow(2).m_floats[0];p3[7]=tp3.getBasis().getRow(2).m_floats[1];p3[8]=tp3.getBasis().getRow(2).m_floats[2];+	p3[9]=tp3.getOrigin().m_floats[0];p3[10]=tp3.getOrigin().m_floats[1];p3[11]=tp3.getOrigin().m_floats[2];+	p4[0]=tp4.m_floats[0];p4[1]=tp4.m_floats[1];p4[2]=tp4.m_floats[2];+}+//method: drawArc void ( ::btIDebugDraw::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btScalar,::btScalar,::btScalar,::btScalar,::btVector3 const &,bool,::btScalar ) +void btIDebugDraw_drawArc(void *c,float* p0,float* p1,float* p2,float p3,float p4,float p5,float p6,float* p7,int p8,float p9) {+	::btIDebugDraw *o = (::btIDebugDraw*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	btVector3 tp7(p7[0],p7[1],p7[2]);+	o->drawArc(tp0,tp1,tp2,p3,p4,p5,p6,tp7,p8,p9);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	p7[0]=tp7.m_floats[0];p7[1]=tp7.m_floats[1];p7[2]=tp7.m_floats[2];+}+//method: drawCylinder void ( ::btIDebugDraw::* )( ::btScalar,::btScalar,int,::btTransform const &,::btVector3 const & ) +void btIDebugDraw_drawCylinder(void *c,float p0,float p1,int p2,float* p3,float* p4) {+	::btIDebugDraw *o = (::btIDebugDraw*)c;+	btMatrix3x3 mtp3(p3[0],p3[1],p3[2],p3[3],p3[4],p3[5],p3[6],p3[7],p3[8]);+	btVector3 vtp3(p3[9],p3[10],p3[11]);+	btTransform tp3(mtp3,vtp3);+	btVector3 tp4(p4[0],p4[1],p4[2]);+	o->drawCylinder(p0,p1,p2,tp3,tp4);+	p3[0]=tp3.getBasis().getRow(0).m_floats[0];p3[1]=tp3.getBasis().getRow(0).m_floats[1];p3[2]=tp3.getBasis().getRow(0).m_floats[2];p3[3]=tp3.getBasis().getRow(1).m_floats[0];p3[4]=tp3.getBasis().getRow(1).m_floats[1];p3[5]=tp3.getBasis().getRow(1).m_floats[2];p3[6]=tp3.getBasis().getRow(2).m_floats[0];p3[7]=tp3.getBasis().getRow(2).m_floats[1];p3[8]=tp3.getBasis().getRow(2).m_floats[2];+	p3[9]=tp3.getOrigin().m_floats[0];p3[10]=tp3.getOrigin().m_floats[1];p3[11]=tp3.getOrigin().m_floats[2];+	p4[0]=tp4.m_floats[0];p4[1]=tp4.m_floats[1];p4[2]=tp4.m_floats[2];+}+//method: reportErrorWarning void ( ::btIDebugDraw::* )( char const * ) +void btIDebugDraw_reportErrorWarning(void *c,char const * p0) {+	::btIDebugDraw *o = (::btIDebugDraw*)c;+	o->reportErrorWarning(p0);+}+//method: drawTriangle void ( ::btIDebugDraw::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btScalar ) +void btIDebugDraw_drawTriangle(void *c,float* p0,float* p1,float* p2,float* p3,float* p4,float* p5,float* p6,float p7) {+	::btIDebugDraw *o = (::btIDebugDraw*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	btVector3 tp4(p4[0],p4[1],p4[2]);+	btVector3 tp5(p5[0],p5[1],p5[2]);+	btVector3 tp6(p6[0],p6[1],p6[2]);+	o->drawTriangle(tp0,tp1,tp2,tp3,tp4,tp5,tp6,p7);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+	p4[0]=tp4.m_floats[0];p4[1]=tp4.m_floats[1];p4[2]=tp4.m_floats[2];+	p5[0]=tp5.m_floats[0];p5[1]=tp5.m_floats[1];p5[2]=tp5.m_floats[2];+	p6[0]=tp6.m_floats[0];p6[1]=tp6.m_floats[1];p6[2]=tp6.m_floats[2];+}+//method: drawTriangle void ( ::btIDebugDraw::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btScalar ) +void btIDebugDraw_drawTriangle0(void *c,float* p0,float* p1,float* p2,float* p3,float* p4,float* p5,float* p6,float p7) {+	::btIDebugDraw *o = (::btIDebugDraw*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	btVector3 tp4(p4[0],p4[1],p4[2]);+	btVector3 tp5(p5[0],p5[1],p5[2]);+	btVector3 tp6(p6[0],p6[1],p6[2]);+	o->drawTriangle(tp0,tp1,tp2,tp3,tp4,tp5,tp6,p7);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+	p4[0]=tp4.m_floats[0];p4[1]=tp4.m_floats[1];p4[2]=tp4.m_floats[2];+	p5[0]=tp5.m_floats[0];p5[1]=tp5.m_floats[1];p5[2]=tp5.m_floats[2];+	p6[0]=tp6.m_floats[0];p6[1]=tp6.m_floats[1];p6[2]=tp6.m_floats[2];+}+//method: drawTriangle void ( ::btIDebugDraw::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btScalar ) +void btIDebugDraw_drawTriangle1(void *c,float* p0,float* p1,float* p2,float* p3,float p4) {+	::btIDebugDraw *o = (::btIDebugDraw*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	o->drawTriangle(tp0,tp1,tp2,tp3,p4);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+}+//method: getDebugMode int ( ::btIDebugDraw::* )(  ) const+int btIDebugDraw_getDebugMode(void *c) {+	::btIDebugDraw *o = (::btIDebugDraw*)c;+	int retVal = (int)o->getDebugMode();+	return retVal;+}+//method: drawLine void ( ::btIDebugDraw::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void btIDebugDraw_drawLine(void *c,float* p0,float* p1,float* p2) {+	::btIDebugDraw *o = (::btIDebugDraw*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->drawLine(tp0,tp1,tp2);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: drawLine void ( ::btIDebugDraw::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void btIDebugDraw_drawLine0(void *c,float* p0,float* p1,float* p2) {+	::btIDebugDraw *o = (::btIDebugDraw*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->drawLine(tp0,tp1,tp2);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: drawLine void ( ::btIDebugDraw::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void btIDebugDraw_drawLine1(void *c,float* p0,float* p1,float* p2,float* p3) {+	::btIDebugDraw *o = (::btIDebugDraw*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	o->drawLine(tp0,tp1,tp2,tp3);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+}+//method: drawTransform void ( ::btIDebugDraw::* )( ::btTransform const &,::btScalar ) +void btIDebugDraw_drawTransform(void *c,float* p0,float p1) {+	::btIDebugDraw *o = (::btIDebugDraw*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	o->drawTransform(tp0,p1);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+}+//method: drawAabb void ( ::btIDebugDraw::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void btIDebugDraw_drawAabb(void *c,float* p0,float* p1,float* p2) {+	::btIDebugDraw *o = (::btIDebugDraw*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->drawAabb(tp0,tp1,tp2);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: drawPlane void ( ::btIDebugDraw::* )( ::btVector3 const &,::btScalar,::btTransform const &,::btVector3 const & ) +void btIDebugDraw_drawPlane(void *c,float* p0,float p1,float* p2,float* p3) {+	::btIDebugDraw *o = (::btIDebugDraw*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btMatrix3x3 mtp2(p2[0],p2[1],p2[2],p2[3],p2[4],p2[5],p2[6],p2[7],p2[8]);+	btVector3 vtp2(p2[9],p2[10],p2[11]);+	btTransform tp2(mtp2,vtp2);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	o->drawPlane(tp0,p1,tp2,tp3);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p2[0]=tp2.getBasis().getRow(0).m_floats[0];p2[1]=tp2.getBasis().getRow(0).m_floats[1];p2[2]=tp2.getBasis().getRow(0).m_floats[2];p2[3]=tp2.getBasis().getRow(1).m_floats[0];p2[4]=tp2.getBasis().getRow(1).m_floats[1];p2[5]=tp2.getBasis().getRow(1).m_floats[2];p2[6]=tp2.getBasis().getRow(2).m_floats[0];p2[7]=tp2.getBasis().getRow(2).m_floats[1];p2[8]=tp2.getBasis().getRow(2).m_floats[2];+	p2[9]=tp2.getOrigin().m_floats[0];p2[10]=tp2.getOrigin().m_floats[1];p2[11]=tp2.getOrigin().m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+}+//method: drawContactPoint void ( ::btIDebugDraw::* )( ::btVector3 const &,::btVector3 const &,::btScalar,int,::btVector3 const & ) +void btIDebugDraw_drawContactPoint(void *c,float* p0,float* p1,float p2,int p3,float* p4) {+	::btIDebugDraw *o = (::btIDebugDraw*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp4(p4[0],p4[1],p4[2]);+	o->drawContactPoint(tp0,tp1,p2,p3,tp4);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p4[0]=tp4.m_floats[0];p4[1]=tp4.m_floats[1];p4[2]=tp4.m_floats[2];+}+//method: setDebugMode void ( ::btIDebugDraw::* )( int ) +void btIDebugDraw_setDebugMode(void *c,int p0) {+	::btIDebugDraw *o = (::btIDebugDraw*)c;+	o->setDebugMode(p0);+}+//method: drawSpherePatch void ( ::btIDebugDraw::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btScalar,::btScalar,::btScalar,::btScalar,::btScalar,::btVector3 const &,::btScalar ) +void btIDebugDraw_drawSpherePatch(void *c,float* p0,float* p1,float* p2,float p3,float p4,float p5,float p6,float p7,float* p8,float p9) {+	::btIDebugDraw *o = (::btIDebugDraw*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	btVector3 tp8(p8[0],p8[1],p8[2]);+	o->drawSpherePatch(tp0,tp1,tp2,p3,p4,p5,p6,p7,tp8,p9);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	p8[0]=tp8.m_floats[0];p8[1]=tp8.m_floats[1];p8[2]=tp8.m_floats[2];+}+//method: drawSphere void ( ::btIDebugDraw::* )( ::btScalar,::btTransform const &,::btVector3 const & ) +void btIDebugDraw_drawSphere(void *c,float p0,float* p1,float* p2) {+	::btIDebugDraw *o = (::btIDebugDraw*)c;+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->drawSphere(p0,tp1,tp2);+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: drawSphere void ( ::btIDebugDraw::* )( ::btScalar,::btTransform const &,::btVector3 const & ) +void btIDebugDraw_drawSphere0(void *c,float p0,float* p1,float* p2) {+	::btIDebugDraw *o = (::btIDebugDraw*)c;+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->drawSphere(p0,tp1,tp2);+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: drawSphere void ( ::btIDebugDraw::* )( ::btVector3 const &,::btScalar,::btVector3 const & ) +void btIDebugDraw_drawSphere1(void *c,float* p0,float p1,float* p2) {+	::btIDebugDraw *o = (::btIDebugDraw*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->drawSphere(tp0,p1,tp2);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}++// ::btMatrix3x3DoubleData+//constructor: btMatrix3x3DoubleData  ( ::btMatrix3x3DoubleData::* )(  ) +void* btMatrix3x3DoubleData_new() {+	::btMatrix3x3DoubleData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btMatrix3x3DoubleData),16);+	o = new (mem)::btMatrix3x3DoubleData();+	return (void*)o;+}+void btMatrix3x3DoubleData_free(void *c) {+	::btMatrix3x3DoubleData *o = (::btMatrix3x3DoubleData*)c;+	delete o;+}+//attribute: ::btVector3DoubleData[3] btMatrix3x3DoubleData->m_el+// attribute not supported: //attribute: ::btVector3DoubleData[3] btMatrix3x3DoubleData->m_el++// ::btMatrix3x3FloatData+//constructor: btMatrix3x3FloatData  ( ::btMatrix3x3FloatData::* )(  ) +void* btMatrix3x3FloatData_new() {+	::btMatrix3x3FloatData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btMatrix3x3FloatData),16);+	o = new (mem)::btMatrix3x3FloatData();+	return (void*)o;+}+void btMatrix3x3FloatData_free(void *c) {+	::btMatrix3x3FloatData *o = (::btMatrix3x3FloatData*)c;+	delete o;+}+//attribute: ::btVector3FloatData[3] btMatrix3x3FloatData->m_el+// attribute not supported: //attribute: ::btVector3FloatData[3] btMatrix3x3FloatData->m_el++// ::btMotionState+//method: setWorldTransform void ( ::btMotionState::* )( ::btTransform const & ) +void btMotionState_setWorldTransform(void *c,float* p0) {+	::btMotionState *o = (::btMotionState*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	o->setWorldTransform(tp0);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+}+//method: getWorldTransform void ( ::btMotionState::* )( ::btTransform & ) const+void btMotionState_getWorldTransform(void *c,float* p0) {+	::btMotionState *o = (::btMotionState*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	o->getWorldTransform(tp0);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+}++// ::btPointerUid+//constructor: btPointerUid  ( ::btPointerUid::* )(  ) +void* btPointerUid_new() {+	::btPointerUid *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btPointerUid),16);+	o = new (mem)::btPointerUid();+	return (void*)o;+}+void btPointerUid_free(void *c) {+	::btPointerUid *o = (::btPointerUid*)c;+	delete o;+}+//attribute: ::btPointerUid btPointerUid->+// attribute not supported: //attribute: ::btPointerUid btPointerUid->++// ::btQuadWord+//constructor: btQuadWord  ( ::btQuadWord::* )(  ) +void* btQuadWord_new0() {+	::btQuadWord *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btQuadWord),16);+	o = new (mem)::btQuadWord();+	return (void*)o;+}+//constructor: btQuadWord  ( ::btQuadWord::* )( ::btScalar const &,::btScalar const &,::btScalar const & ) +void* btQuadWord_new1(float p0,float p1,float p2) {+	::btQuadWord *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btQuadWord),16);+	o = new (mem)::btQuadWord(p0,p1,p2);+	return (void*)o;+}+//constructor: btQuadWord  ( ::btQuadWord::* )( ::btScalar const &,::btScalar const &,::btScalar const &,::btScalar const & ) +void* btQuadWord_new2(float p0,float p1,float p2,float p3) {+	::btQuadWord *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btQuadWord),16);+	o = new (mem)::btQuadWord(p0,p1,p2,p3);+	return (void*)o;+}+void btQuadWord_free(void *c) {+	::btQuadWord *o = (::btQuadWord*)c;+	delete o;+}+//method: setMin void ( ::btQuadWord::* )( ::btQuadWord const & ) +void btQuadWord_setMin(void *c,void* p0) {+	::btQuadWord *o = (::btQuadWord*)c;+	::btQuadWord const & tp0 = *(::btQuadWord const *)p0;+	o->setMin(tp0);+}+//method: setValue void ( ::btQuadWord::* )( ::btScalar const &,::btScalar const &,::btScalar const & ) +void btQuadWord_setValue(void *c,float p0,float p1,float p2) {+	::btQuadWord *o = (::btQuadWord*)c;+	o->setValue(p0,p1,p2);+}+//method: setValue void ( ::btQuadWord::* )( ::btScalar const &,::btScalar const &,::btScalar const & ) +void btQuadWord_setValue0(void *c,float p0,float p1,float p2) {+	::btQuadWord *o = (::btQuadWord*)c;+	o->setValue(p0,p1,p2);+}+//method: setValue void ( ::btQuadWord::* )( ::btScalar const &,::btScalar const &,::btScalar const &,::btScalar const & ) +void btQuadWord_setValue1(void *c,float p0,float p1,float p2,float p3) {+	::btQuadWord *o = (::btQuadWord*)c;+	o->setValue(p0,p1,p2,p3);+}+//method: setMax void ( ::btQuadWord::* )( ::btQuadWord const & ) +void btQuadWord_setMax(void *c,void* p0) {+	::btQuadWord *o = (::btQuadWord*)c;+	::btQuadWord const & tp0 = *(::btQuadWord const *)p0;+	o->setMax(tp0);+}+//method: getX ::btScalar const & ( ::btQuadWord::* )(  ) const+float btQuadWord_getX(void *c) {+	::btQuadWord *o = (::btQuadWord*)c;+	float retVal = (float)o->getX();+	return retVal;+}+//method: getY ::btScalar const & ( ::btQuadWord::* )(  ) const+float btQuadWord_getY(void *c) {+	::btQuadWord *o = (::btQuadWord*)c;+	float retVal = (float)o->getY();+	return retVal;+}+//method: getZ ::btScalar const & ( ::btQuadWord::* )(  ) const+float btQuadWord_getZ(void *c) {+	::btQuadWord *o = (::btQuadWord*)c;+	float retVal = (float)o->getZ();+	return retVal;+}+//method: setW void ( ::btQuadWord::* )( ::btScalar ) +void btQuadWord_setW(void *c,float p0) {+	::btQuadWord *o = (::btQuadWord*)c;+	o->setW(p0);+}+//method: w ::btScalar const & ( ::btQuadWord::* )(  ) const+float btQuadWord_w(void *c) {+	::btQuadWord *o = (::btQuadWord*)c;+	float retVal = (float)o->w();+	return retVal;+}+//method: y ::btScalar const & ( ::btQuadWord::* )(  ) const+float btQuadWord_y(void *c) {+	::btQuadWord *o = (::btQuadWord*)c;+	float retVal = (float)o->y();+	return retVal;+}+//method: x ::btScalar const & ( ::btQuadWord::* )(  ) const+float btQuadWord_x(void *c) {+	::btQuadWord *o = (::btQuadWord*)c;+	float retVal = (float)o->x();+	return retVal;+}+//method: z ::btScalar const & ( ::btQuadWord::* )(  ) const+float btQuadWord_z(void *c) {+	::btQuadWord *o = (::btQuadWord*)c;+	float retVal = (float)o->z();+	return retVal;+}+//method: setX void ( ::btQuadWord::* )( ::btScalar ) +void btQuadWord_setX(void *c,float p0) {+	::btQuadWord *o = (::btQuadWord*)c;+	o->setX(p0);+}+//method: setY void ( ::btQuadWord::* )( ::btScalar ) +void btQuadWord_setY(void *c,float p0) {+	::btQuadWord *o = (::btQuadWord*)c;+	o->setY(p0);+}+//method: setZ void ( ::btQuadWord::* )( ::btScalar ) +void btQuadWord_setZ(void *c,float p0) {+	::btQuadWord *o = (::btQuadWord*)c;+	o->setZ(p0);+}++// ::btSerializer+//method: setSerializationFlags void ( ::btSerializer::* )( int ) +void btSerializer_setSerializationFlags(void *c,int p0) {+	::btSerializer *o = (::btSerializer*)c;+	o->setSerializationFlags(p0);+}+//method: getCurrentBufferSize int ( ::btSerializer::* )(  ) const+int btSerializer_getCurrentBufferSize(void *c) {+	::btSerializer *o = (::btSerializer*)c;+	int retVal = (int)o->getCurrentBufferSize();+	return retVal;+}+//method: startSerialization void ( ::btSerializer::* )(  ) +void btSerializer_startSerialization(void *c) {+	::btSerializer *o = (::btSerializer*)c;+	o->startSerialization();+}+//method: getSerializationFlags int ( ::btSerializer::* )(  ) const+int btSerializer_getSerializationFlags(void *c) {+	::btSerializer *o = (::btSerializer*)c;+	int retVal = (int)o->getSerializationFlags();+	return retVal;+}+//method: finishSerialization void ( ::btSerializer::* )(  ) +void btSerializer_finishSerialization(void *c) {+	::btSerializer *o = (::btSerializer*)c;+	o->finishSerialization();+}+//not supported method: getUniquePointer void * ( ::btSerializer::* )( void * ) +//not supported method: allocate ::btChunk * ( ::btSerializer::* )( ::size_t,int ) +//not supported method: findNameForPointer char const * ( ::btSerializer::* )( void const * ) const+//not supported method: finalizeChunk void ( ::btSerializer::* )( ::btChunk *,char const *,int,void * ) +//method: serializeName void ( ::btSerializer::* )( char const * ) +void btSerializer_serializeName(void *c,char const * p0) {+	::btSerializer *o = (::btSerializer*)c;+	o->serializeName(p0);+}+//not supported method: findPointer void * ( ::btSerializer::* )( void * ) +//not supported method: registerNameForPointer void ( ::btSerializer::* )( void const *,char const * ) +//not supported method: getBufferPointer unsigned char const * ( ::btSerializer::* )(  ) const++// ::btStackAlloc+//constructor: btStackAlloc  ( ::btStackAlloc::* )( unsigned int ) +void* btStackAlloc_new(unsigned int p0) {+	::btStackAlloc *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btStackAlloc),16);+	o = new (mem)::btStackAlloc(p0);+	return (void*)o;+}+void btStackAlloc_free(void *c) {+	::btStackAlloc *o = (::btStackAlloc*)c;+	delete o;+}+//method: create void ( ::btStackAlloc::* )( unsigned int ) +void btStackAlloc_create(void *c,unsigned int p0) {+	::btStackAlloc *o = (::btStackAlloc*)c;+	o->create(p0);+}+//not supported method: allocate unsigned char * ( ::btStackAlloc::* )( unsigned int ) +//method: destroy void ( ::btStackAlloc::* )(  ) +void btStackAlloc_destroy(void *c) {+	::btStackAlloc *o = (::btStackAlloc*)c;+	o->destroy();+}+//method: beginBlock ::btBlock * ( ::btStackAlloc::* )(  ) +void* btStackAlloc_beginBlock(void *c) {+	::btStackAlloc *o = (::btStackAlloc*)c;+	void* retVal = (void*) o->beginBlock();+	return retVal;+}+//method: getAvailableMemory int ( ::btStackAlloc::* )(  ) const+int btStackAlloc_getAvailableMemory(void *c) {+	::btStackAlloc *o = (::btStackAlloc*)c;+	int retVal = (int)o->getAvailableMemory();+	return retVal;+}+//method: endBlock void ( ::btStackAlloc::* )( ::btBlock * ) +void btStackAlloc_endBlock(void *c,void* p0) {+	::btStackAlloc *o = (::btStackAlloc*)c;+	::btBlock * tp0 = (::btBlock *)p0;+	o->endBlock(tp0);+}++// ::btTransformDoubleData+//constructor: btTransformDoubleData  ( ::btTransformDoubleData::* )(  ) +void* btTransformDoubleData_new() {+	::btTransformDoubleData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btTransformDoubleData),16);+	o = new (mem)::btTransformDoubleData();+	return (void*)o;+}+void btTransformDoubleData_free(void *c) {+	::btTransformDoubleData *o = (::btTransformDoubleData*)c;+	delete o;+}+//attribute: ::btMatrix3x3DoubleData btTransformDoubleData->m_basis+// attribute not supported: //attribute: ::btMatrix3x3DoubleData btTransformDoubleData->m_basis+//attribute: ::btVector3DoubleData btTransformDoubleData->m_origin+// attribute not supported: //attribute: ::btVector3DoubleData btTransformDoubleData->m_origin++// ::btTransformFloatData+//constructor: btTransformFloatData  ( ::btTransformFloatData::* )(  ) +void* btTransformFloatData_new() {+	::btTransformFloatData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btTransformFloatData),16);+	o = new (mem)::btTransformFloatData();+	return (void*)o;+}+void btTransformFloatData_free(void *c) {+	::btTransformFloatData *o = (::btTransformFloatData*)c;+	delete o;+}+//attribute: ::btMatrix3x3FloatData btTransformFloatData->m_basis+// attribute not supported: //attribute: ::btMatrix3x3FloatData btTransformFloatData->m_basis+//attribute: ::btVector3FloatData btTransformFloatData->m_origin+// attribute not supported: //attribute: ::btVector3FloatData btTransformFloatData->m_origin++// ::btTransformUtil+//constructor: btTransformUtil  ( ::btTransformUtil::* )(  ) +void* btTransformUtil_new() {+	::btTransformUtil *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btTransformUtil),16);+	o = new (mem)::btTransformUtil();+	return (void*)o;+}+void btTransformUtil_free(void *c) {+	::btTransformUtil *o = (::btTransformUtil*)c;+	delete o;+}+//not supported method: calculateDiffAxisAngle void (*)( ::btTransform const &,::btTransform const &,::btVector3 &,::btScalar & )+//method: calculateVelocity void (*)( ::btTransform const &,::btTransform const &,::btScalar,::btVector3 &,::btVector3 & )+void btTransformUtil_calculateVelocity(float* p0,float* p1,float p2,float* p3,float* p4) {+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	btVector3 tp4(p4[0],p4[1],p4[2]);+	::btTransformUtil::calculateVelocity(tp0,tp1,p2,tp3,tp4);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+	p4[0]=tp4.m_floats[0];p4[1]=tp4.m_floats[1];p4[2]=tp4.m_floats[2];+}+//method: integrateTransform void (*)( ::btTransform const &,::btVector3 const &,::btVector3 const &,::btScalar,::btTransform & )+void btTransformUtil_integrateTransform(float* p0,float* p1,float* p2,float p3,float* p4) {+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	btMatrix3x3 mtp4(p4[0],p4[1],p4[2],p4[3],p4[4],p4[5],p4[6],p4[7],p4[8]);+	btVector3 vtp4(p4[9],p4[10],p4[11]);+	btTransform tp4(mtp4,vtp4);+	::btTransformUtil::integrateTransform(tp0,tp1,tp2,p3,tp4);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	p4[0]=tp4.getBasis().getRow(0).m_floats[0];p4[1]=tp4.getBasis().getRow(0).m_floats[1];p4[2]=tp4.getBasis().getRow(0).m_floats[2];p4[3]=tp4.getBasis().getRow(1).m_floats[0];p4[4]=tp4.getBasis().getRow(1).m_floats[1];p4[5]=tp4.getBasis().getRow(1).m_floats[2];p4[6]=tp4.getBasis().getRow(2).m_floats[0];p4[7]=tp4.getBasis().getRow(2).m_floats[1];p4[8]=tp4.getBasis().getRow(2).m_floats[2];+	p4[9]=tp4.getOrigin().m_floats[0];p4[10]=tp4.getOrigin().m_floats[1];p4[11]=tp4.getOrigin().m_floats[2];+}+//method: calculateVelocityQuaternion void (*)( ::btVector3 const &,::btVector3 const &,::btQuaternion const &,::btQuaternion const &,::btScalar,::btVector3 &,::btVector3 & )+void btTransformUtil_calculateVelocityQuaternion(float* p0,float* p1,float* p2,float* p3,float p4,float* p5,float* p6) {+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btQuaternion tp2(p2[0],p2[1],p2[2],p2[3]);+	btQuaternion tp3(p3[0],p3[1],p3[2],p3[3]);+	btVector3 tp5(p5[0],p5[1],p5[2]);+	btVector3 tp6(p6[0],p6[1],p6[2]);+	::btTransformUtil::calculateVelocityQuaternion(tp0,tp1,tp2,tp3,p4,tp5,tp6);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.getX();p2[1]=tp2.getY();p2[2]=tp2.getZ();p2[3]=tp2.getW();+	p3[0]=tp3.getX();p3[1]=tp3.getY();p3[2]=tp3.getZ();p3[3]=tp3.getW();+	p5[0]=tp5.m_floats[0];p5[1]=tp5.m_floats[1];p5[2]=tp5.m_floats[2];+	p6[0]=tp6.m_floats[0];p6[1]=tp6.m_floats[1];p6[2]=tp6.m_floats[2];+}+//not supported method: calculateDiffAxisAngleQuaternion void (*)( ::btQuaternion const &,::btQuaternion const &,::btVector3 &,::btScalar & )++// ::btTypedObject+//constructor: btTypedObject  ( ::btTypedObject::* )( int ) +void* btTypedObject_new(int p0) {+	::btTypedObject *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btTypedObject),16);+	o = new (mem)::btTypedObject(p0);+	return (void*)o;+}+void btTypedObject_free(void *c) {+	::btTypedObject *o = (::btTypedObject*)c;+	delete o;+}+//method: getObjectType int ( ::btTypedObject::* )(  ) const+int btTypedObject_getObjectType(void *c) {+	::btTypedObject *o = (::btTypedObject*)c;+	int retVal = (int)o->getObjectType();+	return retVal;+}+//attribute: int btTypedObject->m_objectType+void btTypedObject_m_objectType_set(void *c,int a) {+	::btTypedObject *o = (::btTypedObject*)c;+	o->m_objectType = a;+}+int btTypedObject_m_objectType_get(void *c) {+	::btTypedObject *o = (::btTypedObject*)c;+	return (int)(o->m_objectType);+}+++// ::btVector3DoubleData+//constructor: btVector3DoubleData  ( ::btVector3DoubleData::* )(  ) +void* btVector3DoubleData_new() {+	::btVector3DoubleData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btVector3DoubleData),16);+	o = new (mem)::btVector3DoubleData();+	return (void*)o;+}+void btVector3DoubleData_free(void *c) {+	::btVector3DoubleData *o = (::btVector3DoubleData*)c;+	delete o;+}+//attribute: double[4] btVector3DoubleData->m_floats+// attribute not supported: //attribute: double[4] btVector3DoubleData->m_floats++// ::btVector3FloatData+//constructor: btVector3FloatData  ( ::btVector3FloatData::* )(  ) +void* btVector3FloatData_new() {+	::btVector3FloatData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btVector3FloatData),16);+	o = new (mem)::btVector3FloatData();+	return (void*)o;+}+void btVector3FloatData_free(void *c) {+	::btVector3FloatData *o = (::btVector3FloatData*)c;+	delete o;+}+//attribute: float[4] btVector3FloatData->m_floats+// attribute not supported: //attribute: float[4] btVector3FloatData->m_floats++// ::btAngularLimit+//constructor: btAngularLimit  ( ::btAngularLimit::* )(  ) +void* btAngularLimit_new() {+	::btAngularLimit *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btAngularLimit),16);+	o = new (mem)::btAngularLimit();+	return (void*)o;+}+void btAngularLimit_free(void *c) {+	::btAngularLimit *o = (::btAngularLimit*)c;+	delete o;+}+//method: getCorrection ::btScalar ( ::btAngularLimit::* )(  ) const+float btAngularLimit_getCorrection(void *c) {+	::btAngularLimit *o = (::btAngularLimit*)c;+	float retVal = (float)o->getCorrection();+	return retVal;+}+//method: set void ( ::btAngularLimit::* )( ::btScalar,::btScalar,::btScalar,::btScalar,::btScalar ) +void btAngularLimit_set(void *c,float p0,float p1,float p2,float p3,float p4) {+	::btAngularLimit *o = (::btAngularLimit*)c;+	o->set(p0,p1,p2,p3,p4);+}+//method: getError ::btScalar ( ::btAngularLimit::* )(  ) const+float btAngularLimit_getError(void *c) {+	::btAngularLimit *o = (::btAngularLimit*)c;+	float retVal = (float)o->getError();+	return retVal;+}+//not supported method: fit void ( ::btAngularLimit::* )( ::btScalar & ) const+//method: isLimit bool ( ::btAngularLimit::* )(  ) const+int btAngularLimit_isLimit(void *c) {+	::btAngularLimit *o = (::btAngularLimit*)c;+	int retVal = (int)o->isLimit();+	return retVal;+}+//method: getSign ::btScalar ( ::btAngularLimit::* )(  ) const+float btAngularLimit_getSign(void *c) {+	::btAngularLimit *o = (::btAngularLimit*)c;+	float retVal = (float)o->getSign();+	return retVal;+}+//method: getBiasFactor ::btScalar ( ::btAngularLimit::* )(  ) const+float btAngularLimit_getBiasFactor(void *c) {+	::btAngularLimit *o = (::btAngularLimit*)c;+	float retVal = (float)o->getBiasFactor();+	return retVal;+}+//method: getSoftness ::btScalar ( ::btAngularLimit::* )(  ) const+float btAngularLimit_getSoftness(void *c) {+	::btAngularLimit *o = (::btAngularLimit*)c;+	float retVal = (float)o->getSoftness();+	return retVal;+}+//method: getHigh ::btScalar ( ::btAngularLimit::* )(  ) const+float btAngularLimit_getHigh(void *c) {+	::btAngularLimit *o = (::btAngularLimit*)c;+	float retVal = (float)o->getHigh();+	return retVal;+}+//not supported method: test void ( ::btAngularLimit::* )( ::btScalar const ) +//method: getHalfRange ::btScalar ( ::btAngularLimit::* )(  ) const+float btAngularLimit_getHalfRange(void *c) {+	::btAngularLimit *o = (::btAngularLimit*)c;+	float retVal = (float)o->getHalfRange();+	return retVal;+}+//method: getLow ::btScalar ( ::btAngularLimit::* )(  ) const+float btAngularLimit_getLow(void *c) {+	::btAngularLimit *o = (::btAngularLimit*)c;+	float retVal = (float)o->getLow();+	return retVal;+}+//method: getRelaxationFactor ::btScalar ( ::btAngularLimit::* )(  ) const+float btAngularLimit_getRelaxationFactor(void *c) {+	::btAngularLimit *o = (::btAngularLimit*)c;+	float retVal = (float)o->getRelaxationFactor();+	return retVal;+}++// ::btConeTwistConstraint+//constructor: btConeTwistConstraint  ( ::btConeTwistConstraint::* )( ::btRigidBody &,::btRigidBody &,::btTransform const &,::btTransform const & ) +void* btConeTwistConstraint_new0(void* p0,void* p1,float* p2,float* p3) {+	::btConeTwistConstraint *o = 0;+	 void *mem = 0;+	::btRigidBody & tp0 = *(::btRigidBody *)p0;+	::btRigidBody & tp1 = *(::btRigidBody *)p1;+	btMatrix3x3 mtp2(p2[0],p2[1],p2[2],p2[3],p2[4],p2[5],p2[6],p2[7],p2[8]);+	btVector3 vtp2(p2[9],p2[10],p2[11]);+	btTransform tp2(mtp2,vtp2);+	btMatrix3x3 mtp3(p3[0],p3[1],p3[2],p3[3],p3[4],p3[5],p3[6],p3[7],p3[8]);+	btVector3 vtp3(p3[9],p3[10],p3[11]);+	btTransform tp3(mtp3,vtp3);+	mem = btAlignedAlloc(sizeof(::btConeTwistConstraint),16);+	o = new (mem)::btConeTwistConstraint(tp0,tp1,tp2,tp3);+	p2[0]=tp2.getBasis().getRow(0).m_floats[0];p2[1]=tp2.getBasis().getRow(0).m_floats[1];p2[2]=tp2.getBasis().getRow(0).m_floats[2];p2[3]=tp2.getBasis().getRow(1).m_floats[0];p2[4]=tp2.getBasis().getRow(1).m_floats[1];p2[5]=tp2.getBasis().getRow(1).m_floats[2];p2[6]=tp2.getBasis().getRow(2).m_floats[0];p2[7]=tp2.getBasis().getRow(2).m_floats[1];p2[8]=tp2.getBasis().getRow(2).m_floats[2];+	p2[9]=tp2.getOrigin().m_floats[0];p2[10]=tp2.getOrigin().m_floats[1];p2[11]=tp2.getOrigin().m_floats[2];+	p3[0]=tp3.getBasis().getRow(0).m_floats[0];p3[1]=tp3.getBasis().getRow(0).m_floats[1];p3[2]=tp3.getBasis().getRow(0).m_floats[2];p3[3]=tp3.getBasis().getRow(1).m_floats[0];p3[4]=tp3.getBasis().getRow(1).m_floats[1];p3[5]=tp3.getBasis().getRow(1).m_floats[2];p3[6]=tp3.getBasis().getRow(2).m_floats[0];p3[7]=tp3.getBasis().getRow(2).m_floats[1];p3[8]=tp3.getBasis().getRow(2).m_floats[2];+	p3[9]=tp3.getOrigin().m_floats[0];p3[10]=tp3.getOrigin().m_floats[1];p3[11]=tp3.getOrigin().m_floats[2];+	return (void*)o;+}+//constructor: btConeTwistConstraint  ( ::btConeTwistConstraint::* )( ::btRigidBody &,::btTransform const & ) +void* btConeTwistConstraint_new1(void* p0,float* p1) {+	::btConeTwistConstraint *o = 0;+	 void *mem = 0;+	::btRigidBody & tp0 = *(::btRigidBody *)p0;+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	mem = btAlignedAlloc(sizeof(::btConeTwistConstraint),16);+	o = new (mem)::btConeTwistConstraint(tp0,tp1);+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+	return (void*)o;+}+void btConeTwistConstraint_free(void *c) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	delete o;+}+//method: getRigidBodyB ::btRigidBody const & ( ::btConeTwistConstraint::* )(  ) const+void* btConeTwistConstraint_getRigidBodyB(void *c) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	void* retVal = (void*) &(o->getRigidBodyB());+	return retVal;+}+//method: getInfo2NonVirtual void ( ::btConeTwistConstraint::* )( ::btTypedConstraint::btConstraintInfo2 *,::btTransform const &,::btTransform const &,::btMatrix3x3 const &,::btMatrix3x3 const & ) +void btConeTwistConstraint_getInfo2NonVirtual(void *c,void* p0,float* p1,float* p2,float* p3,float* p4) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	::btTypedConstraint::btConstraintInfo2 * tp0 = (::btTypedConstraint::btConstraintInfo2 *)p0;+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	btMatrix3x3 mtp2(p2[0],p2[1],p2[2],p2[3],p2[4],p2[5],p2[6],p2[7],p2[8]);+	btVector3 vtp2(p2[9],p2[10],p2[11]);+	btTransform tp2(mtp2,vtp2);+	btMatrix3x3 tp3(p3[0],p3[1],p3[2],p3[3],p3[4],p3[5],p3[6],p3[7],p3[8]);+	btMatrix3x3 tp4(p4[0],p4[1],p4[2],p4[3],p4[4],p4[5],p4[6],p4[7],p4[8]);+	o->getInfo2NonVirtual(tp0,tp1,tp2,tp3,tp4);+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+	p2[0]=tp2.getBasis().getRow(0).m_floats[0];p2[1]=tp2.getBasis().getRow(0).m_floats[1];p2[2]=tp2.getBasis().getRow(0).m_floats[2];p2[3]=tp2.getBasis().getRow(1).m_floats[0];p2[4]=tp2.getBasis().getRow(1).m_floats[1];p2[5]=tp2.getBasis().getRow(1).m_floats[2];p2[6]=tp2.getBasis().getRow(2).m_floats[0];p2[7]=tp2.getBasis().getRow(2).m_floats[1];p2[8]=tp2.getBasis().getRow(2).m_floats[2];+	p2[9]=tp2.getOrigin().m_floats[0];p2[10]=tp2.getOrigin().m_floats[1];p2[11]=tp2.getOrigin().m_floats[2];+	p3[0]=tp3.getRow(0).m_floats[0];p3[1]=tp3.getRow(0).m_floats[1];p3[2]=tp3.getRow(0).m_floats[2];p3[3]=tp3.getRow(1).m_floats[0];p3[4]=tp3.getRow(1).m_floats[1];p3[5]=tp3.getRow(1).m_floats[2];p3[6]=tp3.getRow(2).m_floats[0];p3[7]=tp3.getRow(2).m_floats[1];p3[8]=tp3.getRow(2).m_floats[2];+	p4[0]=tp4.getRow(0).m_floats[0];p4[1]=tp4.getRow(0).m_floats[1];p4[2]=tp4.getRow(0).m_floats[2];p4[3]=tp4.getRow(1).m_floats[0];p4[4]=tp4.getRow(1).m_floats[1];p4[5]=tp4.getRow(1).m_floats[2];p4[6]=tp4.getRow(2).m_floats[0];p4[7]=tp4.getRow(2).m_floats[1];p4[8]=tp4.getRow(2).m_floats[2];+}+//method: getRigidBodyA ::btRigidBody const & ( ::btConeTwistConstraint::* )(  ) const+void* btConeTwistConstraint_getRigidBodyA(void *c) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	void* retVal = (void*) &(o->getRigidBodyA());+	return retVal;+}+//method: isPastSwingLimit bool ( ::btConeTwistConstraint::* )(  ) +int btConeTwistConstraint_isPastSwingLimit(void *c) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	int retVal = (int)o->isPastSwingLimit();+	return retVal;+}+//method: getFrameOffsetA ::btTransform const & ( ::btConeTwistConstraint::* )(  ) const+void btConeTwistConstraint_getFrameOffsetA(void *c,float* ret) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getFrameOffsetA();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: getFrameOffsetB ::btTransform const & ( ::btConeTwistConstraint::* )(  ) const+void btConeTwistConstraint_getFrameOffsetB(void *c,float* ret) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getFrameOffsetB();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: getSwingSpan2 ::btScalar ( ::btConeTwistConstraint::* )(  ) +float btConeTwistConstraint_getSwingSpan2(void *c) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	float retVal = (float)o->getSwingSpan2();+	return retVal;+}+//method: getSwingSpan1 ::btScalar ( ::btConeTwistConstraint::* )(  ) +float btConeTwistConstraint_getSwingSpan1(void *c) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	float retVal = (float)o->getSwingSpan1();+	return retVal;+}+//method: calcAngleInfo2 void ( ::btConeTwistConstraint::* )( ::btTransform const &,::btTransform const &,::btMatrix3x3 const &,::btMatrix3x3 const & ) +void btConeTwistConstraint_calcAngleInfo2(void *c,float* p0,float* p1,float* p2,float* p3) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	btMatrix3x3 tp2(p2[0],p2[1],p2[2],p2[3],p2[4],p2[5],p2[6],p2[7],p2[8]);+	btMatrix3x3 tp3(p3[0],p3[1],p3[2],p3[3],p3[4],p3[5],p3[6],p3[7],p3[8]);+	o->calcAngleInfo2(tp0,tp1,tp2,tp3);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+	p2[0]=tp2.getRow(0).m_floats[0];p2[1]=tp2.getRow(0).m_floats[1];p2[2]=tp2.getRow(0).m_floats[2];p2[3]=tp2.getRow(1).m_floats[0];p2[4]=tp2.getRow(1).m_floats[1];p2[5]=tp2.getRow(1).m_floats[2];p2[6]=tp2.getRow(2).m_floats[0];p2[7]=tp2.getRow(2).m_floats[1];p2[8]=tp2.getRow(2).m_floats[2];+	p3[0]=tp3.getRow(0).m_floats[0];p3[1]=tp3.getRow(0).m_floats[1];p3[2]=tp3.getRow(0).m_floats[2];p3[3]=tp3.getRow(1).m_floats[0];p3[4]=tp3.getRow(1).m_floats[1];p3[5]=tp3.getRow(1).m_floats[2];p3[6]=tp3.getRow(2).m_floats[0];p3[7]=tp3.getRow(2).m_floats[1];p3[8]=tp3.getRow(2).m_floats[2];+}+//method: setParam void ( ::btConeTwistConstraint::* )( int,::btScalar,int ) +void btConeTwistConstraint_setParam(void *c,int p0,float p1,int p2) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	o->setParam(p0,p1,p2);+}+//method: getParam ::btScalar ( ::btConeTwistConstraint::* )( int,int ) const+float btConeTwistConstraint_getParam(void *c,int p0,int p1) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	float retVal = (float)o->getParam(p0,p1);+	return retVal;+}+//method: setDamping void ( ::btConeTwistConstraint::* )( ::btScalar ) +void btConeTwistConstraint_setDamping(void *c,float p0) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	o->setDamping(p0);+}+//method: getInfo1 void ( ::btConeTwistConstraint::* )( ::btTypedConstraint::btConstraintInfo1 * ) +void btConeTwistConstraint_getInfo1(void *c,void* p0) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	::btTypedConstraint::btConstraintInfo1 * tp0 = (::btTypedConstraint::btConstraintInfo1 *)p0;+	o->getInfo1(tp0);+}+//method: getInfo2 void ( ::btConeTwistConstraint::* )( ::btTypedConstraint::btConstraintInfo2 * ) +void btConeTwistConstraint_getInfo2(void *c,void* p0) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	::btTypedConstraint::btConstraintInfo2 * tp0 = (::btTypedConstraint::btConstraintInfo2 *)p0;+	o->getInfo2(tp0);+}+//method: calculateSerializeBufferSize int ( ::btConeTwistConstraint::* )(  ) const+int btConeTwistConstraint_calculateSerializeBufferSize(void *c) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	int retVal = (int)o->calculateSerializeBufferSize();+	return retVal;+}+//method: getTwistAngle ::btScalar ( ::btConeTwistConstraint::* )(  ) +float btConeTwistConstraint_getTwistAngle(void *c) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	float retVal = (float)o->getTwistAngle();+	return retVal;+}+//method: setMaxMotorImpulseNormalized void ( ::btConeTwistConstraint::* )( ::btScalar ) +void btConeTwistConstraint_setMaxMotorImpulseNormalized(void *c,float p0) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	o->setMaxMotorImpulseNormalized(p0);+}+//method: getSolveTwistLimit int ( ::btConeTwistConstraint::* )(  ) +int btConeTwistConstraint_getSolveTwistLimit(void *c) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	int retVal = (int)o->getSolveTwistLimit();+	return retVal;+}+//method: enableMotor void ( ::btConeTwistConstraint::* )( bool ) +void btConeTwistConstraint_enableMotor(void *c,int p0) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	o->enableMotor(p0);+}+//method: getBFrame ::btTransform const & ( ::btConeTwistConstraint::* )(  ) +void btConeTwistConstraint_getBFrame(void *c,float* ret) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getBFrame();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: getInfo1NonVirtual void ( ::btConeTwistConstraint::* )( ::btTypedConstraint::btConstraintInfo1 * ) +void btConeTwistConstraint_getInfo1NonVirtual(void *c,void* p0) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	::btTypedConstraint::btConstraintInfo1 * tp0 = (::btTypedConstraint::btConstraintInfo1 *)p0;+	o->getInfo1NonVirtual(tp0);+}+//not supported method: serialize char const * ( ::btConeTwistConstraint::* )( void *,::btSerializer * ) const+//method: getFixThresh ::btScalar ( ::btConeTwistConstraint::* )(  ) +float btConeTwistConstraint_getFixThresh(void *c) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	float retVal = (float)o->getFixThresh();+	return retVal;+}+//method: getSolveSwingLimit int ( ::btConeTwistConstraint::* )(  ) +int btConeTwistConstraint_getSolveSwingLimit(void *c) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	int retVal = (int)o->getSolveSwingLimit();+	return retVal;+}+//method: setAngularOnly void ( ::btConeTwistConstraint::* )( bool ) +void btConeTwistConstraint_setAngularOnly(void *c,int p0) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	o->setAngularOnly(p0);+}+//method: setFrames void ( ::btConeTwistConstraint::* )( ::btTransform const &,::btTransform const & ) +void btConeTwistConstraint_setFrames(void *c,float* p0,float* p1) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	o->setFrames(tp0,tp1);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+}+//method: setLimit void ( ::btConeTwistConstraint::* )( int,::btScalar ) +void btConeTwistConstraint_setLimit(void *c,int p0,float p1) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	o->setLimit(p0,p1);+}+//method: setLimit void ( ::btConeTwistConstraint::* )( int,::btScalar ) +void btConeTwistConstraint_setLimit0(void *c,int p0,float p1) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	o->setLimit(p0,p1);+}+//method: setLimit void ( ::btConeTwistConstraint::* )( ::btScalar,::btScalar,::btScalar,::btScalar,::btScalar,::btScalar ) +void btConeTwistConstraint_setLimit1(void *c,float p0,float p1,float p2,float p3,float p4,float p5) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	o->setLimit(p0,p1,p2,p3,p4,p5);+}+//method: buildJacobian void ( ::btConeTwistConstraint::* )(  ) +void btConeTwistConstraint_buildJacobian(void *c) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	o->buildJacobian();+}+//method: getTwistLimitSign ::btScalar ( ::btConeTwistConstraint::* )(  ) +float btConeTwistConstraint_getTwistLimitSign(void *c) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	float retVal = (float)o->getTwistLimitSign();+	return retVal;+}+//method: setMaxMotorImpulse void ( ::btConeTwistConstraint::* )( ::btScalar ) +void btConeTwistConstraint_setMaxMotorImpulse(void *c,float p0) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	o->setMaxMotorImpulse(p0);+}+//method: updateRHS void ( ::btConeTwistConstraint::* )( ::btScalar ) +void btConeTwistConstraint_updateRHS(void *c,float p0) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	o->updateRHS(p0);+}+//method: setMotorTarget void ( ::btConeTwistConstraint::* )( ::btQuaternion const & ) +void btConeTwistConstraint_setMotorTarget(void *c,float* p0) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	btQuaternion tp0(p0[0],p0[1],p0[2],p0[3]);+	o->setMotorTarget(tp0);+	p0[0]=tp0.getX();p0[1]=tp0.getY();p0[2]=tp0.getZ();p0[3]=tp0.getW();+}+//method: setFixThresh void ( ::btConeTwistConstraint::* )( ::btScalar ) +void btConeTwistConstraint_setFixThresh(void *c,float p0) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	o->setFixThresh(p0);+}+//method: setMotorTargetInConstraintSpace void ( ::btConeTwistConstraint::* )( ::btQuaternion const & ) +void btConeTwistConstraint_setMotorTargetInConstraintSpace(void *c,float* p0) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	btQuaternion tp0(p0[0],p0[1],p0[2],p0[3]);+	o->setMotorTargetInConstraintSpace(tp0);+	p0[0]=tp0.getX();p0[1]=tp0.getY();p0[2]=tp0.getZ();p0[3]=tp0.getW();+}+//method: solveConstraintObsolete void ( ::btConeTwistConstraint::* )( ::btRigidBody &,::btRigidBody &,::btScalar ) +void btConeTwistConstraint_solveConstraintObsolete(void *c,void* p0,void* p1,float p2) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	::btRigidBody & tp0 = *(::btRigidBody *)p0;+	::btRigidBody & tp1 = *(::btRigidBody *)p1;+	o->solveConstraintObsolete(tp0,tp1,p2);+}+//method: GetPointForAngle ::btVector3 ( ::btConeTwistConstraint::* )( ::btScalar,::btScalar ) const+void btConeTwistConstraint_GetPointForAngle(void *c,float p0,float p1,float* ret) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->GetPointForAngle(p0,p1);+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: calcAngleInfo void ( ::btConeTwistConstraint::* )(  ) +void btConeTwistConstraint_calcAngleInfo(void *c) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	o->calcAngleInfo();+}+//method: getTwistSpan ::btScalar ( ::btConeTwistConstraint::* )(  ) +float btConeTwistConstraint_getTwistSpan(void *c) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	float retVal = (float)o->getTwistSpan();+	return retVal;+}+//method: getAFrame ::btTransform const & ( ::btConeTwistConstraint::* )(  ) +void btConeTwistConstraint_getAFrame(void *c,float* ret) {+	::btConeTwistConstraint *o = (::btConeTwistConstraint*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getAFrame();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}++// ::btConeTwistConstraintData+//constructor: btConeTwistConstraintData  ( ::btConeTwistConstraintData::* )(  ) +void* btConeTwistConstraintData_new() {+	::btConeTwistConstraintData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btConeTwistConstraintData),16);+	o = new (mem)::btConeTwistConstraintData();+	return (void*)o;+}+void btConeTwistConstraintData_free(void *c) {+	::btConeTwistConstraintData *o = (::btConeTwistConstraintData*)c;+	delete o;+}+//attribute: ::btTypedConstraintData btConeTwistConstraintData->m_typeConstraintData+// attribute not supported: //attribute: ::btTypedConstraintData btConeTwistConstraintData->m_typeConstraintData+//attribute: ::btTransformFloatData btConeTwistConstraintData->m_rbAFrame+// attribute not supported: //attribute: ::btTransformFloatData btConeTwistConstraintData->m_rbAFrame+//attribute: ::btTransformFloatData btConeTwistConstraintData->m_rbBFrame+// attribute not supported: //attribute: ::btTransformFloatData btConeTwistConstraintData->m_rbBFrame+//attribute: float btConeTwistConstraintData->m_swingSpan1+void btConeTwistConstraintData_m_swingSpan1_set(void *c,float a) {+	::btConeTwistConstraintData *o = (::btConeTwistConstraintData*)c;+	o->m_swingSpan1 = a;+}+float btConeTwistConstraintData_m_swingSpan1_get(void *c) {+	::btConeTwistConstraintData *o = (::btConeTwistConstraintData*)c;+	return (float)(o->m_swingSpan1);+}++//attribute: float btConeTwistConstraintData->m_swingSpan2+void btConeTwistConstraintData_m_swingSpan2_set(void *c,float a) {+	::btConeTwistConstraintData *o = (::btConeTwistConstraintData*)c;+	o->m_swingSpan2 = a;+}+float btConeTwistConstraintData_m_swingSpan2_get(void *c) {+	::btConeTwistConstraintData *o = (::btConeTwistConstraintData*)c;+	return (float)(o->m_swingSpan2);+}++//attribute: float btConeTwistConstraintData->m_twistSpan+void btConeTwistConstraintData_m_twistSpan_set(void *c,float a) {+	::btConeTwistConstraintData *o = (::btConeTwistConstraintData*)c;+	o->m_twistSpan = a;+}+float btConeTwistConstraintData_m_twistSpan_get(void *c) {+	::btConeTwistConstraintData *o = (::btConeTwistConstraintData*)c;+	return (float)(o->m_twistSpan);+}++//attribute: float btConeTwistConstraintData->m_limitSoftness+void btConeTwistConstraintData_m_limitSoftness_set(void *c,float a) {+	::btConeTwistConstraintData *o = (::btConeTwistConstraintData*)c;+	o->m_limitSoftness = a;+}+float btConeTwistConstraintData_m_limitSoftness_get(void *c) {+	::btConeTwistConstraintData *o = (::btConeTwistConstraintData*)c;+	return (float)(o->m_limitSoftness);+}++//attribute: float btConeTwistConstraintData->m_biasFactor+void btConeTwistConstraintData_m_biasFactor_set(void *c,float a) {+	::btConeTwistConstraintData *o = (::btConeTwistConstraintData*)c;+	o->m_biasFactor = a;+}+float btConeTwistConstraintData_m_biasFactor_get(void *c) {+	::btConeTwistConstraintData *o = (::btConeTwistConstraintData*)c;+	return (float)(o->m_biasFactor);+}++//attribute: float btConeTwistConstraintData->m_relaxationFactor+void btConeTwistConstraintData_m_relaxationFactor_set(void *c,float a) {+	::btConeTwistConstraintData *o = (::btConeTwistConstraintData*)c;+	o->m_relaxationFactor = a;+}+float btConeTwistConstraintData_m_relaxationFactor_get(void *c) {+	::btConeTwistConstraintData *o = (::btConeTwistConstraintData*)c;+	return (float)(o->m_relaxationFactor);+}++//attribute: float btConeTwistConstraintData->m_damping+void btConeTwistConstraintData_m_damping_set(void *c,float a) {+	::btConeTwistConstraintData *o = (::btConeTwistConstraintData*)c;+	o->m_damping = a;+}+float btConeTwistConstraintData_m_damping_get(void *c) {+	::btConeTwistConstraintData *o = (::btConeTwistConstraintData*)c;+	return (float)(o->m_damping);+}++//attribute: char[4] btConeTwistConstraintData->m_pad+// attribute not supported: //attribute: char[4] btConeTwistConstraintData->m_pad++// ::btTypedConstraint::btConstraintInfo1+//constructor: btConstraintInfo1  ( ::btTypedConstraint::btConstraintInfo1::* )(  ) +void* btTypedConstraint_btConstraintInfo1_new() {+	::btTypedConstraint::btConstraintInfo1 *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btTypedConstraint::btConstraintInfo1),16);+	o = new (mem)::btTypedConstraint::btConstraintInfo1();+	return (void*)o;+}+void btTypedConstraint_btConstraintInfo1_free(void *c) {+	::btTypedConstraint::btConstraintInfo1 *o = (::btTypedConstraint::btConstraintInfo1*)c;+	delete o;+}+//attribute: int btTypedConstraint_btConstraintInfo1->m_numConstraintRows+void btTypedConstraint_btConstraintInfo1_m_numConstraintRows_set(void *c,int a) {+	::btTypedConstraint::btConstraintInfo1 *o = (::btTypedConstraint::btConstraintInfo1*)c;+	o->m_numConstraintRows = a;+}+int btTypedConstraint_btConstraintInfo1_m_numConstraintRows_get(void *c) {+	::btTypedConstraint::btConstraintInfo1 *o = (::btTypedConstraint::btConstraintInfo1*)c;+	return (int)(o->m_numConstraintRows);+}++//attribute: int btTypedConstraint_btConstraintInfo1->nub+void btTypedConstraint_btConstraintInfo1_nub_set(void *c,int a) {+	::btTypedConstraint::btConstraintInfo1 *o = (::btTypedConstraint::btConstraintInfo1*)c;+	o->nub = a;+}+int btTypedConstraint_btConstraintInfo1_nub_get(void *c) {+	::btTypedConstraint::btConstraintInfo1 *o = (::btTypedConstraint::btConstraintInfo1*)c;+	return (int)(o->nub);+}+++// ::btTypedConstraint::btConstraintInfo2+//constructor: btConstraintInfo2  ( ::btTypedConstraint::btConstraintInfo2::* )(  ) +void* btTypedConstraint_btConstraintInfo2_new() {+	::btTypedConstraint::btConstraintInfo2 *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btTypedConstraint::btConstraintInfo2),16);+	o = new (mem)::btTypedConstraint::btConstraintInfo2();+	return (void*)o;+}+void btTypedConstraint_btConstraintInfo2_free(void *c) {+	::btTypedConstraint::btConstraintInfo2 *o = (::btTypedConstraint::btConstraintInfo2*)c;+	delete o;+}+//attribute: ::btScalar * btTypedConstraint_btConstraintInfo2->cfm+// attribute not supported: //attribute: ::btScalar * btTypedConstraint_btConstraintInfo2->cfm+//attribute: ::btScalar btTypedConstraint_btConstraintInfo2->erp+void btTypedConstraint_btConstraintInfo2_erp_set(void *c,float a) {+	::btTypedConstraint::btConstraintInfo2 *o = (::btTypedConstraint::btConstraintInfo2*)c;+	o->erp = a;+}+float btTypedConstraint_btConstraintInfo2_erp_get(void *c) {+	::btTypedConstraint::btConstraintInfo2 *o = (::btTypedConstraint::btConstraintInfo2*)c;+	return (float)(o->erp);+}++//attribute: int * btTypedConstraint_btConstraintInfo2->findex+// attribute not supported: //attribute: int * btTypedConstraint_btConstraintInfo2->findex+//attribute: ::btScalar btTypedConstraint_btConstraintInfo2->fps+void btTypedConstraint_btConstraintInfo2_fps_set(void *c,float a) {+	::btTypedConstraint::btConstraintInfo2 *o = (::btTypedConstraint::btConstraintInfo2*)c;+	o->fps = a;+}+float btTypedConstraint_btConstraintInfo2_fps_get(void *c) {+	::btTypedConstraint::btConstraintInfo2 *o = (::btTypedConstraint::btConstraintInfo2*)c;+	return (float)(o->fps);+}++//attribute: ::btScalar * btTypedConstraint_btConstraintInfo2->m_J1angularAxis+// attribute not supported: //attribute: ::btScalar * btTypedConstraint_btConstraintInfo2->m_J1angularAxis+//attribute: ::btScalar * btTypedConstraint_btConstraintInfo2->m_J1linearAxis+// attribute not supported: //attribute: ::btScalar * btTypedConstraint_btConstraintInfo2->m_J1linearAxis+//attribute: ::btScalar * btTypedConstraint_btConstraintInfo2->m_J2angularAxis+// attribute not supported: //attribute: ::btScalar * btTypedConstraint_btConstraintInfo2->m_J2angularAxis+//attribute: ::btScalar * btTypedConstraint_btConstraintInfo2->m_J2linearAxis+// attribute not supported: //attribute: ::btScalar * btTypedConstraint_btConstraintInfo2->m_J2linearAxis+//attribute: ::btScalar * btTypedConstraint_btConstraintInfo2->m_constraintError+// attribute not supported: //attribute: ::btScalar * btTypedConstraint_btConstraintInfo2->m_constraintError+//attribute: ::btScalar btTypedConstraint_btConstraintInfo2->m_damping+void btTypedConstraint_btConstraintInfo2_m_damping_set(void *c,float a) {+	::btTypedConstraint::btConstraintInfo2 *o = (::btTypedConstraint::btConstraintInfo2*)c;+	o->m_damping = a;+}+float btTypedConstraint_btConstraintInfo2_m_damping_get(void *c) {+	::btTypedConstraint::btConstraintInfo2 *o = (::btTypedConstraint::btConstraintInfo2*)c;+	return (float)(o->m_damping);+}++//attribute: ::btScalar * btTypedConstraint_btConstraintInfo2->m_lowerLimit+// attribute not supported: //attribute: ::btScalar * btTypedConstraint_btConstraintInfo2->m_lowerLimit+//attribute: int btTypedConstraint_btConstraintInfo2->m_numIterations+void btTypedConstraint_btConstraintInfo2_m_numIterations_set(void *c,int a) {+	::btTypedConstraint::btConstraintInfo2 *o = (::btTypedConstraint::btConstraintInfo2*)c;+	o->m_numIterations = a;+}+int btTypedConstraint_btConstraintInfo2_m_numIterations_get(void *c) {+	::btTypedConstraint::btConstraintInfo2 *o = (::btTypedConstraint::btConstraintInfo2*)c;+	return (int)(o->m_numIterations);+}++//attribute: ::btScalar * btTypedConstraint_btConstraintInfo2->m_upperLimit+// attribute not supported: //attribute: ::btScalar * btTypedConstraint_btConstraintInfo2->m_upperLimit+//attribute: int btTypedConstraint_btConstraintInfo2->rowskip+void btTypedConstraint_btConstraintInfo2_rowskip_set(void *c,int a) {+	::btTypedConstraint::btConstraintInfo2 *o = (::btTypedConstraint::btConstraintInfo2*)c;+	o->rowskip = a;+}+int btTypedConstraint_btConstraintInfo2_rowskip_get(void *c) {+	::btTypedConstraint::btConstraintInfo2 *o = (::btTypedConstraint::btConstraintInfo2*)c;+	return (int)(o->rowskip);+}+++// ::btConstraintSetting+//constructor: btConstraintSetting  ( ::btConstraintSetting::* )(  ) +void* btConstraintSetting_new() {+	::btConstraintSetting *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btConstraintSetting),16);+	o = new (mem)::btConstraintSetting();+	return (void*)o;+}+void btConstraintSetting_free(void *c) {+	::btConstraintSetting *o = (::btConstraintSetting*)c;+	delete o;+}+//attribute: ::btScalar btConstraintSetting->m_tau+void btConstraintSetting_m_tau_set(void *c,float a) {+	::btConstraintSetting *o = (::btConstraintSetting*)c;+	o->m_tau = a;+}+float btConstraintSetting_m_tau_get(void *c) {+	::btConstraintSetting *o = (::btConstraintSetting*)c;+	return (float)(o->m_tau);+}++//attribute: ::btScalar btConstraintSetting->m_damping+void btConstraintSetting_m_damping_set(void *c,float a) {+	::btConstraintSetting *o = (::btConstraintSetting*)c;+	o->m_damping = a;+}+float btConstraintSetting_m_damping_get(void *c) {+	::btConstraintSetting *o = (::btConstraintSetting*)c;+	return (float)(o->m_damping);+}++//attribute: ::btScalar btConstraintSetting->m_impulseClamp+void btConstraintSetting_m_impulseClamp_set(void *c,float a) {+	::btConstraintSetting *o = (::btConstraintSetting*)c;+	o->m_impulseClamp = a;+}+float btConstraintSetting_m_impulseClamp_get(void *c) {+	::btConstraintSetting *o = (::btConstraintSetting*)c;+	return (float)(o->m_impulseClamp);+}+++// ::btConstraintSolver+//method: reset void ( ::btConstraintSolver::* )(  ) +void btConstraintSolver_reset(void *c) {+	::btConstraintSolver *o = (::btConstraintSolver*)c;+	o->reset();+}+//method: allSolved void ( ::btConstraintSolver::* )( ::btContactSolverInfo const &,::btIDebugDraw *,::btStackAlloc * ) +void btConstraintSolver_allSolved(void *c,void* p0,void* p1,void* p2) {+	::btConstraintSolver *o = (::btConstraintSolver*)c;+	::btContactSolverInfo const & tp0 = *(::btContactSolverInfo const *)p0;+	::btIDebugDraw * tp1 = (::btIDebugDraw *)p1;+	::btStackAlloc * tp2 = (::btStackAlloc *)p2;+	o->allSolved(tp0,tp1,tp2);+}+//not supported method: solveGroup ::btScalar ( ::btConstraintSolver::* )( ::btCollisionObject * *,int,::btPersistentManifold * *,int,::btTypedConstraint * *,int,::btContactSolverInfo const &,::btIDebugDraw *,::btStackAlloc *,::btDispatcher * ) +//method: prepareSolve void ( ::btConstraintSolver::* )( int,int ) +void btConstraintSolver_prepareSolve(void *c,int p0,int p1) {+	::btConstraintSolver *o = (::btConstraintSolver*)c;+	o->prepareSolve(p0,p1);+}++// ::btContactConstraint+//method: getInfo1 void ( ::btContactConstraint::* )( ::btTypedConstraint::btConstraintInfo1 * ) +void btContactConstraint_getInfo1(void *c,void* p0) {+	::btContactConstraint *o = (::btContactConstraint*)c;+	::btTypedConstraint::btConstraintInfo1 * tp0 = (::btTypedConstraint::btConstraintInfo1 *)p0;+	o->getInfo1(tp0);+}+//method: setContactManifold void ( ::btContactConstraint::* )( ::btPersistentManifold * ) +void btContactConstraint_setContactManifold(void *c,void* p0) {+	::btContactConstraint *o = (::btContactConstraint*)c;+	::btPersistentManifold * tp0 = (::btPersistentManifold *)p0;+	o->setContactManifold(tp0);+}+//method: buildJacobian void ( ::btContactConstraint::* )(  ) +void btContactConstraint_buildJacobian(void *c) {+	::btContactConstraint *o = (::btContactConstraint*)c;+	o->buildJacobian();+}+//method: getInfo2 void ( ::btContactConstraint::* )( ::btTypedConstraint::btConstraintInfo2 * ) +void btContactConstraint_getInfo2(void *c,void* p0) {+	::btContactConstraint *o = (::btContactConstraint*)c;+	::btTypedConstraint::btConstraintInfo2 * tp0 = (::btTypedConstraint::btConstraintInfo2 *)p0;+	o->getInfo2(tp0);+}+//method: getContactManifold ::btPersistentManifold * ( ::btContactConstraint::* )(  ) +void* btContactConstraint_getContactManifold(void *c) {+	::btContactConstraint *o = (::btContactConstraint*)c;+	void* retVal = (void*) o->getContactManifold();+	return retVal;+}+//method: getContactManifold ::btPersistentManifold * ( ::btContactConstraint::* )(  ) +void* btContactConstraint_getContactManifold0(void *c) {+	::btContactConstraint *o = (::btContactConstraint*)c;+	void* retVal = (void*) o->getContactManifold();+	return retVal;+}+//method: getContactManifold ::btPersistentManifold const * ( ::btContactConstraint::* )(  ) const+void* btContactConstraint_getContactManifold1(void *c) {+	::btContactConstraint *o = (::btContactConstraint*)c;+	void* retVal = (void*) o->getContactManifold();+	return retVal;+}++// ::btContactSolverInfo+//constructor: btContactSolverInfo  ( ::btContactSolverInfo::* )(  ) +void* btContactSolverInfo_new() {+	::btContactSolverInfo *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btContactSolverInfo),16);+	o = new (mem)::btContactSolverInfo();+	return (void*)o;+}+void btContactSolverInfo_free(void *c) {+	::btContactSolverInfo *o = (::btContactSolverInfo*)c;+	delete o;+}++// ::btContactSolverInfoData+//constructor: btContactSolverInfoData  ( ::btContactSolverInfoData::* )(  ) +void* btContactSolverInfoData_new() {+	::btContactSolverInfoData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btContactSolverInfoData),16);+	o = new (mem)::btContactSolverInfoData();+	return (void*)o;+}+void btContactSolverInfoData_free(void *c) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	delete o;+}+//attribute: ::btScalar btContactSolverInfoData->m_tau+void btContactSolverInfoData_m_tau_set(void *c,float a) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	o->m_tau = a;+}+float btContactSolverInfoData_m_tau_get(void *c) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	return (float)(o->m_tau);+}++//attribute: ::btScalar btContactSolverInfoData->m_damping+void btContactSolverInfoData_m_damping_set(void *c,float a) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	o->m_damping = a;+}+float btContactSolverInfoData_m_damping_get(void *c) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	return (float)(o->m_damping);+}++//attribute: ::btScalar btContactSolverInfoData->m_friction+void btContactSolverInfoData_m_friction_set(void *c,float a) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	o->m_friction = a;+}+float btContactSolverInfoData_m_friction_get(void *c) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	return (float)(o->m_friction);+}++//attribute: ::btScalar btContactSolverInfoData->m_timeStep+void btContactSolverInfoData_m_timeStep_set(void *c,float a) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	o->m_timeStep = a;+}+float btContactSolverInfoData_m_timeStep_get(void *c) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	return (float)(o->m_timeStep);+}++//attribute: ::btScalar btContactSolverInfoData->m_restitution+void btContactSolverInfoData_m_restitution_set(void *c,float a) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	o->m_restitution = a;+}+float btContactSolverInfoData_m_restitution_get(void *c) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	return (float)(o->m_restitution);+}++//attribute: int btContactSolverInfoData->m_numIterations+void btContactSolverInfoData_m_numIterations_set(void *c,int a) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	o->m_numIterations = a;+}+int btContactSolverInfoData_m_numIterations_get(void *c) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	return (int)(o->m_numIterations);+}++//attribute: ::btScalar btContactSolverInfoData->m_maxErrorReduction+void btContactSolverInfoData_m_maxErrorReduction_set(void *c,float a) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	o->m_maxErrorReduction = a;+}+float btContactSolverInfoData_m_maxErrorReduction_get(void *c) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	return (float)(o->m_maxErrorReduction);+}++//attribute: ::btScalar btContactSolverInfoData->m_sor+void btContactSolverInfoData_m_sor_set(void *c,float a) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	o->m_sor = a;+}+float btContactSolverInfoData_m_sor_get(void *c) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	return (float)(o->m_sor);+}++//attribute: ::btScalar btContactSolverInfoData->m_erp+void btContactSolverInfoData_m_erp_set(void *c,float a) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	o->m_erp = a;+}+float btContactSolverInfoData_m_erp_get(void *c) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	return (float)(o->m_erp);+}++//attribute: ::btScalar btContactSolverInfoData->m_erp2+void btContactSolverInfoData_m_erp2_set(void *c,float a) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	o->m_erp2 = a;+}+float btContactSolverInfoData_m_erp2_get(void *c) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	return (float)(o->m_erp2);+}++//attribute: ::btScalar btContactSolverInfoData->m_globalCfm+void btContactSolverInfoData_m_globalCfm_set(void *c,float a) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	o->m_globalCfm = a;+}+float btContactSolverInfoData_m_globalCfm_get(void *c) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	return (float)(o->m_globalCfm);+}++//attribute: int btContactSolverInfoData->m_splitImpulse+void btContactSolverInfoData_m_splitImpulse_set(void *c,int a) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	o->m_splitImpulse = a;+}+int btContactSolverInfoData_m_splitImpulse_get(void *c) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	return (int)(o->m_splitImpulse);+}++//attribute: ::btScalar btContactSolverInfoData->m_splitImpulsePenetrationThreshold+void btContactSolverInfoData_m_splitImpulsePenetrationThreshold_set(void *c,float a) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	o->m_splitImpulsePenetrationThreshold = a;+}+float btContactSolverInfoData_m_splitImpulsePenetrationThreshold_get(void *c) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	return (float)(o->m_splitImpulsePenetrationThreshold);+}++//attribute: ::btScalar btContactSolverInfoData->m_linearSlop+void btContactSolverInfoData_m_linearSlop_set(void *c,float a) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	o->m_linearSlop = a;+}+float btContactSolverInfoData_m_linearSlop_get(void *c) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	return (float)(o->m_linearSlop);+}++//attribute: ::btScalar btContactSolverInfoData->m_warmstartingFactor+void btContactSolverInfoData_m_warmstartingFactor_set(void *c,float a) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	o->m_warmstartingFactor = a;+}+float btContactSolverInfoData_m_warmstartingFactor_get(void *c) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	return (float)(o->m_warmstartingFactor);+}++//attribute: int btContactSolverInfoData->m_solverMode+void btContactSolverInfoData_m_solverMode_set(void *c,int a) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	o->m_solverMode = a;+}+int btContactSolverInfoData_m_solverMode_get(void *c) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	return (int)(o->m_solverMode);+}++//attribute: int btContactSolverInfoData->m_restingContactRestitutionThreshold+void btContactSolverInfoData_m_restingContactRestitutionThreshold_set(void *c,int a) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	o->m_restingContactRestitutionThreshold = a;+}+int btContactSolverInfoData_m_restingContactRestitutionThreshold_get(void *c) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	return (int)(o->m_restingContactRestitutionThreshold);+}++//attribute: int btContactSolverInfoData->m_minimumSolverBatchSize+void btContactSolverInfoData_m_minimumSolverBatchSize_set(void *c,int a) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	o->m_minimumSolverBatchSize = a;+}+int btContactSolverInfoData_m_minimumSolverBatchSize_get(void *c) {+	::btContactSolverInfoData *o = (::btContactSolverInfoData*)c;+	return (int)(o->m_minimumSolverBatchSize);+}+++// ::btGeneric6DofConstraint+//constructor: btGeneric6DofConstraint  ( ::btGeneric6DofConstraint::* )( ::btRigidBody &,::btRigidBody &,::btTransform const &,::btTransform const &,bool ) +void* btGeneric6DofConstraint_new0(void* p0,void* p1,float* p2,float* p3,int p4) {+	::btGeneric6DofConstraint *o = 0;+	 void *mem = 0;+	::btRigidBody & tp0 = *(::btRigidBody *)p0;+	::btRigidBody & tp1 = *(::btRigidBody *)p1;+	btMatrix3x3 mtp2(p2[0],p2[1],p2[2],p2[3],p2[4],p2[5],p2[6],p2[7],p2[8]);+	btVector3 vtp2(p2[9],p2[10],p2[11]);+	btTransform tp2(mtp2,vtp2);+	btMatrix3x3 mtp3(p3[0],p3[1],p3[2],p3[3],p3[4],p3[5],p3[6],p3[7],p3[8]);+	btVector3 vtp3(p3[9],p3[10],p3[11]);+	btTransform tp3(mtp3,vtp3);+	mem = btAlignedAlloc(sizeof(::btGeneric6DofConstraint),16);+	o = new (mem)::btGeneric6DofConstraint(tp0,tp1,tp2,tp3,p4);+	p2[0]=tp2.getBasis().getRow(0).m_floats[0];p2[1]=tp2.getBasis().getRow(0).m_floats[1];p2[2]=tp2.getBasis().getRow(0).m_floats[2];p2[3]=tp2.getBasis().getRow(1).m_floats[0];p2[4]=tp2.getBasis().getRow(1).m_floats[1];p2[5]=tp2.getBasis().getRow(1).m_floats[2];p2[6]=tp2.getBasis().getRow(2).m_floats[0];p2[7]=tp2.getBasis().getRow(2).m_floats[1];p2[8]=tp2.getBasis().getRow(2).m_floats[2];+	p2[9]=tp2.getOrigin().m_floats[0];p2[10]=tp2.getOrigin().m_floats[1];p2[11]=tp2.getOrigin().m_floats[2];+	p3[0]=tp3.getBasis().getRow(0).m_floats[0];p3[1]=tp3.getBasis().getRow(0).m_floats[1];p3[2]=tp3.getBasis().getRow(0).m_floats[2];p3[3]=tp3.getBasis().getRow(1).m_floats[0];p3[4]=tp3.getBasis().getRow(1).m_floats[1];p3[5]=tp3.getBasis().getRow(1).m_floats[2];p3[6]=tp3.getBasis().getRow(2).m_floats[0];p3[7]=tp3.getBasis().getRow(2).m_floats[1];p3[8]=tp3.getBasis().getRow(2).m_floats[2];+	p3[9]=tp3.getOrigin().m_floats[0];p3[10]=tp3.getOrigin().m_floats[1];p3[11]=tp3.getOrigin().m_floats[2];+	return (void*)o;+}+//constructor: btGeneric6DofConstraint  ( ::btGeneric6DofConstraint::* )( ::btRigidBody &,::btTransform const &,bool ) +void* btGeneric6DofConstraint_new1(void* p0,float* p1,int p2) {+	::btGeneric6DofConstraint *o = 0;+	 void *mem = 0;+	::btRigidBody & tp0 = *(::btRigidBody *)p0;+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	mem = btAlignedAlloc(sizeof(::btGeneric6DofConstraint),16);+	o = new (mem)::btGeneric6DofConstraint(tp0,tp1,p2);+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+	return (void*)o;+}+void btGeneric6DofConstraint_free(void *c) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	delete o;+}+//method: buildJacobian void ( ::btGeneric6DofConstraint::* )(  ) +void btGeneric6DofConstraint_buildJacobian(void *c) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	o->buildJacobian();+}+//method: setParam void ( ::btGeneric6DofConstraint::* )( int,::btScalar,int ) +void btGeneric6DofConstraint_setParam(void *c,int p0,float p1,int p2) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	o->setParam(p0,p1,p2);+}+//method: getFrameOffsetA ::btTransform const & ( ::btGeneric6DofConstraint::* )(  ) const+void btGeneric6DofConstraint_getFrameOffsetA(void *c,float* ret) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getFrameOffsetA();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: getFrameOffsetA ::btTransform const & ( ::btGeneric6DofConstraint::* )(  ) const+void btGeneric6DofConstraint_getFrameOffsetA0(void *c,float* ret) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getFrameOffsetA();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: getFrameOffsetA ::btTransform & ( ::btGeneric6DofConstraint::* )(  ) +void btGeneric6DofConstraint_getFrameOffsetA1(void *c,float* ret) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getFrameOffsetA();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: getRelativePivotPosition ::btScalar ( ::btGeneric6DofConstraint::* )( int ) const+float btGeneric6DofConstraint_getRelativePivotPosition(void *c,int p0) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	float retVal = (float)o->getRelativePivotPosition(p0);+	return retVal;+}+//method: getFrameOffsetB ::btTransform const & ( ::btGeneric6DofConstraint::* )(  ) const+void btGeneric6DofConstraint_getFrameOffsetB(void *c,float* ret) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getFrameOffsetB();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: getFrameOffsetB ::btTransform const & ( ::btGeneric6DofConstraint::* )(  ) const+void btGeneric6DofConstraint_getFrameOffsetB0(void *c,float* ret) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getFrameOffsetB();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: getFrameOffsetB ::btTransform & ( ::btGeneric6DofConstraint::* )(  ) +void btGeneric6DofConstraint_getFrameOffsetB1(void *c,float* ret) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getFrameOffsetB();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: getInfo2NonVirtual void ( ::btGeneric6DofConstraint::* )( ::btTypedConstraint::btConstraintInfo2 *,::btTransform const &,::btTransform const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void btGeneric6DofConstraint_getInfo2NonVirtual(void *c,void* p0,float* p1,float* p2,float* p3,float* p4,float* p5,float* p6) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	::btTypedConstraint::btConstraintInfo2 * tp0 = (::btTypedConstraint::btConstraintInfo2 *)p0;+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	btMatrix3x3 mtp2(p2[0],p2[1],p2[2],p2[3],p2[4],p2[5],p2[6],p2[7],p2[8]);+	btVector3 vtp2(p2[9],p2[10],p2[11]);+	btTransform tp2(mtp2,vtp2);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	btVector3 tp4(p4[0],p4[1],p4[2]);+	btVector3 tp5(p5[0],p5[1],p5[2]);+	btVector3 tp6(p6[0],p6[1],p6[2]);+	o->getInfo2NonVirtual(tp0,tp1,tp2,tp3,tp4,tp5,tp6);+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+	p2[0]=tp2.getBasis().getRow(0).m_floats[0];p2[1]=tp2.getBasis().getRow(0).m_floats[1];p2[2]=tp2.getBasis().getRow(0).m_floats[2];p2[3]=tp2.getBasis().getRow(1).m_floats[0];p2[4]=tp2.getBasis().getRow(1).m_floats[1];p2[5]=tp2.getBasis().getRow(1).m_floats[2];p2[6]=tp2.getBasis().getRow(2).m_floats[0];p2[7]=tp2.getBasis().getRow(2).m_floats[1];p2[8]=tp2.getBasis().getRow(2).m_floats[2];+	p2[9]=tp2.getOrigin().m_floats[0];p2[10]=tp2.getOrigin().m_floats[1];p2[11]=tp2.getOrigin().m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+	p4[0]=tp4.m_floats[0];p4[1]=tp4.m_floats[1];p4[2]=tp4.m_floats[2];+	p5[0]=tp5.m_floats[0];p5[1]=tp5.m_floats[1];p5[2]=tp5.m_floats[2];+	p6[0]=tp6.m_floats[0];p6[1]=tp6.m_floats[1];p6[2]=tp6.m_floats[2];+}+//method: getCalculatedTransformA ::btTransform const & ( ::btGeneric6DofConstraint::* )(  ) const+void btGeneric6DofConstraint_getCalculatedTransformA(void *c,float* ret) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getCalculatedTransformA();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: getParam ::btScalar ( ::btGeneric6DofConstraint::* )( int,int ) const+float btGeneric6DofConstraint_getParam(void *c,int p0,int p1) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	float retVal = (float)o->getParam(p0,p1);+	return retVal;+}+//method: getInfo1 void ( ::btGeneric6DofConstraint::* )( ::btTypedConstraint::btConstraintInfo1 * ) +void btGeneric6DofConstraint_getInfo1(void *c,void* p0) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	::btTypedConstraint::btConstraintInfo1 * tp0 = (::btTypedConstraint::btConstraintInfo1 *)p0;+	o->getInfo1(tp0);+}+//method: getInfo2 void ( ::btGeneric6DofConstraint::* )( ::btTypedConstraint::btConstraintInfo2 * ) +void btGeneric6DofConstraint_getInfo2(void *c,void* p0) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	::btTypedConstraint::btConstraintInfo2 * tp0 = (::btTypedConstraint::btConstraintInfo2 *)p0;+	o->getInfo2(tp0);+}+//method: calcAnchorPos void ( ::btGeneric6DofConstraint::* )(  ) +void btGeneric6DofConstraint_calcAnchorPos(void *c) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	o->calcAnchorPos();+}+//method: getAngularLowerLimit void ( ::btGeneric6DofConstraint::* )( ::btVector3 & ) +void btGeneric6DofConstraint_getAngularLowerLimit(void *c,float* p0) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->getAngularLowerLimit(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: calculateSerializeBufferSize int ( ::btGeneric6DofConstraint::* )(  ) const+int btGeneric6DofConstraint_calculateSerializeBufferSize(void *c) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	int retVal = (int)o->calculateSerializeBufferSize();+	return retVal;+}+//method: getAxis ::btVector3 ( ::btGeneric6DofConstraint::* )( int ) const+void btGeneric6DofConstraint_getAxis(void *c,int p0,float* ret) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getAxis(p0);+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getLinearUpperLimit void ( ::btGeneric6DofConstraint::* )( ::btVector3 & ) +void btGeneric6DofConstraint_getLinearUpperLimit(void *c,float* p0) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->getLinearUpperLimit(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: setUseFrameOffset void ( ::btGeneric6DofConstraint::* )( bool ) +void btGeneric6DofConstraint_setUseFrameOffset(void *c,int p0) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	o->setUseFrameOffset(p0);+}+//method: getRotationalLimitMotor ::btRotationalLimitMotor * ( ::btGeneric6DofConstraint::* )( int ) +void* btGeneric6DofConstraint_getRotationalLimitMotor(void *c,int p0) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	void* retVal = (void*) o->getRotationalLimitMotor(p0);+	return retVal;+}+//method: getInfo1NonVirtual void ( ::btGeneric6DofConstraint::* )( ::btTypedConstraint::btConstraintInfo1 * ) +void btGeneric6DofConstraint_getInfo1NonVirtual(void *c,void* p0) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	::btTypedConstraint::btConstraintInfo1 * tp0 = (::btTypedConstraint::btConstraintInfo1 *)p0;+	o->getInfo1NonVirtual(tp0);+}+//not supported method: serialize char const * ( ::btGeneric6DofConstraint::* )( void *,::btSerializer * ) const+//method: setLinearLowerLimit void ( ::btGeneric6DofConstraint::* )( ::btVector3 const & ) +void btGeneric6DofConstraint_setLinearLowerLimit(void *c,float* p0) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setLinearLowerLimit(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: getLinearLowerLimit void ( ::btGeneric6DofConstraint::* )( ::btVector3 & ) +void btGeneric6DofConstraint_getLinearLowerLimit(void *c,float* p0) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->getLinearLowerLimit(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: isLimited bool ( ::btGeneric6DofConstraint::* )( int ) +int btGeneric6DofConstraint_isLimited(void *c,int p0) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	int retVal = (int)o->isLimited(p0);+	return retVal;+}+//method: getUseFrameOffset bool ( ::btGeneric6DofConstraint::* )(  ) +int btGeneric6DofConstraint_getUseFrameOffset(void *c) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	int retVal = (int)o->getUseFrameOffset();+	return retVal;+}+//method: getCalculatedTransformB ::btTransform const & ( ::btGeneric6DofConstraint::* )(  ) const+void btGeneric6DofConstraint_getCalculatedTransformB(void *c,float* ret) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getCalculatedTransformB();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: calculateTransforms void ( ::btGeneric6DofConstraint::* )( ::btTransform const &,::btTransform const & ) +void btGeneric6DofConstraint_calculateTransforms(void *c,float* p0,float* p1) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	o->calculateTransforms(tp0,tp1);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+}+//method: calculateTransforms void ( ::btGeneric6DofConstraint::* )( ::btTransform const &,::btTransform const & ) +void btGeneric6DofConstraint_calculateTransforms0(void *c,float* p0,float* p1) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	o->calculateTransforms(tp0,tp1);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+}+//method: calculateTransforms void ( ::btGeneric6DofConstraint::* )(  ) +void btGeneric6DofConstraint_calculateTransforms1(void *c) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	o->calculateTransforms();+}+//method: get_limit_motor_info2 int ( ::btGeneric6DofConstraint::* )( ::btRotationalLimitMotor *,::btTransform const &,::btTransform const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btTypedConstraint::btConstraintInfo2 *,int,::btVector3 &,int,int ) +int btGeneric6DofConstraint_get_limit_motor_info2(void *c,void* p0,float* p1,float* p2,float* p3,float* p4,float* p5,float* p6,void* p7,int p8,float* p9,int p10,int p11) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	::btRotationalLimitMotor * tp0 = (::btRotationalLimitMotor *)p0;+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	btMatrix3x3 mtp2(p2[0],p2[1],p2[2],p2[3],p2[4],p2[5],p2[6],p2[7],p2[8]);+	btVector3 vtp2(p2[9],p2[10],p2[11]);+	btTransform tp2(mtp2,vtp2);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	btVector3 tp4(p4[0],p4[1],p4[2]);+	btVector3 tp5(p5[0],p5[1],p5[2]);+	btVector3 tp6(p6[0],p6[1],p6[2]);+	::btTypedConstraint::btConstraintInfo2 * tp7 = (::btTypedConstraint::btConstraintInfo2 *)p7;+	btVector3 tp9(p9[0],p9[1],p9[2]);+	int retVal = (int)o->get_limit_motor_info2(tp0,tp1,tp2,tp3,tp4,tp5,tp6,tp7,p8,tp9,p10,p11);+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+	p2[0]=tp2.getBasis().getRow(0).m_floats[0];p2[1]=tp2.getBasis().getRow(0).m_floats[1];p2[2]=tp2.getBasis().getRow(0).m_floats[2];p2[3]=tp2.getBasis().getRow(1).m_floats[0];p2[4]=tp2.getBasis().getRow(1).m_floats[1];p2[5]=tp2.getBasis().getRow(1).m_floats[2];p2[6]=tp2.getBasis().getRow(2).m_floats[0];p2[7]=tp2.getBasis().getRow(2).m_floats[1];p2[8]=tp2.getBasis().getRow(2).m_floats[2];+	p2[9]=tp2.getOrigin().m_floats[0];p2[10]=tp2.getOrigin().m_floats[1];p2[11]=tp2.getOrigin().m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+	p4[0]=tp4.m_floats[0];p4[1]=tp4.m_floats[1];p4[2]=tp4.m_floats[2];+	p5[0]=tp5.m_floats[0];p5[1]=tp5.m_floats[1];p5[2]=tp5.m_floats[2];+	p6[0]=tp6.m_floats[0];p6[1]=tp6.m_floats[1];p6[2]=tp6.m_floats[2];+	p9[0]=tp9.m_floats[0];p9[1]=tp9.m_floats[1];p9[2]=tp9.m_floats[2];+	return retVal;+}+//method: setLimit void ( ::btGeneric6DofConstraint::* )( int,::btScalar,::btScalar ) +void btGeneric6DofConstraint_setLimit(void *c,int p0,float p1,float p2) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	o->setLimit(p0,p1,p2);+}+//method: getTranslationalLimitMotor ::btTranslationalLimitMotor * ( ::btGeneric6DofConstraint::* )(  ) +void* btGeneric6DofConstraint_getTranslationalLimitMotor(void *c) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	void* retVal = (void*) o->getTranslationalLimitMotor();+	return retVal;+}+//method: getAngle ::btScalar ( ::btGeneric6DofConstraint::* )( int ) const+float btGeneric6DofConstraint_getAngle(void *c,int p0) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	float retVal = (float)o->getAngle(p0);+	return retVal;+}+//method: updateRHS void ( ::btGeneric6DofConstraint::* )( ::btScalar ) +void btGeneric6DofConstraint_updateRHS(void *c,float p0) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	o->updateRHS(p0);+}+//method: getAngularUpperLimit void ( ::btGeneric6DofConstraint::* )( ::btVector3 & ) +void btGeneric6DofConstraint_getAngularUpperLimit(void *c,float* p0) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->getAngularUpperLimit(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: setAngularLowerLimit void ( ::btGeneric6DofConstraint::* )( ::btVector3 const & ) +void btGeneric6DofConstraint_setAngularLowerLimit(void *c,float* p0) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setAngularLowerLimit(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: setFrames void ( ::btGeneric6DofConstraint::* )( ::btTransform const &,::btTransform const & ) +void btGeneric6DofConstraint_setFrames(void *c,float* p0,float* p1) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	o->setFrames(tp0,tp1);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+}+//method: setLinearUpperLimit void ( ::btGeneric6DofConstraint::* )( ::btVector3 const & ) +void btGeneric6DofConstraint_setLinearUpperLimit(void *c,float* p0) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setLinearUpperLimit(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: setAngularUpperLimit void ( ::btGeneric6DofConstraint::* )( ::btVector3 const & ) +void btGeneric6DofConstraint_setAngularUpperLimit(void *c,float* p0) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setAngularUpperLimit(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: setAxis void ( ::btGeneric6DofConstraint::* )( ::btVector3 const &,::btVector3 const & ) +void btGeneric6DofConstraint_setAxis(void *c,float* p0,float* p1) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->setAxis(tp0,tp1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: testAngularLimitMotor bool ( ::btGeneric6DofConstraint::* )( int ) +int btGeneric6DofConstraint_testAngularLimitMotor(void *c,int p0) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	int retVal = (int)o->testAngularLimitMotor(p0);+	return retVal;+}+//attribute: bool btGeneric6DofConstraint->m_useSolveConstraintObsolete+void btGeneric6DofConstraint_m_useSolveConstraintObsolete_set(void *c,int a) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	o->m_useSolveConstraintObsolete = a;+}+int btGeneric6DofConstraint_m_useSolveConstraintObsolete_get(void *c) {+	::btGeneric6DofConstraint *o = (::btGeneric6DofConstraint*)c;+	return (int)(o->m_useSolveConstraintObsolete);+}+++// ::btGeneric6DofConstraintData+//constructor: btGeneric6DofConstraintData  ( ::btGeneric6DofConstraintData::* )(  ) +void* btGeneric6DofConstraintData_new() {+	::btGeneric6DofConstraintData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btGeneric6DofConstraintData),16);+	o = new (mem)::btGeneric6DofConstraintData();+	return (void*)o;+}+void btGeneric6DofConstraintData_free(void *c) {+	::btGeneric6DofConstraintData *o = (::btGeneric6DofConstraintData*)c;+	delete o;+}+//attribute: ::btTypedConstraintData btGeneric6DofConstraintData->m_typeConstraintData+// attribute not supported: //attribute: ::btTypedConstraintData btGeneric6DofConstraintData->m_typeConstraintData+//attribute: ::btTransformFloatData btGeneric6DofConstraintData->m_rbAFrame+// attribute not supported: //attribute: ::btTransformFloatData btGeneric6DofConstraintData->m_rbAFrame+//attribute: ::btTransformFloatData btGeneric6DofConstraintData->m_rbBFrame+// attribute not supported: //attribute: ::btTransformFloatData btGeneric6DofConstraintData->m_rbBFrame+//attribute: ::btVector3FloatData btGeneric6DofConstraintData->m_linearUpperLimit+// attribute not supported: //attribute: ::btVector3FloatData btGeneric6DofConstraintData->m_linearUpperLimit+//attribute: ::btVector3FloatData btGeneric6DofConstraintData->m_linearLowerLimit+// attribute not supported: //attribute: ::btVector3FloatData btGeneric6DofConstraintData->m_linearLowerLimit+//attribute: ::btVector3FloatData btGeneric6DofConstraintData->m_angularUpperLimit+// attribute not supported: //attribute: ::btVector3FloatData btGeneric6DofConstraintData->m_angularUpperLimit+//attribute: ::btVector3FloatData btGeneric6DofConstraintData->m_angularLowerLimit+// attribute not supported: //attribute: ::btVector3FloatData btGeneric6DofConstraintData->m_angularLowerLimit+//attribute: int btGeneric6DofConstraintData->m_useLinearReferenceFrameA+void btGeneric6DofConstraintData_m_useLinearReferenceFrameA_set(void *c,int a) {+	::btGeneric6DofConstraintData *o = (::btGeneric6DofConstraintData*)c;+	o->m_useLinearReferenceFrameA = a;+}+int btGeneric6DofConstraintData_m_useLinearReferenceFrameA_get(void *c) {+	::btGeneric6DofConstraintData *o = (::btGeneric6DofConstraintData*)c;+	return (int)(o->m_useLinearReferenceFrameA);+}++//attribute: int btGeneric6DofConstraintData->m_useOffsetForConstraintFrame+void btGeneric6DofConstraintData_m_useOffsetForConstraintFrame_set(void *c,int a) {+	::btGeneric6DofConstraintData *o = (::btGeneric6DofConstraintData*)c;+	o->m_useOffsetForConstraintFrame = a;+}+int btGeneric6DofConstraintData_m_useOffsetForConstraintFrame_get(void *c) {+	::btGeneric6DofConstraintData *o = (::btGeneric6DofConstraintData*)c;+	return (int)(o->m_useOffsetForConstraintFrame);+}+++// ::btGeneric6DofSpringConstraint+//constructor: btGeneric6DofSpringConstraint  ( ::btGeneric6DofSpringConstraint::* )( ::btRigidBody &,::btRigidBody &,::btTransform const &,::btTransform const &,bool ) +void* btGeneric6DofSpringConstraint_new(void* p0,void* p1,float* p2,float* p3,int p4) {+	::btGeneric6DofSpringConstraint *o = 0;+	 void *mem = 0;+	::btRigidBody & tp0 = *(::btRigidBody *)p0;+	::btRigidBody & tp1 = *(::btRigidBody *)p1;+	btMatrix3x3 mtp2(p2[0],p2[1],p2[2],p2[3],p2[4],p2[5],p2[6],p2[7],p2[8]);+	btVector3 vtp2(p2[9],p2[10],p2[11]);+	btTransform tp2(mtp2,vtp2);+	btMatrix3x3 mtp3(p3[0],p3[1],p3[2],p3[3],p3[4],p3[5],p3[6],p3[7],p3[8]);+	btVector3 vtp3(p3[9],p3[10],p3[11]);+	btTransform tp3(mtp3,vtp3);+	mem = btAlignedAlloc(sizeof(::btGeneric6DofSpringConstraint),16);+	o = new (mem)::btGeneric6DofSpringConstraint(tp0,tp1,tp2,tp3,p4);+	p2[0]=tp2.getBasis().getRow(0).m_floats[0];p2[1]=tp2.getBasis().getRow(0).m_floats[1];p2[2]=tp2.getBasis().getRow(0).m_floats[2];p2[3]=tp2.getBasis().getRow(1).m_floats[0];p2[4]=tp2.getBasis().getRow(1).m_floats[1];p2[5]=tp2.getBasis().getRow(1).m_floats[2];p2[6]=tp2.getBasis().getRow(2).m_floats[0];p2[7]=tp2.getBasis().getRow(2).m_floats[1];p2[8]=tp2.getBasis().getRow(2).m_floats[2];+	p2[9]=tp2.getOrigin().m_floats[0];p2[10]=tp2.getOrigin().m_floats[1];p2[11]=tp2.getOrigin().m_floats[2];+	p3[0]=tp3.getBasis().getRow(0).m_floats[0];p3[1]=tp3.getBasis().getRow(0).m_floats[1];p3[2]=tp3.getBasis().getRow(0).m_floats[2];p3[3]=tp3.getBasis().getRow(1).m_floats[0];p3[4]=tp3.getBasis().getRow(1).m_floats[1];p3[5]=tp3.getBasis().getRow(1).m_floats[2];p3[6]=tp3.getBasis().getRow(2).m_floats[0];p3[7]=tp3.getBasis().getRow(2).m_floats[1];p3[8]=tp3.getBasis().getRow(2).m_floats[2];+	p3[9]=tp3.getOrigin().m_floats[0];p3[10]=tp3.getOrigin().m_floats[1];p3[11]=tp3.getOrigin().m_floats[2];+	return (void*)o;+}+void btGeneric6DofSpringConstraint_free(void *c) {+	::btGeneric6DofSpringConstraint *o = (::btGeneric6DofSpringConstraint*)c;+	delete o;+}+//method: calculateSerializeBufferSize int ( ::btGeneric6DofSpringConstraint::* )(  ) const+int btGeneric6DofSpringConstraint_calculateSerializeBufferSize(void *c) {+	::btGeneric6DofSpringConstraint *o = (::btGeneric6DofSpringConstraint*)c;+	int retVal = (int)o->calculateSerializeBufferSize();+	return retVal;+}+//method: setEquilibriumPoint void ( ::btGeneric6DofSpringConstraint::* )(  ) +void btGeneric6DofSpringConstraint_setEquilibriumPoint(void *c) {+	::btGeneric6DofSpringConstraint *o = (::btGeneric6DofSpringConstraint*)c;+	o->setEquilibriumPoint();+}+//method: setEquilibriumPoint void ( ::btGeneric6DofSpringConstraint::* )(  ) +void btGeneric6DofSpringConstraint_setEquilibriumPoint0(void *c) {+	::btGeneric6DofSpringConstraint *o = (::btGeneric6DofSpringConstraint*)c;+	o->setEquilibriumPoint();+}+//method: setEquilibriumPoint void ( ::btGeneric6DofSpringConstraint::* )( int ) +void btGeneric6DofSpringConstraint_setEquilibriumPoint1(void *c,int p0) {+	::btGeneric6DofSpringConstraint *o = (::btGeneric6DofSpringConstraint*)c;+	o->setEquilibriumPoint(p0);+}+//method: setEquilibriumPoint void ( ::btGeneric6DofSpringConstraint::* )( int,::btScalar ) +void btGeneric6DofSpringConstraint_setEquilibriumPoint2(void *c,int p0,float p1) {+	::btGeneric6DofSpringConstraint *o = (::btGeneric6DofSpringConstraint*)c;+	o->setEquilibriumPoint(p0,p1);+}+//not supported method: serialize char const * ( ::btGeneric6DofSpringConstraint::* )( void *,::btSerializer * ) const+//method: enableSpring void ( ::btGeneric6DofSpringConstraint::* )( int,bool ) +void btGeneric6DofSpringConstraint_enableSpring(void *c,int p0,int p1) {+	::btGeneric6DofSpringConstraint *o = (::btGeneric6DofSpringConstraint*)c;+	o->enableSpring(p0,p1);+}+//method: setStiffness void ( ::btGeneric6DofSpringConstraint::* )( int,::btScalar ) +void btGeneric6DofSpringConstraint_setStiffness(void *c,int p0,float p1) {+	::btGeneric6DofSpringConstraint *o = (::btGeneric6DofSpringConstraint*)c;+	o->setStiffness(p0,p1);+}+//method: setDamping void ( ::btGeneric6DofSpringConstraint::* )( int,::btScalar ) +void btGeneric6DofSpringConstraint_setDamping(void *c,int p0,float p1) {+	::btGeneric6DofSpringConstraint *o = (::btGeneric6DofSpringConstraint*)c;+	o->setDamping(p0,p1);+}+//method: getInfo2 void ( ::btGeneric6DofSpringConstraint::* )( ::btTypedConstraint::btConstraintInfo2 * ) +void btGeneric6DofSpringConstraint_getInfo2(void *c,void* p0) {+	::btGeneric6DofSpringConstraint *o = (::btGeneric6DofSpringConstraint*)c;+	::btTypedConstraint::btConstraintInfo2 * tp0 = (::btTypedConstraint::btConstraintInfo2 *)p0;+	o->getInfo2(tp0);+}+//method: setAxis void ( ::btGeneric6DofSpringConstraint::* )( ::btVector3 const &,::btVector3 const & ) +void btGeneric6DofSpringConstraint_setAxis(void *c,float* p0,float* p1) {+	::btGeneric6DofSpringConstraint *o = (::btGeneric6DofSpringConstraint*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->setAxis(tp0,tp1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}++// ::btGeneric6DofSpringConstraintData+//constructor: btGeneric6DofSpringConstraintData  ( ::btGeneric6DofSpringConstraintData::* )(  ) +void* btGeneric6DofSpringConstraintData_new() {+	::btGeneric6DofSpringConstraintData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btGeneric6DofSpringConstraintData),16);+	o = new (mem)::btGeneric6DofSpringConstraintData();+	return (void*)o;+}+void btGeneric6DofSpringConstraintData_free(void *c) {+	::btGeneric6DofSpringConstraintData *o = (::btGeneric6DofSpringConstraintData*)c;+	delete o;+}+//attribute: ::btGeneric6DofConstraintData btGeneric6DofSpringConstraintData->m_6dofData+// attribute not supported: //attribute: ::btGeneric6DofConstraintData btGeneric6DofSpringConstraintData->m_6dofData+//attribute: int[6] btGeneric6DofSpringConstraintData->m_springEnabled+// attribute not supported: //attribute: int[6] btGeneric6DofSpringConstraintData->m_springEnabled+//attribute: float[6] btGeneric6DofSpringConstraintData->m_equilibriumPoint+// attribute not supported: //attribute: float[6] btGeneric6DofSpringConstraintData->m_equilibriumPoint+//attribute: float[6] btGeneric6DofSpringConstraintData->m_springStiffness+// attribute not supported: //attribute: float[6] btGeneric6DofSpringConstraintData->m_springStiffness+//attribute: float[6] btGeneric6DofSpringConstraintData->m_springDamping+// attribute not supported: //attribute: float[6] btGeneric6DofSpringConstraintData->m_springDamping++// ::btHinge2Constraint+//constructor: btHinge2Constraint  ( ::btHinge2Constraint::* )( ::btRigidBody &,::btRigidBody &,::btVector3 &,::btVector3 &,::btVector3 & ) +void* btHinge2Constraint_new(void* p0,void* p1,float* p2,float* p3,float* p4) {+	::btHinge2Constraint *o = 0;+	 void *mem = 0;+	::btRigidBody & tp0 = *(::btRigidBody *)p0;+	::btRigidBody & tp1 = *(::btRigidBody *)p1;+	btVector3 tp2(p2[0],p2[1],p2[2]);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	btVector3 tp4(p4[0],p4[1],p4[2]);+	mem = btAlignedAlloc(sizeof(::btHinge2Constraint),16);+	o = new (mem)::btHinge2Constraint(tp0,tp1,tp2,tp3,tp4);+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+	p4[0]=tp4.m_floats[0];p4[1]=tp4.m_floats[1];p4[2]=tp4.m_floats[2];+	return (void*)o;+}+void btHinge2Constraint_free(void *c) {+	::btHinge2Constraint *o = (::btHinge2Constraint*)c;+	delete o;+}+//method: setLowerLimit void ( ::btHinge2Constraint::* )( ::btScalar ) +void btHinge2Constraint_setLowerLimit(void *c,float p0) {+	::btHinge2Constraint *o = (::btHinge2Constraint*)c;+	o->setLowerLimit(p0);+}+//method: getAnchor2 ::btVector3 const & ( ::btHinge2Constraint::* )(  ) +void btHinge2Constraint_getAnchor2(void *c,float* ret) {+	::btHinge2Constraint *o = (::btHinge2Constraint*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getAnchor2();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getAxis1 ::btVector3 const & ( ::btHinge2Constraint::* )(  ) +void btHinge2Constraint_getAxis1(void *c,float* ret) {+	::btHinge2Constraint *o = (::btHinge2Constraint*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getAxis1();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getAnchor ::btVector3 const & ( ::btHinge2Constraint::* )(  ) +void btHinge2Constraint_getAnchor(void *c,float* ret) {+	::btHinge2Constraint *o = (::btHinge2Constraint*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getAnchor();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getAxis2 ::btVector3 const & ( ::btHinge2Constraint::* )(  ) +void btHinge2Constraint_getAxis2(void *c,float* ret) {+	::btHinge2Constraint *o = (::btHinge2Constraint*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getAxis2();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: setUpperLimit void ( ::btHinge2Constraint::* )( ::btScalar ) +void btHinge2Constraint_setUpperLimit(void *c,float p0) {+	::btHinge2Constraint *o = (::btHinge2Constraint*)c;+	o->setUpperLimit(p0);+}+//method: getAngle2 ::btScalar ( ::btHinge2Constraint::* )(  ) +float btHinge2Constraint_getAngle2(void *c) {+	::btHinge2Constraint *o = (::btHinge2Constraint*)c;+	float retVal = (float)o->getAngle2();+	return retVal;+}+//method: getAngle1 ::btScalar ( ::btHinge2Constraint::* )(  ) +float btHinge2Constraint_getAngle1(void *c) {+	::btHinge2Constraint *o = (::btHinge2Constraint*)c;+	float retVal = (float)o->getAngle1();+	return retVal;+}++// ::btHingeConstraint+//constructor: btHingeConstraint  ( ::btHingeConstraint::* )( ::btRigidBody &,::btRigidBody &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,bool ) +void* btHingeConstraint_new0(void* p0,void* p1,float* p2,float* p3,float* p4,float* p5,int p6) {+	::btHingeConstraint *o = 0;+	 void *mem = 0;+	::btRigidBody & tp0 = *(::btRigidBody *)p0;+	::btRigidBody & tp1 = *(::btRigidBody *)p1;+	btVector3 tp2(p2[0],p2[1],p2[2]);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	btVector3 tp4(p4[0],p4[1],p4[2]);+	btVector3 tp5(p5[0],p5[1],p5[2]);+	mem = btAlignedAlloc(sizeof(::btHingeConstraint),16);+	o = new (mem)::btHingeConstraint(tp0,tp1,tp2,tp3,tp4,tp5,p6);+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+	p4[0]=tp4.m_floats[0];p4[1]=tp4.m_floats[1];p4[2]=tp4.m_floats[2];+	p5[0]=tp5.m_floats[0];p5[1]=tp5.m_floats[1];p5[2]=tp5.m_floats[2];+	return (void*)o;+}+//constructor: btHingeConstraint  ( ::btHingeConstraint::* )( ::btRigidBody &,::btVector3 const &,::btVector3 const &,bool ) +void* btHingeConstraint_new1(void* p0,float* p1,float* p2,int p3) {+	::btHingeConstraint *o = 0;+	 void *mem = 0;+	::btRigidBody & tp0 = *(::btRigidBody *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	mem = btAlignedAlloc(sizeof(::btHingeConstraint),16);+	o = new (mem)::btHingeConstraint(tp0,tp1,tp2,p3);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	return (void*)o;+}+//constructor: btHingeConstraint  ( ::btHingeConstraint::* )( ::btRigidBody &,::btRigidBody &,::btTransform const &,::btTransform const &,bool ) +void* btHingeConstraint_new2(void* p0,void* p1,float* p2,float* p3,int p4) {+	::btHingeConstraint *o = 0;+	 void *mem = 0;+	::btRigidBody & tp0 = *(::btRigidBody *)p0;+	::btRigidBody & tp1 = *(::btRigidBody *)p1;+	btMatrix3x3 mtp2(p2[0],p2[1],p2[2],p2[3],p2[4],p2[5],p2[6],p2[7],p2[8]);+	btVector3 vtp2(p2[9],p2[10],p2[11]);+	btTransform tp2(mtp2,vtp2);+	btMatrix3x3 mtp3(p3[0],p3[1],p3[2],p3[3],p3[4],p3[5],p3[6],p3[7],p3[8]);+	btVector3 vtp3(p3[9],p3[10],p3[11]);+	btTransform tp3(mtp3,vtp3);+	mem = btAlignedAlloc(sizeof(::btHingeConstraint),16);+	o = new (mem)::btHingeConstraint(tp0,tp1,tp2,tp3,p4);+	p2[0]=tp2.getBasis().getRow(0).m_floats[0];p2[1]=tp2.getBasis().getRow(0).m_floats[1];p2[2]=tp2.getBasis().getRow(0).m_floats[2];p2[3]=tp2.getBasis().getRow(1).m_floats[0];p2[4]=tp2.getBasis().getRow(1).m_floats[1];p2[5]=tp2.getBasis().getRow(1).m_floats[2];p2[6]=tp2.getBasis().getRow(2).m_floats[0];p2[7]=tp2.getBasis().getRow(2).m_floats[1];p2[8]=tp2.getBasis().getRow(2).m_floats[2];+	p2[9]=tp2.getOrigin().m_floats[0];p2[10]=tp2.getOrigin().m_floats[1];p2[11]=tp2.getOrigin().m_floats[2];+	p3[0]=tp3.getBasis().getRow(0).m_floats[0];p3[1]=tp3.getBasis().getRow(0).m_floats[1];p3[2]=tp3.getBasis().getRow(0).m_floats[2];p3[3]=tp3.getBasis().getRow(1).m_floats[0];p3[4]=tp3.getBasis().getRow(1).m_floats[1];p3[5]=tp3.getBasis().getRow(1).m_floats[2];p3[6]=tp3.getBasis().getRow(2).m_floats[0];p3[7]=tp3.getBasis().getRow(2).m_floats[1];p3[8]=tp3.getBasis().getRow(2).m_floats[2];+	p3[9]=tp3.getOrigin().m_floats[0];p3[10]=tp3.getOrigin().m_floats[1];p3[11]=tp3.getOrigin().m_floats[2];+	return (void*)o;+}+//constructor: btHingeConstraint  ( ::btHingeConstraint::* )( ::btRigidBody &,::btTransform const &,bool ) +void* btHingeConstraint_new3(void* p0,float* p1,int p2) {+	::btHingeConstraint *o = 0;+	 void *mem = 0;+	::btRigidBody & tp0 = *(::btRigidBody *)p0;+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	mem = btAlignedAlloc(sizeof(::btHingeConstraint),16);+	o = new (mem)::btHingeConstraint(tp0,tp1,p2);+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+	return (void*)o;+}+void btHingeConstraint_free(void *c) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	delete o;+}+//method: getRigidBodyB ::btRigidBody const & ( ::btHingeConstraint::* )(  ) const+void* btHingeConstraint_getRigidBodyB(void *c) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	void* retVal = (void*) &(o->getRigidBodyB());+	return retVal;+}+//method: getRigidBodyB ::btRigidBody const & ( ::btHingeConstraint::* )(  ) const+void* btHingeConstraint_getRigidBodyB0(void *c) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	void* retVal = (void*) &(o->getRigidBodyB());+	return retVal;+}+//method: getRigidBodyB ::btRigidBody & ( ::btHingeConstraint::* )(  ) +void* btHingeConstraint_getRigidBodyB1(void *c) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	void* retVal = (void*) &(o->getRigidBodyB());+	return retVal;+}+//method: getInfo2NonVirtual void ( ::btHingeConstraint::* )( ::btTypedConstraint::btConstraintInfo2 *,::btTransform const &,::btTransform const &,::btVector3 const &,::btVector3 const & ) +void btHingeConstraint_getInfo2NonVirtual(void *c,void* p0,float* p1,float* p2,float* p3,float* p4) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	::btTypedConstraint::btConstraintInfo2 * tp0 = (::btTypedConstraint::btConstraintInfo2 *)p0;+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	btMatrix3x3 mtp2(p2[0],p2[1],p2[2],p2[3],p2[4],p2[5],p2[6],p2[7],p2[8]);+	btVector3 vtp2(p2[9],p2[10],p2[11]);+	btTransform tp2(mtp2,vtp2);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	btVector3 tp4(p4[0],p4[1],p4[2]);+	o->getInfo2NonVirtual(tp0,tp1,tp2,tp3,tp4);+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+	p2[0]=tp2.getBasis().getRow(0).m_floats[0];p2[1]=tp2.getBasis().getRow(0).m_floats[1];p2[2]=tp2.getBasis().getRow(0).m_floats[2];p2[3]=tp2.getBasis().getRow(1).m_floats[0];p2[4]=tp2.getBasis().getRow(1).m_floats[1];p2[5]=tp2.getBasis().getRow(1).m_floats[2];p2[6]=tp2.getBasis().getRow(2).m_floats[0];p2[7]=tp2.getBasis().getRow(2).m_floats[1];p2[8]=tp2.getBasis().getRow(2).m_floats[2];+	p2[9]=tp2.getOrigin().m_floats[0];p2[10]=tp2.getOrigin().m_floats[1];p2[11]=tp2.getOrigin().m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+	p4[0]=tp4.m_floats[0];p4[1]=tp4.m_floats[1];p4[2]=tp4.m_floats[2];+}+//method: getRigidBodyA ::btRigidBody const & ( ::btHingeConstraint::* )(  ) const+void* btHingeConstraint_getRigidBodyA(void *c) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	void* retVal = (void*) &(o->getRigidBodyA());+	return retVal;+}+//method: getRigidBodyA ::btRigidBody const & ( ::btHingeConstraint::* )(  ) const+void* btHingeConstraint_getRigidBodyA0(void *c) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	void* retVal = (void*) &(o->getRigidBodyA());+	return retVal;+}+//method: getRigidBodyA ::btRigidBody & ( ::btHingeConstraint::* )(  ) +void* btHingeConstraint_getRigidBodyA1(void *c) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	void* retVal = (void*) &(o->getRigidBodyA());+	return retVal;+}+//method: getMotorTargetVelosity ::btScalar ( ::btHingeConstraint::* )(  ) +float btHingeConstraint_getMotorTargetVelosity(void *c) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	float retVal = (float)o->getMotorTargetVelosity();+	return retVal;+}+//method: getFrameOffsetA ::btTransform & ( ::btHingeConstraint::* )(  ) +void btHingeConstraint_getFrameOffsetA(void *c,float* ret) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getFrameOffsetA();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: getFrameOffsetB ::btTransform & ( ::btHingeConstraint::* )(  ) +void btHingeConstraint_getFrameOffsetB(void *c,float* ret) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getFrameOffsetB();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: buildJacobian void ( ::btHingeConstraint::* )(  ) +void btHingeConstraint_buildJacobian(void *c) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	o->buildJacobian();+}+//method: setMaxMotorImpulse void ( ::btHingeConstraint::* )( ::btScalar ) +void btHingeConstraint_setMaxMotorImpulse(void *c,float p0) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	o->setMaxMotorImpulse(p0);+}+//method: getHingeAngle ::btScalar ( ::btHingeConstraint::* )(  ) +float btHingeConstraint_getHingeAngle(void *c) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	float retVal = (float)o->getHingeAngle();+	return retVal;+}+//method: getHingeAngle ::btScalar ( ::btHingeConstraint::* )(  ) +float btHingeConstraint_getHingeAngle0(void *c) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	float retVal = (float)o->getHingeAngle();+	return retVal;+}+//method: getHingeAngle ::btScalar ( ::btHingeConstraint::* )( ::btTransform const &,::btTransform const & ) +float btHingeConstraint_getHingeAngle1(void *c,float* p0,float* p1) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	float retVal = (float)o->getHingeAngle(tp0,tp1);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+	return retVal;+}+//method: testLimit void ( ::btHingeConstraint::* )( ::btTransform const &,::btTransform const & ) +void btHingeConstraint_testLimit(void *c,float* p0,float* p1) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	o->testLimit(tp0,tp1);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+}+//method: getInfo1 void ( ::btHingeConstraint::* )( ::btTypedConstraint::btConstraintInfo1 * ) +void btHingeConstraint_getInfo1(void *c,void* p0) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	::btTypedConstraint::btConstraintInfo1 * tp0 = (::btTypedConstraint::btConstraintInfo1 *)p0;+	o->getInfo1(tp0);+}+//method: getInfo2Internal void ( ::btHingeConstraint::* )( ::btTypedConstraint::btConstraintInfo2 *,::btTransform const &,::btTransform const &,::btVector3 const &,::btVector3 const & ) +void btHingeConstraint_getInfo2Internal(void *c,void* p0,float* p1,float* p2,float* p3,float* p4) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	::btTypedConstraint::btConstraintInfo2 * tp0 = (::btTypedConstraint::btConstraintInfo2 *)p0;+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	btMatrix3x3 mtp2(p2[0],p2[1],p2[2],p2[3],p2[4],p2[5],p2[6],p2[7],p2[8]);+	btVector3 vtp2(p2[9],p2[10],p2[11]);+	btTransform tp2(mtp2,vtp2);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	btVector3 tp4(p4[0],p4[1],p4[2]);+	o->getInfo2Internal(tp0,tp1,tp2,tp3,tp4);+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+	p2[0]=tp2.getBasis().getRow(0).m_floats[0];p2[1]=tp2.getBasis().getRow(0).m_floats[1];p2[2]=tp2.getBasis().getRow(0).m_floats[2];p2[3]=tp2.getBasis().getRow(1).m_floats[0];p2[4]=tp2.getBasis().getRow(1).m_floats[1];p2[5]=tp2.getBasis().getRow(1).m_floats[2];p2[6]=tp2.getBasis().getRow(2).m_floats[0];p2[7]=tp2.getBasis().getRow(2).m_floats[1];p2[8]=tp2.getBasis().getRow(2).m_floats[2];+	p2[9]=tp2.getOrigin().m_floats[0];p2[10]=tp2.getOrigin().m_floats[1];p2[11]=tp2.getOrigin().m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+	p4[0]=tp4.m_floats[0];p4[1]=tp4.m_floats[1];p4[2]=tp4.m_floats[2];+}+//method: getInfo2 void ( ::btHingeConstraint::* )( ::btTypedConstraint::btConstraintInfo2 * ) +void btHingeConstraint_getInfo2(void *c,void* p0) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	::btTypedConstraint::btConstraintInfo2 * tp0 = (::btTypedConstraint::btConstraintInfo2 *)p0;+	o->getInfo2(tp0);+}+//method: getUpperLimit ::btScalar ( ::btHingeConstraint::* )(  ) const+float btHingeConstraint_getUpperLimit(void *c) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	float retVal = (float)o->getUpperLimit();+	return retVal;+}+//method: enableAngularMotor void ( ::btHingeConstraint::* )( bool,::btScalar,::btScalar ) +void btHingeConstraint_enableAngularMotor(void *c,int p0,float p1,float p2) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	o->enableAngularMotor(p0,p1,p2);+}+//method: getLimitSign ::btScalar ( ::btHingeConstraint::* )(  ) +float btHingeConstraint_getLimitSign(void *c) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	float retVal = (float)o->getLimitSign();+	return retVal;+}+//method: calculateSerializeBufferSize int ( ::btHingeConstraint::* )(  ) const+int btHingeConstraint_calculateSerializeBufferSize(void *c) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	int retVal = (int)o->calculateSerializeBufferSize();+	return retVal;+}+//method: getMaxMotorImpulse ::btScalar ( ::btHingeConstraint::* )(  ) +float btHingeConstraint_getMaxMotorImpulse(void *c) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	float retVal = (float)o->getMaxMotorImpulse();+	return retVal;+}+//method: getLowerLimit ::btScalar ( ::btHingeConstraint::* )(  ) const+float btHingeConstraint_getLowerLimit(void *c) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	float retVal = (float)o->getLowerLimit();+	return retVal;+}+//method: setParam void ( ::btHingeConstraint::* )( int,::btScalar,int ) +void btHingeConstraint_setParam(void *c,int p0,float p1,int p2) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	o->setParam(p0,p1,p2);+}+//method: setUseFrameOffset void ( ::btHingeConstraint::* )( bool ) +void btHingeConstraint_setUseFrameOffset(void *c,int p0) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	o->setUseFrameOffset(p0);+}+//method: getEnableAngularMotor bool ( ::btHingeConstraint::* )(  ) +int btHingeConstraint_getEnableAngularMotor(void *c) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	int retVal = (int)o->getEnableAngularMotor();+	return retVal;+}+//method: enableMotor void ( ::btHingeConstraint::* )( bool ) +void btHingeConstraint_enableMotor(void *c,int p0) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	o->enableMotor(p0);+}+//method: getBFrame ::btTransform const & ( ::btHingeConstraint::* )(  ) const+void btHingeConstraint_getBFrame(void *c,float* ret) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getBFrame();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: getBFrame ::btTransform const & ( ::btHingeConstraint::* )(  ) const+void btHingeConstraint_getBFrame0(void *c,float* ret) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getBFrame();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: getBFrame ::btTransform & ( ::btHingeConstraint::* )(  ) +void btHingeConstraint_getBFrame1(void *c,float* ret) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getBFrame();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: getInfo1NonVirtual void ( ::btHingeConstraint::* )( ::btTypedConstraint::btConstraintInfo1 * ) +void btHingeConstraint_getInfo1NonVirtual(void *c,void* p0) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	::btTypedConstraint::btConstraintInfo1 * tp0 = (::btTypedConstraint::btConstraintInfo1 *)p0;+	o->getInfo1NonVirtual(tp0);+}+//method: getInfo2InternalUsingFrameOffset void ( ::btHingeConstraint::* )( ::btTypedConstraint::btConstraintInfo2 *,::btTransform const &,::btTransform const &,::btVector3 const &,::btVector3 const & ) +void btHingeConstraint_getInfo2InternalUsingFrameOffset(void *c,void* p0,float* p1,float* p2,float* p3,float* p4) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	::btTypedConstraint::btConstraintInfo2 * tp0 = (::btTypedConstraint::btConstraintInfo2 *)p0;+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	btMatrix3x3 mtp2(p2[0],p2[1],p2[2],p2[3],p2[4],p2[5],p2[6],p2[7],p2[8]);+	btVector3 vtp2(p2[9],p2[10],p2[11]);+	btTransform tp2(mtp2,vtp2);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	btVector3 tp4(p4[0],p4[1],p4[2]);+	o->getInfo2InternalUsingFrameOffset(tp0,tp1,tp2,tp3,tp4);+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+	p2[0]=tp2.getBasis().getRow(0).m_floats[0];p2[1]=tp2.getBasis().getRow(0).m_floats[1];p2[2]=tp2.getBasis().getRow(0).m_floats[2];p2[3]=tp2.getBasis().getRow(1).m_floats[0];p2[4]=tp2.getBasis().getRow(1).m_floats[1];p2[5]=tp2.getBasis().getRow(1).m_floats[2];p2[6]=tp2.getBasis().getRow(2).m_floats[0];p2[7]=tp2.getBasis().getRow(2).m_floats[1];p2[8]=tp2.getBasis().getRow(2).m_floats[2];+	p2[9]=tp2.getOrigin().m_floats[0];p2[10]=tp2.getOrigin().m_floats[1];p2[11]=tp2.getOrigin().m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+	p4[0]=tp4.m_floats[0];p4[1]=tp4.m_floats[1];p4[2]=tp4.m_floats[2];+}+//not supported method: serialize char const * ( ::btHingeConstraint::* )( void *,::btSerializer * ) const+//method: getUseFrameOffset bool ( ::btHingeConstraint::* )(  ) +int btHingeConstraint_getUseFrameOffset(void *c) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	int retVal = (int)o->getUseFrameOffset();+	return retVal;+}+//method: setAngularOnly void ( ::btHingeConstraint::* )( bool ) +void btHingeConstraint_setAngularOnly(void *c,int p0) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	o->setAngularOnly(p0);+}+//method: getParam ::btScalar ( ::btHingeConstraint::* )( int,int ) const+float btHingeConstraint_getParam(void *c,int p0,int p1) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	float retVal = (float)o->getParam(p0,p1);+	return retVal;+}+//method: setLimit void ( ::btHingeConstraint::* )( ::btScalar,::btScalar,::btScalar,::btScalar,::btScalar ) +void btHingeConstraint_setLimit(void *c,float p0,float p1,float p2,float p3,float p4) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	o->setLimit(p0,p1,p2,p3,p4);+}+//method: getSolveLimit int ( ::btHingeConstraint::* )(  ) +int btHingeConstraint_getSolveLimit(void *c) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	int retVal = (int)o->getSolveLimit();+	return retVal;+}+//method: updateRHS void ( ::btHingeConstraint::* )( ::btScalar ) +void btHingeConstraint_updateRHS(void *c,float p0) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	o->updateRHS(p0);+}+//method: setMotorTarget void ( ::btHingeConstraint::* )( ::btQuaternion const &,::btScalar ) +void btHingeConstraint_setMotorTarget(void *c,float* p0,float p1) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	btQuaternion tp0(p0[0],p0[1],p0[2],p0[3]);+	o->setMotorTarget(tp0,p1);+	p0[0]=tp0.getX();p0[1]=tp0.getY();p0[2]=tp0.getZ();p0[3]=tp0.getW();+}+//method: setMotorTarget void ( ::btHingeConstraint::* )( ::btQuaternion const &,::btScalar ) +void btHingeConstraint_setMotorTarget0(void *c,float* p0,float p1) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	btQuaternion tp0(p0[0],p0[1],p0[2],p0[3]);+	o->setMotorTarget(tp0,p1);+	p0[0]=tp0.getX();p0[1]=tp0.getY();p0[2]=tp0.getZ();p0[3]=tp0.getW();+}+//method: setMotorTarget void ( ::btHingeConstraint::* )( ::btScalar,::btScalar ) +void btHingeConstraint_setMotorTarget1(void *c,float p0,float p1) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	o->setMotorTarget(p0,p1);+}+//method: getAngularOnly bool ( ::btHingeConstraint::* )(  ) +int btHingeConstraint_getAngularOnly(void *c) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	int retVal = (int)o->getAngularOnly();+	return retVal;+}+//method: setFrames void ( ::btHingeConstraint::* )( ::btTransform const &,::btTransform const & ) +void btHingeConstraint_setFrames(void *c,float* p0,float* p1) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	o->setFrames(tp0,tp1);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+}+//method: setAxis void ( ::btHingeConstraint::* )( ::btVector3 & ) +void btHingeConstraint_setAxis(void *c,float* p0) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setAxis(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: getAFrame ::btTransform const & ( ::btHingeConstraint::* )(  ) const+void btHingeConstraint_getAFrame(void *c,float* ret) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getAFrame();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: getAFrame ::btTransform const & ( ::btHingeConstraint::* )(  ) const+void btHingeConstraint_getAFrame0(void *c,float* ret) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getAFrame();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: getAFrame ::btTransform & ( ::btHingeConstraint::* )(  ) +void btHingeConstraint_getAFrame1(void *c,float* ret) {+	::btHingeConstraint *o = (::btHingeConstraint*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getAFrame();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}++// ::btHingeConstraintDoubleData+//constructor: btHingeConstraintDoubleData  ( ::btHingeConstraintDoubleData::* )(  ) +void* btHingeConstraintDoubleData_new() {+	::btHingeConstraintDoubleData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btHingeConstraintDoubleData),16);+	o = new (mem)::btHingeConstraintDoubleData();+	return (void*)o;+}+void btHingeConstraintDoubleData_free(void *c) {+	::btHingeConstraintDoubleData *o = (::btHingeConstraintDoubleData*)c;+	delete o;+}+//attribute: ::btTypedConstraintData btHingeConstraintDoubleData->m_typeConstraintData+// attribute not supported: //attribute: ::btTypedConstraintData btHingeConstraintDoubleData->m_typeConstraintData+//attribute: ::btTransformDoubleData btHingeConstraintDoubleData->m_rbAFrame+// attribute not supported: //attribute: ::btTransformDoubleData btHingeConstraintDoubleData->m_rbAFrame+//attribute: ::btTransformDoubleData btHingeConstraintDoubleData->m_rbBFrame+// attribute not supported: //attribute: ::btTransformDoubleData btHingeConstraintDoubleData->m_rbBFrame+//attribute: int btHingeConstraintDoubleData->m_useReferenceFrameA+void btHingeConstraintDoubleData_m_useReferenceFrameA_set(void *c,int a) {+	::btHingeConstraintDoubleData *o = (::btHingeConstraintDoubleData*)c;+	o->m_useReferenceFrameA = a;+}+int btHingeConstraintDoubleData_m_useReferenceFrameA_get(void *c) {+	::btHingeConstraintDoubleData *o = (::btHingeConstraintDoubleData*)c;+	return (int)(o->m_useReferenceFrameA);+}++//attribute: int btHingeConstraintDoubleData->m_angularOnly+void btHingeConstraintDoubleData_m_angularOnly_set(void *c,int a) {+	::btHingeConstraintDoubleData *o = (::btHingeConstraintDoubleData*)c;+	o->m_angularOnly = a;+}+int btHingeConstraintDoubleData_m_angularOnly_get(void *c) {+	::btHingeConstraintDoubleData *o = (::btHingeConstraintDoubleData*)c;+	return (int)(o->m_angularOnly);+}++//attribute: int btHingeConstraintDoubleData->m_enableAngularMotor+void btHingeConstraintDoubleData_m_enableAngularMotor_set(void *c,int a) {+	::btHingeConstraintDoubleData *o = (::btHingeConstraintDoubleData*)c;+	o->m_enableAngularMotor = a;+}+int btHingeConstraintDoubleData_m_enableAngularMotor_get(void *c) {+	::btHingeConstraintDoubleData *o = (::btHingeConstraintDoubleData*)c;+	return (int)(o->m_enableAngularMotor);+}++//attribute: float btHingeConstraintDoubleData->m_motorTargetVelocity+void btHingeConstraintDoubleData_m_motorTargetVelocity_set(void *c,float a) {+	::btHingeConstraintDoubleData *o = (::btHingeConstraintDoubleData*)c;+	o->m_motorTargetVelocity = a;+}+float btHingeConstraintDoubleData_m_motorTargetVelocity_get(void *c) {+	::btHingeConstraintDoubleData *o = (::btHingeConstraintDoubleData*)c;+	return (float)(o->m_motorTargetVelocity);+}++//attribute: float btHingeConstraintDoubleData->m_maxMotorImpulse+void btHingeConstraintDoubleData_m_maxMotorImpulse_set(void *c,float a) {+	::btHingeConstraintDoubleData *o = (::btHingeConstraintDoubleData*)c;+	o->m_maxMotorImpulse = a;+}+float btHingeConstraintDoubleData_m_maxMotorImpulse_get(void *c) {+	::btHingeConstraintDoubleData *o = (::btHingeConstraintDoubleData*)c;+	return (float)(o->m_maxMotorImpulse);+}++//attribute: float btHingeConstraintDoubleData->m_lowerLimit+void btHingeConstraintDoubleData_m_lowerLimit_set(void *c,float a) {+	::btHingeConstraintDoubleData *o = (::btHingeConstraintDoubleData*)c;+	o->m_lowerLimit = a;+}+float btHingeConstraintDoubleData_m_lowerLimit_get(void *c) {+	::btHingeConstraintDoubleData *o = (::btHingeConstraintDoubleData*)c;+	return (float)(o->m_lowerLimit);+}++//attribute: float btHingeConstraintDoubleData->m_upperLimit+void btHingeConstraintDoubleData_m_upperLimit_set(void *c,float a) {+	::btHingeConstraintDoubleData *o = (::btHingeConstraintDoubleData*)c;+	o->m_upperLimit = a;+}+float btHingeConstraintDoubleData_m_upperLimit_get(void *c) {+	::btHingeConstraintDoubleData *o = (::btHingeConstraintDoubleData*)c;+	return (float)(o->m_upperLimit);+}++//attribute: float btHingeConstraintDoubleData->m_limitSoftness+void btHingeConstraintDoubleData_m_limitSoftness_set(void *c,float a) {+	::btHingeConstraintDoubleData *o = (::btHingeConstraintDoubleData*)c;+	o->m_limitSoftness = a;+}+float btHingeConstraintDoubleData_m_limitSoftness_get(void *c) {+	::btHingeConstraintDoubleData *o = (::btHingeConstraintDoubleData*)c;+	return (float)(o->m_limitSoftness);+}++//attribute: float btHingeConstraintDoubleData->m_biasFactor+void btHingeConstraintDoubleData_m_biasFactor_set(void *c,float a) {+	::btHingeConstraintDoubleData *o = (::btHingeConstraintDoubleData*)c;+	o->m_biasFactor = a;+}+float btHingeConstraintDoubleData_m_biasFactor_get(void *c) {+	::btHingeConstraintDoubleData *o = (::btHingeConstraintDoubleData*)c;+	return (float)(o->m_biasFactor);+}++//attribute: float btHingeConstraintDoubleData->m_relaxationFactor+void btHingeConstraintDoubleData_m_relaxationFactor_set(void *c,float a) {+	::btHingeConstraintDoubleData *o = (::btHingeConstraintDoubleData*)c;+	o->m_relaxationFactor = a;+}+float btHingeConstraintDoubleData_m_relaxationFactor_get(void *c) {+	::btHingeConstraintDoubleData *o = (::btHingeConstraintDoubleData*)c;+	return (float)(o->m_relaxationFactor);+}+++// ::btHingeConstraintFloatData+//constructor: btHingeConstraintFloatData  ( ::btHingeConstraintFloatData::* )(  ) +void* btHingeConstraintFloatData_new() {+	::btHingeConstraintFloatData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btHingeConstraintFloatData),16);+	o = new (mem)::btHingeConstraintFloatData();+	return (void*)o;+}+void btHingeConstraintFloatData_free(void *c) {+	::btHingeConstraintFloatData *o = (::btHingeConstraintFloatData*)c;+	delete o;+}+//attribute: ::btTypedConstraintData btHingeConstraintFloatData->m_typeConstraintData+// attribute not supported: //attribute: ::btTypedConstraintData btHingeConstraintFloatData->m_typeConstraintData+//attribute: ::btTransformFloatData btHingeConstraintFloatData->m_rbAFrame+// attribute not supported: //attribute: ::btTransformFloatData btHingeConstraintFloatData->m_rbAFrame+//attribute: ::btTransformFloatData btHingeConstraintFloatData->m_rbBFrame+// attribute not supported: //attribute: ::btTransformFloatData btHingeConstraintFloatData->m_rbBFrame+//attribute: int btHingeConstraintFloatData->m_useReferenceFrameA+void btHingeConstraintFloatData_m_useReferenceFrameA_set(void *c,int a) {+	::btHingeConstraintFloatData *o = (::btHingeConstraintFloatData*)c;+	o->m_useReferenceFrameA = a;+}+int btHingeConstraintFloatData_m_useReferenceFrameA_get(void *c) {+	::btHingeConstraintFloatData *o = (::btHingeConstraintFloatData*)c;+	return (int)(o->m_useReferenceFrameA);+}++//attribute: int btHingeConstraintFloatData->m_angularOnly+void btHingeConstraintFloatData_m_angularOnly_set(void *c,int a) {+	::btHingeConstraintFloatData *o = (::btHingeConstraintFloatData*)c;+	o->m_angularOnly = a;+}+int btHingeConstraintFloatData_m_angularOnly_get(void *c) {+	::btHingeConstraintFloatData *o = (::btHingeConstraintFloatData*)c;+	return (int)(o->m_angularOnly);+}++//attribute: int btHingeConstraintFloatData->m_enableAngularMotor+void btHingeConstraintFloatData_m_enableAngularMotor_set(void *c,int a) {+	::btHingeConstraintFloatData *o = (::btHingeConstraintFloatData*)c;+	o->m_enableAngularMotor = a;+}+int btHingeConstraintFloatData_m_enableAngularMotor_get(void *c) {+	::btHingeConstraintFloatData *o = (::btHingeConstraintFloatData*)c;+	return (int)(o->m_enableAngularMotor);+}++//attribute: float btHingeConstraintFloatData->m_motorTargetVelocity+void btHingeConstraintFloatData_m_motorTargetVelocity_set(void *c,float a) {+	::btHingeConstraintFloatData *o = (::btHingeConstraintFloatData*)c;+	o->m_motorTargetVelocity = a;+}+float btHingeConstraintFloatData_m_motorTargetVelocity_get(void *c) {+	::btHingeConstraintFloatData *o = (::btHingeConstraintFloatData*)c;+	return (float)(o->m_motorTargetVelocity);+}++//attribute: float btHingeConstraintFloatData->m_maxMotorImpulse+void btHingeConstraintFloatData_m_maxMotorImpulse_set(void *c,float a) {+	::btHingeConstraintFloatData *o = (::btHingeConstraintFloatData*)c;+	o->m_maxMotorImpulse = a;+}+float btHingeConstraintFloatData_m_maxMotorImpulse_get(void *c) {+	::btHingeConstraintFloatData *o = (::btHingeConstraintFloatData*)c;+	return (float)(o->m_maxMotorImpulse);+}++//attribute: float btHingeConstraintFloatData->m_lowerLimit+void btHingeConstraintFloatData_m_lowerLimit_set(void *c,float a) {+	::btHingeConstraintFloatData *o = (::btHingeConstraintFloatData*)c;+	o->m_lowerLimit = a;+}+float btHingeConstraintFloatData_m_lowerLimit_get(void *c) {+	::btHingeConstraintFloatData *o = (::btHingeConstraintFloatData*)c;+	return (float)(o->m_lowerLimit);+}++//attribute: float btHingeConstraintFloatData->m_upperLimit+void btHingeConstraintFloatData_m_upperLimit_set(void *c,float a) {+	::btHingeConstraintFloatData *o = (::btHingeConstraintFloatData*)c;+	o->m_upperLimit = a;+}+float btHingeConstraintFloatData_m_upperLimit_get(void *c) {+	::btHingeConstraintFloatData *o = (::btHingeConstraintFloatData*)c;+	return (float)(o->m_upperLimit);+}++//attribute: float btHingeConstraintFloatData->m_limitSoftness+void btHingeConstraintFloatData_m_limitSoftness_set(void *c,float a) {+	::btHingeConstraintFloatData *o = (::btHingeConstraintFloatData*)c;+	o->m_limitSoftness = a;+}+float btHingeConstraintFloatData_m_limitSoftness_get(void *c) {+	::btHingeConstraintFloatData *o = (::btHingeConstraintFloatData*)c;+	return (float)(o->m_limitSoftness);+}++//attribute: float btHingeConstraintFloatData->m_biasFactor+void btHingeConstraintFloatData_m_biasFactor_set(void *c,float a) {+	::btHingeConstraintFloatData *o = (::btHingeConstraintFloatData*)c;+	o->m_biasFactor = a;+}+float btHingeConstraintFloatData_m_biasFactor_get(void *c) {+	::btHingeConstraintFloatData *o = (::btHingeConstraintFloatData*)c;+	return (float)(o->m_biasFactor);+}++//attribute: float btHingeConstraintFloatData->m_relaxationFactor+void btHingeConstraintFloatData_m_relaxationFactor_set(void *c,float a) {+	::btHingeConstraintFloatData *o = (::btHingeConstraintFloatData*)c;+	o->m_relaxationFactor = a;+}+float btHingeConstraintFloatData_m_relaxationFactor_get(void *c) {+	::btHingeConstraintFloatData *o = (::btHingeConstraintFloatData*)c;+	return (float)(o->m_relaxationFactor);+}+++// ::btJacobianEntry+//constructor: btJacobianEntry  ( ::btJacobianEntry::* )(  ) +void* btJacobianEntry_new0() {+	::btJacobianEntry *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btJacobianEntry),16);+	o = new (mem)::btJacobianEntry();+	return (void*)o;+}+//not supported constructor: btJacobianEntry  ( ::btJacobianEntry::* )( ::btMatrix3x3 const &,::btMatrix3x3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btScalar const,::btVector3 const &,::btScalar const ) +//constructor: btJacobianEntry  ( ::btJacobianEntry::* )( ::btVector3 const &,::btMatrix3x3 const &,::btMatrix3x3 const &,::btVector3 const &,::btVector3 const & ) +void* btJacobianEntry_new2(float* p0,float* p1,float* p2,float* p3,float* p4) {+	::btJacobianEntry *o = 0;+	 void *mem = 0;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btMatrix3x3 tp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btMatrix3x3 tp2(p2[0],p2[1],p2[2],p2[3],p2[4],p2[5],p2[6],p2[7],p2[8]);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	btVector3 tp4(p4[0],p4[1],p4[2]);+	mem = btAlignedAlloc(sizeof(::btJacobianEntry),16);+	o = new (mem)::btJacobianEntry(tp0,tp1,tp2,tp3,tp4);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.getRow(0).m_floats[0];p1[1]=tp1.getRow(0).m_floats[1];p1[2]=tp1.getRow(0).m_floats[2];p1[3]=tp1.getRow(1).m_floats[0];p1[4]=tp1.getRow(1).m_floats[1];p1[5]=tp1.getRow(1).m_floats[2];p1[6]=tp1.getRow(2).m_floats[0];p1[7]=tp1.getRow(2).m_floats[1];p1[8]=tp1.getRow(2).m_floats[2];+	p2[0]=tp2.getRow(0).m_floats[0];p2[1]=tp2.getRow(0).m_floats[1];p2[2]=tp2.getRow(0).m_floats[2];p2[3]=tp2.getRow(1).m_floats[0];p2[4]=tp2.getRow(1).m_floats[1];p2[5]=tp2.getRow(1).m_floats[2];p2[6]=tp2.getRow(2).m_floats[0];p2[7]=tp2.getRow(2).m_floats[1];p2[8]=tp2.getRow(2).m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+	p4[0]=tp4.m_floats[0];p4[1]=tp4.m_floats[1];p4[2]=tp4.m_floats[2];+	return (void*)o;+}+//constructor: btJacobianEntry  ( ::btJacobianEntry::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void* btJacobianEntry_new3(float* p0,float* p1,float* p2,float* p3) {+	::btJacobianEntry *o = 0;+	 void *mem = 0;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	mem = btAlignedAlloc(sizeof(::btJacobianEntry),16);+	o = new (mem)::btJacobianEntry(tp0,tp1,tp2,tp3);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+	return (void*)o;+}+//not supported constructor: btJacobianEntry  ( ::btJacobianEntry::* )( ::btMatrix3x3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btScalar const ) +void btJacobianEntry_free(void *c) {+	::btJacobianEntry *o = (::btJacobianEntry*)c;+	delete o;+}+//method: getDiagonal ::btScalar ( ::btJacobianEntry::* )(  ) const+float btJacobianEntry_getDiagonal(void *c) {+	::btJacobianEntry *o = (::btJacobianEntry*)c;+	float retVal = (float)o->getDiagonal();+	return retVal;+}+//method: getRelativeVelocity ::btScalar ( ::btJacobianEntry::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const & ) +float btJacobianEntry_getRelativeVelocity(void *c,float* p0,float* p1,float* p2,float* p3) {+	::btJacobianEntry *o = (::btJacobianEntry*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	float retVal = (float)o->getRelativeVelocity(tp0,tp1,tp2,tp3);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+	return retVal;+}+//not supported method: getNonDiagonal ::btScalar ( ::btJacobianEntry::* )( ::btJacobianEntry const &,::btScalar const ) const+//not supported method: getNonDiagonal ::btScalar ( ::btJacobianEntry::* )( ::btJacobianEntry const &,::btScalar const ) const+//not supported method: getNonDiagonal ::btScalar ( ::btJacobianEntry::* )( ::btJacobianEntry const &,::btScalar const,::btScalar const ) const+//attribute: ::btVector3 btJacobianEntry->m_0MinvJt+void btJacobianEntry_m_0MinvJt_set(void *c,float* a) {+	::btJacobianEntry *o = (::btJacobianEntry*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_0MinvJt = ta;+}+void btJacobianEntry_m_0MinvJt_get(void *c,float* a) {+	::btJacobianEntry *o = (::btJacobianEntry*)c;+	a[0]=(o->m_0MinvJt).m_floats[0];a[1]=(o->m_0MinvJt).m_floats[1];a[2]=(o->m_0MinvJt).m_floats[2];+}++//attribute: ::btVector3 btJacobianEntry->m_1MinvJt+void btJacobianEntry_m_1MinvJt_set(void *c,float* a) {+	::btJacobianEntry *o = (::btJacobianEntry*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_1MinvJt = ta;+}+void btJacobianEntry_m_1MinvJt_get(void *c,float* a) {+	::btJacobianEntry *o = (::btJacobianEntry*)c;+	a[0]=(o->m_1MinvJt).m_floats[0];a[1]=(o->m_1MinvJt).m_floats[1];a[2]=(o->m_1MinvJt).m_floats[2];+}++//attribute: ::btScalar btJacobianEntry->m_Adiag+void btJacobianEntry_m_Adiag_set(void *c,float a) {+	::btJacobianEntry *o = (::btJacobianEntry*)c;+	o->m_Adiag = a;+}+float btJacobianEntry_m_Adiag_get(void *c) {+	::btJacobianEntry *o = (::btJacobianEntry*)c;+	return (float)(o->m_Adiag);+}++//attribute: ::btVector3 btJacobianEntry->m_aJ+void btJacobianEntry_m_aJ_set(void *c,float* a) {+	::btJacobianEntry *o = (::btJacobianEntry*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_aJ = ta;+}+void btJacobianEntry_m_aJ_get(void *c,float* a) {+	::btJacobianEntry *o = (::btJacobianEntry*)c;+	a[0]=(o->m_aJ).m_floats[0];a[1]=(o->m_aJ).m_floats[1];a[2]=(o->m_aJ).m_floats[2];+}++//attribute: ::btVector3 btJacobianEntry->m_bJ+void btJacobianEntry_m_bJ_set(void *c,float* a) {+	::btJacobianEntry *o = (::btJacobianEntry*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_bJ = ta;+}+void btJacobianEntry_m_bJ_get(void *c,float* a) {+	::btJacobianEntry *o = (::btJacobianEntry*)c;+	a[0]=(o->m_bJ).m_floats[0];a[1]=(o->m_bJ).m_floats[1];a[2]=(o->m_bJ).m_floats[2];+}++//attribute: ::btVector3 btJacobianEntry->m_linearJointAxis+void btJacobianEntry_m_linearJointAxis_set(void *c,float* a) {+	::btJacobianEntry *o = (::btJacobianEntry*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_linearJointAxis = ta;+}+void btJacobianEntry_m_linearJointAxis_get(void *c,float* a) {+	::btJacobianEntry *o = (::btJacobianEntry*)c;+	a[0]=(o->m_linearJointAxis).m_floats[0];a[1]=(o->m_linearJointAxis).m_floats[1];a[2]=(o->m_linearJointAxis).m_floats[2];+}+++// ::btPoint2PointConstraint+//constructor: btPoint2PointConstraint  ( ::btPoint2PointConstraint::* )( ::btRigidBody &,::btRigidBody &,::btVector3 const &,::btVector3 const & ) +void* btPoint2PointConstraint_new0(void* p0,void* p1,float* p2,float* p3) {+	::btPoint2PointConstraint *o = 0;+	 void *mem = 0;+	::btRigidBody & tp0 = *(::btRigidBody *)p0;+	::btRigidBody & tp1 = *(::btRigidBody *)p1;+	btVector3 tp2(p2[0],p2[1],p2[2]);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	mem = btAlignedAlloc(sizeof(::btPoint2PointConstraint),16);+	o = new (mem)::btPoint2PointConstraint(tp0,tp1,tp2,tp3);+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+	return (void*)o;+}+//constructor: btPoint2PointConstraint  ( ::btPoint2PointConstraint::* )( ::btRigidBody &,::btVector3 const & ) +void* btPoint2PointConstraint_new1(void* p0,float* p1) {+	::btPoint2PointConstraint *o = 0;+	 void *mem = 0;+	::btRigidBody & tp0 = *(::btRigidBody *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	mem = btAlignedAlloc(sizeof(::btPoint2PointConstraint),16);+	o = new (mem)::btPoint2PointConstraint(tp0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	return (void*)o;+}+void btPoint2PointConstraint_free(void *c) {+	::btPoint2PointConstraint *o = (::btPoint2PointConstraint*)c;+	delete o;+}+//method: getInfo1NonVirtual void ( ::btPoint2PointConstraint::* )( ::btTypedConstraint::btConstraintInfo1 * ) +void btPoint2PointConstraint_getInfo1NonVirtual(void *c,void* p0) {+	::btPoint2PointConstraint *o = (::btPoint2PointConstraint*)c;+	::btTypedConstraint::btConstraintInfo1 * tp0 = (::btTypedConstraint::btConstraintInfo1 *)p0;+	o->getInfo1NonVirtual(tp0);+}+//method: getInfo2NonVirtual void ( ::btPoint2PointConstraint::* )( ::btTypedConstraint::btConstraintInfo2 *,::btTransform const &,::btTransform const & ) +void btPoint2PointConstraint_getInfo2NonVirtual(void *c,void* p0,float* p1,float* p2) {+	::btPoint2PointConstraint *o = (::btPoint2PointConstraint*)c;+	::btTypedConstraint::btConstraintInfo2 * tp0 = (::btTypedConstraint::btConstraintInfo2 *)p0;+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	btMatrix3x3 mtp2(p2[0],p2[1],p2[2],p2[3],p2[4],p2[5],p2[6],p2[7],p2[8]);+	btVector3 vtp2(p2[9],p2[10],p2[11]);+	btTransform tp2(mtp2,vtp2);+	o->getInfo2NonVirtual(tp0,tp1,tp2);+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+	p2[0]=tp2.getBasis().getRow(0).m_floats[0];p2[1]=tp2.getBasis().getRow(0).m_floats[1];p2[2]=tp2.getBasis().getRow(0).m_floats[2];p2[3]=tp2.getBasis().getRow(1).m_floats[0];p2[4]=tp2.getBasis().getRow(1).m_floats[1];p2[5]=tp2.getBasis().getRow(1).m_floats[2];p2[6]=tp2.getBasis().getRow(2).m_floats[0];p2[7]=tp2.getBasis().getRow(2).m_floats[1];p2[8]=tp2.getBasis().getRow(2).m_floats[2];+	p2[9]=tp2.getOrigin().m_floats[0];p2[10]=tp2.getOrigin().m_floats[1];p2[11]=tp2.getOrigin().m_floats[2];+}+//method: setParam void ( ::btPoint2PointConstraint::* )( int,::btScalar,int ) +void btPoint2PointConstraint_setParam(void *c,int p0,float p1,int p2) {+	::btPoint2PointConstraint *o = (::btPoint2PointConstraint*)c;+	o->setParam(p0,p1,p2);+}+//method: getPivotInA ::btVector3 const & ( ::btPoint2PointConstraint::* )(  ) const+void btPoint2PointConstraint_getPivotInA(void *c,float* ret) {+	::btPoint2PointConstraint *o = (::btPoint2PointConstraint*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getPivotInA();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getPivotInB ::btVector3 const & ( ::btPoint2PointConstraint::* )(  ) const+void btPoint2PointConstraint_getPivotInB(void *c,float* ret) {+	::btPoint2PointConstraint *o = (::btPoint2PointConstraint*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getPivotInB();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: updateRHS void ( ::btPoint2PointConstraint::* )( ::btScalar ) +void btPoint2PointConstraint_updateRHS(void *c,float p0) {+	::btPoint2PointConstraint *o = (::btPoint2PointConstraint*)c;+	o->updateRHS(p0);+}+//not supported method: serialize char const * ( ::btPoint2PointConstraint::* )( void *,::btSerializer * ) const+//method: buildJacobian void ( ::btPoint2PointConstraint::* )(  ) +void btPoint2PointConstraint_buildJacobian(void *c) {+	::btPoint2PointConstraint *o = (::btPoint2PointConstraint*)c;+	o->buildJacobian();+}+//method: calculateSerializeBufferSize int ( ::btPoint2PointConstraint::* )(  ) const+int btPoint2PointConstraint_calculateSerializeBufferSize(void *c) {+	::btPoint2PointConstraint *o = (::btPoint2PointConstraint*)c;+	int retVal = (int)o->calculateSerializeBufferSize();+	return retVal;+}+//method: getParam ::btScalar ( ::btPoint2PointConstraint::* )( int,int ) const+float btPoint2PointConstraint_getParam(void *c,int p0,int p1) {+	::btPoint2PointConstraint *o = (::btPoint2PointConstraint*)c;+	float retVal = (float)o->getParam(p0,p1);+	return retVal;+}+//method: getInfo1 void ( ::btPoint2PointConstraint::* )( ::btTypedConstraint::btConstraintInfo1 * ) +void btPoint2PointConstraint_getInfo1(void *c,void* p0) {+	::btPoint2PointConstraint *o = (::btPoint2PointConstraint*)c;+	::btTypedConstraint::btConstraintInfo1 * tp0 = (::btTypedConstraint::btConstraintInfo1 *)p0;+	o->getInfo1(tp0);+}+//method: getInfo2 void ( ::btPoint2PointConstraint::* )( ::btTypedConstraint::btConstraintInfo2 * ) +void btPoint2PointConstraint_getInfo2(void *c,void* p0) {+	::btPoint2PointConstraint *o = (::btPoint2PointConstraint*)c;+	::btTypedConstraint::btConstraintInfo2 * tp0 = (::btTypedConstraint::btConstraintInfo2 *)p0;+	o->getInfo2(tp0);+}+//method: setPivotA void ( ::btPoint2PointConstraint::* )( ::btVector3 const & ) +void btPoint2PointConstraint_setPivotA(void *c,float* p0) {+	::btPoint2PointConstraint *o = (::btPoint2PointConstraint*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setPivotA(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: setPivotB void ( ::btPoint2PointConstraint::* )( ::btVector3 const & ) +void btPoint2PointConstraint_setPivotB(void *c,float* p0) {+	::btPoint2PointConstraint *o = (::btPoint2PointConstraint*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setPivotB(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//attribute: bool btPoint2PointConstraint->m_useSolveConstraintObsolete+void btPoint2PointConstraint_m_useSolveConstraintObsolete_set(void *c,int a) {+	::btPoint2PointConstraint *o = (::btPoint2PointConstraint*)c;+	o->m_useSolveConstraintObsolete = a;+}+int btPoint2PointConstraint_m_useSolveConstraintObsolete_get(void *c) {+	::btPoint2PointConstraint *o = (::btPoint2PointConstraint*)c;+	return (int)(o->m_useSolveConstraintObsolete);+}++//attribute: ::btConstraintSetting btPoint2PointConstraint->m_setting+// attribute not supported: //attribute: ::btConstraintSetting btPoint2PointConstraint->m_setting++// ::btPoint2PointConstraintDoubleData+//constructor: btPoint2PointConstraintDoubleData  ( ::btPoint2PointConstraintDoubleData::* )(  ) +void* btPoint2PointConstraintDoubleData_new() {+	::btPoint2PointConstraintDoubleData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btPoint2PointConstraintDoubleData),16);+	o = new (mem)::btPoint2PointConstraintDoubleData();+	return (void*)o;+}+void btPoint2PointConstraintDoubleData_free(void *c) {+	::btPoint2PointConstraintDoubleData *o = (::btPoint2PointConstraintDoubleData*)c;+	delete o;+}+//attribute: ::btTypedConstraintData btPoint2PointConstraintDoubleData->m_typeConstraintData+// attribute not supported: //attribute: ::btTypedConstraintData btPoint2PointConstraintDoubleData->m_typeConstraintData+//attribute: ::btVector3DoubleData btPoint2PointConstraintDoubleData->m_pivotInA+// attribute not supported: //attribute: ::btVector3DoubleData btPoint2PointConstraintDoubleData->m_pivotInA+//attribute: ::btVector3DoubleData btPoint2PointConstraintDoubleData->m_pivotInB+// attribute not supported: //attribute: ::btVector3DoubleData btPoint2PointConstraintDoubleData->m_pivotInB++// ::btPoint2PointConstraintFloatData+//constructor: btPoint2PointConstraintFloatData  ( ::btPoint2PointConstraintFloatData::* )(  ) +void* btPoint2PointConstraintFloatData_new() {+	::btPoint2PointConstraintFloatData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btPoint2PointConstraintFloatData),16);+	o = new (mem)::btPoint2PointConstraintFloatData();+	return (void*)o;+}+void btPoint2PointConstraintFloatData_free(void *c) {+	::btPoint2PointConstraintFloatData *o = (::btPoint2PointConstraintFloatData*)c;+	delete o;+}+//attribute: ::btTypedConstraintData btPoint2PointConstraintFloatData->m_typeConstraintData+// attribute not supported: //attribute: ::btTypedConstraintData btPoint2PointConstraintFloatData->m_typeConstraintData+//attribute: ::btVector3FloatData btPoint2PointConstraintFloatData->m_pivotInA+// attribute not supported: //attribute: ::btVector3FloatData btPoint2PointConstraintFloatData->m_pivotInA+//attribute: ::btVector3FloatData btPoint2PointConstraintFloatData->m_pivotInB+// attribute not supported: //attribute: ::btVector3FloatData btPoint2PointConstraintFloatData->m_pivotInB++// ::btRotationalLimitMotor+//constructor: btRotationalLimitMotor  ( ::btRotationalLimitMotor::* )(  ) +void* btRotationalLimitMotor_new() {+	::btRotationalLimitMotor *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btRotationalLimitMotor),16);+	o = new (mem)::btRotationalLimitMotor();+	return (void*)o;+}+void btRotationalLimitMotor_free(void *c) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	delete o;+}+//method: testLimitValue int ( ::btRotationalLimitMotor::* )( ::btScalar ) +int btRotationalLimitMotor_testLimitValue(void *c,float p0) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	int retVal = (int)o->testLimitValue(p0);+	return retVal;+}+//method: solveAngularLimits ::btScalar ( ::btRotationalLimitMotor::* )( ::btScalar,::btVector3 &,::btScalar,::btRigidBody *,::btRigidBody * ) +float btRotationalLimitMotor_solveAngularLimits(void *c,float p0,float* p1,float p2,void* p3,void* p4) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	::btRigidBody * tp3 = (::btRigidBody *)p3;+	::btRigidBody * tp4 = (::btRigidBody *)p4;+	float retVal = (float)o->solveAngularLimits(p0,tp1,p2,tp3,tp4);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	return retVal;+}+//method: needApplyTorques bool ( ::btRotationalLimitMotor::* )(  ) +int btRotationalLimitMotor_needApplyTorques(void *c) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	int retVal = (int)o->needApplyTorques();+	return retVal;+}+//method: isLimited bool ( ::btRotationalLimitMotor::* )(  ) +int btRotationalLimitMotor_isLimited(void *c) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	int retVal = (int)o->isLimited();+	return retVal;+}+//attribute: ::btScalar btRotationalLimitMotor->m_accumulatedImpulse+void btRotationalLimitMotor_m_accumulatedImpulse_set(void *c,float a) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	o->m_accumulatedImpulse = a;+}+float btRotationalLimitMotor_m_accumulatedImpulse_get(void *c) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	return (float)(o->m_accumulatedImpulse);+}++//attribute: ::btScalar btRotationalLimitMotor->m_bounce+void btRotationalLimitMotor_m_bounce_set(void *c,float a) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	o->m_bounce = a;+}+float btRotationalLimitMotor_m_bounce_get(void *c) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	return (float)(o->m_bounce);+}++//attribute: int btRotationalLimitMotor->m_currentLimit+void btRotationalLimitMotor_m_currentLimit_set(void *c,int a) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	o->m_currentLimit = a;+}+int btRotationalLimitMotor_m_currentLimit_get(void *c) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	return (int)(o->m_currentLimit);+}++//attribute: ::btScalar btRotationalLimitMotor->m_currentLimitError+void btRotationalLimitMotor_m_currentLimitError_set(void *c,float a) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	o->m_currentLimitError = a;+}+float btRotationalLimitMotor_m_currentLimitError_get(void *c) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	return (float)(o->m_currentLimitError);+}++//attribute: ::btScalar btRotationalLimitMotor->m_currentPosition+void btRotationalLimitMotor_m_currentPosition_set(void *c,float a) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	o->m_currentPosition = a;+}+float btRotationalLimitMotor_m_currentPosition_get(void *c) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	return (float)(o->m_currentPosition);+}++//attribute: ::btScalar btRotationalLimitMotor->m_damping+void btRotationalLimitMotor_m_damping_set(void *c,float a) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	o->m_damping = a;+}+float btRotationalLimitMotor_m_damping_get(void *c) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	return (float)(o->m_damping);+}++//attribute: bool btRotationalLimitMotor->m_enableMotor+void btRotationalLimitMotor_m_enableMotor_set(void *c,int a) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	o->m_enableMotor = a;+}+int btRotationalLimitMotor_m_enableMotor_get(void *c) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	return (int)(o->m_enableMotor);+}++//attribute: ::btScalar btRotationalLimitMotor->m_hiLimit+void btRotationalLimitMotor_m_hiLimit_set(void *c,float a) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	o->m_hiLimit = a;+}+float btRotationalLimitMotor_m_hiLimit_get(void *c) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	return (float)(o->m_hiLimit);+}++//attribute: ::btScalar btRotationalLimitMotor->m_limitSoftness+void btRotationalLimitMotor_m_limitSoftness_set(void *c,float a) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	o->m_limitSoftness = a;+}+float btRotationalLimitMotor_m_limitSoftness_get(void *c) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	return (float)(o->m_limitSoftness);+}++//attribute: ::btScalar btRotationalLimitMotor->m_loLimit+void btRotationalLimitMotor_m_loLimit_set(void *c,float a) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	o->m_loLimit = a;+}+float btRotationalLimitMotor_m_loLimit_get(void *c) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	return (float)(o->m_loLimit);+}++//attribute: ::btScalar btRotationalLimitMotor->m_maxLimitForce+void btRotationalLimitMotor_m_maxLimitForce_set(void *c,float a) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	o->m_maxLimitForce = a;+}+float btRotationalLimitMotor_m_maxLimitForce_get(void *c) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	return (float)(o->m_maxLimitForce);+}++//attribute: ::btScalar btRotationalLimitMotor->m_maxMotorForce+void btRotationalLimitMotor_m_maxMotorForce_set(void *c,float a) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	o->m_maxMotorForce = a;+}+float btRotationalLimitMotor_m_maxMotorForce_get(void *c) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	return (float)(o->m_maxMotorForce);+}++//attribute: ::btScalar btRotationalLimitMotor->m_normalCFM+void btRotationalLimitMotor_m_normalCFM_set(void *c,float a) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	o->m_normalCFM = a;+}+float btRotationalLimitMotor_m_normalCFM_get(void *c) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	return (float)(o->m_normalCFM);+}++//attribute: ::btScalar btRotationalLimitMotor->m_stopCFM+void btRotationalLimitMotor_m_stopCFM_set(void *c,float a) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	o->m_stopCFM = a;+}+float btRotationalLimitMotor_m_stopCFM_get(void *c) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	return (float)(o->m_stopCFM);+}++//attribute: ::btScalar btRotationalLimitMotor->m_stopERP+void btRotationalLimitMotor_m_stopERP_set(void *c,float a) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	o->m_stopERP = a;+}+float btRotationalLimitMotor_m_stopERP_get(void *c) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	return (float)(o->m_stopERP);+}++//attribute: ::btScalar btRotationalLimitMotor->m_targetVelocity+void btRotationalLimitMotor_m_targetVelocity_set(void *c,float a) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	o->m_targetVelocity = a;+}+float btRotationalLimitMotor_m_targetVelocity_get(void *c) {+	::btRotationalLimitMotor *o = (::btRotationalLimitMotor*)c;+	return (float)(o->m_targetVelocity);+}+++// ::btSequentialImpulseConstraintSolver+//constructor: btSequentialImpulseConstraintSolver  ( ::btSequentialImpulseConstraintSolver::* )(  ) +void* btSequentialImpulseConstraintSolver_new() {+	::btSequentialImpulseConstraintSolver *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSequentialImpulseConstraintSolver),16);+	o = new (mem)::btSequentialImpulseConstraintSolver();+	return (void*)o;+}+void btSequentialImpulseConstraintSolver_free(void *c) {+	::btSequentialImpulseConstraintSolver *o = (::btSequentialImpulseConstraintSolver*)c;+	delete o;+}+//method: reset void ( ::btSequentialImpulseConstraintSolver::* )(  ) +void btSequentialImpulseConstraintSolver_reset(void *c) {+	::btSequentialImpulseConstraintSolver *o = (::btSequentialImpulseConstraintSolver*)c;+	o->reset();+}+//method: btRand2 long unsigned int ( ::btSequentialImpulseConstraintSolver::* )(  ) +long unsigned int btSequentialImpulseConstraintSolver_btRand2(void *c) {+	::btSequentialImpulseConstraintSolver *o = (::btSequentialImpulseConstraintSolver*)c;+	long unsigned int retVal = (long unsigned int)o->btRand2();+	return retVal;+}+//method: getRandSeed long unsigned int ( ::btSequentialImpulseConstraintSolver::* )(  ) const+long unsigned int btSequentialImpulseConstraintSolver_getRandSeed(void *c) {+	::btSequentialImpulseConstraintSolver *o = (::btSequentialImpulseConstraintSolver*)c;+	long unsigned int retVal = (long unsigned int)o->getRandSeed();+	return retVal;+}+//method: setRandSeed void ( ::btSequentialImpulseConstraintSolver::* )( long unsigned int ) +void btSequentialImpulseConstraintSolver_setRandSeed(void *c,long unsigned int p0) {+	::btSequentialImpulseConstraintSolver *o = (::btSequentialImpulseConstraintSolver*)c;+	o->setRandSeed(p0);+}+//not supported method: solveGroup ::btScalar ( ::btSequentialImpulseConstraintSolver::* )( ::btCollisionObject * *,int,::btPersistentManifold * *,int,::btTypedConstraint * *,int,::btContactSolverInfo const &,::btIDebugDraw *,::btStackAlloc *,::btDispatcher * ) +//method: btRandInt2 int ( ::btSequentialImpulseConstraintSolver::* )( int ) +int btSequentialImpulseConstraintSolver_btRandInt2(void *c,int p0) {+	::btSequentialImpulseConstraintSolver *o = (::btSequentialImpulseConstraintSolver*)c;+	int retVal = (int)o->btRandInt2(p0);+	return retVal;+}++// ::btSliderConstraint+//constructor: btSliderConstraint  ( ::btSliderConstraint::* )( ::btRigidBody &,::btRigidBody &,::btTransform const &,::btTransform const &,bool ) +void* btSliderConstraint_new0(void* p0,void* p1,float* p2,float* p3,int p4) {+	::btSliderConstraint *o = 0;+	 void *mem = 0;+	::btRigidBody & tp0 = *(::btRigidBody *)p0;+	::btRigidBody & tp1 = *(::btRigidBody *)p1;+	btMatrix3x3 mtp2(p2[0],p2[1],p2[2],p2[3],p2[4],p2[5],p2[6],p2[7],p2[8]);+	btVector3 vtp2(p2[9],p2[10],p2[11]);+	btTransform tp2(mtp2,vtp2);+	btMatrix3x3 mtp3(p3[0],p3[1],p3[2],p3[3],p3[4],p3[5],p3[6],p3[7],p3[8]);+	btVector3 vtp3(p3[9],p3[10],p3[11]);+	btTransform tp3(mtp3,vtp3);+	mem = btAlignedAlloc(sizeof(::btSliderConstraint),16);+	o = new (mem)::btSliderConstraint(tp0,tp1,tp2,tp3,p4);+	p2[0]=tp2.getBasis().getRow(0).m_floats[0];p2[1]=tp2.getBasis().getRow(0).m_floats[1];p2[2]=tp2.getBasis().getRow(0).m_floats[2];p2[3]=tp2.getBasis().getRow(1).m_floats[0];p2[4]=tp2.getBasis().getRow(1).m_floats[1];p2[5]=tp2.getBasis().getRow(1).m_floats[2];p2[6]=tp2.getBasis().getRow(2).m_floats[0];p2[7]=tp2.getBasis().getRow(2).m_floats[1];p2[8]=tp2.getBasis().getRow(2).m_floats[2];+	p2[9]=tp2.getOrigin().m_floats[0];p2[10]=tp2.getOrigin().m_floats[1];p2[11]=tp2.getOrigin().m_floats[2];+	p3[0]=tp3.getBasis().getRow(0).m_floats[0];p3[1]=tp3.getBasis().getRow(0).m_floats[1];p3[2]=tp3.getBasis().getRow(0).m_floats[2];p3[3]=tp3.getBasis().getRow(1).m_floats[0];p3[4]=tp3.getBasis().getRow(1).m_floats[1];p3[5]=tp3.getBasis().getRow(1).m_floats[2];p3[6]=tp3.getBasis().getRow(2).m_floats[0];p3[7]=tp3.getBasis().getRow(2).m_floats[1];p3[8]=tp3.getBasis().getRow(2).m_floats[2];+	p3[9]=tp3.getOrigin().m_floats[0];p3[10]=tp3.getOrigin().m_floats[1];p3[11]=tp3.getOrigin().m_floats[2];+	return (void*)o;+}+//constructor: btSliderConstraint  ( ::btSliderConstraint::* )( ::btRigidBody &,::btTransform const &,bool ) +void* btSliderConstraint_new1(void* p0,float* p1,int p2) {+	::btSliderConstraint *o = 0;+	 void *mem = 0;+	::btRigidBody & tp0 = *(::btRigidBody *)p0;+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	mem = btAlignedAlloc(sizeof(::btSliderConstraint),16);+	o = new (mem)::btSliderConstraint(tp0,tp1,p2);+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+	return (void*)o;+}+void btSliderConstraint_free(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	delete o;+}+//method: getRigidBodyB ::btRigidBody const & ( ::btSliderConstraint::* )(  ) const+void* btSliderConstraint_getRigidBodyB(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	void* retVal = (void*) &(o->getRigidBodyB());+	return retVal;+}+//method: setPoweredAngMotor void ( ::btSliderConstraint::* )( bool ) +void btSliderConstraint_setPoweredAngMotor(void *c,int p0) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	o->setPoweredAngMotor(p0);+}+//method: getInfo2NonVirtual void ( ::btSliderConstraint::* )( ::btTypedConstraint::btConstraintInfo2 *,::btTransform const &,::btTransform const &,::btVector3 const &,::btVector3 const &,::btScalar,::btScalar ) +void btSliderConstraint_getInfo2NonVirtual(void *c,void* p0,float* p1,float* p2,float* p3,float* p4,float p5,float p6) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	::btTypedConstraint::btConstraintInfo2 * tp0 = (::btTypedConstraint::btConstraintInfo2 *)p0;+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	btMatrix3x3 mtp2(p2[0],p2[1],p2[2],p2[3],p2[4],p2[5],p2[6],p2[7],p2[8]);+	btVector3 vtp2(p2[9],p2[10],p2[11]);+	btTransform tp2(mtp2,vtp2);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	btVector3 tp4(p4[0],p4[1],p4[2]);+	o->getInfo2NonVirtual(tp0,tp1,tp2,tp3,tp4,p5,p6);+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+	p2[0]=tp2.getBasis().getRow(0).m_floats[0];p2[1]=tp2.getBasis().getRow(0).m_floats[1];p2[2]=tp2.getBasis().getRow(0).m_floats[2];p2[3]=tp2.getBasis().getRow(1).m_floats[0];p2[4]=tp2.getBasis().getRow(1).m_floats[1];p2[5]=tp2.getBasis().getRow(1).m_floats[2];p2[6]=tp2.getBasis().getRow(2).m_floats[0];p2[7]=tp2.getBasis().getRow(2).m_floats[1];p2[8]=tp2.getBasis().getRow(2).m_floats[2];+	p2[9]=tp2.getOrigin().m_floats[0];p2[10]=tp2.getOrigin().m_floats[1];p2[11]=tp2.getOrigin().m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+	p4[0]=tp4.m_floats[0];p4[1]=tp4.m_floats[1];p4[2]=tp4.m_floats[2];+}+//method: getRigidBodyA ::btRigidBody const & ( ::btSliderConstraint::* )(  ) const+void* btSliderConstraint_getRigidBodyA(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	void* retVal = (void*) &(o->getRigidBodyA());+	return retVal;+}+//method: getDampingLimAng ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getDampingLimAng(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	float retVal = (float)o->getDampingLimAng();+	return retVal;+}+//method: setRestitutionOrthoLin void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_setRestitutionOrthoLin(void *c,float p0) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	o->setRestitutionOrthoLin(p0);+}+//method: setRestitutionDirLin void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_setRestitutionDirLin(void *c,float p0) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	o->setRestitutionDirLin(p0);+}+//method: getLinearPos ::btScalar ( ::btSliderConstraint::* )(  ) const+float btSliderConstraint_getLinearPos(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	float retVal = (float)o->getLinearPos();+	return retVal;+}+//method: getFrameOffsetA ::btTransform const & ( ::btSliderConstraint::* )(  ) const+void btSliderConstraint_getFrameOffsetA(void *c,float* ret) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getFrameOffsetA();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: getFrameOffsetA ::btTransform const & ( ::btSliderConstraint::* )(  ) const+void btSliderConstraint_getFrameOffsetA0(void *c,float* ret) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getFrameOffsetA();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: getFrameOffsetA ::btTransform & ( ::btSliderConstraint::* )(  ) +void btSliderConstraint_getFrameOffsetA1(void *c,float* ret) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getFrameOffsetA();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: getFrameOffsetB ::btTransform const & ( ::btSliderConstraint::* )(  ) const+void btSliderConstraint_getFrameOffsetB(void *c,float* ret) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getFrameOffsetB();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: getFrameOffsetB ::btTransform const & ( ::btSliderConstraint::* )(  ) const+void btSliderConstraint_getFrameOffsetB0(void *c,float* ret) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getFrameOffsetB();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: getFrameOffsetB ::btTransform & ( ::btSliderConstraint::* )(  ) +void btSliderConstraint_getFrameOffsetB1(void *c,float* ret) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getFrameOffsetB();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: setPoweredLinMotor void ( ::btSliderConstraint::* )( bool ) +void btSliderConstraint_setPoweredLinMotor(void *c,int p0) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	o->setPoweredLinMotor(p0);+}+//method: getCalculatedTransformB ::btTransform const & ( ::btSliderConstraint::* )(  ) const+void btSliderConstraint_getCalculatedTransformB(void *c,float* ret) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getCalculatedTransformB();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: getCalculatedTransformA ::btTransform const & ( ::btSliderConstraint::* )(  ) const+void btSliderConstraint_getCalculatedTransformA(void *c,float* ret) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getCalculatedTransformA();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: getRestitutionLimLin ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getRestitutionLimLin(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	float retVal = (float)o->getRestitutionLimLin();+	return retVal;+}+//method: getSoftnessOrthoAng ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getSoftnessOrthoAng(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	float retVal = (float)o->getSoftnessOrthoAng();+	return retVal;+}+//method: setSoftnessOrthoLin void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_setSoftnessOrthoLin(void *c,float p0) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	o->setSoftnessOrthoLin(p0);+}+//method: calculateSerializeBufferSize int ( ::btSliderConstraint::* )(  ) const+int btSliderConstraint_calculateSerializeBufferSize(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	int retVal = (int)o->calculateSerializeBufferSize();+	return retVal;+}+//method: setSoftnessLimLin void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_setSoftnessLimLin(void *c,float p0) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	o->setSoftnessLimLin(p0);+}+//method: getAngularPos ::btScalar ( ::btSliderConstraint::* )(  ) const+float btSliderConstraint_getAngularPos(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	float retVal = (float)o->getAngularPos();+	return retVal;+}+//method: setRestitutionLimAng void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_setRestitutionLimAng(void *c,float p0) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	o->setRestitutionLimAng(p0);+}+//method: getParam ::btScalar ( ::btSliderConstraint::* )( int,int ) const+float btSliderConstraint_getParam(void *c,int p0,int p1) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	float retVal = (float)o->getParam(p0,p1);+	return retVal;+}+//method: getInfo1 void ( ::btSliderConstraint::* )( ::btTypedConstraint::btConstraintInfo1 * ) +void btSliderConstraint_getInfo1(void *c,void* p0) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	::btTypedConstraint::btConstraintInfo1 * tp0 = (::btTypedConstraint::btConstraintInfo1 *)p0;+	o->getInfo1(tp0);+}+//method: getInfo2 void ( ::btSliderConstraint::* )( ::btTypedConstraint::btConstraintInfo2 * ) +void btSliderConstraint_getInfo2(void *c,void* p0) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	::btTypedConstraint::btConstraintInfo2 * tp0 = (::btTypedConstraint::btConstraintInfo2 *)p0;+	o->getInfo2(tp0);+}+//method: setParam void ( ::btSliderConstraint::* )( int,::btScalar,int ) +void btSliderConstraint_setParam(void *c,int p0,float p1,int p2) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	o->setParam(p0,p1,p2);+}+//method: setUpperLinLimit void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_setUpperLinLimit(void *c,float p0) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	o->setUpperLinLimit(p0);+}+//method: setDampingDirLin void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_setDampingDirLin(void *c,float p0) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	o->setDampingDirLin(p0);+}+//method: getUpperAngLimit ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getUpperAngLimit(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	float retVal = (float)o->getUpperAngLimit();+	return retVal;+}+//method: setRestitutionDirAng void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_setRestitutionDirAng(void *c,float p0) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	o->setRestitutionDirAng(p0);+}+//method: getDampingDirLin ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getDampingDirLin(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	float retVal = (float)o->getDampingDirLin();+	return retVal;+}+//method: getAngDepth ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getAngDepth(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	float retVal = (float)o->getAngDepth();+	return retVal;+}+//method: getSoftnessDirAng ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getSoftnessDirAng(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	float retVal = (float)o->getSoftnessDirAng();+	return retVal;+}+//method: getPoweredAngMotor bool ( ::btSliderConstraint::* )(  ) +int btSliderConstraint_getPoweredAngMotor(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	int retVal = (int)o->getPoweredAngMotor();+	return retVal;+}+//method: setLowerAngLimit void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_setLowerAngLimit(void *c,float p0) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	o->setLowerAngLimit(p0);+}+//method: setUpperAngLimit void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_setUpperAngLimit(void *c,float p0) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	o->setUpperAngLimit(p0);+}+//method: setTargetLinMotorVelocity void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_setTargetLinMotorVelocity(void *c,float p0) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	o->setTargetLinMotorVelocity(p0);+}+//method: setDampingLimAng void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_setDampingLimAng(void *c,float p0) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	o->setDampingLimAng(p0);+}+//method: getRestitutionLimAng ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getRestitutionLimAng(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	float retVal = (float)o->getRestitutionLimAng();+	return retVal;+}+//method: getUseFrameOffset bool ( ::btSliderConstraint::* )(  ) +int btSliderConstraint_getUseFrameOffset(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	int retVal = (int)o->getUseFrameOffset();+	return retVal;+}+//method: getSoftnessOrthoLin ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getSoftnessOrthoLin(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	float retVal = (float)o->getSoftnessOrthoLin();+	return retVal;+}+//method: getDampingOrthoAng ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getDampingOrthoAng(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	float retVal = (float)o->getDampingOrthoAng();+	return retVal;+}+//method: setUseFrameOffset void ( ::btSliderConstraint::* )( bool ) +void btSliderConstraint_setUseFrameOffset(void *c,int p0) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	o->setUseFrameOffset(p0);+}+//method: setLowerLinLimit void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_setLowerLinLimit(void *c,float p0) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	o->setLowerLinLimit(p0);+}+//method: getRestitutionDirLin ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getRestitutionDirLin(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	float retVal = (float)o->getRestitutionDirLin();+	return retVal;+}+//method: getTargetLinMotorVelocity ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getTargetLinMotorVelocity(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	float retVal = (float)o->getTargetLinMotorVelocity();+	return retVal;+}+//method: testLinLimits void ( ::btSliderConstraint::* )(  ) +void btSliderConstraint_testLinLimits(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	o->testLinLimits();+}+//method: getLowerLinLimit ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getLowerLinLimit(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	float retVal = (float)o->getLowerLinLimit();+	return retVal;+}+//method: setFrames void ( ::btSliderConstraint::* )( ::btTransform const &,::btTransform const & ) +void btSliderConstraint_setFrames(void *c,float* p0,float* p1) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	o->setFrames(tp0,tp1);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+}+//method: getSoftnessLimLin ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getSoftnessLimLin(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	float retVal = (float)o->getSoftnessLimLin();+	return retVal;+}+//method: getInfo1NonVirtual void ( ::btSliderConstraint::* )( ::btTypedConstraint::btConstraintInfo1 * ) +void btSliderConstraint_getInfo1NonVirtual(void *c,void* p0) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	::btTypedConstraint::btConstraintInfo1 * tp0 = (::btTypedConstraint::btConstraintInfo1 *)p0;+	o->getInfo1NonVirtual(tp0);+}+//method: setDampingOrthoAng void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_setDampingOrthoAng(void *c,float p0) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	o->setDampingOrthoAng(p0);+}+//method: setSoftnessDirAng void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_setSoftnessDirAng(void *c,float p0) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	o->setSoftnessDirAng(p0);+}+//method: getAncorInA ::btVector3 ( ::btSliderConstraint::* )(  ) +void btSliderConstraint_getAncorInA(void *c,float* ret) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getAncorInA();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getPoweredLinMotor bool ( ::btSliderConstraint::* )(  ) +int btSliderConstraint_getPoweredLinMotor(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	int retVal = (int)o->getPoweredLinMotor();+	return retVal;+}+//method: getAncorInB ::btVector3 ( ::btSliderConstraint::* )(  ) +void btSliderConstraint_getAncorInB(void *c,float* ret) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getAncorInB();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: setRestitutionOrthoAng void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_setRestitutionOrthoAng(void *c,float p0) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	o->setRestitutionOrthoAng(p0);+}+//method: setDampingDirAng void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_setDampingDirAng(void *c,float p0) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	o->setDampingDirAng(p0);+}+//method: getSolveLinLimit bool ( ::btSliderConstraint::* )(  ) +int btSliderConstraint_getSolveLinLimit(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	int retVal = (int)o->getSolveLinLimit();+	return retVal;+}+//method: getRestitutionOrthoAng ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getRestitutionOrthoAng(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	float retVal = (float)o->getRestitutionOrthoAng();+	return retVal;+}+//method: getMaxAngMotorForce ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getMaxAngMotorForce(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	float retVal = (float)o->getMaxAngMotorForce();+	return retVal;+}+//method: getDampingDirAng ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getDampingDirAng(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	float retVal = (float)o->getDampingDirAng();+	return retVal;+}+//method: calculateTransforms void ( ::btSliderConstraint::* )( ::btTransform const &,::btTransform const & ) +void btSliderConstraint_calculateTransforms(void *c,float* p0,float* p1) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	o->calculateTransforms(tp0,tp1);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+}+//method: getUpperLinLimit ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getUpperLinLimit(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	float retVal = (float)o->getUpperLinLimit();+	return retVal;+}+//method: getLinDepth ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getLinDepth(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	float retVal = (float)o->getLinDepth();+	return retVal;+}+//method: setMaxLinMotorForce void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_setMaxLinMotorForce(void *c,float p0) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	o->setMaxLinMotorForce(p0);+}+//method: getRestitutionOrthoLin ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getRestitutionOrthoLin(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	float retVal = (float)o->getRestitutionOrthoLin();+	return retVal;+}+//not supported method: serialize char const * ( ::btSliderConstraint::* )( void *,::btSerializer * ) const+//method: setTargetAngMotorVelocity void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_setTargetAngMotorVelocity(void *c,float p0) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	o->setTargetAngMotorVelocity(p0);+}+//method: getSoftnessLimAng ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getSoftnessLimAng(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	float retVal = (float)o->getSoftnessLimAng();+	return retVal;+}+//method: getDampingOrthoLin ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getDampingOrthoLin(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	float retVal = (float)o->getDampingOrthoLin();+	return retVal;+}+//method: getDampingLimLin ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getDampingLimLin(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	float retVal = (float)o->getDampingLimLin();+	return retVal;+}+//method: getLowerAngLimit ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getLowerAngLimit(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	float retVal = (float)o->getLowerAngLimit();+	return retVal;+}+//method: getRestitutionDirAng ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getRestitutionDirAng(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	float retVal = (float)o->getRestitutionDirAng();+	return retVal;+}+//method: getTargetAngMotorVelocity ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getTargetAngMotorVelocity(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	float retVal = (float)o->getTargetAngMotorVelocity();+	return retVal;+}+//method: setRestitutionLimLin void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_setRestitutionLimLin(void *c,float p0) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	o->setRestitutionLimLin(p0);+}+//method: testAngLimits void ( ::btSliderConstraint::* )(  ) +void btSliderConstraint_testAngLimits(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	o->testAngLimits();+}+//method: getMaxLinMotorForce ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getMaxLinMotorForce(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	float retVal = (float)o->getMaxLinMotorForce();+	return retVal;+}+//method: setDampingOrthoLin void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_setDampingOrthoLin(void *c,float p0) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	o->setDampingOrthoLin(p0);+}+//method: setSoftnessOrthoAng void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_setSoftnessOrthoAng(void *c,float p0) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	o->setSoftnessOrthoAng(p0);+}+//method: getSolveAngLimit bool ( ::btSliderConstraint::* )(  ) +int btSliderConstraint_getSolveAngLimit(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	int retVal = (int)o->getSolveAngLimit();+	return retVal;+}+//method: setDampingLimLin void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_setDampingLimLin(void *c,float p0) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	o->setDampingLimLin(p0);+}+//method: setSoftnessDirLin void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_setSoftnessDirLin(void *c,float p0) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	o->setSoftnessDirLin(p0);+}+//method: setMaxAngMotorForce void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_setMaxAngMotorForce(void *c,float p0) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	o->setMaxAngMotorForce(p0);+}+//method: getSoftnessDirLin ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getSoftnessDirLin(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	float retVal = (float)o->getSoftnessDirLin();+	return retVal;+}+//method: setSoftnessLimAng void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_setSoftnessLimAng(void *c,float p0) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	o->setSoftnessLimAng(p0);+}+//method: getUseLinearReferenceFrameA bool ( ::btSliderConstraint::* )(  ) +int btSliderConstraint_getUseLinearReferenceFrameA(void *c) {+	::btSliderConstraint *o = (::btSliderConstraint*)c;+	int retVal = (int)o->getUseLinearReferenceFrameA();+	return retVal;+}++// ::btSliderConstraintData+//constructor: btSliderConstraintData  ( ::btSliderConstraintData::* )(  ) +void* btSliderConstraintData_new() {+	::btSliderConstraintData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSliderConstraintData),16);+	o = new (mem)::btSliderConstraintData();+	return (void*)o;+}+void btSliderConstraintData_free(void *c) {+	::btSliderConstraintData *o = (::btSliderConstraintData*)c;+	delete o;+}+//attribute: ::btTypedConstraintData btSliderConstraintData->m_typeConstraintData+// attribute not supported: //attribute: ::btTypedConstraintData btSliderConstraintData->m_typeConstraintData+//attribute: ::btTransformFloatData btSliderConstraintData->m_rbAFrame+// attribute not supported: //attribute: ::btTransformFloatData btSliderConstraintData->m_rbAFrame+//attribute: ::btTransformFloatData btSliderConstraintData->m_rbBFrame+// attribute not supported: //attribute: ::btTransformFloatData btSliderConstraintData->m_rbBFrame+//attribute: float btSliderConstraintData->m_linearUpperLimit+void btSliderConstraintData_m_linearUpperLimit_set(void *c,float a) {+	::btSliderConstraintData *o = (::btSliderConstraintData*)c;+	o->m_linearUpperLimit = a;+}+float btSliderConstraintData_m_linearUpperLimit_get(void *c) {+	::btSliderConstraintData *o = (::btSliderConstraintData*)c;+	return (float)(o->m_linearUpperLimit);+}++//attribute: float btSliderConstraintData->m_linearLowerLimit+void btSliderConstraintData_m_linearLowerLimit_set(void *c,float a) {+	::btSliderConstraintData *o = (::btSliderConstraintData*)c;+	o->m_linearLowerLimit = a;+}+float btSliderConstraintData_m_linearLowerLimit_get(void *c) {+	::btSliderConstraintData *o = (::btSliderConstraintData*)c;+	return (float)(o->m_linearLowerLimit);+}++//attribute: float btSliderConstraintData->m_angularUpperLimit+void btSliderConstraintData_m_angularUpperLimit_set(void *c,float a) {+	::btSliderConstraintData *o = (::btSliderConstraintData*)c;+	o->m_angularUpperLimit = a;+}+float btSliderConstraintData_m_angularUpperLimit_get(void *c) {+	::btSliderConstraintData *o = (::btSliderConstraintData*)c;+	return (float)(o->m_angularUpperLimit);+}++//attribute: float btSliderConstraintData->m_angularLowerLimit+void btSliderConstraintData_m_angularLowerLimit_set(void *c,float a) {+	::btSliderConstraintData *o = (::btSliderConstraintData*)c;+	o->m_angularLowerLimit = a;+}+float btSliderConstraintData_m_angularLowerLimit_get(void *c) {+	::btSliderConstraintData *o = (::btSliderConstraintData*)c;+	return (float)(o->m_angularLowerLimit);+}++//attribute: int btSliderConstraintData->m_useLinearReferenceFrameA+void btSliderConstraintData_m_useLinearReferenceFrameA_set(void *c,int a) {+	::btSliderConstraintData *o = (::btSliderConstraintData*)c;+	o->m_useLinearReferenceFrameA = a;+}+int btSliderConstraintData_m_useLinearReferenceFrameA_get(void *c) {+	::btSliderConstraintData *o = (::btSliderConstraintData*)c;+	return (int)(o->m_useLinearReferenceFrameA);+}++//attribute: int btSliderConstraintData->m_useOffsetForConstraintFrame+void btSliderConstraintData_m_useOffsetForConstraintFrame_set(void *c,int a) {+	::btSliderConstraintData *o = (::btSliderConstraintData*)c;+	o->m_useOffsetForConstraintFrame = a;+}+int btSliderConstraintData_m_useOffsetForConstraintFrame_get(void *c) {+	::btSliderConstraintData *o = (::btSliderConstraintData*)c;+	return (int)(o->m_useOffsetForConstraintFrame);+}+++// ::btSolverBodyObsolete+//constructor: btSolverBodyObsolete  ( ::btSolverBodyObsolete::* )(  ) +void* btSolverBodyObsolete_new() {+	::btSolverBodyObsolete *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSolverBodyObsolete),16);+	o = new (mem)::btSolverBodyObsolete();+	return (void*)o;+}+void btSolverBodyObsolete_free(void *c) {+	::btSolverBodyObsolete *o = (::btSolverBodyObsolete*)c;+	delete o;+}+//not supported method: applyImpulse void ( ::btSolverBodyObsolete::* )( ::btVector3 const &,::btVector3 const &,::btScalar const ) +//method: getAngularVelocity void ( ::btSolverBodyObsolete::* )( ::btVector3 & ) const+void btSolverBodyObsolete_getAngularVelocity(void *c,float* p0) {+	::btSolverBodyObsolete *o = (::btSolverBodyObsolete*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->getAngularVelocity(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: writebackVelocity void ( ::btSolverBodyObsolete::* )(  ) +void btSolverBodyObsolete_writebackVelocity(void *c) {+	::btSolverBodyObsolete *o = (::btSolverBodyObsolete*)c;+	o->writebackVelocity();+}+//method: writebackVelocity void ( ::btSolverBodyObsolete::* )(  ) +void btSolverBodyObsolete_writebackVelocity0(void *c) {+	::btSolverBodyObsolete *o = (::btSolverBodyObsolete*)c;+	o->writebackVelocity();+}+//method: writebackVelocity void ( ::btSolverBodyObsolete::* )( ::btScalar ) +void btSolverBodyObsolete_writebackVelocity1(void *c,float p0) {+	::btSolverBodyObsolete *o = (::btSolverBodyObsolete*)c;+	o->writebackVelocity(p0);+}+//method: internalApplyPushImpulse void ( ::btSolverBodyObsolete::* )( ::btVector3 const &,::btVector3 const &,::btScalar ) +void btSolverBodyObsolete_internalApplyPushImpulse(void *c,float* p0,float* p1,float p2) {+	::btSolverBodyObsolete *o = (::btSolverBodyObsolete*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->internalApplyPushImpulse(tp0,tp1,p2);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: getVelocityInLocalPointObsolete void ( ::btSolverBodyObsolete::* )( ::btVector3 const &,::btVector3 & ) const+void btSolverBodyObsolete_getVelocityInLocalPointObsolete(void *c,float* p0,float* p1) {+	::btSolverBodyObsolete *o = (::btSolverBodyObsolete*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->getVelocityInLocalPointObsolete(tp0,tp1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//attribute: ::btVector3 btSolverBodyObsolete->m_deltaLinearVelocity+void btSolverBodyObsolete_m_deltaLinearVelocity_set(void *c,float* a) {+	::btSolverBodyObsolete *o = (::btSolverBodyObsolete*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_deltaLinearVelocity = ta;+}+void btSolverBodyObsolete_m_deltaLinearVelocity_get(void *c,float* a) {+	::btSolverBodyObsolete *o = (::btSolverBodyObsolete*)c;+	a[0]=(o->m_deltaLinearVelocity).m_floats[0];a[1]=(o->m_deltaLinearVelocity).m_floats[1];a[2]=(o->m_deltaLinearVelocity).m_floats[2];+}++//attribute: ::btVector3 btSolverBodyObsolete->m_deltaAngularVelocity+void btSolverBodyObsolete_m_deltaAngularVelocity_set(void *c,float* a) {+	::btSolverBodyObsolete *o = (::btSolverBodyObsolete*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_deltaAngularVelocity = ta;+}+void btSolverBodyObsolete_m_deltaAngularVelocity_get(void *c,float* a) {+	::btSolverBodyObsolete *o = (::btSolverBodyObsolete*)c;+	a[0]=(o->m_deltaAngularVelocity).m_floats[0];a[1]=(o->m_deltaAngularVelocity).m_floats[1];a[2]=(o->m_deltaAngularVelocity).m_floats[2];+}++//attribute: ::btVector3 btSolverBodyObsolete->m_angularFactor+void btSolverBodyObsolete_m_angularFactor_set(void *c,float* a) {+	::btSolverBodyObsolete *o = (::btSolverBodyObsolete*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_angularFactor = ta;+}+void btSolverBodyObsolete_m_angularFactor_get(void *c,float* a) {+	::btSolverBodyObsolete *o = (::btSolverBodyObsolete*)c;+	a[0]=(o->m_angularFactor).m_floats[0];a[1]=(o->m_angularFactor).m_floats[1];a[2]=(o->m_angularFactor).m_floats[2];+}++//attribute: ::btVector3 btSolverBodyObsolete->m_invMass+void btSolverBodyObsolete_m_invMass_set(void *c,float* a) {+	::btSolverBodyObsolete *o = (::btSolverBodyObsolete*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_invMass = ta;+}+void btSolverBodyObsolete_m_invMass_get(void *c,float* a) {+	::btSolverBodyObsolete *o = (::btSolverBodyObsolete*)c;+	a[0]=(o->m_invMass).m_floats[0];a[1]=(o->m_invMass).m_floats[1];a[2]=(o->m_invMass).m_floats[2];+}++//attribute: ::btRigidBody * btSolverBodyObsolete->m_originalBody+void btSolverBodyObsolete_m_originalBody_set(void *c,void* a) {+	::btSolverBodyObsolete *o = (::btSolverBodyObsolete*)c;+	::btRigidBody * ta = (::btRigidBody *)a;+	o->m_originalBody = ta;+}+// attriibute getter not supported: //attribute: ::btRigidBody * btSolverBodyObsolete->m_originalBody+//attribute: ::btVector3 btSolverBodyObsolete->m_pushVelocity+void btSolverBodyObsolete_m_pushVelocity_set(void *c,float* a) {+	::btSolverBodyObsolete *o = (::btSolverBodyObsolete*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_pushVelocity = ta;+}+void btSolverBodyObsolete_m_pushVelocity_get(void *c,float* a) {+	::btSolverBodyObsolete *o = (::btSolverBodyObsolete*)c;+	a[0]=(o->m_pushVelocity).m_floats[0];a[1]=(o->m_pushVelocity).m_floats[1];a[2]=(o->m_pushVelocity).m_floats[2];+}++//attribute: ::btVector3 btSolverBodyObsolete->m_turnVelocity+void btSolverBodyObsolete_m_turnVelocity_set(void *c,float* a) {+	::btSolverBodyObsolete *o = (::btSolverBodyObsolete*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_turnVelocity = ta;+}+void btSolverBodyObsolete_m_turnVelocity_get(void *c,float* a) {+	::btSolverBodyObsolete *o = (::btSolverBodyObsolete*)c;+	a[0]=(o->m_turnVelocity).m_floats[0];a[1]=(o->m_turnVelocity).m_floats[1];a[2]=(o->m_turnVelocity).m_floats[2];+}+++// ::btSolverConstraint+//constructor: btSolverConstraint  ( ::btSolverConstraint::* )(  ) +void* btSolverConstraint_new() {+	::btSolverConstraint *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSolverConstraint),16);+	o = new (mem)::btSolverConstraint();+	return (void*)o;+}+void btSolverConstraint_free(void *c) {+	::btSolverConstraint *o = (::btSolverConstraint*)c;+	delete o;+}+//attribute: ::btVector3 btSolverConstraint->m_relpos1CrossNormal+void btSolverConstraint_m_relpos1CrossNormal_set(void *c,float* a) {+	::btSolverConstraint *o = (::btSolverConstraint*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_relpos1CrossNormal = ta;+}+void btSolverConstraint_m_relpos1CrossNormal_get(void *c,float* a) {+	::btSolverConstraint *o = (::btSolverConstraint*)c;+	a[0]=(o->m_relpos1CrossNormal).m_floats[0];a[1]=(o->m_relpos1CrossNormal).m_floats[1];a[2]=(o->m_relpos1CrossNormal).m_floats[2];+}++//attribute: ::btVector3 btSolverConstraint->m_contactNormal+void btSolverConstraint_m_contactNormal_set(void *c,float* a) {+	::btSolverConstraint *o = (::btSolverConstraint*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_contactNormal = ta;+}+void btSolverConstraint_m_contactNormal_get(void *c,float* a) {+	::btSolverConstraint *o = (::btSolverConstraint*)c;+	a[0]=(o->m_contactNormal).m_floats[0];a[1]=(o->m_contactNormal).m_floats[1];a[2]=(o->m_contactNormal).m_floats[2];+}++//attribute: ::btVector3 btSolverConstraint->m_relpos2CrossNormal+void btSolverConstraint_m_relpos2CrossNormal_set(void *c,float* a) {+	::btSolverConstraint *o = (::btSolverConstraint*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_relpos2CrossNormal = ta;+}+void btSolverConstraint_m_relpos2CrossNormal_get(void *c,float* a) {+	::btSolverConstraint *o = (::btSolverConstraint*)c;+	a[0]=(o->m_relpos2CrossNormal).m_floats[0];a[1]=(o->m_relpos2CrossNormal).m_floats[1];a[2]=(o->m_relpos2CrossNormal).m_floats[2];+}++//attribute: ::btVector3 btSolverConstraint->m_angularComponentA+void btSolverConstraint_m_angularComponentA_set(void *c,float* a) {+	::btSolverConstraint *o = (::btSolverConstraint*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_angularComponentA = ta;+}+void btSolverConstraint_m_angularComponentA_get(void *c,float* a) {+	::btSolverConstraint *o = (::btSolverConstraint*)c;+	a[0]=(o->m_angularComponentA).m_floats[0];a[1]=(o->m_angularComponentA).m_floats[1];a[2]=(o->m_angularComponentA).m_floats[2];+}++//attribute: ::btVector3 btSolverConstraint->m_angularComponentB+void btSolverConstraint_m_angularComponentB_set(void *c,float* a) {+	::btSolverConstraint *o = (::btSolverConstraint*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_angularComponentB = ta;+}+void btSolverConstraint_m_angularComponentB_get(void *c,float* a) {+	::btSolverConstraint *o = (::btSolverConstraint*)c;+	a[0]=(o->m_angularComponentB).m_floats[0];a[1]=(o->m_angularComponentB).m_floats[1];a[2]=(o->m_angularComponentB).m_floats[2];+}++//attribute: ::btScalar btSolverConstraint->m_appliedPushImpulse+void btSolverConstraint_m_appliedPushImpulse_set(void *c,float a) {+	::btSolverConstraint *o = (::btSolverConstraint*)c;+	o->m_appliedPushImpulse = a;+}+float btSolverConstraint_m_appliedPushImpulse_get(void *c) {+	::btSolverConstraint *o = (::btSolverConstraint*)c;+	return (float)(o->m_appliedPushImpulse);+}++//attribute: ::btScalar btSolverConstraint->m_appliedImpulse+void btSolverConstraint_m_appliedImpulse_set(void *c,float a) {+	::btSolverConstraint *o = (::btSolverConstraint*)c;+	o->m_appliedImpulse = a;+}+float btSolverConstraint_m_appliedImpulse_get(void *c) {+	::btSolverConstraint *o = (::btSolverConstraint*)c;+	return (float)(o->m_appliedImpulse);+}++//attribute: ::btScalar btSolverConstraint->m_friction+void btSolverConstraint_m_friction_set(void *c,float a) {+	::btSolverConstraint *o = (::btSolverConstraint*)c;+	o->m_friction = a;+}+float btSolverConstraint_m_friction_get(void *c) {+	::btSolverConstraint *o = (::btSolverConstraint*)c;+	return (float)(o->m_friction);+}++//attribute: ::btScalar btSolverConstraint->m_jacDiagABInv+void btSolverConstraint_m_jacDiagABInv_set(void *c,float a) {+	::btSolverConstraint *o = (::btSolverConstraint*)c;+	o->m_jacDiagABInv = a;+}+float btSolverConstraint_m_jacDiagABInv_get(void *c) {+	::btSolverConstraint *o = (::btSolverConstraint*)c;+	return (float)(o->m_jacDiagABInv);+}++//attribute: ::btSolverConstraint btSolverConstraint->+// attribute not supported: //attribute: ::btSolverConstraint btSolverConstraint->+//attribute: ::btSolverConstraint btSolverConstraint->+// attribute not supported: //attribute: ::btSolverConstraint btSolverConstraint->+//attribute: ::btSolverConstraint btSolverConstraint->+// attribute not supported: //attribute: ::btSolverConstraint btSolverConstraint->+//attribute: ::btSolverConstraint btSolverConstraint->+// attribute not supported: //attribute: ::btSolverConstraint btSolverConstraint->+//attribute: ::btSolverConstraint btSolverConstraint->+// attribute not supported: //attribute: ::btSolverConstraint btSolverConstraint->+//attribute: ::btScalar btSolverConstraint->m_rhs+void btSolverConstraint_m_rhs_set(void *c,float a) {+	::btSolverConstraint *o = (::btSolverConstraint*)c;+	o->m_rhs = a;+}+float btSolverConstraint_m_rhs_get(void *c) {+	::btSolverConstraint *o = (::btSolverConstraint*)c;+	return (float)(o->m_rhs);+}++//attribute: ::btScalar btSolverConstraint->m_cfm+void btSolverConstraint_m_cfm_set(void *c,float a) {+	::btSolverConstraint *o = (::btSolverConstraint*)c;+	o->m_cfm = a;+}+float btSolverConstraint_m_cfm_get(void *c) {+	::btSolverConstraint *o = (::btSolverConstraint*)c;+	return (float)(o->m_cfm);+}++//attribute: ::btScalar btSolverConstraint->m_lowerLimit+void btSolverConstraint_m_lowerLimit_set(void *c,float a) {+	::btSolverConstraint *o = (::btSolverConstraint*)c;+	o->m_lowerLimit = a;+}+float btSolverConstraint_m_lowerLimit_get(void *c) {+	::btSolverConstraint *o = (::btSolverConstraint*)c;+	return (float)(o->m_lowerLimit);+}++//attribute: ::btScalar btSolverConstraint->m_upperLimit+void btSolverConstraint_m_upperLimit_set(void *c,float a) {+	::btSolverConstraint *o = (::btSolverConstraint*)c;+	o->m_upperLimit = a;+}+float btSolverConstraint_m_upperLimit_get(void *c) {+	::btSolverConstraint *o = (::btSolverConstraint*)c;+	return (float)(o->m_upperLimit);+}++//attribute: ::btScalar btSolverConstraint->m_rhsPenetration+void btSolverConstraint_m_rhsPenetration_set(void *c,float a) {+	::btSolverConstraint *o = (::btSolverConstraint*)c;+	o->m_rhsPenetration = a;+}+float btSolverConstraint_m_rhsPenetration_get(void *c) {+	::btSolverConstraint *o = (::btSolverConstraint*)c;+	return (float)(o->m_rhsPenetration);+}+++// ::btTranslationalLimitMotor+//constructor: btTranslationalLimitMotor  ( ::btTranslationalLimitMotor::* )(  ) +void* btTranslationalLimitMotor_new() {+	::btTranslationalLimitMotor *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btTranslationalLimitMotor),16);+	o = new (mem)::btTranslationalLimitMotor();+	return (void*)o;+}+void btTranslationalLimitMotor_free(void *c) {+	::btTranslationalLimitMotor *o = (::btTranslationalLimitMotor*)c;+	delete o;+}+//method: testLimitValue int ( ::btTranslationalLimitMotor::* )( int,::btScalar ) +int btTranslationalLimitMotor_testLimitValue(void *c,int p0,float p1) {+	::btTranslationalLimitMotor *o = (::btTranslationalLimitMotor*)c;+	int retVal = (int)o->testLimitValue(p0,p1);+	return retVal;+}+//method: needApplyForce bool ( ::btTranslationalLimitMotor::* )( int ) +int btTranslationalLimitMotor_needApplyForce(void *c,int p0) {+	::btTranslationalLimitMotor *o = (::btTranslationalLimitMotor*)c;+	int retVal = (int)o->needApplyForce(p0);+	return retVal;+}+//method: solveLinearAxis ::btScalar ( ::btTranslationalLimitMotor::* )( ::btScalar,::btScalar,::btRigidBody &,::btVector3 const &,::btRigidBody &,::btVector3 const &,int,::btVector3 const &,::btVector3 const & ) +float btTranslationalLimitMotor_solveLinearAxis(void *c,float p0,float p1,void* p2,float* p3,void* p4,float* p5,int p6,float* p7,float* p8) {+	::btTranslationalLimitMotor *o = (::btTranslationalLimitMotor*)c;+	::btRigidBody & tp2 = *(::btRigidBody *)p2;+	btVector3 tp3(p3[0],p3[1],p3[2]);+	::btRigidBody & tp4 = *(::btRigidBody *)p4;+	btVector3 tp5(p5[0],p5[1],p5[2]);+	btVector3 tp7(p7[0],p7[1],p7[2]);+	btVector3 tp8(p8[0],p8[1],p8[2]);+	float retVal = (float)o->solveLinearAxis(p0,p1,tp2,tp3,tp4,tp5,p6,tp7,tp8);+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+	p5[0]=tp5.m_floats[0];p5[1]=tp5.m_floats[1];p5[2]=tp5.m_floats[2];+	p7[0]=tp7.m_floats[0];p7[1]=tp7.m_floats[1];p7[2]=tp7.m_floats[2];+	p8[0]=tp8.m_floats[0];p8[1]=tp8.m_floats[1];p8[2]=tp8.m_floats[2];+	return retVal;+}+//method: isLimited bool ( ::btTranslationalLimitMotor::* )( int ) +int btTranslationalLimitMotor_isLimited(void *c,int p0) {+	::btTranslationalLimitMotor *o = (::btTranslationalLimitMotor*)c;+	int retVal = (int)o->isLimited(p0);+	return retVal;+}+//attribute: ::btVector3 btTranslationalLimitMotor->m_accumulatedImpulse+void btTranslationalLimitMotor_m_accumulatedImpulse_set(void *c,float* a) {+	::btTranslationalLimitMotor *o = (::btTranslationalLimitMotor*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_accumulatedImpulse = ta;+}+void btTranslationalLimitMotor_m_accumulatedImpulse_get(void *c,float* a) {+	::btTranslationalLimitMotor *o = (::btTranslationalLimitMotor*)c;+	a[0]=(o->m_accumulatedImpulse).m_floats[0];a[1]=(o->m_accumulatedImpulse).m_floats[1];a[2]=(o->m_accumulatedImpulse).m_floats[2];+}++//attribute: int[3] btTranslationalLimitMotor->m_currentLimit+// attribute not supported: //attribute: int[3] btTranslationalLimitMotor->m_currentLimit+//attribute: ::btVector3 btTranslationalLimitMotor->m_currentLimitError+void btTranslationalLimitMotor_m_currentLimitError_set(void *c,float* a) {+	::btTranslationalLimitMotor *o = (::btTranslationalLimitMotor*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_currentLimitError = ta;+}+void btTranslationalLimitMotor_m_currentLimitError_get(void *c,float* a) {+	::btTranslationalLimitMotor *o = (::btTranslationalLimitMotor*)c;+	a[0]=(o->m_currentLimitError).m_floats[0];a[1]=(o->m_currentLimitError).m_floats[1];a[2]=(o->m_currentLimitError).m_floats[2];+}++//attribute: ::btVector3 btTranslationalLimitMotor->m_currentLinearDiff+void btTranslationalLimitMotor_m_currentLinearDiff_set(void *c,float* a) {+	::btTranslationalLimitMotor *o = (::btTranslationalLimitMotor*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_currentLinearDiff = ta;+}+void btTranslationalLimitMotor_m_currentLinearDiff_get(void *c,float* a) {+	::btTranslationalLimitMotor *o = (::btTranslationalLimitMotor*)c;+	a[0]=(o->m_currentLinearDiff).m_floats[0];a[1]=(o->m_currentLinearDiff).m_floats[1];a[2]=(o->m_currentLinearDiff).m_floats[2];+}++//attribute: ::btScalar btTranslationalLimitMotor->m_damping+void btTranslationalLimitMotor_m_damping_set(void *c,float a) {+	::btTranslationalLimitMotor *o = (::btTranslationalLimitMotor*)c;+	o->m_damping = a;+}+float btTranslationalLimitMotor_m_damping_get(void *c) {+	::btTranslationalLimitMotor *o = (::btTranslationalLimitMotor*)c;+	return (float)(o->m_damping);+}++//attribute: bool[3] btTranslationalLimitMotor->m_enableMotor+// attribute not supported: //attribute: bool[3] btTranslationalLimitMotor->m_enableMotor+//attribute: ::btScalar btTranslationalLimitMotor->m_limitSoftness+void btTranslationalLimitMotor_m_limitSoftness_set(void *c,float a) {+	::btTranslationalLimitMotor *o = (::btTranslationalLimitMotor*)c;+	o->m_limitSoftness = a;+}+float btTranslationalLimitMotor_m_limitSoftness_get(void *c) {+	::btTranslationalLimitMotor *o = (::btTranslationalLimitMotor*)c;+	return (float)(o->m_limitSoftness);+}++//attribute: ::btVector3 btTranslationalLimitMotor->m_lowerLimit+void btTranslationalLimitMotor_m_lowerLimit_set(void *c,float* a) {+	::btTranslationalLimitMotor *o = (::btTranslationalLimitMotor*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_lowerLimit = ta;+}+void btTranslationalLimitMotor_m_lowerLimit_get(void *c,float* a) {+	::btTranslationalLimitMotor *o = (::btTranslationalLimitMotor*)c;+	a[0]=(o->m_lowerLimit).m_floats[0];a[1]=(o->m_lowerLimit).m_floats[1];a[2]=(o->m_lowerLimit).m_floats[2];+}++//attribute: ::btVector3 btTranslationalLimitMotor->m_maxMotorForce+void btTranslationalLimitMotor_m_maxMotorForce_set(void *c,float* a) {+	::btTranslationalLimitMotor *o = (::btTranslationalLimitMotor*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_maxMotorForce = ta;+}+void btTranslationalLimitMotor_m_maxMotorForce_get(void *c,float* a) {+	::btTranslationalLimitMotor *o = (::btTranslationalLimitMotor*)c;+	a[0]=(o->m_maxMotorForce).m_floats[0];a[1]=(o->m_maxMotorForce).m_floats[1];a[2]=(o->m_maxMotorForce).m_floats[2];+}++//attribute: ::btVector3 btTranslationalLimitMotor->m_normalCFM+void btTranslationalLimitMotor_m_normalCFM_set(void *c,float* a) {+	::btTranslationalLimitMotor *o = (::btTranslationalLimitMotor*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_normalCFM = ta;+}+void btTranslationalLimitMotor_m_normalCFM_get(void *c,float* a) {+	::btTranslationalLimitMotor *o = (::btTranslationalLimitMotor*)c;+	a[0]=(o->m_normalCFM).m_floats[0];a[1]=(o->m_normalCFM).m_floats[1];a[2]=(o->m_normalCFM).m_floats[2];+}++//attribute: ::btScalar btTranslationalLimitMotor->m_restitution+void btTranslationalLimitMotor_m_restitution_set(void *c,float a) {+	::btTranslationalLimitMotor *o = (::btTranslationalLimitMotor*)c;+	o->m_restitution = a;+}+float btTranslationalLimitMotor_m_restitution_get(void *c) {+	::btTranslationalLimitMotor *o = (::btTranslationalLimitMotor*)c;+	return (float)(o->m_restitution);+}++//attribute: ::btVector3 btTranslationalLimitMotor->m_stopCFM+void btTranslationalLimitMotor_m_stopCFM_set(void *c,float* a) {+	::btTranslationalLimitMotor *o = (::btTranslationalLimitMotor*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_stopCFM = ta;+}+void btTranslationalLimitMotor_m_stopCFM_get(void *c,float* a) {+	::btTranslationalLimitMotor *o = (::btTranslationalLimitMotor*)c;+	a[0]=(o->m_stopCFM).m_floats[0];a[1]=(o->m_stopCFM).m_floats[1];a[2]=(o->m_stopCFM).m_floats[2];+}++//attribute: ::btVector3 btTranslationalLimitMotor->m_stopERP+void btTranslationalLimitMotor_m_stopERP_set(void *c,float* a) {+	::btTranslationalLimitMotor *o = (::btTranslationalLimitMotor*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_stopERP = ta;+}+void btTranslationalLimitMotor_m_stopERP_get(void *c,float* a) {+	::btTranslationalLimitMotor *o = (::btTranslationalLimitMotor*)c;+	a[0]=(o->m_stopERP).m_floats[0];a[1]=(o->m_stopERP).m_floats[1];a[2]=(o->m_stopERP).m_floats[2];+}++//attribute: ::btVector3 btTranslationalLimitMotor->m_targetVelocity+void btTranslationalLimitMotor_m_targetVelocity_set(void *c,float* a) {+	::btTranslationalLimitMotor *o = (::btTranslationalLimitMotor*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_targetVelocity = ta;+}+void btTranslationalLimitMotor_m_targetVelocity_get(void *c,float* a) {+	::btTranslationalLimitMotor *o = (::btTranslationalLimitMotor*)c;+	a[0]=(o->m_targetVelocity).m_floats[0];a[1]=(o->m_targetVelocity).m_floats[1];a[2]=(o->m_targetVelocity).m_floats[2];+}++//attribute: ::btVector3 btTranslationalLimitMotor->m_upperLimit+void btTranslationalLimitMotor_m_upperLimit_set(void *c,float* a) {+	::btTranslationalLimitMotor *o = (::btTranslationalLimitMotor*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_upperLimit = ta;+}+void btTranslationalLimitMotor_m_upperLimit_get(void *c,float* a) {+	::btTranslationalLimitMotor *o = (::btTranslationalLimitMotor*)c;+	a[0]=(o->m_upperLimit).m_floats[0];a[1]=(o->m_upperLimit).m_floats[1];a[2]=(o->m_upperLimit).m_floats[2];+}+++// ::btTypedConstraint+//method: getRigidBodyB ::btRigidBody const & ( ::btTypedConstraint::* )(  ) const+void* btTypedConstraint_getRigidBodyB(void *c) {+	::btTypedConstraint *o = (::btTypedConstraint*)c;+	void* retVal = (void*) &(o->getRigidBodyB());+	return retVal;+}+//method: getRigidBodyB ::btRigidBody const & ( ::btTypedConstraint::* )(  ) const+void* btTypedConstraint_getRigidBodyB0(void *c) {+	::btTypedConstraint *o = (::btTypedConstraint*)c;+	void* retVal = (void*) &(o->getRigidBodyB());+	return retVal;+}+//method: getRigidBodyB ::btRigidBody & ( ::btTypedConstraint::* )(  ) +void* btTypedConstraint_getRigidBodyB1(void *c) {+	::btTypedConstraint *o = (::btTypedConstraint*)c;+	void* retVal = (void*) &(o->getRigidBodyB());+	return retVal;+}+//method: buildJacobian void ( ::btTypedConstraint::* )(  ) +void btTypedConstraint_buildJacobian(void *c) {+	::btTypedConstraint *o = (::btTypedConstraint*)c;+	o->buildJacobian();+}+//method: getRigidBodyA ::btRigidBody const & ( ::btTypedConstraint::* )(  ) const+void* btTypedConstraint_getRigidBodyA(void *c) {+	::btTypedConstraint *o = (::btTypedConstraint*)c;+	void* retVal = (void*) &(o->getRigidBodyA());+	return retVal;+}+//method: getRigidBodyA ::btRigidBody const & ( ::btTypedConstraint::* )(  ) const+void* btTypedConstraint_getRigidBodyA0(void *c) {+	::btTypedConstraint *o = (::btTypedConstraint*)c;+	void* retVal = (void*) &(o->getRigidBodyA());+	return retVal;+}+//method: getRigidBodyA ::btRigidBody & ( ::btTypedConstraint::* )(  ) +void* btTypedConstraint_getRigidBodyA1(void *c) {+	::btTypedConstraint *o = (::btTypedConstraint*)c;+	void* retVal = (void*) &(o->getRigidBodyA());+	return retVal;+}+//not supported method: serialize char const * ( ::btTypedConstraint::* )( void *,::btSerializer * ) const+//method: enableFeedback void ( ::btTypedConstraint::* )( bool ) +void btTypedConstraint_enableFeedback(void *c,int p0) {+	::btTypedConstraint *o = (::btTypedConstraint*)c;+	o->enableFeedback(p0);+}+//method: getUserConstraintId int ( ::btTypedConstraint::* )(  ) const+int btTypedConstraint_getUserConstraintId(void *c) {+	::btTypedConstraint *o = (::btTypedConstraint*)c;+	int retVal = (int)o->getUserConstraintId();+	return retVal;+}+//method: setParam void ( ::btTypedConstraint::* )( int,::btScalar,int ) +void btTypedConstraint_setParam(void *c,int p0,float p1,int p2) {+	::btTypedConstraint *o = (::btTypedConstraint*)c;+	o->setParam(p0,p1,p2);+}+//method: getParam ::btScalar ( ::btTypedConstraint::* )( int,int ) const+float btTypedConstraint_getParam(void *c,int p0,int p1) {+	::btTypedConstraint *o = (::btTypedConstraint*)c;+	float retVal = (float)o->getParam(p0,p1);+	return retVal;+}+//method: getInfo1 void ( ::btTypedConstraint::* )( ::btTypedConstraint::btConstraintInfo1 * ) +void btTypedConstraint_getInfo1(void *c,void* p0) {+	::btTypedConstraint *o = (::btTypedConstraint*)c;+	::btTypedConstraint::btConstraintInfo1 * tp0 = (::btTypedConstraint::btConstraintInfo1 *)p0;+	o->getInfo1(tp0);+}+//method: getInfo2 void ( ::btTypedConstraint::* )( ::btTypedConstraint::btConstraintInfo2 * ) +void btTypedConstraint_getInfo2(void *c,void* p0) {+	::btTypedConstraint *o = (::btTypedConstraint*)c;+	::btTypedConstraint::btConstraintInfo2 * tp0 = (::btTypedConstraint::btConstraintInfo2 *)p0;+	o->getInfo2(tp0);+}+//method: setBreakingImpulseThreshold void ( ::btTypedConstraint::* )( ::btScalar ) +void btTypedConstraint_setBreakingImpulseThreshold(void *c,float p0) {+	::btTypedConstraint *o = (::btTypedConstraint*)c;+	o->setBreakingImpulseThreshold(p0);+}+//method: calculateSerializeBufferSize int ( ::btTypedConstraint::* )(  ) const+int btTypedConstraint_calculateSerializeBufferSize(void *c) {+	::btTypedConstraint *o = (::btTypedConstraint*)c;+	int retVal = (int)o->calculateSerializeBufferSize();+	return retVal;+}+//method: isEnabled bool ( ::btTypedConstraint::* )(  ) const+int btTypedConstraint_isEnabled(void *c) {+	::btTypedConstraint *o = (::btTypedConstraint*)c;+	int retVal = (int)o->isEnabled();+	return retVal;+}+//method: setUserConstraintId void ( ::btTypedConstraint::* )( int ) +void btTypedConstraint_setUserConstraintId(void *c,int p0) {+	::btTypedConstraint *o = (::btTypedConstraint*)c;+	o->setUserConstraintId(p0);+}+//not supported method: getConstraintType ::btTypedConstraintType ( ::btTypedConstraint::* )(  ) const+//method: getDbgDrawSize ::btScalar ( ::btTypedConstraint::* )(  ) +float btTypedConstraint_getDbgDrawSize(void *c) {+	::btTypedConstraint *o = (::btTypedConstraint*)c;+	float retVal = (float)o->getDbgDrawSize();+	return retVal;+}+//method: internalSetAppliedImpulse void ( ::btTypedConstraint::* )( ::btScalar ) +void btTypedConstraint_internalSetAppliedImpulse(void *c,float p0) {+	::btTypedConstraint *o = (::btTypedConstraint*)c;+	o->internalSetAppliedImpulse(p0);+}+//method: needsFeedback bool ( ::btTypedConstraint::* )(  ) const+int btTypedConstraint_needsFeedback(void *c) {+	::btTypedConstraint *o = (::btTypedConstraint*)c;+	int retVal = (int)o->needsFeedback();+	return retVal;+}+//not supported method: getUserConstraintPtr void * ( ::btTypedConstraint::* )(  ) +//method: setEnabled void ( ::btTypedConstraint::* )( bool ) +void btTypedConstraint_setEnabled(void *c,int p0) {+	::btTypedConstraint *o = (::btTypedConstraint*)c;+	o->setEnabled(p0);+}+//method: getUid int ( ::btTypedConstraint::* )(  ) const+int btTypedConstraint_getUid(void *c) {+	::btTypedConstraint *o = (::btTypedConstraint*)c;+	int retVal = (int)o->getUid();+	return retVal;+}+//method: setDbgDrawSize void ( ::btTypedConstraint::* )( ::btScalar ) +void btTypedConstraint_setDbgDrawSize(void *c,float p0) {+	::btTypedConstraint *o = (::btTypedConstraint*)c;+	o->setDbgDrawSize(p0);+}+//method: setUserConstraintType void ( ::btTypedConstraint::* )( int ) +void btTypedConstraint_setUserConstraintType(void *c,int p0) {+	::btTypedConstraint *o = (::btTypedConstraint*)c;+	o->setUserConstraintType(p0);+}+//method: internalGetAppliedImpulse ::btScalar ( ::btTypedConstraint::* )(  ) +float btTypedConstraint_internalGetAppliedImpulse(void *c) {+	::btTypedConstraint *o = (::btTypedConstraint*)c;+	float retVal = (float)o->internalGetAppliedImpulse();+	return retVal;+}+//not supported method: setupSolverConstraint void ( ::btTypedConstraint::* )( ::btConstraintArray &,int,int,::btScalar ) +//method: getBreakingImpulseThreshold ::btScalar ( ::btTypedConstraint::* )(  ) const+float btTypedConstraint_getBreakingImpulseThreshold(void *c) {+	::btTypedConstraint *o = (::btTypedConstraint*)c;+	float retVal = (float)o->getBreakingImpulseThreshold();+	return retVal;+}+//method: getUserConstraintType int ( ::btTypedConstraint::* )(  ) const+int btTypedConstraint_getUserConstraintType(void *c) {+	::btTypedConstraint *o = (::btTypedConstraint*)c;+	int retVal = (int)o->getUserConstraintType();+	return retVal;+}+//method: solveConstraintObsolete void ( ::btTypedConstraint::* )( ::btRigidBody &,::btRigidBody &,::btScalar ) +void btTypedConstraint_solveConstraintObsolete(void *c,void* p0,void* p1,float p2) {+	::btTypedConstraint *o = (::btTypedConstraint*)c;+	::btRigidBody & tp0 = *(::btRigidBody *)p0;+	::btRigidBody & tp1 = *(::btRigidBody *)p1;+	o->solveConstraintObsolete(tp0,tp1,p2);+}+//method: getAppliedImpulse ::btScalar ( ::btTypedConstraint::* )(  ) const+float btTypedConstraint_getAppliedImpulse(void *c) {+	::btTypedConstraint *o = (::btTypedConstraint*)c;+	float retVal = (float)o->getAppliedImpulse();+	return retVal;+}+//not supported method: setUserConstraintPtr void ( ::btTypedConstraint::* )( void * ) ++// ::btTypedConstraintData+//constructor: btTypedConstraintData  ( ::btTypedConstraintData::* )(  ) +void* btTypedConstraintData_new() {+	::btTypedConstraintData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btTypedConstraintData),16);+	o = new (mem)::btTypedConstraintData();+	return (void*)o;+}+void btTypedConstraintData_free(void *c) {+	::btTypedConstraintData *o = (::btTypedConstraintData*)c;+	delete o;+}+//attribute: float btTypedConstraintData->m_appliedImpulse+void btTypedConstraintData_m_appliedImpulse_set(void *c,float a) {+	::btTypedConstraintData *o = (::btTypedConstraintData*)c;+	o->m_appliedImpulse = a;+}+float btTypedConstraintData_m_appliedImpulse_get(void *c) {+	::btTypedConstraintData *o = (::btTypedConstraintData*)c;+	return (float)(o->m_appliedImpulse);+}++//attribute: float btTypedConstraintData->m_dbgDrawSize+void btTypedConstraintData_m_dbgDrawSize_set(void *c,float a) {+	::btTypedConstraintData *o = (::btTypedConstraintData*)c;+	o->m_dbgDrawSize = a;+}+float btTypedConstraintData_m_dbgDrawSize_get(void *c) {+	::btTypedConstraintData *o = (::btTypedConstraintData*)c;+	return (float)(o->m_dbgDrawSize);+}++//attribute: int btTypedConstraintData->m_disableCollisionsBetweenLinkedBodies+void btTypedConstraintData_m_disableCollisionsBetweenLinkedBodies_set(void *c,int a) {+	::btTypedConstraintData *o = (::btTypedConstraintData*)c;+	o->m_disableCollisionsBetweenLinkedBodies = a;+}+int btTypedConstraintData_m_disableCollisionsBetweenLinkedBodies_get(void *c) {+	::btTypedConstraintData *o = (::btTypedConstraintData*)c;+	return (int)(o->m_disableCollisionsBetweenLinkedBodies);+}++//attribute: char * btTypedConstraintData->m_name+void btTypedConstraintData_m_name_set(void *c,char * a) {+	::btTypedConstraintData *o = (::btTypedConstraintData*)c;+	o->m_name = a;+}+char * btTypedConstraintData_m_name_get(void *c) {+	::btTypedConstraintData *o = (::btTypedConstraintData*)c;+	return (char *)(o->m_name);+}++//attribute: int btTypedConstraintData->m_needsFeedback+void btTypedConstraintData_m_needsFeedback_set(void *c,int a) {+	::btTypedConstraintData *o = (::btTypedConstraintData*)c;+	o->m_needsFeedback = a;+}+int btTypedConstraintData_m_needsFeedback_get(void *c) {+	::btTypedConstraintData *o = (::btTypedConstraintData*)c;+	return (int)(o->m_needsFeedback);+}++//attribute: int btTypedConstraintData->m_objectType+void btTypedConstraintData_m_objectType_set(void *c,int a) {+	::btTypedConstraintData *o = (::btTypedConstraintData*)c;+	o->m_objectType = a;+}+int btTypedConstraintData_m_objectType_get(void *c) {+	::btTypedConstraintData *o = (::btTypedConstraintData*)c;+	return (int)(o->m_objectType);+}++//attribute: char[4] btTypedConstraintData->m_pad4+// attribute not supported: //attribute: char[4] btTypedConstraintData->m_pad4+//attribute: ::btRigidBodyFloatData * btTypedConstraintData->m_rbA+void btTypedConstraintData_m_rbA_set(void *c,void* a) {+	::btTypedConstraintData *o = (::btTypedConstraintData*)c;+	::btRigidBodyFloatData * ta = (::btRigidBodyFloatData *)a;+	o->m_rbA = ta;+}+// attriibute getter not supported: //attribute: ::btRigidBodyFloatData * btTypedConstraintData->m_rbA+//attribute: ::btRigidBodyFloatData * btTypedConstraintData->m_rbB+void btTypedConstraintData_m_rbB_set(void *c,void* a) {+	::btTypedConstraintData *o = (::btTypedConstraintData*)c;+	::btRigidBodyFloatData * ta = (::btRigidBodyFloatData *)a;+	o->m_rbB = ta;+}+// attriibute getter not supported: //attribute: ::btRigidBodyFloatData * btTypedConstraintData->m_rbB+//attribute: int btTypedConstraintData->m_userConstraintId+void btTypedConstraintData_m_userConstraintId_set(void *c,int a) {+	::btTypedConstraintData *o = (::btTypedConstraintData*)c;+	o->m_userConstraintId = a;+}+int btTypedConstraintData_m_userConstraintId_get(void *c) {+	::btTypedConstraintData *o = (::btTypedConstraintData*)c;+	return (int)(o->m_userConstraintId);+}++//attribute: int btTypedConstraintData->m_userConstraintType+void btTypedConstraintData_m_userConstraintType_set(void *c,int a) {+	::btTypedConstraintData *o = (::btTypedConstraintData*)c;+	o->m_userConstraintType = a;+}+int btTypedConstraintData_m_userConstraintType_get(void *c) {+	::btTypedConstraintData *o = (::btTypedConstraintData*)c;+	return (int)(o->m_userConstraintType);+}+++// ::btUniversalConstraint+//constructor: btUniversalConstraint  ( ::btUniversalConstraint::* )( ::btRigidBody &,::btRigidBody &,::btVector3 &,::btVector3 &,::btVector3 & ) +void* btUniversalConstraint_new(void* p0,void* p1,float* p2,float* p3,float* p4) {+	::btUniversalConstraint *o = 0;+	 void *mem = 0;+	::btRigidBody & tp0 = *(::btRigidBody *)p0;+	::btRigidBody & tp1 = *(::btRigidBody *)p1;+	btVector3 tp2(p2[0],p2[1],p2[2]);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	btVector3 tp4(p4[0],p4[1],p4[2]);+	mem = btAlignedAlloc(sizeof(::btUniversalConstraint),16);+	o = new (mem)::btUniversalConstraint(tp0,tp1,tp2,tp3,tp4);+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+	p4[0]=tp4.m_floats[0];p4[1]=tp4.m_floats[1];p4[2]=tp4.m_floats[2];+	return (void*)o;+}+void btUniversalConstraint_free(void *c) {+	::btUniversalConstraint *o = (::btUniversalConstraint*)c;+	delete o;+}+//method: setLowerLimit void ( ::btUniversalConstraint::* )( ::btScalar,::btScalar ) +void btUniversalConstraint_setLowerLimit(void *c,float p0,float p1) {+	::btUniversalConstraint *o = (::btUniversalConstraint*)c;+	o->setLowerLimit(p0,p1);+}+//method: getAnchor2 ::btVector3 const & ( ::btUniversalConstraint::* )(  ) +void btUniversalConstraint_getAnchor2(void *c,float* ret) {+	::btUniversalConstraint *o = (::btUniversalConstraint*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getAnchor2();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: setAxis void ( ::btUniversalConstraint::* )( ::btVector3 const &,::btVector3 const & ) +void btUniversalConstraint_setAxis(void *c,float* p0,float* p1) {+	::btUniversalConstraint *o = (::btUniversalConstraint*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->setAxis(tp0,tp1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: getAxis1 ::btVector3 const & ( ::btUniversalConstraint::* )(  ) +void btUniversalConstraint_getAxis1(void *c,float* ret) {+	::btUniversalConstraint *o = (::btUniversalConstraint*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getAxis1();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getAnchor ::btVector3 const & ( ::btUniversalConstraint::* )(  ) +void btUniversalConstraint_getAnchor(void *c,float* ret) {+	::btUniversalConstraint *o = (::btUniversalConstraint*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getAnchor();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getAxis2 ::btVector3 const & ( ::btUniversalConstraint::* )(  ) +void btUniversalConstraint_getAxis2(void *c,float* ret) {+	::btUniversalConstraint *o = (::btUniversalConstraint*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getAxis2();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: setUpperLimit void ( ::btUniversalConstraint::* )( ::btScalar,::btScalar ) +void btUniversalConstraint_setUpperLimit(void *c,float p0,float p1) {+	::btUniversalConstraint *o = (::btUniversalConstraint*)c;+	o->setUpperLimit(p0,p1);+}+//method: getAngle2 ::btScalar ( ::btUniversalConstraint::* )(  ) +float btUniversalConstraint_getAngle2(void *c) {+	::btUniversalConstraint *o = (::btUniversalConstraint*)c;+	float retVal = (float)o->getAngle2();+	return retVal;+}+//method: getAngle1 ::btScalar ( ::btUniversalConstraint::* )(  ) +float btUniversalConstraint_getAngle1(void *c) {+	::btUniversalConstraint *o = (::btUniversalConstraint*)c;+	float retVal = (float)o->getAngle1();+	return retVal;+}++// ::btActionInterface+//method: updateAction void ( ::btActionInterface::* )( ::btCollisionWorld *,::btScalar ) +void btActionInterface_updateAction(void *c,void* p0,float p1) {+	::btActionInterface *o = (::btActionInterface*)c;+	::btCollisionWorld * tp0 = (::btCollisionWorld *)p0;+	o->updateAction(tp0,p1);+}+//method: debugDraw void ( ::btActionInterface::* )( ::btIDebugDraw * ) +void btActionInterface_debugDraw(void *c,void* p0) {+	::btActionInterface *o = (::btActionInterface*)c;+	::btIDebugDraw * tp0 = (::btIDebugDraw *)p0;+	o->debugDraw(tp0);+}++// ::btContinuousDynamicsWorld+//constructor: btContinuousDynamicsWorld  ( ::btContinuousDynamicsWorld::* )( ::btDispatcher *,::btBroadphaseInterface *,::btConstraintSolver *,::btCollisionConfiguration * ) +void* btContinuousDynamicsWorld_new(void* p0,void* p1,void* p2,void* p3) {+	::btContinuousDynamicsWorld *o = 0;+	 void *mem = 0;+	::btDispatcher * tp0 = (::btDispatcher *)p0;+	::btBroadphaseInterface * tp1 = (::btBroadphaseInterface *)p1;+	::btConstraintSolver * tp2 = (::btConstraintSolver *)p2;+	::btCollisionConfiguration * tp3 = (::btCollisionConfiguration *)p3;+	mem = btAlignedAlloc(sizeof(::btContinuousDynamicsWorld),16);+	o = new (mem)::btContinuousDynamicsWorld(tp0,tp1,tp2,tp3);+	return (void*)o;+}+void btContinuousDynamicsWorld_free(void *c) {+	::btContinuousDynamicsWorld *o = (::btContinuousDynamicsWorld*)c;+	delete o;+}+//method: internalSingleStepSimulation void ( ::btContinuousDynamicsWorld::* )( ::btScalar ) +void btContinuousDynamicsWorld_internalSingleStepSimulation(void *c,float p0) {+	::btContinuousDynamicsWorld *o = (::btContinuousDynamicsWorld*)c;+	o->internalSingleStepSimulation(p0);+}+//not supported method: getWorldType ::btDynamicsWorldType ( ::btContinuousDynamicsWorld::* )(  ) const+//method: calculateTimeOfImpacts void ( ::btContinuousDynamicsWorld::* )( ::btScalar ) +void btContinuousDynamicsWorld_calculateTimeOfImpacts(void *c,float p0) {+	::btContinuousDynamicsWorld *o = (::btContinuousDynamicsWorld*)c;+	o->calculateTimeOfImpacts(p0);+}++// ::btDiscreteDynamicsWorld+//constructor: btDiscreteDynamicsWorld  ( ::btDiscreteDynamicsWorld::* )( ::btDispatcher *,::btBroadphaseInterface *,::btConstraintSolver *,::btCollisionConfiguration * ) +void* btDiscreteDynamicsWorld_new(void* p0,void* p1,void* p2,void* p3) {+	::btDiscreteDynamicsWorld *o = 0;+	 void *mem = 0;+	::btDispatcher * tp0 = (::btDispatcher *)p0;+	::btBroadphaseInterface * tp1 = (::btBroadphaseInterface *)p1;+	::btConstraintSolver * tp2 = (::btConstraintSolver *)p2;+	::btCollisionConfiguration * tp3 = (::btCollisionConfiguration *)p3;+	mem = btAlignedAlloc(sizeof(::btDiscreteDynamicsWorld),16);+	o = new (mem)::btDiscreteDynamicsWorld(tp0,tp1,tp2,tp3);+	return (void*)o;+}+void btDiscreteDynamicsWorld_free(void *c) {+	::btDiscreteDynamicsWorld *o = (::btDiscreteDynamicsWorld*)c;+	delete o;+}+//method: setGravity void ( ::btDiscreteDynamicsWorld::* )( ::btVector3 const & ) +void btDiscreteDynamicsWorld_setGravity(void *c,float* p0) {+	::btDiscreteDynamicsWorld *o = (::btDiscreteDynamicsWorld*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setGravity(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: addAction void ( ::btDiscreteDynamicsWorld::* )( ::btActionInterface * ) +void btDiscreteDynamicsWorld_addAction(void *c,void* p0) {+	::btDiscreteDynamicsWorld *o = (::btDiscreteDynamicsWorld*)c;+	::btActionInterface * tp0 = (::btActionInterface *)p0;+	o->addAction(tp0);+}+//method: applyGravity void ( ::btDiscreteDynamicsWorld::* )(  ) +void btDiscreteDynamicsWorld_applyGravity(void *c) {+	::btDiscreteDynamicsWorld *o = (::btDiscreteDynamicsWorld*)c;+	o->applyGravity();+}+//method: serialize void ( ::btDiscreteDynamicsWorld::* )( ::btSerializer * ) +void btDiscreteDynamicsWorld_serialize(void *c,void* p0) {+	::btDiscreteDynamicsWorld *o = (::btDiscreteDynamicsWorld*)c;+	::btSerializer * tp0 = (::btSerializer *)p0;+	o->serialize(tp0);+}+//method: getCollisionWorld ::btCollisionWorld * ( ::btDiscreteDynamicsWorld::* )(  ) +void* btDiscreteDynamicsWorld_getCollisionWorld(void *c) {+	::btDiscreteDynamicsWorld *o = (::btDiscreteDynamicsWorld*)c;+	void* retVal = (void*) o->getCollisionWorld();+	return retVal;+}+//method: addRigidBody void ( ::btDiscreteDynamicsWorld::* )( ::btRigidBody * ) +void btDiscreteDynamicsWorld_addRigidBody(void *c,void* p0) {+	::btDiscreteDynamicsWorld *o = (::btDiscreteDynamicsWorld*)c;+	::btRigidBody * tp0 = (::btRigidBody *)p0;+	o->addRigidBody(tp0);+}+//method: addRigidBody void ( ::btDiscreteDynamicsWorld::* )( ::btRigidBody * ) +void btDiscreteDynamicsWorld_addRigidBody0(void *c,void* p0) {+	::btDiscreteDynamicsWorld *o = (::btDiscreteDynamicsWorld*)c;+	::btRigidBody * tp0 = (::btRigidBody *)p0;+	o->addRigidBody(tp0);+}+//method: addRigidBody void ( ::btDiscreteDynamicsWorld::* )( ::btRigidBody *,short int,short int ) +void btDiscreteDynamicsWorld_addRigidBody1(void *c,void* p0,short int p1,short int p2) {+	::btDiscreteDynamicsWorld *o = (::btDiscreteDynamicsWorld*)c;+	::btRigidBody * tp0 = (::btRigidBody *)p0;+	o->addRigidBody(tp0,p1,p2);+}+//method: clearForces void ( ::btDiscreteDynamicsWorld::* )(  ) +void btDiscreteDynamicsWorld_clearForces(void *c) {+	::btDiscreteDynamicsWorld *o = (::btDiscreteDynamicsWorld*)c;+	o->clearForces();+}+//method: removeVehicle void ( ::btDiscreteDynamicsWorld::* )( ::btActionInterface * ) +void btDiscreteDynamicsWorld_removeVehicle(void *c,void* p0) {+	::btDiscreteDynamicsWorld *o = (::btDiscreteDynamicsWorld*)c;+	::btActionInterface * tp0 = (::btActionInterface *)p0;+	o->removeVehicle(tp0);+}+//method: getSynchronizeAllMotionStates bool ( ::btDiscreteDynamicsWorld::* )(  ) const+int btDiscreteDynamicsWorld_getSynchronizeAllMotionStates(void *c) {+	::btDiscreteDynamicsWorld *o = (::btDiscreteDynamicsWorld*)c;+	int retVal = (int)o->getSynchronizeAllMotionStates();+	return retVal;+}+//method: setNumTasks void ( ::btDiscreteDynamicsWorld::* )( int ) +void btDiscreteDynamicsWorld_setNumTasks(void *c,int p0) {+	::btDiscreteDynamicsWorld *o = (::btDiscreteDynamicsWorld*)c;+	o->setNumTasks(p0);+}+//method: setSynchronizeAllMotionStates void ( ::btDiscreteDynamicsWorld::* )( bool ) +void btDiscreteDynamicsWorld_setSynchronizeAllMotionStates(void *c,int p0) {+	::btDiscreteDynamicsWorld *o = (::btDiscreteDynamicsWorld*)c;+	o->setSynchronizeAllMotionStates(p0);+}+//method: removeConstraint void ( ::btDiscreteDynamicsWorld::* )( ::btTypedConstraint * ) +void btDiscreteDynamicsWorld_removeConstraint(void *c,void* p0) {+	::btDiscreteDynamicsWorld *o = (::btDiscreteDynamicsWorld*)c;+	::btTypedConstraint * tp0 = (::btTypedConstraint *)p0;+	o->removeConstraint(tp0);+}+//method: getNumConstraints int ( ::btDiscreteDynamicsWorld::* )(  ) const+int btDiscreteDynamicsWorld_getNumConstraints(void *c) {+	::btDiscreteDynamicsWorld *o = (::btDiscreteDynamicsWorld*)c;+	int retVal = (int)o->getNumConstraints();+	return retVal;+}+//method: addCollisionObject void ( ::btDiscreteDynamicsWorld::* )( ::btCollisionObject *,short int,short int ) +void btDiscreteDynamicsWorld_addCollisionObject(void *c,void* p0,short int p1,short int p2) {+	::btDiscreteDynamicsWorld *o = (::btDiscreteDynamicsWorld*)c;+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	o->addCollisionObject(tp0,p1,p2);+}+//method: removeRigidBody void ( ::btDiscreteDynamicsWorld::* )( ::btRigidBody * ) +void btDiscreteDynamicsWorld_removeRigidBody(void *c,void* p0) {+	::btDiscreteDynamicsWorld *o = (::btDiscreteDynamicsWorld*)c;+	::btRigidBody * tp0 = (::btRigidBody *)p0;+	o->removeRigidBody(tp0);+}+//method: debugDrawConstraint void ( ::btDiscreteDynamicsWorld::* )( ::btTypedConstraint * ) +void btDiscreteDynamicsWorld_debugDrawConstraint(void *c,void* p0) {+	::btDiscreteDynamicsWorld *o = (::btDiscreteDynamicsWorld*)c;+	::btTypedConstraint * tp0 = (::btTypedConstraint *)p0;+	o->debugDrawConstraint(tp0);+}+//method: debugDrawWorld void ( ::btDiscreteDynamicsWorld::* )(  ) +void btDiscreteDynamicsWorld_debugDrawWorld(void *c) {+	::btDiscreteDynamicsWorld *o = (::btDiscreteDynamicsWorld*)c;+	o->debugDrawWorld();+}+//method: addConstraint void ( ::btDiscreteDynamicsWorld::* )( ::btTypedConstraint *,bool ) +void btDiscreteDynamicsWorld_addConstraint(void *c,void* p0,int p1) {+	::btDiscreteDynamicsWorld *o = (::btDiscreteDynamicsWorld*)c;+	::btTypedConstraint * tp0 = (::btTypedConstraint *)p0;+	o->addConstraint(tp0,p1);+}+//method: getGravity ::btVector3 ( ::btDiscreteDynamicsWorld::* )(  ) const+void btDiscreteDynamicsWorld_getGravity(void *c,float* ret) {+	::btDiscreteDynamicsWorld *o = (::btDiscreteDynamicsWorld*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getGravity();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: removeAction void ( ::btDiscreteDynamicsWorld::* )( ::btActionInterface * ) +void btDiscreteDynamicsWorld_removeAction(void *c,void* p0) {+	::btDiscreteDynamicsWorld *o = (::btDiscreteDynamicsWorld*)c;+	::btActionInterface * tp0 = (::btActionInterface *)p0;+	o->removeAction(tp0);+}+//method: removeCharacter void ( ::btDiscreteDynamicsWorld::* )( ::btActionInterface * ) +void btDiscreteDynamicsWorld_removeCharacter(void *c,void* p0) {+	::btDiscreteDynamicsWorld *o = (::btDiscreteDynamicsWorld*)c;+	::btActionInterface * tp0 = (::btActionInterface *)p0;+	o->removeCharacter(tp0);+}+//method: getConstraint ::btTypedConstraint * ( ::btDiscreteDynamicsWorld::* )( int ) +void* btDiscreteDynamicsWorld_getConstraint(void *c,int p0) {+	::btDiscreteDynamicsWorld *o = (::btDiscreteDynamicsWorld*)c;+	void* retVal = (void*) o->getConstraint(p0);+	return retVal;+}+//method: getConstraint ::btTypedConstraint * ( ::btDiscreteDynamicsWorld::* )( int ) +void* btDiscreteDynamicsWorld_getConstraint0(void *c,int p0) {+	::btDiscreteDynamicsWorld *o = (::btDiscreteDynamicsWorld*)c;+	void* retVal = (void*) o->getConstraint(p0);+	return retVal;+}+//method: getConstraint ::btTypedConstraint const * ( ::btDiscreteDynamicsWorld::* )( int ) const+void* btDiscreteDynamicsWorld_getConstraint1(void *c,int p0) {+	::btDiscreteDynamicsWorld *o = (::btDiscreteDynamicsWorld*)c;+	void* retVal = (void*) o->getConstraint(p0);+	return retVal;+}+//method: getConstraintSolver ::btConstraintSolver * ( ::btDiscreteDynamicsWorld::* )(  ) +void* btDiscreteDynamicsWorld_getConstraintSolver(void *c) {+	::btDiscreteDynamicsWorld *o = (::btDiscreteDynamicsWorld*)c;+	void* retVal = (void*) o->getConstraintSolver();+	return retVal;+}+//method: stepSimulation int ( ::btDiscreteDynamicsWorld::* )( ::btScalar,int,::btScalar ) +int btDiscreteDynamicsWorld_stepSimulation(void *c,float p0,int p1,float p2) {+	::btDiscreteDynamicsWorld *o = (::btDiscreteDynamicsWorld*)c;+	int retVal = (int)o->stepSimulation(p0,p1,p2);+	return retVal;+}+//method: addCharacter void ( ::btDiscreteDynamicsWorld::* )( ::btActionInterface * ) +void btDiscreteDynamicsWorld_addCharacter(void *c,void* p0) {+	::btDiscreteDynamicsWorld *o = (::btDiscreteDynamicsWorld*)c;+	::btActionInterface * tp0 = (::btActionInterface *)p0;+	o->addCharacter(tp0);+}+//not supported method: getWorldType ::btDynamicsWorldType ( ::btDiscreteDynamicsWorld::* )(  ) const+//method: updateVehicles void ( ::btDiscreteDynamicsWorld::* )( ::btScalar ) +void btDiscreteDynamicsWorld_updateVehicles(void *c,float p0) {+	::btDiscreteDynamicsWorld *o = (::btDiscreteDynamicsWorld*)c;+	o->updateVehicles(p0);+}+//method: synchronizeSingleMotionState void ( ::btDiscreteDynamicsWorld::* )( ::btRigidBody * ) +void btDiscreteDynamicsWorld_synchronizeSingleMotionState(void *c,void* p0) {+	::btDiscreteDynamicsWorld *o = (::btDiscreteDynamicsWorld*)c;+	::btRigidBody * tp0 = (::btRigidBody *)p0;+	o->synchronizeSingleMotionState(tp0);+}+//method: addVehicle void ( ::btDiscreteDynamicsWorld::* )( ::btActionInterface * ) +void btDiscreteDynamicsWorld_addVehicle(void *c,void* p0) {+	::btDiscreteDynamicsWorld *o = (::btDiscreteDynamicsWorld*)c;+	::btActionInterface * tp0 = (::btActionInterface *)p0;+	o->addVehicle(tp0);+}+//method: synchronizeMotionStates void ( ::btDiscreteDynamicsWorld::* )(  ) +void btDiscreteDynamicsWorld_synchronizeMotionStates(void *c) {+	::btDiscreteDynamicsWorld *o = (::btDiscreteDynamicsWorld*)c;+	o->synchronizeMotionStates();+}+//not supported method: getSimulationIslandManager ::btSimulationIslandManager * ( ::btDiscreteDynamicsWorld::* )(  ) +//not supported method: getSimulationIslandManager ::btSimulationIslandManager * ( ::btDiscreteDynamicsWorld::* )(  ) +//not supported method: getSimulationIslandManager ::btSimulationIslandManager const * ( ::btDiscreteDynamicsWorld::* )(  ) const+//method: removeCollisionObject void ( ::btDiscreteDynamicsWorld::* )( ::btCollisionObject * ) +void btDiscreteDynamicsWorld_removeCollisionObject(void *c,void* p0) {+	::btDiscreteDynamicsWorld *o = (::btDiscreteDynamicsWorld*)c;+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	o->removeCollisionObject(tp0);+}+//method: setConstraintSolver void ( ::btDiscreteDynamicsWorld::* )( ::btConstraintSolver * ) +void btDiscreteDynamicsWorld_setConstraintSolver(void *c,void* p0) {+	::btDiscreteDynamicsWorld *o = (::btDiscreteDynamicsWorld*)c;+	::btConstraintSolver * tp0 = (::btConstraintSolver *)p0;+	o->setConstraintSolver(tp0);+}++// ::btDynamicsWorld+//method: setGravity void ( ::btDynamicsWorld::* )( ::btVector3 const & ) +void btDynamicsWorld_setGravity(void *c,float* p0) {+	::btDynamicsWorld *o = (::btDynamicsWorld*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setGravity(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: addAction void ( ::btDynamicsWorld::* )( ::btActionInterface * ) +void btDynamicsWorld_addAction(void *c,void* p0) {+	::btDynamicsWorld *o = (::btDynamicsWorld*)c;+	::btActionInterface * tp0 = (::btActionInterface *)p0;+	o->addAction(tp0);+}+//method: getSolverInfo ::btContactSolverInfo & ( ::btDynamicsWorld::* )(  ) +void* btDynamicsWorld_getSolverInfo(void *c) {+	::btDynamicsWorld *o = (::btDynamicsWorld*)c;+	void* retVal = (void*) &(o->getSolverInfo());+	return retVal;+}+//method: addRigidBody void ( ::btDynamicsWorld::* )( ::btRigidBody * ) +void btDynamicsWorld_addRigidBody(void *c,void* p0) {+	::btDynamicsWorld *o = (::btDynamicsWorld*)c;+	::btRigidBody * tp0 = (::btRigidBody *)p0;+	o->addRigidBody(tp0);+}+//method: addRigidBody void ( ::btDynamicsWorld::* )( ::btRigidBody * ) +void btDynamicsWorld_addRigidBody0(void *c,void* p0) {+	::btDynamicsWorld *o = (::btDynamicsWorld*)c;+	::btRigidBody * tp0 = (::btRigidBody *)p0;+	o->addRigidBody(tp0);+}+//method: addRigidBody void ( ::btDynamicsWorld::* )( ::btRigidBody *,short int,short int ) +void btDynamicsWorld_addRigidBody1(void *c,void* p0,short int p1,short int p2) {+	::btDynamicsWorld *o = (::btDynamicsWorld*)c;+	::btRigidBody * tp0 = (::btRigidBody *)p0;+	o->addRigidBody(tp0,p1,p2);+}+//method: clearForces void ( ::btDynamicsWorld::* )(  ) +void btDynamicsWorld_clearForces(void *c) {+	::btDynamicsWorld *o = (::btDynamicsWorld*)c;+	o->clearForces();+}+//method: removeVehicle void ( ::btDynamicsWorld::* )( ::btActionInterface * ) +void btDynamicsWorld_removeVehicle(void *c,void* p0) {+	::btDynamicsWorld *o = (::btDynamicsWorld*)c;+	::btActionInterface * tp0 = (::btActionInterface *)p0;+	o->removeVehicle(tp0);+}+//method: removeConstraint void ( ::btDynamicsWorld::* )( ::btTypedConstraint * ) +void btDynamicsWorld_removeConstraint(void *c,void* p0) {+	::btDynamicsWorld *o = (::btDynamicsWorld*)c;+	::btTypedConstraint * tp0 = (::btTypedConstraint *)p0;+	o->removeConstraint(tp0);+}+//method: getNumConstraints int ( ::btDynamicsWorld::* )(  ) const+int btDynamicsWorld_getNumConstraints(void *c) {+	::btDynamicsWorld *o = (::btDynamicsWorld*)c;+	int retVal = (int)o->getNumConstraints();+	return retVal;+}+//method: removeRigidBody void ( ::btDynamicsWorld::* )( ::btRigidBody * ) +void btDynamicsWorld_removeRigidBody(void *c,void* p0) {+	::btDynamicsWorld *o = (::btDynamicsWorld*)c;+	::btRigidBody * tp0 = (::btRigidBody *)p0;+	o->removeRigidBody(tp0);+}+//not supported method: setInternalTickCallback void ( ::btDynamicsWorld::* )( ::btInternalTickCallback,void *,bool ) +//method: synchronizeMotionStates void ( ::btDynamicsWorld::* )(  ) +void btDynamicsWorld_synchronizeMotionStates(void *c) {+	::btDynamicsWorld *o = (::btDynamicsWorld*)c;+	o->synchronizeMotionStates();+}+//method: addConstraint void ( ::btDynamicsWorld::* )( ::btTypedConstraint *,bool ) +void btDynamicsWorld_addConstraint(void *c,void* p0,int p1) {+	::btDynamicsWorld *o = (::btDynamicsWorld*)c;+	::btTypedConstraint * tp0 = (::btTypedConstraint *)p0;+	o->addConstraint(tp0,p1);+}+//method: getGravity ::btVector3 ( ::btDynamicsWorld::* )(  ) const+void btDynamicsWorld_getGravity(void *c,float* ret) {+	::btDynamicsWorld *o = (::btDynamicsWorld*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getGravity();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: debugDrawWorld void ( ::btDynamicsWorld::* )(  ) +void btDynamicsWorld_debugDrawWorld(void *c) {+	::btDynamicsWorld *o = (::btDynamicsWorld*)c;+	o->debugDrawWorld();+}+//method: removeAction void ( ::btDynamicsWorld::* )( ::btActionInterface * ) +void btDynamicsWorld_removeAction(void *c,void* p0) {+	::btDynamicsWorld *o = (::btDynamicsWorld*)c;+	::btActionInterface * tp0 = (::btActionInterface *)p0;+	o->removeAction(tp0);+}+//not supported method: setWorldUserInfo void ( ::btDynamicsWorld::* )( void * ) +//method: removeCharacter void ( ::btDynamicsWorld::* )( ::btActionInterface * ) +void btDynamicsWorld_removeCharacter(void *c,void* p0) {+	::btDynamicsWorld *o = (::btDynamicsWorld*)c;+	::btActionInterface * tp0 = (::btActionInterface *)p0;+	o->removeCharacter(tp0);+}+//method: getConstraint ::btTypedConstraint * ( ::btDynamicsWorld::* )( int ) +void* btDynamicsWorld_getConstraint(void *c,int p0) {+	::btDynamicsWorld *o = (::btDynamicsWorld*)c;+	void* retVal = (void*) o->getConstraint(p0);+	return retVal;+}+//method: getConstraint ::btTypedConstraint * ( ::btDynamicsWorld::* )( int ) +void* btDynamicsWorld_getConstraint0(void *c,int p0) {+	::btDynamicsWorld *o = (::btDynamicsWorld*)c;+	void* retVal = (void*) o->getConstraint(p0);+	return retVal;+}+//method: getConstraint ::btTypedConstraint const * ( ::btDynamicsWorld::* )( int ) const+void* btDynamicsWorld_getConstraint1(void *c,int p0) {+	::btDynamicsWorld *o = (::btDynamicsWorld*)c;+	void* retVal = (void*) o->getConstraint(p0);+	return retVal;+}+//method: getConstraintSolver ::btConstraintSolver * ( ::btDynamicsWorld::* )(  ) +void* btDynamicsWorld_getConstraintSolver(void *c) {+	::btDynamicsWorld *o = (::btDynamicsWorld*)c;+	void* retVal = (void*) o->getConstraintSolver();+	return retVal;+}+//method: stepSimulation int ( ::btDynamicsWorld::* )( ::btScalar,int,::btScalar ) +int btDynamicsWorld_stepSimulation(void *c,float p0,int p1,float p2) {+	::btDynamicsWorld *o = (::btDynamicsWorld*)c;+	int retVal = (int)o->stepSimulation(p0,p1,p2);+	return retVal;+}+//method: addCharacter void ( ::btDynamicsWorld::* )( ::btActionInterface * ) +void btDynamicsWorld_addCharacter(void *c,void* p0) {+	::btDynamicsWorld *o = (::btDynamicsWorld*)c;+	::btActionInterface * tp0 = (::btActionInterface *)p0;+	o->addCharacter(tp0);+}+//not supported method: getWorldType ::btDynamicsWorldType ( ::btDynamicsWorld::* )(  ) const+//method: addVehicle void ( ::btDynamicsWorld::* )( ::btActionInterface * ) +void btDynamicsWorld_addVehicle(void *c,void* p0) {+	::btDynamicsWorld *o = (::btDynamicsWorld*)c;+	::btActionInterface * tp0 = (::btActionInterface *)p0;+	o->addVehicle(tp0);+}+//not supported method: getWorldUserInfo void * ( ::btDynamicsWorld::* )(  ) const+//method: setConstraintSolver void ( ::btDynamicsWorld::* )( ::btConstraintSolver * ) +void btDynamicsWorld_setConstraintSolver(void *c,void* p0) {+	::btDynamicsWorld *o = (::btDynamicsWorld*)c;+	::btConstraintSolver * tp0 = (::btConstraintSolver *)p0;+	o->setConstraintSolver(tp0);+}++// ::btRigidBody+//constructor: btRigidBody  ( ::btRigidBody::* )( ::btRigidBody::btRigidBodyConstructionInfo const & ) +void* btRigidBody_new0(void* p0) {+	::btRigidBody *o = 0;+	 void *mem = 0;+	::btRigidBody::btRigidBodyConstructionInfo const & tp0 = *(::btRigidBody::btRigidBodyConstructionInfo const *)p0;+	mem = btAlignedAlloc(sizeof(::btRigidBody),16);+	o = new (mem)::btRigidBody(tp0);+	return (void*)o;+}+//constructor: btRigidBody  ( ::btRigidBody::* )( ::btScalar,::btMotionState *,::btCollisionShape *,::btVector3 const & ) +void* btRigidBody_new1(float p0,void* p1,void* p2,float* p3) {+	::btRigidBody *o = 0;+	 void *mem = 0;+	::btMotionState * tp1 = (::btMotionState *)p1;+	::btCollisionShape * tp2 = (::btCollisionShape *)p2;+	btVector3 tp3(p3[0],p3[1],p3[2]);+	mem = btAlignedAlloc(sizeof(::btRigidBody),16);+	o = new (mem)::btRigidBody(p0,tp1,tp2,tp3);+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+	return (void*)o;+}+void btRigidBody_free(void *c) {+	::btRigidBody *o = (::btRigidBody*)c;+	delete o;+}+//method: setGravity void ( ::btRigidBody::* )( ::btVector3 const & ) +void btRigidBody_setGravity(void *c,float* p0) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setGravity(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: updateDeactivation void ( ::btRigidBody::* )( ::btScalar ) +void btRigidBody_updateDeactivation(void *c,float p0) {+	::btRigidBody *o = (::btRigidBody*)c;+	o->updateDeactivation(p0);+}+//method: setAngularFactor void ( ::btRigidBody::* )( ::btVector3 const & ) +void btRigidBody_setAngularFactor(void *c,float* p0) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setAngularFactor(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: setAngularFactor void ( ::btRigidBody::* )( ::btVector3 const & ) +void btRigidBody_setAngularFactor0(void *c,float* p0) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setAngularFactor(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: setAngularFactor void ( ::btRigidBody::* )( ::btScalar ) +void btRigidBody_setAngularFactor1(void *c,float p0) {+	::btRigidBody *o = (::btRigidBody*)c;+	o->setAngularFactor(p0);+}+//method: internalWritebackVelocity void ( ::btRigidBody::* )(  ) +void btRigidBody_internalWritebackVelocity(void *c) {+	::btRigidBody *o = (::btRigidBody*)c;+	o->internalWritebackVelocity();+}+//method: internalWritebackVelocity void ( ::btRigidBody::* )(  ) +void btRigidBody_internalWritebackVelocity0(void *c) {+	::btRigidBody *o = (::btRigidBody*)c;+	o->internalWritebackVelocity();+}+//method: internalWritebackVelocity void ( ::btRigidBody::* )( ::btScalar ) +void btRigidBody_internalWritebackVelocity1(void *c,float p0) {+	::btRigidBody *o = (::btRigidBody*)c;+	o->internalWritebackVelocity(p0);+}+//method: getPushVelocity ::btVector3 const & ( ::btRigidBody::* )(  ) const+void btRigidBody_getPushVelocity(void *c,float* ret) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getPushVelocity();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: internalGetDeltaAngularVelocity ::btVector3 & ( ::btRigidBody::* )(  ) +void btRigidBody_internalGetDeltaAngularVelocity(void *c,float* ret) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->internalGetDeltaAngularVelocity();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: applyGravity void ( ::btRigidBody::* )(  ) +void btRigidBody_applyGravity(void *c) {+	::btRigidBody *o = (::btRigidBody*)c;+	o->applyGravity();+}+//not supported method: serialize char const * ( ::btRigidBody::* )( void *,::btSerializer * ) const+//method: getOrientation ::btQuaternion ( ::btRigidBody::* )(  ) const+void btRigidBody_getOrientation(void *c,float* ret) {+	::btRigidBody *o = (::btRigidBody*)c;+	btQuaternion tret(ret[0],ret[1],ret[2],ret[3]);+	tret = o->getOrientation();+	ret[0]=tret.getX();ret[1]=tret.getY();ret[2]=tret.getZ();ret[3]=tret.getW();+}+//method: applyCentralForce void ( ::btRigidBody::* )( ::btVector3 const & ) +void btRigidBody_applyCentralForce(void *c,float* p0) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->applyCentralForce(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//not supported method: internalApplyImpulse void ( ::btRigidBody::* )( ::btVector3 const &,::btVector3 const &,::btScalar const ) +//method: setMotionState void ( ::btRigidBody::* )( ::btMotionState * ) +void btRigidBody_setMotionState(void *c,void* p0) {+	::btRigidBody *o = (::btRigidBody*)c;+	::btMotionState * tp0 = (::btMotionState *)p0;+	o->setMotionState(tp0);+}+//method: clearForces void ( ::btRigidBody::* )(  ) +void btRigidBody_clearForces(void *c) {+	::btRigidBody *o = (::btRigidBody*)c;+	o->clearForces();+}+//method: getMotionState ::btMotionState * ( ::btRigidBody::* )(  ) +void* btRigidBody_getMotionState(void *c) {+	::btRigidBody *o = (::btRigidBody*)c;+	void* retVal = (void*) o->getMotionState();+	return retVal;+}+//method: getMotionState ::btMotionState * ( ::btRigidBody::* )(  ) +void* btRigidBody_getMotionState0(void *c) {+	::btRigidBody *o = (::btRigidBody*)c;+	void* retVal = (void*) o->getMotionState();+	return retVal;+}+//method: getMotionState ::btMotionState const * ( ::btRigidBody::* )(  ) const+void* btRigidBody_getMotionState1(void *c) {+	::btRigidBody *o = (::btRigidBody*)c;+	void* retVal = (void*) o->getMotionState();+	return retVal;+}+//method: setDamping void ( ::btRigidBody::* )( ::btScalar,::btScalar ) +void btRigidBody_setDamping(void *c,float p0,float p1) {+	::btRigidBody *o = (::btRigidBody*)c;+	o->setDamping(p0,p1);+}+//method: applyImpulse void ( ::btRigidBody::* )( ::btVector3 const &,::btVector3 const & ) +void btRigidBody_applyImpulse(void *c,float* p0,float* p1) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->applyImpulse(tp0,tp1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: applyTorque void ( ::btRigidBody::* )( ::btVector3 const & ) +void btRigidBody_applyTorque(void *c,float* p0) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->applyTorque(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: internalApplyPushImpulse void ( ::btRigidBody::* )( ::btVector3 const &,::btVector3 const &,::btScalar ) +void btRigidBody_internalApplyPushImpulse(void *c,float* p0,float* p1,float p2) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->internalApplyPushImpulse(tp0,tp1,p2);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: wantsSleeping bool ( ::btRigidBody::* )(  ) +int btRigidBody_wantsSleeping(void *c) {+	::btRigidBody *o = (::btRigidBody*)c;+	int retVal = (int)o->wantsSleeping();+	return retVal;+}+//method: setNewBroadphaseProxy void ( ::btRigidBody::* )( ::btBroadphaseProxy * ) +void btRigidBody_setNewBroadphaseProxy(void *c,void* p0) {+	::btRigidBody *o = (::btRigidBody*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	o->setNewBroadphaseProxy(tp0);+}+//method: getVelocityInLocalPoint ::btVector3 ( ::btRigidBody::* )( ::btVector3 const & ) const+void btRigidBody_getVelocityInLocalPoint(void *c,float* p0,float* ret) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getVelocityInLocalPoint(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: calculateSerializeBufferSize int ( ::btRigidBody::* )(  ) const+int btRigidBody_calculateSerializeBufferSize(void *c) {+	::btRigidBody *o = (::btRigidBody*)c;+	int retVal = (int)o->calculateSerializeBufferSize();+	return retVal;+}+//method: setAngularVelocity void ( ::btRigidBody::* )( ::btVector3 const & ) +void btRigidBody_setAngularVelocity(void *c,float* p0) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setAngularVelocity(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: getLinearFactor ::btVector3 const & ( ::btRigidBody::* )(  ) const+void btRigidBody_getLinearFactor(void *c,float* ret) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getLinearFactor();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: predictIntegratedTransform void ( ::btRigidBody::* )( ::btScalar,::btTransform & ) +void btRigidBody_predictIntegratedTransform(void *c,float p0,float* p1) {+	::btRigidBody *o = (::btRigidBody*)c;+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	o->predictIntegratedTransform(p0,tp1);+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+}+//method: internalGetAngularFactor ::btVector3 const & ( ::btRigidBody::* )(  ) const+void btRigidBody_internalGetAngularFactor(void *c,float* ret) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->internalGetAngularFactor();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getAngularSleepingThreshold ::btScalar ( ::btRigidBody::* )(  ) const+float btRigidBody_getAngularSleepingThreshold(void *c) {+	::btRigidBody *o = (::btRigidBody*)c;+	float retVal = (float)o->getAngularSleepingThreshold();+	return retVal;+}+//method: applyDamping void ( ::btRigidBody::* )( ::btScalar ) +void btRigidBody_applyDamping(void *c,float p0) {+	::btRigidBody *o = (::btRigidBody*)c;+	o->applyDamping(p0);+}+//method: saveKinematicState void ( ::btRigidBody::* )( ::btScalar ) +void btRigidBody_saveKinematicState(void *c,float p0) {+	::btRigidBody *o = (::btRigidBody*)c;+	o->saveKinematicState(p0);+}+//method: setSleepingThresholds void ( ::btRigidBody::* )( ::btScalar,::btScalar ) +void btRigidBody_setSleepingThresholds(void *c,float p0,float p1) {+	::btRigidBody *o = (::btRigidBody*)c;+	o->setSleepingThresholds(p0,p1);+}+//method: getAngularVelocity ::btVector3 const & ( ::btRigidBody::* )(  ) const+void btRigidBody_getAngularVelocity(void *c,float* ret) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getAngularVelocity();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getLinearSleepingThreshold ::btScalar ( ::btRigidBody::* )(  ) const+float btRigidBody_getLinearSleepingThreshold(void *c) {+	::btRigidBody *o = (::btRigidBody*)c;+	float retVal = (float)o->getLinearSleepingThreshold();+	return retVal;+}+//method: internalGetInvMass ::btVector3 const & ( ::btRigidBody::* )(  ) const+void btRigidBody_internalGetInvMass(void *c,float* ret) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->internalGetInvMass();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: applyTorqueImpulse void ( ::btRigidBody::* )( ::btVector3 const & ) +void btRigidBody_applyTorqueImpulse(void *c,float* p0) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->applyTorqueImpulse(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: internalGetPushVelocity ::btVector3 & ( ::btRigidBody::* )(  ) +void btRigidBody_internalGetPushVelocity(void *c,float* ret) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->internalGetPushVelocity();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: setLinearFactor void ( ::btRigidBody::* )( ::btVector3 const & ) +void btRigidBody_setLinearFactor(void *c,float* p0) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setLinearFactor(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: serializeSingleObject void ( ::btRigidBody::* )( ::btSerializer * ) const+void btRigidBody_serializeSingleObject(void *c,void* p0) {+	::btRigidBody *o = (::btRigidBody*)c;+	::btSerializer * tp0 = (::btSerializer *)p0;+	o->serializeSingleObject(tp0);+}+//method: getInvMass ::btScalar ( ::btRigidBody::* )(  ) const+float btRigidBody_getInvMass(void *c) {+	::btRigidBody *o = (::btRigidBody*)c;+	float retVal = (float)o->getInvMass();+	return retVal;+}+//method: getTotalForce ::btVector3 const & ( ::btRigidBody::* )(  ) const+void btRigidBody_getTotalForce(void *c,float* ret) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getTotalForce();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getCenterOfMassPosition ::btVector3 const & ( ::btRigidBody::* )(  ) const+void btRigidBody_getCenterOfMassPosition(void *c,float* ret) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getCenterOfMassPosition();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getAabb void ( ::btRigidBody::* )( ::btVector3 &,::btVector3 & ) const+void btRigidBody_getAabb(void *c,float* p0,float* p1) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->getAabb(tp0,tp1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: getBroadphaseProxy ::btBroadphaseProxy const * ( ::btRigidBody::* )(  ) const+void* btRigidBody_getBroadphaseProxy(void *c) {+	::btRigidBody *o = (::btRigidBody*)c;+	void* retVal = (void*) o->getBroadphaseProxy();+	return retVal;+}+//method: getBroadphaseProxy ::btBroadphaseProxy const * ( ::btRigidBody::* )(  ) const+void* btRigidBody_getBroadphaseProxy0(void *c) {+	::btRigidBody *o = (::btRigidBody*)c;+	void* retVal = (void*) o->getBroadphaseProxy();+	return retVal;+}+//method: getBroadphaseProxy ::btBroadphaseProxy * ( ::btRigidBody::* )(  ) +void* btRigidBody_getBroadphaseProxy1(void *c) {+	::btRigidBody *o = (::btRigidBody*)c;+	void* retVal = (void*) o->getBroadphaseProxy();+	return retVal;+}+//method: getCollisionShape ::btCollisionShape const * ( ::btRigidBody::* )(  ) const+void* btRigidBody_getCollisionShape(void *c) {+	::btRigidBody *o = (::btRigidBody*)c;+	void* retVal = (void*) o->getCollisionShape();+	return retVal;+}+//method: getCollisionShape ::btCollisionShape const * ( ::btRigidBody::* )(  ) const+void* btRigidBody_getCollisionShape0(void *c) {+	::btRigidBody *o = (::btRigidBody*)c;+	void* retVal = (void*) o->getCollisionShape();+	return retVal;+}+//method: getCollisionShape ::btCollisionShape * ( ::btRigidBody::* )(  ) +void* btRigidBody_getCollisionShape1(void *c) {+	::btRigidBody *o = (::btRigidBody*)c;+	void* retVal = (void*) o->getCollisionShape();+	return retVal;+}+//method: upcast ::btRigidBody const * (*)( ::btCollisionObject const * )+void* btRigidBody_upcast(void* p0) {+	::btCollisionObject const * tp0 = (::btCollisionObject const *)p0;+	void* retVal = (void*) ::btRigidBody::upcast(tp0);+	return retVal;+}+//method: upcast ::btRigidBody const * (*)( ::btCollisionObject const * )+void* btRigidBody_upcast0(void* p0) {+	::btCollisionObject const * tp0 = (::btCollisionObject const *)p0;+	void* retVal = (void*) ::btRigidBody::upcast(tp0);+	return retVal;+}+//method: upcast ::btRigidBody * (*)( ::btCollisionObject * )+void* btRigidBody_upcast1(void* p0) {+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	void* retVal = (void*) ::btRigidBody::upcast(tp0);+	return retVal;+}+//method: checkCollideWithOverride bool ( ::btRigidBody::* )( ::btCollisionObject * ) +int btRigidBody_checkCollideWithOverride(void *c,void* p0) {+	::btRigidBody *o = (::btRigidBody*)c;+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	int retVal = (int)o->checkCollideWithOverride(tp0);+	return retVal;+}+//method: translate void ( ::btRigidBody::* )( ::btVector3 const & ) +void btRigidBody_translate(void *c,float* p0) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->translate(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: updateInertiaTensor void ( ::btRigidBody::* )(  ) +void btRigidBody_updateInertiaTensor(void *c) {+	::btRigidBody *o = (::btRigidBody*)c;+	o->updateInertiaTensor();+}+//method: applyForce void ( ::btRigidBody::* )( ::btVector3 const &,::btVector3 const & ) +void btRigidBody_applyForce(void *c,float* p0,float* p1) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->applyForce(tp0,tp1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: internalGetAngularVelocity void ( ::btRigidBody::* )( ::btVector3 & ) const+void btRigidBody_internalGetAngularVelocity(void *c,float* p0) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->internalGetAngularVelocity(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: applyCentralImpulse void ( ::btRigidBody::* )( ::btVector3 const & ) +void btRigidBody_applyCentralImpulse(void *c,float* p0) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->applyCentralImpulse(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: getTurnVelocity ::btVector3 const & ( ::btRigidBody::* )(  ) const+void btRigidBody_getTurnVelocity(void *c,float* ret) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getTurnVelocity();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getDeltaLinearVelocity ::btVector3 const & ( ::btRigidBody::* )(  ) const+void btRigidBody_getDeltaLinearVelocity(void *c,float* ret) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getDeltaLinearVelocity();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: integrateVelocities void ( ::btRigidBody::* )( ::btScalar ) +void btRigidBody_integrateVelocities(void *c,float p0) {+	::btRigidBody *o = (::btRigidBody*)c;+	o->integrateVelocities(p0);+}+//method: getGravity ::btVector3 const & ( ::btRigidBody::* )(  ) const+void btRigidBody_getGravity(void *c,float* ret) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getGravity();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: setMassProps void ( ::btRigidBody::* )( ::btScalar,::btVector3 const & ) +void btRigidBody_setMassProps(void *c,float p0,float* p1) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->setMassProps(p0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: setCenterOfMassTransform void ( ::btRigidBody::* )( ::btTransform const & ) +void btRigidBody_setCenterOfMassTransform(void *c,float* p0) {+	::btRigidBody *o = (::btRigidBody*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	o->setCenterOfMassTransform(tp0);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+}+//method: setFlags void ( ::btRigidBody::* )( int ) +void btRigidBody_setFlags(void *c,int p0) {+	::btRigidBody *o = (::btRigidBody*)c;+	o->setFlags(p0);+}+//method: addConstraintRef void ( ::btRigidBody::* )( ::btTypedConstraint * ) +void btRigidBody_addConstraintRef(void *c,void* p0) {+	::btRigidBody *o = (::btRigidBody*)c;+	::btTypedConstraint * tp0 = (::btTypedConstraint *)p0;+	o->addConstraintRef(tp0);+}+//method: setLinearVelocity void ( ::btRigidBody::* )( ::btVector3 const & ) +void btRigidBody_setLinearVelocity(void *c,float* p0) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setLinearVelocity(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: isInWorld bool ( ::btRigidBody::* )(  ) const+int btRigidBody_isInWorld(void *c) {+	::btRigidBody *o = (::btRigidBody*)c;+	int retVal = (int)o->isInWorld();+	return retVal;+}+//method: getTotalTorque ::btVector3 const & ( ::btRigidBody::* )(  ) const+void btRigidBody_getTotalTorque(void *c,float* ret) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getTotalTorque();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getNumConstraintRefs int ( ::btRigidBody::* )(  ) const+int btRigidBody_getNumConstraintRefs(void *c) {+	::btRigidBody *o = (::btRigidBody*)c;+	int retVal = (int)o->getNumConstraintRefs();+	return retVal;+}+//method: computeAngularImpulseDenominator ::btScalar ( ::btRigidBody::* )( ::btVector3 const & ) const+float btRigidBody_computeAngularImpulseDenominator(void *c,float* p0) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	float retVal = (float)o->computeAngularImpulseDenominator(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	return retVal;+}+//method: getInvInertiaTensorWorld ::btMatrix3x3 const & ( ::btRigidBody::* )(  ) const+void btRigidBody_getInvInertiaTensorWorld(void *c,float* ret) {+	::btRigidBody *o = (::btRigidBody*)c;+	btMatrix3x3 tret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	tret = o->getInvInertiaTensorWorld();+	ret[0]=tret.getRow(0).m_floats[0];ret[1]=tret.getRow(0).m_floats[1];ret[2]=tret.getRow(0).m_floats[2];ret[3]=tret.getRow(1).m_floats[0];ret[4]=tret.getRow(1).m_floats[1];ret[5]=tret.getRow(1).m_floats[2];ret[6]=tret.getRow(2).m_floats[0];ret[7]=tret.getRow(2).m_floats[1];ret[8]=tret.getRow(2).m_floats[2];+}+//method: getDeltaAngularVelocity ::btVector3 const & ( ::btRigidBody::* )(  ) const+void btRigidBody_getDeltaAngularVelocity(void *c,float* ret) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getDeltaAngularVelocity();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: internalGetDeltaLinearVelocity ::btVector3 & ( ::btRigidBody::* )(  ) +void btRigidBody_internalGetDeltaLinearVelocity(void *c,float* ret) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->internalGetDeltaLinearVelocity();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: computeImpulseDenominator ::btScalar ( ::btRigidBody::* )( ::btVector3 const &,::btVector3 const & ) const+float btRigidBody_computeImpulseDenominator(void *c,float* p0,float* p1) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	float retVal = (float)o->computeImpulseDenominator(tp0,tp1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	return retVal;+}+//method: getConstraintRef ::btTypedConstraint * ( ::btRigidBody::* )( int ) +void* btRigidBody_getConstraintRef(void *c,int p0) {+	::btRigidBody *o = (::btRigidBody*)c;+	void* retVal = (void*) o->getConstraintRef(p0);+	return retVal;+}+//method: getAngularDamping ::btScalar ( ::btRigidBody::* )(  ) const+float btRigidBody_getAngularDamping(void *c) {+	::btRigidBody *o = (::btRigidBody*)c;+	float retVal = (float)o->getAngularDamping();+	return retVal;+}+//method: internalGetTurnVelocity ::btVector3 & ( ::btRigidBody::* )(  ) +void btRigidBody_internalGetTurnVelocity(void *c,float* ret) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->internalGetTurnVelocity();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: proceedToTransform void ( ::btRigidBody::* )( ::btTransform const & ) +void btRigidBody_proceedToTransform(void *c,float* p0) {+	::btRigidBody *o = (::btRigidBody*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	o->proceedToTransform(tp0);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+}+//method: setInvInertiaDiagLocal void ( ::btRigidBody::* )( ::btVector3 const & ) +void btRigidBody_setInvInertiaDiagLocal(void *c,float* p0) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setInvInertiaDiagLocal(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: getInvInertiaDiagLocal ::btVector3 const & ( ::btRigidBody::* )(  ) const+void btRigidBody_getInvInertiaDiagLocal(void *c,float* ret) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getInvInertiaDiagLocal();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getCenterOfMassTransform ::btTransform const & ( ::btRigidBody::* )(  ) const+void btRigidBody_getCenterOfMassTransform(void *c,float* ret) {+	::btRigidBody *o = (::btRigidBody*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getCenterOfMassTransform();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: removeConstraintRef void ( ::btRigidBody::* )( ::btTypedConstraint * ) +void btRigidBody_removeConstraintRef(void *c,void* p0) {+	::btRigidBody *o = (::btRigidBody*)c;+	::btTypedConstraint * tp0 = (::btTypedConstraint *)p0;+	o->removeConstraintRef(tp0);+}+//method: getAngularFactor ::btVector3 const & ( ::btRigidBody::* )(  ) const+void btRigidBody_getAngularFactor(void *c,float* ret) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getAngularFactor();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getLinearVelocity ::btVector3 const & ( ::btRigidBody::* )(  ) const+void btRigidBody_getLinearVelocity(void *c,float* ret) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getLinearVelocity();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getFlags int ( ::btRigidBody::* )(  ) const+int btRigidBody_getFlags(void *c) {+	::btRigidBody *o = (::btRigidBody*)c;+	int retVal = (int)o->getFlags();+	return retVal;+}+//method: internalGetVelocityInLocalPointObsolete void ( ::btRigidBody::* )( ::btVector3 const &,::btVector3 & ) const+void btRigidBody_internalGetVelocityInLocalPointObsolete(void *c,float* p0,float* p1) {+	::btRigidBody *o = (::btRigidBody*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->internalGetVelocityInLocalPointObsolete(tp0,tp1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: getLinearDamping ::btScalar ( ::btRigidBody::* )(  ) const+float btRigidBody_getLinearDamping(void *c) {+	::btRigidBody *o = (::btRigidBody*)c;+	float retVal = (float)o->getLinearDamping();+	return retVal;+}+//attribute: int btRigidBody->m_contactSolverType+void btRigidBody_m_contactSolverType_set(void *c,int a) {+	::btRigidBody *o = (::btRigidBody*)c;+	o->m_contactSolverType = a;+}+int btRigidBody_m_contactSolverType_get(void *c) {+	::btRigidBody *o = (::btRigidBody*)c;+	return (int)(o->m_contactSolverType);+}++//attribute: int btRigidBody->m_frictionSolverType+void btRigidBody_m_frictionSolverType_set(void *c,int a) {+	::btRigidBody *o = (::btRigidBody*)c;+	o->m_frictionSolverType = a;+}+int btRigidBody_m_frictionSolverType_get(void *c) {+	::btRigidBody *o = (::btRigidBody*)c;+	return (int)(o->m_frictionSolverType);+}+++// ::btRigidBody::btRigidBodyConstructionInfo+//constructor: btRigidBodyConstructionInfo  ( ::btRigidBody::btRigidBodyConstructionInfo::* )( ::btScalar,::btMotionState *,::btCollisionShape *,::btVector3 const & ) +void* btRigidBody_btRigidBodyConstructionInfo_new(float p0,void* p1,void* p2,float* p3) {+	::btRigidBody::btRigidBodyConstructionInfo *o = 0;+	 void *mem = 0;+	::btMotionState * tp1 = (::btMotionState *)p1;+	::btCollisionShape * tp2 = (::btCollisionShape *)p2;+	btVector3 tp3(p3[0],p3[1],p3[2]);+	mem = btAlignedAlloc(sizeof(::btRigidBody::btRigidBodyConstructionInfo),16);+	o = new (mem)::btRigidBody::btRigidBodyConstructionInfo(p0,tp1,tp2,tp3);+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+	return (void*)o;+}+void btRigidBody_btRigidBodyConstructionInfo_free(void *c) {+	::btRigidBody::btRigidBodyConstructionInfo *o = (::btRigidBody::btRigidBodyConstructionInfo*)c;+	delete o;+}+//attribute: ::btScalar btRigidBody_btRigidBodyConstructionInfo->m_additionalAngularDampingFactor+void btRigidBody_btRigidBodyConstructionInfo_m_additionalAngularDampingFactor_set(void *c,float a) {+	::btRigidBody::btRigidBodyConstructionInfo *o = (::btRigidBody::btRigidBodyConstructionInfo*)c;+	o->m_additionalAngularDampingFactor = a;+}+float btRigidBody_btRigidBodyConstructionInfo_m_additionalAngularDampingFactor_get(void *c) {+	::btRigidBody::btRigidBodyConstructionInfo *o = (::btRigidBody::btRigidBodyConstructionInfo*)c;+	return (float)(o->m_additionalAngularDampingFactor);+}++//attribute: ::btScalar btRigidBody_btRigidBodyConstructionInfo->m_additionalAngularDampingThresholdSqr+void btRigidBody_btRigidBodyConstructionInfo_m_additionalAngularDampingThresholdSqr_set(void *c,float a) {+	::btRigidBody::btRigidBodyConstructionInfo *o = (::btRigidBody::btRigidBodyConstructionInfo*)c;+	o->m_additionalAngularDampingThresholdSqr = a;+}+float btRigidBody_btRigidBodyConstructionInfo_m_additionalAngularDampingThresholdSqr_get(void *c) {+	::btRigidBody::btRigidBodyConstructionInfo *o = (::btRigidBody::btRigidBodyConstructionInfo*)c;+	return (float)(o->m_additionalAngularDampingThresholdSqr);+}++//attribute: bool btRigidBody_btRigidBodyConstructionInfo->m_additionalDamping+void btRigidBody_btRigidBodyConstructionInfo_m_additionalDamping_set(void *c,int a) {+	::btRigidBody::btRigidBodyConstructionInfo *o = (::btRigidBody::btRigidBodyConstructionInfo*)c;+	o->m_additionalDamping = a;+}+int btRigidBody_btRigidBodyConstructionInfo_m_additionalDamping_get(void *c) {+	::btRigidBody::btRigidBodyConstructionInfo *o = (::btRigidBody::btRigidBodyConstructionInfo*)c;+	return (int)(o->m_additionalDamping);+}++//attribute: ::btScalar btRigidBody_btRigidBodyConstructionInfo->m_additionalDampingFactor+void btRigidBody_btRigidBodyConstructionInfo_m_additionalDampingFactor_set(void *c,float a) {+	::btRigidBody::btRigidBodyConstructionInfo *o = (::btRigidBody::btRigidBodyConstructionInfo*)c;+	o->m_additionalDampingFactor = a;+}+float btRigidBody_btRigidBodyConstructionInfo_m_additionalDampingFactor_get(void *c) {+	::btRigidBody::btRigidBodyConstructionInfo *o = (::btRigidBody::btRigidBodyConstructionInfo*)c;+	return (float)(o->m_additionalDampingFactor);+}++//attribute: ::btScalar btRigidBody_btRigidBodyConstructionInfo->m_additionalLinearDampingThresholdSqr+void btRigidBody_btRigidBodyConstructionInfo_m_additionalLinearDampingThresholdSqr_set(void *c,float a) {+	::btRigidBody::btRigidBodyConstructionInfo *o = (::btRigidBody::btRigidBodyConstructionInfo*)c;+	o->m_additionalLinearDampingThresholdSqr = a;+}+float btRigidBody_btRigidBodyConstructionInfo_m_additionalLinearDampingThresholdSqr_get(void *c) {+	::btRigidBody::btRigidBodyConstructionInfo *o = (::btRigidBody::btRigidBodyConstructionInfo*)c;+	return (float)(o->m_additionalLinearDampingThresholdSqr);+}++//attribute: ::btScalar btRigidBody_btRigidBodyConstructionInfo->m_angularDamping+void btRigidBody_btRigidBodyConstructionInfo_m_angularDamping_set(void *c,float a) {+	::btRigidBody::btRigidBodyConstructionInfo *o = (::btRigidBody::btRigidBodyConstructionInfo*)c;+	o->m_angularDamping = a;+}+float btRigidBody_btRigidBodyConstructionInfo_m_angularDamping_get(void *c) {+	::btRigidBody::btRigidBodyConstructionInfo *o = (::btRigidBody::btRigidBodyConstructionInfo*)c;+	return (float)(o->m_angularDamping);+}++//attribute: ::btScalar btRigidBody_btRigidBodyConstructionInfo->m_angularSleepingThreshold+void btRigidBody_btRigidBodyConstructionInfo_m_angularSleepingThreshold_set(void *c,float a) {+	::btRigidBody::btRigidBodyConstructionInfo *o = (::btRigidBody::btRigidBodyConstructionInfo*)c;+	o->m_angularSleepingThreshold = a;+}+float btRigidBody_btRigidBodyConstructionInfo_m_angularSleepingThreshold_get(void *c) {+	::btRigidBody::btRigidBodyConstructionInfo *o = (::btRigidBody::btRigidBodyConstructionInfo*)c;+	return (float)(o->m_angularSleepingThreshold);+}++//attribute: ::btCollisionShape * btRigidBody_btRigidBodyConstructionInfo->m_collisionShape+void btRigidBody_btRigidBodyConstructionInfo_m_collisionShape_set(void *c,void* a) {+	::btRigidBody::btRigidBodyConstructionInfo *o = (::btRigidBody::btRigidBodyConstructionInfo*)c;+	::btCollisionShape * ta = (::btCollisionShape *)a;+	o->m_collisionShape = ta;+}+// attriibute getter not supported: //attribute: ::btCollisionShape * btRigidBody_btRigidBodyConstructionInfo->m_collisionShape+//attribute: ::btScalar btRigidBody_btRigidBodyConstructionInfo->m_friction+void btRigidBody_btRigidBodyConstructionInfo_m_friction_set(void *c,float a) {+	::btRigidBody::btRigidBodyConstructionInfo *o = (::btRigidBody::btRigidBodyConstructionInfo*)c;+	o->m_friction = a;+}+float btRigidBody_btRigidBodyConstructionInfo_m_friction_get(void *c) {+	::btRigidBody::btRigidBodyConstructionInfo *o = (::btRigidBody::btRigidBodyConstructionInfo*)c;+	return (float)(o->m_friction);+}++//attribute: ::btScalar btRigidBody_btRigidBodyConstructionInfo->m_linearDamping+void btRigidBody_btRigidBodyConstructionInfo_m_linearDamping_set(void *c,float a) {+	::btRigidBody::btRigidBodyConstructionInfo *o = (::btRigidBody::btRigidBodyConstructionInfo*)c;+	o->m_linearDamping = a;+}+float btRigidBody_btRigidBodyConstructionInfo_m_linearDamping_get(void *c) {+	::btRigidBody::btRigidBodyConstructionInfo *o = (::btRigidBody::btRigidBodyConstructionInfo*)c;+	return (float)(o->m_linearDamping);+}++//attribute: ::btScalar btRigidBody_btRigidBodyConstructionInfo->m_linearSleepingThreshold+void btRigidBody_btRigidBodyConstructionInfo_m_linearSleepingThreshold_set(void *c,float a) {+	::btRigidBody::btRigidBodyConstructionInfo *o = (::btRigidBody::btRigidBodyConstructionInfo*)c;+	o->m_linearSleepingThreshold = a;+}+float btRigidBody_btRigidBodyConstructionInfo_m_linearSleepingThreshold_get(void *c) {+	::btRigidBody::btRigidBodyConstructionInfo *o = (::btRigidBody::btRigidBodyConstructionInfo*)c;+	return (float)(o->m_linearSleepingThreshold);+}++//attribute: ::btVector3 btRigidBody_btRigidBodyConstructionInfo->m_localInertia+void btRigidBody_btRigidBodyConstructionInfo_m_localInertia_set(void *c,float* a) {+	::btRigidBody::btRigidBodyConstructionInfo *o = (::btRigidBody::btRigidBodyConstructionInfo*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_localInertia = ta;+}+void btRigidBody_btRigidBodyConstructionInfo_m_localInertia_get(void *c,float* a) {+	::btRigidBody::btRigidBodyConstructionInfo *o = (::btRigidBody::btRigidBodyConstructionInfo*)c;+	a[0]=(o->m_localInertia).m_floats[0];a[1]=(o->m_localInertia).m_floats[1];a[2]=(o->m_localInertia).m_floats[2];+}++//attribute: ::btScalar btRigidBody_btRigidBodyConstructionInfo->m_mass+void btRigidBody_btRigidBodyConstructionInfo_m_mass_set(void *c,float a) {+	::btRigidBody::btRigidBodyConstructionInfo *o = (::btRigidBody::btRigidBodyConstructionInfo*)c;+	o->m_mass = a;+}+float btRigidBody_btRigidBodyConstructionInfo_m_mass_get(void *c) {+	::btRigidBody::btRigidBodyConstructionInfo *o = (::btRigidBody::btRigidBodyConstructionInfo*)c;+	return (float)(o->m_mass);+}++//attribute: ::btMotionState * btRigidBody_btRigidBodyConstructionInfo->m_motionState+void btRigidBody_btRigidBodyConstructionInfo_m_motionState_set(void *c,void* a) {+	::btRigidBody::btRigidBodyConstructionInfo *o = (::btRigidBody::btRigidBodyConstructionInfo*)c;+	::btMotionState * ta = (::btMotionState *)a;+	o->m_motionState = ta;+}+// attriibute getter not supported: //attribute: ::btMotionState * btRigidBody_btRigidBodyConstructionInfo->m_motionState+//attribute: ::btScalar btRigidBody_btRigidBodyConstructionInfo->m_restitution+void btRigidBody_btRigidBodyConstructionInfo_m_restitution_set(void *c,float a) {+	::btRigidBody::btRigidBodyConstructionInfo *o = (::btRigidBody::btRigidBodyConstructionInfo*)c;+	o->m_restitution = a;+}+float btRigidBody_btRigidBodyConstructionInfo_m_restitution_get(void *c) {+	::btRigidBody::btRigidBodyConstructionInfo *o = (::btRigidBody::btRigidBodyConstructionInfo*)c;+	return (float)(o->m_restitution);+}++//attribute: ::btTransform btRigidBody_btRigidBodyConstructionInfo->m_startWorldTransform+void btRigidBody_btRigidBodyConstructionInfo_m_startWorldTransform_set(void *c,float* a) {+	::btRigidBody::btRigidBodyConstructionInfo *o = (::btRigidBody::btRigidBodyConstructionInfo*)c;+	btMatrix3x3 mta(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]);+	btVector3 vta(a[9],a[10],a[11]);+	btTransform ta(mta,vta);+	o->m_startWorldTransform = ta;+}+void btRigidBody_btRigidBodyConstructionInfo_m_startWorldTransform_get(void *c,float* a) {+	::btRigidBody::btRigidBodyConstructionInfo *o = (::btRigidBody::btRigidBodyConstructionInfo*)c;+	a[0]=(o->m_startWorldTransform).getBasis().getRow(0).m_floats[0];a[1]=(o->m_startWorldTransform).getBasis().getRow(0).m_floats[1];a[2]=(o->m_startWorldTransform).getBasis().getRow(0).m_floats[2];a[3]=(o->m_startWorldTransform).getBasis().getRow(1).m_floats[0];a[4]=(o->m_startWorldTransform).getBasis().getRow(1).m_floats[1];a[5]=(o->m_startWorldTransform).getBasis().getRow(1).m_floats[2];a[6]=(o->m_startWorldTransform).getBasis().getRow(2).m_floats[0];a[7]=(o->m_startWorldTransform).getBasis().getRow(2).m_floats[1];a[8]=(o->m_startWorldTransform).getBasis().getRow(2).m_floats[2];+	a[9]=(o->m_startWorldTransform).getOrigin().m_floats[0];a[10]=(o->m_startWorldTransform).getOrigin().m_floats[1];a[11]=(o->m_startWorldTransform).getOrigin().m_floats[2];+}+++// ::btRigidBodyDoubleData+//constructor: btRigidBodyDoubleData  ( ::btRigidBodyDoubleData::* )(  ) +void* btRigidBodyDoubleData_new() {+	::btRigidBodyDoubleData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btRigidBodyDoubleData),16);+	o = new (mem)::btRigidBodyDoubleData();+	return (void*)o;+}+void btRigidBodyDoubleData_free(void *c) {+	::btRigidBodyDoubleData *o = (::btRigidBodyDoubleData*)c;+	delete o;+}+//attribute: ::btCollisionObjectDoubleData btRigidBodyDoubleData->m_collisionObjectData+// attribute not supported: //attribute: ::btCollisionObjectDoubleData btRigidBodyDoubleData->m_collisionObjectData+//attribute: ::btMatrix3x3DoubleData btRigidBodyDoubleData->m_invInertiaTensorWorld+// attribute not supported: //attribute: ::btMatrix3x3DoubleData btRigidBodyDoubleData->m_invInertiaTensorWorld+//attribute: ::btVector3DoubleData btRigidBodyDoubleData->m_linearVelocity+// attribute not supported: //attribute: ::btVector3DoubleData btRigidBodyDoubleData->m_linearVelocity+//attribute: ::btVector3DoubleData btRigidBodyDoubleData->m_angularVelocity+// attribute not supported: //attribute: ::btVector3DoubleData btRigidBodyDoubleData->m_angularVelocity+//attribute: ::btVector3DoubleData btRigidBodyDoubleData->m_angularFactor+// attribute not supported: //attribute: ::btVector3DoubleData btRigidBodyDoubleData->m_angularFactor+//attribute: ::btVector3DoubleData btRigidBodyDoubleData->m_linearFactor+// attribute not supported: //attribute: ::btVector3DoubleData btRigidBodyDoubleData->m_linearFactor+//attribute: ::btVector3DoubleData btRigidBodyDoubleData->m_gravity+// attribute not supported: //attribute: ::btVector3DoubleData btRigidBodyDoubleData->m_gravity+//attribute: ::btVector3DoubleData btRigidBodyDoubleData->m_gravity_acceleration+// attribute not supported: //attribute: ::btVector3DoubleData btRigidBodyDoubleData->m_gravity_acceleration+//attribute: ::btVector3DoubleData btRigidBodyDoubleData->m_invInertiaLocal+// attribute not supported: //attribute: ::btVector3DoubleData btRigidBodyDoubleData->m_invInertiaLocal+//attribute: ::btVector3DoubleData btRigidBodyDoubleData->m_totalForce+// attribute not supported: //attribute: ::btVector3DoubleData btRigidBodyDoubleData->m_totalForce+//attribute: ::btVector3DoubleData btRigidBodyDoubleData->m_totalTorque+// attribute not supported: //attribute: ::btVector3DoubleData btRigidBodyDoubleData->m_totalTorque+//attribute: double btRigidBodyDoubleData->m_inverseMass+void btRigidBodyDoubleData_m_inverseMass_set(void *c,double a) {+	::btRigidBodyDoubleData *o = (::btRigidBodyDoubleData*)c;+	o->m_inverseMass = a;+}+double btRigidBodyDoubleData_m_inverseMass_get(void *c) {+	::btRigidBodyDoubleData *o = (::btRigidBodyDoubleData*)c;+	return (double)(o->m_inverseMass);+}++//attribute: double btRigidBodyDoubleData->m_linearDamping+void btRigidBodyDoubleData_m_linearDamping_set(void *c,double a) {+	::btRigidBodyDoubleData *o = (::btRigidBodyDoubleData*)c;+	o->m_linearDamping = a;+}+double btRigidBodyDoubleData_m_linearDamping_get(void *c) {+	::btRigidBodyDoubleData *o = (::btRigidBodyDoubleData*)c;+	return (double)(o->m_linearDamping);+}++//attribute: double btRigidBodyDoubleData->m_angularDamping+void btRigidBodyDoubleData_m_angularDamping_set(void *c,double a) {+	::btRigidBodyDoubleData *o = (::btRigidBodyDoubleData*)c;+	o->m_angularDamping = a;+}+double btRigidBodyDoubleData_m_angularDamping_get(void *c) {+	::btRigidBodyDoubleData *o = (::btRigidBodyDoubleData*)c;+	return (double)(o->m_angularDamping);+}++//attribute: double btRigidBodyDoubleData->m_additionalDampingFactor+void btRigidBodyDoubleData_m_additionalDampingFactor_set(void *c,double a) {+	::btRigidBodyDoubleData *o = (::btRigidBodyDoubleData*)c;+	o->m_additionalDampingFactor = a;+}+double btRigidBodyDoubleData_m_additionalDampingFactor_get(void *c) {+	::btRigidBodyDoubleData *o = (::btRigidBodyDoubleData*)c;+	return (double)(o->m_additionalDampingFactor);+}++//attribute: double btRigidBodyDoubleData->m_additionalLinearDampingThresholdSqr+void btRigidBodyDoubleData_m_additionalLinearDampingThresholdSqr_set(void *c,double a) {+	::btRigidBodyDoubleData *o = (::btRigidBodyDoubleData*)c;+	o->m_additionalLinearDampingThresholdSqr = a;+}+double btRigidBodyDoubleData_m_additionalLinearDampingThresholdSqr_get(void *c) {+	::btRigidBodyDoubleData *o = (::btRigidBodyDoubleData*)c;+	return (double)(o->m_additionalLinearDampingThresholdSqr);+}++//attribute: double btRigidBodyDoubleData->m_additionalAngularDampingThresholdSqr+void btRigidBodyDoubleData_m_additionalAngularDampingThresholdSqr_set(void *c,double a) {+	::btRigidBodyDoubleData *o = (::btRigidBodyDoubleData*)c;+	o->m_additionalAngularDampingThresholdSqr = a;+}+double btRigidBodyDoubleData_m_additionalAngularDampingThresholdSqr_get(void *c) {+	::btRigidBodyDoubleData *o = (::btRigidBodyDoubleData*)c;+	return (double)(o->m_additionalAngularDampingThresholdSqr);+}++//attribute: double btRigidBodyDoubleData->m_additionalAngularDampingFactor+void btRigidBodyDoubleData_m_additionalAngularDampingFactor_set(void *c,double a) {+	::btRigidBodyDoubleData *o = (::btRigidBodyDoubleData*)c;+	o->m_additionalAngularDampingFactor = a;+}+double btRigidBodyDoubleData_m_additionalAngularDampingFactor_get(void *c) {+	::btRigidBodyDoubleData *o = (::btRigidBodyDoubleData*)c;+	return (double)(o->m_additionalAngularDampingFactor);+}++//attribute: double btRigidBodyDoubleData->m_linearSleepingThreshold+void btRigidBodyDoubleData_m_linearSleepingThreshold_set(void *c,double a) {+	::btRigidBodyDoubleData *o = (::btRigidBodyDoubleData*)c;+	o->m_linearSleepingThreshold = a;+}+double btRigidBodyDoubleData_m_linearSleepingThreshold_get(void *c) {+	::btRigidBodyDoubleData *o = (::btRigidBodyDoubleData*)c;+	return (double)(o->m_linearSleepingThreshold);+}++//attribute: double btRigidBodyDoubleData->m_angularSleepingThreshold+void btRigidBodyDoubleData_m_angularSleepingThreshold_set(void *c,double a) {+	::btRigidBodyDoubleData *o = (::btRigidBodyDoubleData*)c;+	o->m_angularSleepingThreshold = a;+}+double btRigidBodyDoubleData_m_angularSleepingThreshold_get(void *c) {+	::btRigidBodyDoubleData *o = (::btRigidBodyDoubleData*)c;+	return (double)(o->m_angularSleepingThreshold);+}++//attribute: int btRigidBodyDoubleData->m_additionalDamping+void btRigidBodyDoubleData_m_additionalDamping_set(void *c,int a) {+	::btRigidBodyDoubleData *o = (::btRigidBodyDoubleData*)c;+	o->m_additionalDamping = a;+}+int btRigidBodyDoubleData_m_additionalDamping_get(void *c) {+	::btRigidBodyDoubleData *o = (::btRigidBodyDoubleData*)c;+	return (int)(o->m_additionalDamping);+}++//attribute: char[4] btRigidBodyDoubleData->m_padding+// attribute not supported: //attribute: char[4] btRigidBodyDoubleData->m_padding++// ::btRigidBodyFloatData+//constructor: btRigidBodyFloatData  ( ::btRigidBodyFloatData::* )(  ) +void* btRigidBodyFloatData_new() {+	::btRigidBodyFloatData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btRigidBodyFloatData),16);+	o = new (mem)::btRigidBodyFloatData();+	return (void*)o;+}+void btRigidBodyFloatData_free(void *c) {+	::btRigidBodyFloatData *o = (::btRigidBodyFloatData*)c;+	delete o;+}+//attribute: float btRigidBodyFloatData->m_additionalAngularDampingFactor+void btRigidBodyFloatData_m_additionalAngularDampingFactor_set(void *c,float a) {+	::btRigidBodyFloatData *o = (::btRigidBodyFloatData*)c;+	o->m_additionalAngularDampingFactor = a;+}+float btRigidBodyFloatData_m_additionalAngularDampingFactor_get(void *c) {+	::btRigidBodyFloatData *o = (::btRigidBodyFloatData*)c;+	return (float)(o->m_additionalAngularDampingFactor);+}++//attribute: float btRigidBodyFloatData->m_additionalAngularDampingThresholdSqr+void btRigidBodyFloatData_m_additionalAngularDampingThresholdSqr_set(void *c,float a) {+	::btRigidBodyFloatData *o = (::btRigidBodyFloatData*)c;+	o->m_additionalAngularDampingThresholdSqr = a;+}+float btRigidBodyFloatData_m_additionalAngularDampingThresholdSqr_get(void *c) {+	::btRigidBodyFloatData *o = (::btRigidBodyFloatData*)c;+	return (float)(o->m_additionalAngularDampingThresholdSqr);+}++//attribute: int btRigidBodyFloatData->m_additionalDamping+void btRigidBodyFloatData_m_additionalDamping_set(void *c,int a) {+	::btRigidBodyFloatData *o = (::btRigidBodyFloatData*)c;+	o->m_additionalDamping = a;+}+int btRigidBodyFloatData_m_additionalDamping_get(void *c) {+	::btRigidBodyFloatData *o = (::btRigidBodyFloatData*)c;+	return (int)(o->m_additionalDamping);+}++//attribute: float btRigidBodyFloatData->m_additionalDampingFactor+void btRigidBodyFloatData_m_additionalDampingFactor_set(void *c,float a) {+	::btRigidBodyFloatData *o = (::btRigidBodyFloatData*)c;+	o->m_additionalDampingFactor = a;+}+float btRigidBodyFloatData_m_additionalDampingFactor_get(void *c) {+	::btRigidBodyFloatData *o = (::btRigidBodyFloatData*)c;+	return (float)(o->m_additionalDampingFactor);+}++//attribute: float btRigidBodyFloatData->m_additionalLinearDampingThresholdSqr+void btRigidBodyFloatData_m_additionalLinearDampingThresholdSqr_set(void *c,float a) {+	::btRigidBodyFloatData *o = (::btRigidBodyFloatData*)c;+	o->m_additionalLinearDampingThresholdSqr = a;+}+float btRigidBodyFloatData_m_additionalLinearDampingThresholdSqr_get(void *c) {+	::btRigidBodyFloatData *o = (::btRigidBodyFloatData*)c;+	return (float)(o->m_additionalLinearDampingThresholdSqr);+}++//attribute: float btRigidBodyFloatData->m_angularDamping+void btRigidBodyFloatData_m_angularDamping_set(void *c,float a) {+	::btRigidBodyFloatData *o = (::btRigidBodyFloatData*)c;+	o->m_angularDamping = a;+}+float btRigidBodyFloatData_m_angularDamping_get(void *c) {+	::btRigidBodyFloatData *o = (::btRigidBodyFloatData*)c;+	return (float)(o->m_angularDamping);+}++//attribute: ::btVector3FloatData btRigidBodyFloatData->m_angularFactor+// attribute not supported: //attribute: ::btVector3FloatData btRigidBodyFloatData->m_angularFactor+//attribute: float btRigidBodyFloatData->m_angularSleepingThreshold+void btRigidBodyFloatData_m_angularSleepingThreshold_set(void *c,float a) {+	::btRigidBodyFloatData *o = (::btRigidBodyFloatData*)c;+	o->m_angularSleepingThreshold = a;+}+float btRigidBodyFloatData_m_angularSleepingThreshold_get(void *c) {+	::btRigidBodyFloatData *o = (::btRigidBodyFloatData*)c;+	return (float)(o->m_angularSleepingThreshold);+}++//attribute: ::btVector3FloatData btRigidBodyFloatData->m_angularVelocity+// attribute not supported: //attribute: ::btVector3FloatData btRigidBodyFloatData->m_angularVelocity+//attribute: ::btCollisionObjectFloatData btRigidBodyFloatData->m_collisionObjectData+// attribute not supported: //attribute: ::btCollisionObjectFloatData btRigidBodyFloatData->m_collisionObjectData+//attribute: ::btVector3FloatData btRigidBodyFloatData->m_gravity+// attribute not supported: //attribute: ::btVector3FloatData btRigidBodyFloatData->m_gravity+//attribute: ::btVector3FloatData btRigidBodyFloatData->m_gravity_acceleration+// attribute not supported: //attribute: ::btVector3FloatData btRigidBodyFloatData->m_gravity_acceleration+//attribute: ::btVector3FloatData btRigidBodyFloatData->m_invInertiaLocal+// attribute not supported: //attribute: ::btVector3FloatData btRigidBodyFloatData->m_invInertiaLocal+//attribute: ::btMatrix3x3FloatData btRigidBodyFloatData->m_invInertiaTensorWorld+// attribute not supported: //attribute: ::btMatrix3x3FloatData btRigidBodyFloatData->m_invInertiaTensorWorld+//attribute: float btRigidBodyFloatData->m_inverseMass+void btRigidBodyFloatData_m_inverseMass_set(void *c,float a) {+	::btRigidBodyFloatData *o = (::btRigidBodyFloatData*)c;+	o->m_inverseMass = a;+}+float btRigidBodyFloatData_m_inverseMass_get(void *c) {+	::btRigidBodyFloatData *o = (::btRigidBodyFloatData*)c;+	return (float)(o->m_inverseMass);+}++//attribute: float btRigidBodyFloatData->m_linearDamping+void btRigidBodyFloatData_m_linearDamping_set(void *c,float a) {+	::btRigidBodyFloatData *o = (::btRigidBodyFloatData*)c;+	o->m_linearDamping = a;+}+float btRigidBodyFloatData_m_linearDamping_get(void *c) {+	::btRigidBodyFloatData *o = (::btRigidBodyFloatData*)c;+	return (float)(o->m_linearDamping);+}++//attribute: ::btVector3FloatData btRigidBodyFloatData->m_linearFactor+// attribute not supported: //attribute: ::btVector3FloatData btRigidBodyFloatData->m_linearFactor+//attribute: float btRigidBodyFloatData->m_linearSleepingThreshold+void btRigidBodyFloatData_m_linearSleepingThreshold_set(void *c,float a) {+	::btRigidBodyFloatData *o = (::btRigidBodyFloatData*)c;+	o->m_linearSleepingThreshold = a;+}+float btRigidBodyFloatData_m_linearSleepingThreshold_get(void *c) {+	::btRigidBodyFloatData *o = (::btRigidBodyFloatData*)c;+	return (float)(o->m_linearSleepingThreshold);+}++//attribute: ::btVector3FloatData btRigidBodyFloatData->m_linearVelocity+// attribute not supported: //attribute: ::btVector3FloatData btRigidBodyFloatData->m_linearVelocity+//attribute: ::btVector3FloatData btRigidBodyFloatData->m_totalForce+// attribute not supported: //attribute: ::btVector3FloatData btRigidBodyFloatData->m_totalForce+//attribute: ::btVector3FloatData btRigidBodyFloatData->m_totalTorque+// attribute not supported: //attribute: ::btVector3FloatData btRigidBodyFloatData->m_totalTorque++// ::btSimpleDynamicsWorld+//constructor: btSimpleDynamicsWorld  ( ::btSimpleDynamicsWorld::* )( ::btDispatcher *,::btBroadphaseInterface *,::btConstraintSolver *,::btCollisionConfiguration * ) +void* btSimpleDynamicsWorld_new(void* p0,void* p1,void* p2,void* p3) {+	::btSimpleDynamicsWorld *o = 0;+	 void *mem = 0;+	::btDispatcher * tp0 = (::btDispatcher *)p0;+	::btBroadphaseInterface * tp1 = (::btBroadphaseInterface *)p1;+	::btConstraintSolver * tp2 = (::btConstraintSolver *)p2;+	::btCollisionConfiguration * tp3 = (::btCollisionConfiguration *)p3;+	mem = btAlignedAlloc(sizeof(::btSimpleDynamicsWorld),16);+	o = new (mem)::btSimpleDynamicsWorld(tp0,tp1,tp2,tp3);+	return (void*)o;+}+void btSimpleDynamicsWorld_free(void *c) {+	::btSimpleDynamicsWorld *o = (::btSimpleDynamicsWorld*)c;+	delete o;+}+//method: setGravity void ( ::btSimpleDynamicsWorld::* )( ::btVector3 const & ) +void btSimpleDynamicsWorld_setGravity(void *c,float* p0) {+	::btSimpleDynamicsWorld *o = (::btSimpleDynamicsWorld*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setGravity(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: addAction void ( ::btSimpleDynamicsWorld::* )( ::btActionInterface * ) +void btSimpleDynamicsWorld_addAction(void *c,void* p0) {+	::btSimpleDynamicsWorld *o = (::btSimpleDynamicsWorld*)c;+	::btActionInterface * tp0 = (::btActionInterface *)p0;+	o->addAction(tp0);+}+//method: setConstraintSolver void ( ::btSimpleDynamicsWorld::* )( ::btConstraintSolver * ) +void btSimpleDynamicsWorld_setConstraintSolver(void *c,void* p0) {+	::btSimpleDynamicsWorld *o = (::btSimpleDynamicsWorld*)c;+	::btConstraintSolver * tp0 = (::btConstraintSolver *)p0;+	o->setConstraintSolver(tp0);+}+//method: getConstraintSolver ::btConstraintSolver * ( ::btSimpleDynamicsWorld::* )(  ) +void* btSimpleDynamicsWorld_getConstraintSolver(void *c) {+	::btSimpleDynamicsWorld *o = (::btSimpleDynamicsWorld*)c;+	void* retVal = (void*) o->getConstraintSolver();+	return retVal;+}+//method: stepSimulation int ( ::btSimpleDynamicsWorld::* )( ::btScalar,int,::btScalar ) +int btSimpleDynamicsWorld_stepSimulation(void *c,float p0,int p1,float p2) {+	::btSimpleDynamicsWorld *o = (::btSimpleDynamicsWorld*)c;+	int retVal = (int)o->stepSimulation(p0,p1,p2);+	return retVal;+}+//not supported method: getWorldType ::btDynamicsWorldType ( ::btSimpleDynamicsWorld::* )(  ) const+//method: removeRigidBody void ( ::btSimpleDynamicsWorld::* )( ::btRigidBody * ) +void btSimpleDynamicsWorld_removeRigidBody(void *c,void* p0) {+	::btSimpleDynamicsWorld *o = (::btSimpleDynamicsWorld*)c;+	::btRigidBody * tp0 = (::btRigidBody *)p0;+	o->removeRigidBody(tp0);+}+//method: addRigidBody void ( ::btSimpleDynamicsWorld::* )( ::btRigidBody * ) +void btSimpleDynamicsWorld_addRigidBody(void *c,void* p0) {+	::btSimpleDynamicsWorld *o = (::btSimpleDynamicsWorld*)c;+	::btRigidBody * tp0 = (::btRigidBody *)p0;+	o->addRigidBody(tp0);+}+//method: addRigidBody void ( ::btSimpleDynamicsWorld::* )( ::btRigidBody * ) +void btSimpleDynamicsWorld_addRigidBody0(void *c,void* p0) {+	::btSimpleDynamicsWorld *o = (::btSimpleDynamicsWorld*)c;+	::btRigidBody * tp0 = (::btRigidBody *)p0;+	o->addRigidBody(tp0);+}+//method: addRigidBody void ( ::btSimpleDynamicsWorld::* )( ::btRigidBody *,short int,short int ) +void btSimpleDynamicsWorld_addRigidBody1(void *c,void* p0,short int p1,short int p2) {+	::btSimpleDynamicsWorld *o = (::btSimpleDynamicsWorld*)c;+	::btRigidBody * tp0 = (::btRigidBody *)p0;+	o->addRigidBody(tp0,p1,p2);+}+//method: getGravity ::btVector3 ( ::btSimpleDynamicsWorld::* )(  ) const+void btSimpleDynamicsWorld_getGravity(void *c,float* ret) {+	::btSimpleDynamicsWorld *o = (::btSimpleDynamicsWorld*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getGravity();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: synchronizeMotionStates void ( ::btSimpleDynamicsWorld::* )(  ) +void btSimpleDynamicsWorld_synchronizeMotionStates(void *c) {+	::btSimpleDynamicsWorld *o = (::btSimpleDynamicsWorld*)c;+	o->synchronizeMotionStates();+}+//method: removeCollisionObject void ( ::btSimpleDynamicsWorld::* )( ::btCollisionObject * ) +void btSimpleDynamicsWorld_removeCollisionObject(void *c,void* p0) {+	::btSimpleDynamicsWorld *o = (::btSimpleDynamicsWorld*)c;+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	o->removeCollisionObject(tp0);+}+//method: clearForces void ( ::btSimpleDynamicsWorld::* )(  ) +void btSimpleDynamicsWorld_clearForces(void *c) {+	::btSimpleDynamicsWorld *o = (::btSimpleDynamicsWorld*)c;+	o->clearForces();+}+//method: removeAction void ( ::btSimpleDynamicsWorld::* )( ::btActionInterface * ) +void btSimpleDynamicsWorld_removeAction(void *c,void* p0) {+	::btSimpleDynamicsWorld *o = (::btSimpleDynamicsWorld*)c;+	::btActionInterface * tp0 = (::btActionInterface *)p0;+	o->removeAction(tp0);+}+//method: updateAabbs void ( ::btSimpleDynamicsWorld::* )(  ) +void btSimpleDynamicsWorld_updateAabbs(void *c) {+	::btSimpleDynamicsWorld *o = (::btSimpleDynamicsWorld*)c;+	o->updateAabbs();+}+//method: debugDrawWorld void ( ::btSimpleDynamicsWorld::* )(  ) +void btSimpleDynamicsWorld_debugDrawWorld(void *c) {+	::btSimpleDynamicsWorld *o = (::btSimpleDynamicsWorld*)c;+	o->debugDrawWorld();+}++// ::btWheelInfo::RaycastInfo+//constructor: RaycastInfo  ( ::btWheelInfo::RaycastInfo::* )(  ) +void* btWheelInfo_RaycastInfo_new() {+	::btWheelInfo::RaycastInfo *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btWheelInfo::RaycastInfo),16);+	o = new (mem)::btWheelInfo::RaycastInfo();+	return (void*)o;+}+void btWheelInfo_RaycastInfo_free(void *c) {+	::btWheelInfo::RaycastInfo *o = (::btWheelInfo::RaycastInfo*)c;+	delete o;+}+//attribute: ::btVector3 btWheelInfo_RaycastInfo->m_contactNormalWS+void btWheelInfo_RaycastInfo_m_contactNormalWS_set(void *c,float* a) {+	::btWheelInfo::RaycastInfo *o = (::btWheelInfo::RaycastInfo*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_contactNormalWS = ta;+}+void btWheelInfo_RaycastInfo_m_contactNormalWS_get(void *c,float* a) {+	::btWheelInfo::RaycastInfo *o = (::btWheelInfo::RaycastInfo*)c;+	a[0]=(o->m_contactNormalWS).m_floats[0];a[1]=(o->m_contactNormalWS).m_floats[1];a[2]=(o->m_contactNormalWS).m_floats[2];+}++//attribute: ::btVector3 btWheelInfo_RaycastInfo->m_contactPointWS+void btWheelInfo_RaycastInfo_m_contactPointWS_set(void *c,float* a) {+	::btWheelInfo::RaycastInfo *o = (::btWheelInfo::RaycastInfo*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_contactPointWS = ta;+}+void btWheelInfo_RaycastInfo_m_contactPointWS_get(void *c,float* a) {+	::btWheelInfo::RaycastInfo *o = (::btWheelInfo::RaycastInfo*)c;+	a[0]=(o->m_contactPointWS).m_floats[0];a[1]=(o->m_contactPointWS).m_floats[1];a[2]=(o->m_contactPointWS).m_floats[2];+}++//attribute: ::btScalar btWheelInfo_RaycastInfo->m_suspensionLength+void btWheelInfo_RaycastInfo_m_suspensionLength_set(void *c,float a) {+	::btWheelInfo::RaycastInfo *o = (::btWheelInfo::RaycastInfo*)c;+	o->m_suspensionLength = a;+}+float btWheelInfo_RaycastInfo_m_suspensionLength_get(void *c) {+	::btWheelInfo::RaycastInfo *o = (::btWheelInfo::RaycastInfo*)c;+	return (float)(o->m_suspensionLength);+}++//attribute: ::btVector3 btWheelInfo_RaycastInfo->m_hardPointWS+void btWheelInfo_RaycastInfo_m_hardPointWS_set(void *c,float* a) {+	::btWheelInfo::RaycastInfo *o = (::btWheelInfo::RaycastInfo*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_hardPointWS = ta;+}+void btWheelInfo_RaycastInfo_m_hardPointWS_get(void *c,float* a) {+	::btWheelInfo::RaycastInfo *o = (::btWheelInfo::RaycastInfo*)c;+	a[0]=(o->m_hardPointWS).m_floats[0];a[1]=(o->m_hardPointWS).m_floats[1];a[2]=(o->m_hardPointWS).m_floats[2];+}++//attribute: ::btVector3 btWheelInfo_RaycastInfo->m_wheelDirectionWS+void btWheelInfo_RaycastInfo_m_wheelDirectionWS_set(void *c,float* a) {+	::btWheelInfo::RaycastInfo *o = (::btWheelInfo::RaycastInfo*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_wheelDirectionWS = ta;+}+void btWheelInfo_RaycastInfo_m_wheelDirectionWS_get(void *c,float* a) {+	::btWheelInfo::RaycastInfo *o = (::btWheelInfo::RaycastInfo*)c;+	a[0]=(o->m_wheelDirectionWS).m_floats[0];a[1]=(o->m_wheelDirectionWS).m_floats[1];a[2]=(o->m_wheelDirectionWS).m_floats[2];+}++//attribute: ::btVector3 btWheelInfo_RaycastInfo->m_wheelAxleWS+void btWheelInfo_RaycastInfo_m_wheelAxleWS_set(void *c,float* a) {+	::btWheelInfo::RaycastInfo *o = (::btWheelInfo::RaycastInfo*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_wheelAxleWS = ta;+}+void btWheelInfo_RaycastInfo_m_wheelAxleWS_get(void *c,float* a) {+	::btWheelInfo::RaycastInfo *o = (::btWheelInfo::RaycastInfo*)c;+	a[0]=(o->m_wheelAxleWS).m_floats[0];a[1]=(o->m_wheelAxleWS).m_floats[1];a[2]=(o->m_wheelAxleWS).m_floats[2];+}++//attribute: bool btWheelInfo_RaycastInfo->m_isInContact+void btWheelInfo_RaycastInfo_m_isInContact_set(void *c,int a) {+	::btWheelInfo::RaycastInfo *o = (::btWheelInfo::RaycastInfo*)c;+	o->m_isInContact = a;+}+int btWheelInfo_RaycastInfo_m_isInContact_get(void *c) {+	::btWheelInfo::RaycastInfo *o = (::btWheelInfo::RaycastInfo*)c;+	return (int)(o->m_isInContact);+}++//attribute: void * btWheelInfo_RaycastInfo->m_groundObject+// attribute not supported: //attribute: void * btWheelInfo_RaycastInfo->m_groundObject++// ::btDefaultVehicleRaycaster+//constructor: btDefaultVehicleRaycaster  ( ::btDefaultVehicleRaycaster::* )( ::btDynamicsWorld * ) +void* btDefaultVehicleRaycaster_new(void* p0) {+	::btDefaultVehicleRaycaster *o = 0;+	 void *mem = 0;+	::btDynamicsWorld * tp0 = (::btDynamicsWorld *)p0;+	mem = btAlignedAlloc(sizeof(::btDefaultVehicleRaycaster),16);+	o = new (mem)::btDefaultVehicleRaycaster(tp0);+	return (void*)o;+}+void btDefaultVehicleRaycaster_free(void *c) {+	::btDefaultVehicleRaycaster *o = (::btDefaultVehicleRaycaster*)c;+	delete o;+}+//not supported method: castRay void * ( ::btDefaultVehicleRaycaster::* )( ::btVector3 const &,::btVector3 const &,::btVehicleRaycaster::btVehicleRaycasterResult & ) ++// ::btRaycastVehicle+//constructor: btRaycastVehicle  ( ::btRaycastVehicle::* )( ::btRaycastVehicle::btVehicleTuning const &,::btRigidBody *,::btVehicleRaycaster * ) +void* btRaycastVehicle_new(void* p0,void* p1,void* p2) {+	::btRaycastVehicle *o = 0;+	 void *mem = 0;+	::btRaycastVehicle::btVehicleTuning const & tp0 = *(::btRaycastVehicle::btVehicleTuning const *)p0;+	::btRigidBody * tp1 = (::btRigidBody *)p1;+	::btVehicleRaycaster * tp2 = (::btVehicleRaycaster *)p2;+	mem = btAlignedAlloc(sizeof(::btRaycastVehicle),16);+	o = new (mem)::btRaycastVehicle(tp0,tp1,tp2);+	return (void*)o;+}+void btRaycastVehicle_free(void *c) {+	::btRaycastVehicle *o = (::btRaycastVehicle*)c;+	delete o;+}+//method: updateSuspension void ( ::btRaycastVehicle::* )( ::btScalar ) +void btRaycastVehicle_updateSuspension(void *c,float p0) {+	::btRaycastVehicle *o = (::btRaycastVehicle*)c;+	o->updateSuspension(p0);+}+//method: getRigidBody ::btRigidBody * ( ::btRaycastVehicle::* )(  ) +void* btRaycastVehicle_getRigidBody(void *c) {+	::btRaycastVehicle *o = (::btRaycastVehicle*)c;+	void* retVal = (void*) o->getRigidBody();+	return retVal;+}+//method: getRigidBody ::btRigidBody * ( ::btRaycastVehicle::* )(  ) +void* btRaycastVehicle_getRigidBody0(void *c) {+	::btRaycastVehicle *o = (::btRaycastVehicle*)c;+	void* retVal = (void*) o->getRigidBody();+	return retVal;+}+//method: getRigidBody ::btRigidBody const * ( ::btRaycastVehicle::* )(  ) const+void* btRaycastVehicle_getRigidBody1(void *c) {+	::btRaycastVehicle *o = (::btRaycastVehicle*)c;+	void* retVal = (void*) o->getRigidBody();+	return retVal;+}+//method: getUserConstraintId int ( ::btRaycastVehicle::* )(  ) const+int btRaycastVehicle_getUserConstraintId(void *c) {+	::btRaycastVehicle *o = (::btRaycastVehicle*)c;+	int retVal = (int)o->getUserConstraintId();+	return retVal;+}+//method: getWheelTransformWS ::btTransform const & ( ::btRaycastVehicle::* )( int ) const+void btRaycastVehicle_getWheelTransformWS(void *c,int p0,float* ret) {+	::btRaycastVehicle *o = (::btRaycastVehicle*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getWheelTransformWS(p0);+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: addWheel ::btWheelInfo & ( ::btRaycastVehicle::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btScalar,::btScalar,::btRaycastVehicle::btVehicleTuning const &,bool ) +void* btRaycastVehicle_addWheel(void *c,float* p0,float* p1,float* p2,float p3,float p4,void* p5,int p6) {+	::btRaycastVehicle *o = (::btRaycastVehicle*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	::btRaycastVehicle::btVehicleTuning const & tp5 = *(::btRaycastVehicle::btVehicleTuning const *)p5;+	void* retVal = (void*) &(o->addWheel(tp0,tp1,tp2,p3,p4,tp5,p6));+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	return retVal;+}+//method: updateWheelTransform void ( ::btRaycastVehicle::* )( int,bool ) +void btRaycastVehicle_updateWheelTransform(void *c,int p0,int p1) {+	::btRaycastVehicle *o = (::btRaycastVehicle*)c;+	o->updateWheelTransform(p0,p1);+}+//method: setUserConstraintId void ( ::btRaycastVehicle::* )( int ) +void btRaycastVehicle_setUserConstraintId(void *c,int p0) {+	::btRaycastVehicle *o = (::btRaycastVehicle*)c;+	o->setUserConstraintId(p0);+}+//method: getNumWheels int ( ::btRaycastVehicle::* )(  ) const+int btRaycastVehicle_getNumWheels(void *c) {+	::btRaycastVehicle *o = (::btRaycastVehicle*)c;+	int retVal = (int)o->getNumWheels();+	return retVal;+}+//method: rayCast ::btScalar ( ::btRaycastVehicle::* )( ::btWheelInfo & ) +float btRaycastVehicle_rayCast(void *c,void* p0) {+	::btRaycastVehicle *o = (::btRaycastVehicle*)c;+	::btWheelInfo & tp0 = *(::btWheelInfo *)p0;+	float retVal = (float)o->rayCast(tp0);+	return retVal;+}+//method: getRightAxis int ( ::btRaycastVehicle::* )(  ) const+int btRaycastVehicle_getRightAxis(void *c) {+	::btRaycastVehicle *o = (::btRaycastVehicle*)c;+	int retVal = (int)o->getRightAxis();+	return retVal;+}+//method: getUpAxis int ( ::btRaycastVehicle::* )(  ) const+int btRaycastVehicle_getUpAxis(void *c) {+	::btRaycastVehicle *o = (::btRaycastVehicle*)c;+	int retVal = (int)o->getUpAxis();+	return retVal;+}+//method: getForwardVector ::btVector3 ( ::btRaycastVehicle::* )(  ) const+void btRaycastVehicle_getForwardVector(void *c,float* ret) {+	::btRaycastVehicle *o = (::btRaycastVehicle*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getForwardVector();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getWheelInfo ::btWheelInfo const & ( ::btRaycastVehicle::* )( int ) const+void* btRaycastVehicle_getWheelInfo(void *c,int p0) {+	::btRaycastVehicle *o = (::btRaycastVehicle*)c;+	void* retVal = (void*) &(o->getWheelInfo(p0));+	return retVal;+}+//method: getWheelInfo ::btWheelInfo const & ( ::btRaycastVehicle::* )( int ) const+void* btRaycastVehicle_getWheelInfo0(void *c,int p0) {+	::btRaycastVehicle *o = (::btRaycastVehicle*)c;+	void* retVal = (void*) &(o->getWheelInfo(p0));+	return retVal;+}+//method: getWheelInfo ::btWheelInfo & ( ::btRaycastVehicle::* )( int ) +void* btRaycastVehicle_getWheelInfo1(void *c,int p0) {+	::btRaycastVehicle *o = (::btRaycastVehicle*)c;+	void* retVal = (void*) &(o->getWheelInfo(p0));+	return retVal;+}+//method: getChassisWorldTransform ::btTransform const & ( ::btRaycastVehicle::* )(  ) const+void btRaycastVehicle_getChassisWorldTransform(void *c,float* ret) {+	::btRaycastVehicle *o = (::btRaycastVehicle*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getChassisWorldTransform();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: updateWheelTransformsWS void ( ::btRaycastVehicle::* )( ::btWheelInfo &,bool ) +void btRaycastVehicle_updateWheelTransformsWS(void *c,void* p0,int p1) {+	::btRaycastVehicle *o = (::btRaycastVehicle*)c;+	::btWheelInfo & tp0 = *(::btWheelInfo *)p0;+	o->updateWheelTransformsWS(tp0,p1);+}+//method: applyEngineForce void ( ::btRaycastVehicle::* )( ::btScalar,int ) +void btRaycastVehicle_applyEngineForce(void *c,float p0,int p1) {+	::btRaycastVehicle *o = (::btRaycastVehicle*)c;+	o->applyEngineForce(p0,p1);+}+//method: resetSuspension void ( ::btRaycastVehicle::* )(  ) +void btRaycastVehicle_resetSuspension(void *c) {+	::btRaycastVehicle *o = (::btRaycastVehicle*)c;+	o->resetSuspension();+}+//method: setCoordinateSystem void ( ::btRaycastVehicle::* )( int,int,int ) +void btRaycastVehicle_setCoordinateSystem(void *c,int p0,int p1,int p2) {+	::btRaycastVehicle *o = (::btRaycastVehicle*)c;+	o->setCoordinateSystem(p0,p1,p2);+}+//method: setUserConstraintType void ( ::btRaycastVehicle::* )( int ) +void btRaycastVehicle_setUserConstraintType(void *c,int p0) {+	::btRaycastVehicle *o = (::btRaycastVehicle*)c;+	o->setUserConstraintType(p0);+}+//method: debugDraw void ( ::btRaycastVehicle::* )( ::btIDebugDraw * ) +void btRaycastVehicle_debugDraw(void *c,void* p0) {+	::btRaycastVehicle *o = (::btRaycastVehicle*)c;+	::btIDebugDraw * tp0 = (::btIDebugDraw *)p0;+	o->debugDraw(tp0);+}+//method: updateFriction void ( ::btRaycastVehicle::* )( ::btScalar ) +void btRaycastVehicle_updateFriction(void *c,float p0) {+	::btRaycastVehicle *o = (::btRaycastVehicle*)c;+	o->updateFriction(p0);+}+//method: getForwardAxis int ( ::btRaycastVehicle::* )(  ) const+int btRaycastVehicle_getForwardAxis(void *c) {+	::btRaycastVehicle *o = (::btRaycastVehicle*)c;+	int retVal = (int)o->getForwardAxis();+	return retVal;+}+//method: getSteeringValue ::btScalar ( ::btRaycastVehicle::* )( int ) const+float btRaycastVehicle_getSteeringValue(void *c,int p0) {+	::btRaycastVehicle *o = (::btRaycastVehicle*)c;+	float retVal = (float)o->getSteeringValue(p0);+	return retVal;+}+//method: getUserConstraintType int ( ::btRaycastVehicle::* )(  ) const+int btRaycastVehicle_getUserConstraintType(void *c) {+	::btRaycastVehicle *o = (::btRaycastVehicle*)c;+	int retVal = (int)o->getUserConstraintType();+	return retVal;+}+//method: setPitchControl void ( ::btRaycastVehicle::* )( ::btScalar ) +void btRaycastVehicle_setPitchControl(void *c,float p0) {+	::btRaycastVehicle *o = (::btRaycastVehicle*)c;+	o->setPitchControl(p0);+}+//method: getCurrentSpeedKmHour ::btScalar ( ::btRaycastVehicle::* )(  ) const+float btRaycastVehicle_getCurrentSpeedKmHour(void *c) {+	::btRaycastVehicle *o = (::btRaycastVehicle*)c;+	float retVal = (float)o->getCurrentSpeedKmHour();+	return retVal;+}+//method: setBrake void ( ::btRaycastVehicle::* )( ::btScalar,int ) +void btRaycastVehicle_setBrake(void *c,float p0,int p1) {+	::btRaycastVehicle *o = (::btRaycastVehicle*)c;+	o->setBrake(p0,p1);+}+//method: setSteeringValue void ( ::btRaycastVehicle::* )( ::btScalar,int ) +void btRaycastVehicle_setSteeringValue(void *c,float p0,int p1) {+	::btRaycastVehicle *o = (::btRaycastVehicle*)c;+	o->setSteeringValue(p0,p1);+}+//method: updateVehicle void ( ::btRaycastVehicle::* )( ::btScalar ) +void btRaycastVehicle_updateVehicle(void *c,float p0) {+	::btRaycastVehicle *o = (::btRaycastVehicle*)c;+	o->updateVehicle(p0);+}+//method: updateAction void ( ::btRaycastVehicle::* )( ::btCollisionWorld *,::btScalar ) +void btRaycastVehicle_updateAction(void *c,void* p0,float p1) {+	::btRaycastVehicle *o = (::btRaycastVehicle*)c;+	::btCollisionWorld * tp0 = (::btCollisionWorld *)p0;+	o->updateAction(tp0,p1);+}+//attribute: ::btAlignedObjectArray<btWheelInfo> btRaycastVehicle->m_wheelInfo+// attribute not supported: //attribute: ::btAlignedObjectArray<btWheelInfo> btRaycastVehicle->m_wheelInfo++// ::btVehicleRaycaster+//not supported method: castRay void * ( ::btVehicleRaycaster::* )( ::btVector3 const &,::btVector3 const &,::btVehicleRaycaster::btVehicleRaycasterResult & ) ++// ::btVehicleRaycaster::btVehicleRaycasterResult+//constructor: btVehicleRaycasterResult  ( ::btVehicleRaycaster::btVehicleRaycasterResult::* )(  ) +void* btVehicleRaycaster_btVehicleRaycasterResult_new() {+	::btVehicleRaycaster::btVehicleRaycasterResult *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btVehicleRaycaster::btVehicleRaycasterResult),16);+	o = new (mem)::btVehicleRaycaster::btVehicleRaycasterResult();+	return (void*)o;+}+void btVehicleRaycaster_btVehicleRaycasterResult_free(void *c) {+	::btVehicleRaycaster::btVehicleRaycasterResult *o = (::btVehicleRaycaster::btVehicleRaycasterResult*)c;+	delete o;+}+//attribute: ::btScalar btVehicleRaycaster_btVehicleRaycasterResult->m_distFraction+void btVehicleRaycaster_btVehicleRaycasterResult_m_distFraction_set(void *c,float a) {+	::btVehicleRaycaster::btVehicleRaycasterResult *o = (::btVehicleRaycaster::btVehicleRaycasterResult*)c;+	o->m_distFraction = a;+}+float btVehicleRaycaster_btVehicleRaycasterResult_m_distFraction_get(void *c) {+	::btVehicleRaycaster::btVehicleRaycasterResult *o = (::btVehicleRaycaster::btVehicleRaycasterResult*)c;+	return (float)(o->m_distFraction);+}++//attribute: ::btVector3 btVehicleRaycaster_btVehicleRaycasterResult->m_hitNormalInWorld+void btVehicleRaycaster_btVehicleRaycasterResult_m_hitNormalInWorld_set(void *c,float* a) {+	::btVehicleRaycaster::btVehicleRaycasterResult *o = (::btVehicleRaycaster::btVehicleRaycasterResult*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_hitNormalInWorld = ta;+}+void btVehicleRaycaster_btVehicleRaycasterResult_m_hitNormalInWorld_get(void *c,float* a) {+	::btVehicleRaycaster::btVehicleRaycasterResult *o = (::btVehicleRaycaster::btVehicleRaycasterResult*)c;+	a[0]=(o->m_hitNormalInWorld).m_floats[0];a[1]=(o->m_hitNormalInWorld).m_floats[1];a[2]=(o->m_hitNormalInWorld).m_floats[2];+}++//attribute: ::btVector3 btVehicleRaycaster_btVehicleRaycasterResult->m_hitPointInWorld+void btVehicleRaycaster_btVehicleRaycasterResult_m_hitPointInWorld_set(void *c,float* a) {+	::btVehicleRaycaster::btVehicleRaycasterResult *o = (::btVehicleRaycaster::btVehicleRaycasterResult*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_hitPointInWorld = ta;+}+void btVehicleRaycaster_btVehicleRaycasterResult_m_hitPointInWorld_get(void *c,float* a) {+	::btVehicleRaycaster::btVehicleRaycasterResult *o = (::btVehicleRaycaster::btVehicleRaycasterResult*)c;+	a[0]=(o->m_hitPointInWorld).m_floats[0];a[1]=(o->m_hitPointInWorld).m_floats[1];a[2]=(o->m_hitPointInWorld).m_floats[2];+}+++// ::btRaycastVehicle::btVehicleTuning+//constructor: btVehicleTuning  ( ::btRaycastVehicle::btVehicleTuning::* )(  ) +void* btRaycastVehicle_btVehicleTuning_new() {+	::btRaycastVehicle::btVehicleTuning *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btRaycastVehicle::btVehicleTuning),16);+	o = new (mem)::btRaycastVehicle::btVehicleTuning();+	return (void*)o;+}+void btRaycastVehicle_btVehicleTuning_free(void *c) {+	::btRaycastVehicle::btVehicleTuning *o = (::btRaycastVehicle::btVehicleTuning*)c;+	delete o;+}+//attribute: ::btScalar btRaycastVehicle_btVehicleTuning->m_frictionSlip+void btRaycastVehicle_btVehicleTuning_m_frictionSlip_set(void *c,float a) {+	::btRaycastVehicle::btVehicleTuning *o = (::btRaycastVehicle::btVehicleTuning*)c;+	o->m_frictionSlip = a;+}+float btRaycastVehicle_btVehicleTuning_m_frictionSlip_get(void *c) {+	::btRaycastVehicle::btVehicleTuning *o = (::btRaycastVehicle::btVehicleTuning*)c;+	return (float)(o->m_frictionSlip);+}++//attribute: ::btScalar btRaycastVehicle_btVehicleTuning->m_maxSuspensionForce+void btRaycastVehicle_btVehicleTuning_m_maxSuspensionForce_set(void *c,float a) {+	::btRaycastVehicle::btVehicleTuning *o = (::btRaycastVehicle::btVehicleTuning*)c;+	o->m_maxSuspensionForce = a;+}+float btRaycastVehicle_btVehicleTuning_m_maxSuspensionForce_get(void *c) {+	::btRaycastVehicle::btVehicleTuning *o = (::btRaycastVehicle::btVehicleTuning*)c;+	return (float)(o->m_maxSuspensionForce);+}++//attribute: ::btScalar btRaycastVehicle_btVehicleTuning->m_maxSuspensionTravelCm+void btRaycastVehicle_btVehicleTuning_m_maxSuspensionTravelCm_set(void *c,float a) {+	::btRaycastVehicle::btVehicleTuning *o = (::btRaycastVehicle::btVehicleTuning*)c;+	o->m_maxSuspensionTravelCm = a;+}+float btRaycastVehicle_btVehicleTuning_m_maxSuspensionTravelCm_get(void *c) {+	::btRaycastVehicle::btVehicleTuning *o = (::btRaycastVehicle::btVehicleTuning*)c;+	return (float)(o->m_maxSuspensionTravelCm);+}++//attribute: ::btScalar btRaycastVehicle_btVehicleTuning->m_suspensionCompression+void btRaycastVehicle_btVehicleTuning_m_suspensionCompression_set(void *c,float a) {+	::btRaycastVehicle::btVehicleTuning *o = (::btRaycastVehicle::btVehicleTuning*)c;+	o->m_suspensionCompression = a;+}+float btRaycastVehicle_btVehicleTuning_m_suspensionCompression_get(void *c) {+	::btRaycastVehicle::btVehicleTuning *o = (::btRaycastVehicle::btVehicleTuning*)c;+	return (float)(o->m_suspensionCompression);+}++//attribute: ::btScalar btRaycastVehicle_btVehicleTuning->m_suspensionDamping+void btRaycastVehicle_btVehicleTuning_m_suspensionDamping_set(void *c,float a) {+	::btRaycastVehicle::btVehicleTuning *o = (::btRaycastVehicle::btVehicleTuning*)c;+	o->m_suspensionDamping = a;+}+float btRaycastVehicle_btVehicleTuning_m_suspensionDamping_get(void *c) {+	::btRaycastVehicle::btVehicleTuning *o = (::btRaycastVehicle::btVehicleTuning*)c;+	return (float)(o->m_suspensionDamping);+}++//attribute: ::btScalar btRaycastVehicle_btVehicleTuning->m_suspensionStiffness+void btRaycastVehicle_btVehicleTuning_m_suspensionStiffness_set(void *c,float a) {+	::btRaycastVehicle::btVehicleTuning *o = (::btRaycastVehicle::btVehicleTuning*)c;+	o->m_suspensionStiffness = a;+}+float btRaycastVehicle_btVehicleTuning_m_suspensionStiffness_get(void *c) {+	::btRaycastVehicle::btVehicleTuning *o = (::btRaycastVehicle::btVehicleTuning*)c;+	return (float)(o->m_suspensionStiffness);+}+++// ::btWheelInfo+//constructor: btWheelInfo  ( ::btWheelInfo::* )( ::btWheelInfoConstructionInfo & ) +void* btWheelInfo_new(void* p0) {+	::btWheelInfo *o = 0;+	 void *mem = 0;+	::btWheelInfoConstructionInfo & tp0 = *(::btWheelInfoConstructionInfo *)p0;+	mem = btAlignedAlloc(sizeof(::btWheelInfo),16);+	o = new (mem)::btWheelInfo(tp0);+	return (void*)o;+}+void btWheelInfo_free(void *c) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	delete o;+}+//method: getSuspensionRestLength ::btScalar ( ::btWheelInfo::* )(  ) const+float btWheelInfo_getSuspensionRestLength(void *c) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	float retVal = (float)o->getSuspensionRestLength();+	return retVal;+}+//method: updateWheel void ( ::btWheelInfo::* )( ::btRigidBody const &,::btWheelInfo::RaycastInfo & ) +void btWheelInfo_updateWheel(void *c,void* p0,void* p1) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	::btRigidBody const & tp0 = *(::btRigidBody const *)p0;+	::btWheelInfo::RaycastInfo & tp1 = *(::btWheelInfo::RaycastInfo *)p1;+	o->updateWheel(tp0,tp1);+}+//attribute: bool btWheelInfo->m_bIsFrontWheel+void btWheelInfo_m_bIsFrontWheel_set(void *c,int a) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	o->m_bIsFrontWheel = a;+}+int btWheelInfo_m_bIsFrontWheel_get(void *c) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	return (int)(o->m_bIsFrontWheel);+}++//attribute: ::btScalar btWheelInfo->m_brake+void btWheelInfo_m_brake_set(void *c,float a) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	o->m_brake = a;+}+float btWheelInfo_m_brake_get(void *c) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	return (float)(o->m_brake);+}++//attribute: ::btVector3 btWheelInfo->m_chassisConnectionPointCS+void btWheelInfo_m_chassisConnectionPointCS_set(void *c,float* a) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_chassisConnectionPointCS = ta;+}+void btWheelInfo_m_chassisConnectionPointCS_get(void *c,float* a) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	a[0]=(o->m_chassisConnectionPointCS).m_floats[0];a[1]=(o->m_chassisConnectionPointCS).m_floats[1];a[2]=(o->m_chassisConnectionPointCS).m_floats[2];+}++//attribute: void * btWheelInfo->m_clientInfo+// attribute not supported: //attribute: void * btWheelInfo->m_clientInfo+//attribute: ::btScalar btWheelInfo->m_clippedInvContactDotSuspension+void btWheelInfo_m_clippedInvContactDotSuspension_set(void *c,float a) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	o->m_clippedInvContactDotSuspension = a;+}+float btWheelInfo_m_clippedInvContactDotSuspension_get(void *c) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	return (float)(o->m_clippedInvContactDotSuspension);+}++//attribute: ::btScalar btWheelInfo->m_deltaRotation+void btWheelInfo_m_deltaRotation_set(void *c,float a) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	o->m_deltaRotation = a;+}+float btWheelInfo_m_deltaRotation_get(void *c) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	return (float)(o->m_deltaRotation);+}++//attribute: ::btScalar btWheelInfo->m_engineForce+void btWheelInfo_m_engineForce_set(void *c,float a) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	o->m_engineForce = a;+}+float btWheelInfo_m_engineForce_get(void *c) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	return (float)(o->m_engineForce);+}++//attribute: ::btScalar btWheelInfo->m_frictionSlip+void btWheelInfo_m_frictionSlip_set(void *c,float a) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	o->m_frictionSlip = a;+}+float btWheelInfo_m_frictionSlip_get(void *c) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	return (float)(o->m_frictionSlip);+}++//attribute: ::btScalar btWheelInfo->m_maxSuspensionForce+void btWheelInfo_m_maxSuspensionForce_set(void *c,float a) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	o->m_maxSuspensionForce = a;+}+float btWheelInfo_m_maxSuspensionForce_get(void *c) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	return (float)(o->m_maxSuspensionForce);+}++//attribute: ::btScalar btWheelInfo->m_maxSuspensionTravelCm+void btWheelInfo_m_maxSuspensionTravelCm_set(void *c,float a) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	o->m_maxSuspensionTravelCm = a;+}+float btWheelInfo_m_maxSuspensionTravelCm_get(void *c) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	return (float)(o->m_maxSuspensionTravelCm);+}++//attribute: ::btWheelInfo::RaycastInfo btWheelInfo->m_raycastInfo+// attribute not supported: //attribute: ::btWheelInfo::RaycastInfo btWheelInfo->m_raycastInfo+//attribute: ::btScalar btWheelInfo->m_rollInfluence+void btWheelInfo_m_rollInfluence_set(void *c,float a) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	o->m_rollInfluence = a;+}+float btWheelInfo_m_rollInfluence_get(void *c) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	return (float)(o->m_rollInfluence);+}++//attribute: ::btScalar btWheelInfo->m_rotation+void btWheelInfo_m_rotation_set(void *c,float a) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	o->m_rotation = a;+}+float btWheelInfo_m_rotation_get(void *c) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	return (float)(o->m_rotation);+}++//attribute: ::btScalar btWheelInfo->m_skidInfo+void btWheelInfo_m_skidInfo_set(void *c,float a) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	o->m_skidInfo = a;+}+float btWheelInfo_m_skidInfo_get(void *c) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	return (float)(o->m_skidInfo);+}++//attribute: ::btScalar btWheelInfo->m_steering+void btWheelInfo_m_steering_set(void *c,float a) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	o->m_steering = a;+}+float btWheelInfo_m_steering_get(void *c) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	return (float)(o->m_steering);+}++//attribute: ::btScalar btWheelInfo->m_suspensionRelativeVelocity+void btWheelInfo_m_suspensionRelativeVelocity_set(void *c,float a) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	o->m_suspensionRelativeVelocity = a;+}+float btWheelInfo_m_suspensionRelativeVelocity_get(void *c) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	return (float)(o->m_suspensionRelativeVelocity);+}++//attribute: ::btScalar btWheelInfo->m_suspensionRestLength1+void btWheelInfo_m_suspensionRestLength1_set(void *c,float a) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	o->m_suspensionRestLength1 = a;+}+float btWheelInfo_m_suspensionRestLength1_get(void *c) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	return (float)(o->m_suspensionRestLength1);+}++//attribute: ::btScalar btWheelInfo->m_suspensionStiffness+void btWheelInfo_m_suspensionStiffness_set(void *c,float a) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	o->m_suspensionStiffness = a;+}+float btWheelInfo_m_suspensionStiffness_get(void *c) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	return (float)(o->m_suspensionStiffness);+}++//attribute: ::btVector3 btWheelInfo->m_wheelAxleCS+void btWheelInfo_m_wheelAxleCS_set(void *c,float* a) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_wheelAxleCS = ta;+}+void btWheelInfo_m_wheelAxleCS_get(void *c,float* a) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	a[0]=(o->m_wheelAxleCS).m_floats[0];a[1]=(o->m_wheelAxleCS).m_floats[1];a[2]=(o->m_wheelAxleCS).m_floats[2];+}++//attribute: ::btVector3 btWheelInfo->m_wheelDirectionCS+void btWheelInfo_m_wheelDirectionCS_set(void *c,float* a) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_wheelDirectionCS = ta;+}+void btWheelInfo_m_wheelDirectionCS_get(void *c,float* a) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	a[0]=(o->m_wheelDirectionCS).m_floats[0];a[1]=(o->m_wheelDirectionCS).m_floats[1];a[2]=(o->m_wheelDirectionCS).m_floats[2];+}++//attribute: ::btScalar btWheelInfo->m_wheelsDampingCompression+void btWheelInfo_m_wheelsDampingCompression_set(void *c,float a) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	o->m_wheelsDampingCompression = a;+}+float btWheelInfo_m_wheelsDampingCompression_get(void *c) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	return (float)(o->m_wheelsDampingCompression);+}++//attribute: ::btScalar btWheelInfo->m_wheelsDampingRelaxation+void btWheelInfo_m_wheelsDampingRelaxation_set(void *c,float a) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	o->m_wheelsDampingRelaxation = a;+}+float btWheelInfo_m_wheelsDampingRelaxation_get(void *c) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	return (float)(o->m_wheelsDampingRelaxation);+}++//attribute: ::btScalar btWheelInfo->m_wheelsRadius+void btWheelInfo_m_wheelsRadius_set(void *c,float a) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	o->m_wheelsRadius = a;+}+float btWheelInfo_m_wheelsRadius_get(void *c) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	return (float)(o->m_wheelsRadius);+}++//attribute: ::btScalar btWheelInfo->m_wheelsSuspensionForce+void btWheelInfo_m_wheelsSuspensionForce_set(void *c,float a) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	o->m_wheelsSuspensionForce = a;+}+float btWheelInfo_m_wheelsSuspensionForce_get(void *c) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	return (float)(o->m_wheelsSuspensionForce);+}++//attribute: ::btTransform btWheelInfo->m_worldTransform+void btWheelInfo_m_worldTransform_set(void *c,float* a) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	btMatrix3x3 mta(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]);+	btVector3 vta(a[9],a[10],a[11]);+	btTransform ta(mta,vta);+	o->m_worldTransform = ta;+}+void btWheelInfo_m_worldTransform_get(void *c,float* a) {+	::btWheelInfo *o = (::btWheelInfo*)c;+	a[0]=(o->m_worldTransform).getBasis().getRow(0).m_floats[0];a[1]=(o->m_worldTransform).getBasis().getRow(0).m_floats[1];a[2]=(o->m_worldTransform).getBasis().getRow(0).m_floats[2];a[3]=(o->m_worldTransform).getBasis().getRow(1).m_floats[0];a[4]=(o->m_worldTransform).getBasis().getRow(1).m_floats[1];a[5]=(o->m_worldTransform).getBasis().getRow(1).m_floats[2];a[6]=(o->m_worldTransform).getBasis().getRow(2).m_floats[0];a[7]=(o->m_worldTransform).getBasis().getRow(2).m_floats[1];a[8]=(o->m_worldTransform).getBasis().getRow(2).m_floats[2];+	a[9]=(o->m_worldTransform).getOrigin().m_floats[0];a[10]=(o->m_worldTransform).getOrigin().m_floats[1];a[11]=(o->m_worldTransform).getOrigin().m_floats[2];+}+++// ::btWheelInfoConstructionInfo+//constructor: btWheelInfoConstructionInfo  ( ::btWheelInfoConstructionInfo::* )(  ) +void* btWheelInfoConstructionInfo_new() {+	::btWheelInfoConstructionInfo *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btWheelInfoConstructionInfo),16);+	o = new (mem)::btWheelInfoConstructionInfo();+	return (void*)o;+}+void btWheelInfoConstructionInfo_free(void *c) {+	::btWheelInfoConstructionInfo *o = (::btWheelInfoConstructionInfo*)c;+	delete o;+}+//attribute: bool btWheelInfoConstructionInfo->m_bIsFrontWheel+void btWheelInfoConstructionInfo_m_bIsFrontWheel_set(void *c,int a) {+	::btWheelInfoConstructionInfo *o = (::btWheelInfoConstructionInfo*)c;+	o->m_bIsFrontWheel = a;+}+int btWheelInfoConstructionInfo_m_bIsFrontWheel_get(void *c) {+	::btWheelInfoConstructionInfo *o = (::btWheelInfoConstructionInfo*)c;+	return (int)(o->m_bIsFrontWheel);+}++//attribute: ::btVector3 btWheelInfoConstructionInfo->m_chassisConnectionCS+void btWheelInfoConstructionInfo_m_chassisConnectionCS_set(void *c,float* a) {+	::btWheelInfoConstructionInfo *o = (::btWheelInfoConstructionInfo*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_chassisConnectionCS = ta;+}+void btWheelInfoConstructionInfo_m_chassisConnectionCS_get(void *c,float* a) {+	::btWheelInfoConstructionInfo *o = (::btWheelInfoConstructionInfo*)c;+	a[0]=(o->m_chassisConnectionCS).m_floats[0];a[1]=(o->m_chassisConnectionCS).m_floats[1];a[2]=(o->m_chassisConnectionCS).m_floats[2];+}++//attribute: ::btScalar btWheelInfoConstructionInfo->m_frictionSlip+void btWheelInfoConstructionInfo_m_frictionSlip_set(void *c,float a) {+	::btWheelInfoConstructionInfo *o = (::btWheelInfoConstructionInfo*)c;+	o->m_frictionSlip = a;+}+float btWheelInfoConstructionInfo_m_frictionSlip_get(void *c) {+	::btWheelInfoConstructionInfo *o = (::btWheelInfoConstructionInfo*)c;+	return (float)(o->m_frictionSlip);+}++//attribute: ::btScalar btWheelInfoConstructionInfo->m_maxSuspensionForce+void btWheelInfoConstructionInfo_m_maxSuspensionForce_set(void *c,float a) {+	::btWheelInfoConstructionInfo *o = (::btWheelInfoConstructionInfo*)c;+	o->m_maxSuspensionForce = a;+}+float btWheelInfoConstructionInfo_m_maxSuspensionForce_get(void *c) {+	::btWheelInfoConstructionInfo *o = (::btWheelInfoConstructionInfo*)c;+	return (float)(o->m_maxSuspensionForce);+}++//attribute: ::btScalar btWheelInfoConstructionInfo->m_maxSuspensionTravelCm+void btWheelInfoConstructionInfo_m_maxSuspensionTravelCm_set(void *c,float a) {+	::btWheelInfoConstructionInfo *o = (::btWheelInfoConstructionInfo*)c;+	o->m_maxSuspensionTravelCm = a;+}+float btWheelInfoConstructionInfo_m_maxSuspensionTravelCm_get(void *c) {+	::btWheelInfoConstructionInfo *o = (::btWheelInfoConstructionInfo*)c;+	return (float)(o->m_maxSuspensionTravelCm);+}++//attribute: ::btScalar btWheelInfoConstructionInfo->m_suspensionRestLength+void btWheelInfoConstructionInfo_m_suspensionRestLength_set(void *c,float a) {+	::btWheelInfoConstructionInfo *o = (::btWheelInfoConstructionInfo*)c;+	o->m_suspensionRestLength = a;+}+float btWheelInfoConstructionInfo_m_suspensionRestLength_get(void *c) {+	::btWheelInfoConstructionInfo *o = (::btWheelInfoConstructionInfo*)c;+	return (float)(o->m_suspensionRestLength);+}++//attribute: ::btScalar btWheelInfoConstructionInfo->m_suspensionStiffness+void btWheelInfoConstructionInfo_m_suspensionStiffness_set(void *c,float a) {+	::btWheelInfoConstructionInfo *o = (::btWheelInfoConstructionInfo*)c;+	o->m_suspensionStiffness = a;+}+float btWheelInfoConstructionInfo_m_suspensionStiffness_get(void *c) {+	::btWheelInfoConstructionInfo *o = (::btWheelInfoConstructionInfo*)c;+	return (float)(o->m_suspensionStiffness);+}++//attribute: ::btVector3 btWheelInfoConstructionInfo->m_wheelAxleCS+void btWheelInfoConstructionInfo_m_wheelAxleCS_set(void *c,float* a) {+	::btWheelInfoConstructionInfo *o = (::btWheelInfoConstructionInfo*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_wheelAxleCS = ta;+}+void btWheelInfoConstructionInfo_m_wheelAxleCS_get(void *c,float* a) {+	::btWheelInfoConstructionInfo *o = (::btWheelInfoConstructionInfo*)c;+	a[0]=(o->m_wheelAxleCS).m_floats[0];a[1]=(o->m_wheelAxleCS).m_floats[1];a[2]=(o->m_wheelAxleCS).m_floats[2];+}++//attribute: ::btVector3 btWheelInfoConstructionInfo->m_wheelDirectionCS+void btWheelInfoConstructionInfo_m_wheelDirectionCS_set(void *c,float* a) {+	::btWheelInfoConstructionInfo *o = (::btWheelInfoConstructionInfo*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_wheelDirectionCS = ta;+}+void btWheelInfoConstructionInfo_m_wheelDirectionCS_get(void *c,float* a) {+	::btWheelInfoConstructionInfo *o = (::btWheelInfoConstructionInfo*)c;+	a[0]=(o->m_wheelDirectionCS).m_floats[0];a[1]=(o->m_wheelDirectionCS).m_floats[1];a[2]=(o->m_wheelDirectionCS).m_floats[2];+}++//attribute: ::btScalar btWheelInfoConstructionInfo->m_wheelRadius+void btWheelInfoConstructionInfo_m_wheelRadius_set(void *c,float a) {+	::btWheelInfoConstructionInfo *o = (::btWheelInfoConstructionInfo*)c;+	o->m_wheelRadius = a;+}+float btWheelInfoConstructionInfo_m_wheelRadius_get(void *c) {+	::btWheelInfoConstructionInfo *o = (::btWheelInfoConstructionInfo*)c;+	return (float)(o->m_wheelRadius);+}++//attribute: ::btScalar btWheelInfoConstructionInfo->m_wheelsDampingCompression+void btWheelInfoConstructionInfo_m_wheelsDampingCompression_set(void *c,float a) {+	::btWheelInfoConstructionInfo *o = (::btWheelInfoConstructionInfo*)c;+	o->m_wheelsDampingCompression = a;+}+float btWheelInfoConstructionInfo_m_wheelsDampingCompression_get(void *c) {+	::btWheelInfoConstructionInfo *o = (::btWheelInfoConstructionInfo*)c;+	return (float)(o->m_wheelsDampingCompression);+}++//attribute: ::btScalar btWheelInfoConstructionInfo->m_wheelsDampingRelaxation+void btWheelInfoConstructionInfo_m_wheelsDampingRelaxation_set(void *c,float a) {+	::btWheelInfoConstructionInfo *o = (::btWheelInfoConstructionInfo*)c;+	o->m_wheelsDampingRelaxation = a;+}+float btWheelInfoConstructionInfo_m_wheelsDampingRelaxation_get(void *c) {+	::btWheelInfoConstructionInfo *o = (::btWheelInfoConstructionInfo*)c;+	return (float)(o->m_wheelsDampingRelaxation);+}+++// ::btBU_Simplex1to4+//constructor: btBU_Simplex1to4  ( ::btBU_Simplex1to4::* )(  ) +void* btBU_Simplex1to4_new0() {+	::btBU_Simplex1to4 *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btBU_Simplex1to4),16);+	o = new (mem)::btBU_Simplex1to4();+	return (void*)o;+}+//constructor: btBU_Simplex1to4  ( ::btBU_Simplex1to4::* )( ::btVector3 const & ) +void* btBU_Simplex1to4_new1(float* p0) {+	::btBU_Simplex1to4 *o = 0;+	 void *mem = 0;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	mem = btAlignedAlloc(sizeof(::btBU_Simplex1to4),16);+	o = new (mem)::btBU_Simplex1to4(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	return (void*)o;+}+//constructor: btBU_Simplex1to4  ( ::btBU_Simplex1to4::* )( ::btVector3 const &,::btVector3 const & ) +void* btBU_Simplex1to4_new2(float* p0,float* p1) {+	::btBU_Simplex1to4 *o = 0;+	 void *mem = 0;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	mem = btAlignedAlloc(sizeof(::btBU_Simplex1to4),16);+	o = new (mem)::btBU_Simplex1to4(tp0,tp1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	return (void*)o;+}+//constructor: btBU_Simplex1to4  ( ::btBU_Simplex1to4::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void* btBU_Simplex1to4_new3(float* p0,float* p1,float* p2) {+	::btBU_Simplex1to4 *o = 0;+	 void *mem = 0;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	mem = btAlignedAlloc(sizeof(::btBU_Simplex1to4),16);+	o = new (mem)::btBU_Simplex1to4(tp0,tp1,tp2);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	return (void*)o;+}+//constructor: btBU_Simplex1to4  ( ::btBU_Simplex1to4::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void* btBU_Simplex1to4_new4(float* p0,float* p1,float* p2,float* p3) {+	::btBU_Simplex1to4 *o = 0;+	 void *mem = 0;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	mem = btAlignedAlloc(sizeof(::btBU_Simplex1to4),16);+	o = new (mem)::btBU_Simplex1to4(tp0,tp1,tp2,tp3);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+	return (void*)o;+}+void btBU_Simplex1to4_free(void *c) {+	::btBU_Simplex1to4 *o = (::btBU_Simplex1to4*)c;+	delete o;+}+//method: reset void ( ::btBU_Simplex1to4::* )(  ) +void btBU_Simplex1to4_reset(void *c) {+	::btBU_Simplex1to4 *o = (::btBU_Simplex1to4*)c;+	o->reset();+}+//method: getNumPlanes int ( ::btBU_Simplex1to4::* )(  ) const+int btBU_Simplex1to4_getNumPlanes(void *c) {+	::btBU_Simplex1to4 *o = (::btBU_Simplex1to4*)c;+	int retVal = (int)o->getNumPlanes();+	return retVal;+}+//method: getIndex int ( ::btBU_Simplex1to4::* )( int ) const+int btBU_Simplex1to4_getIndex(void *c,int p0) {+	::btBU_Simplex1to4 *o = (::btBU_Simplex1to4*)c;+	int retVal = (int)o->getIndex(p0);+	return retVal;+}+//method: getNumEdges int ( ::btBU_Simplex1to4::* )(  ) const+int btBU_Simplex1to4_getNumEdges(void *c) {+	::btBU_Simplex1to4 *o = (::btBU_Simplex1to4*)c;+	int retVal = (int)o->getNumEdges();+	return retVal;+}+//method: getName char const * ( ::btBU_Simplex1to4::* )(  ) const+char const * btBU_Simplex1to4_getName(void *c) {+	::btBU_Simplex1to4 *o = (::btBU_Simplex1to4*)c;+	char const * retVal = (char const *)o->getName();+	return retVal;+}+//method: getVertex void ( ::btBU_Simplex1to4::* )( int,::btVector3 & ) const+void btBU_Simplex1to4_getVertex(void *c,int p0,float* p1) {+	::btBU_Simplex1to4 *o = (::btBU_Simplex1to4*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->getVertex(p0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: getEdge void ( ::btBU_Simplex1to4::* )( int,::btVector3 &,::btVector3 & ) const+void btBU_Simplex1to4_getEdge(void *c,int p0,float* p1,float* p2) {+	::btBU_Simplex1to4 *o = (::btBU_Simplex1to4*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->getEdge(p0,tp1,tp2);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: addVertex void ( ::btBU_Simplex1to4::* )( ::btVector3 const & ) +void btBU_Simplex1to4_addVertex(void *c,float* p0) {+	::btBU_Simplex1to4 *o = (::btBU_Simplex1to4*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->addVertex(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: isInside bool ( ::btBU_Simplex1to4::* )( ::btVector3 const &,::btScalar ) const+int btBU_Simplex1to4_isInside(void *c,float* p0,float p1) {+	::btBU_Simplex1to4 *o = (::btBU_Simplex1to4*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	int retVal = (int)o->isInside(tp0,p1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	return retVal;+}+//method: getPlane void ( ::btBU_Simplex1to4::* )( ::btVector3 &,::btVector3 &,int ) const+void btBU_Simplex1to4_getPlane(void *c,float* p0,float* p1,int p2) {+	::btBU_Simplex1to4 *o = (::btBU_Simplex1to4*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->getPlane(tp0,tp1,p2);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: getAabb void ( ::btBU_Simplex1to4::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btBU_Simplex1to4_getAabb(void *c,float* p0,float* p1,float* p2) {+	::btBU_Simplex1to4 *o = (::btBU_Simplex1to4*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->getAabb(tp0,tp1,tp2);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: getNumVertices int ( ::btBU_Simplex1to4::* )(  ) const+int btBU_Simplex1to4_getNumVertices(void *c) {+	::btBU_Simplex1to4 *o = (::btBU_Simplex1to4*)c;+	int retVal = (int)o->getNumVertices();+	return retVal;+}++// ::btBoxShape+//constructor: btBoxShape  ( ::btBoxShape::* )( ::btVector3 const & ) +void* btBoxShape_new(float* p0) {+	::btBoxShape *o = 0;+	 void *mem = 0;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	mem = btAlignedAlloc(sizeof(::btBoxShape),16);+	o = new (mem)::btBoxShape(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	return (void*)o;+}+void btBoxShape_free(void *c) {+	::btBoxShape *o = (::btBoxShape*)c;+	delete o;+}+//method: calculateLocalInertia void ( ::btBoxShape::* )( ::btScalar,::btVector3 & ) const+void btBoxShape_calculateLocalInertia(void *c,float p0,float* p1) {+	::btBoxShape *o = (::btBoxShape*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->calculateLocalInertia(p0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: getNumPlanes int ( ::btBoxShape::* )(  ) const+int btBoxShape_getNumPlanes(void *c) {+	::btBoxShape *o = (::btBoxShape*)c;+	int retVal = (int)o->getNumPlanes();+	return retVal;+}+//method: localGetSupportingVertex ::btVector3 ( ::btBoxShape::* )( ::btVector3 const & ) const+void btBoxShape_localGetSupportingVertex(void *c,float* p0,float* ret) {+	::btBoxShape *o = (::btBoxShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->localGetSupportingVertex(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//not supported method: batchedUnitVectorGetSupportingVertexWithoutMargin void ( ::btBoxShape::* )( ::btVector3 const *,::btVector3 *,int ) const+//method: setLocalScaling void ( ::btBoxShape::* )( ::btVector3 const & ) +void btBoxShape_setLocalScaling(void *c,float* p0) {+	::btBoxShape *o = (::btBoxShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setLocalScaling(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: getPlaneEquation void ( ::btBoxShape::* )( ::btVector4 &,int ) const+void btBoxShape_getPlaneEquation(void *c,float* p0,int p1) {+	::btBoxShape *o = (::btBoxShape*)c;+	btVector4 tp0(p0[0],p0[1],p0[2],p0[3]);+	o->getPlaneEquation(tp0,p1);+	p0[0]=tp0.getX();p0[1]=tp0.getY();p0[2]=tp0.getZ();p0[3]=tp0.getW();+}+//method: getPreferredPenetrationDirection void ( ::btBoxShape::* )( int,::btVector3 & ) const+void btBoxShape_getPreferredPenetrationDirection(void *c,int p0,float* p1) {+	::btBoxShape *o = (::btBoxShape*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->getPreferredPenetrationDirection(p0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: getNumEdges int ( ::btBoxShape::* )(  ) const+int btBoxShape_getNumEdges(void *c) {+	::btBoxShape *o = (::btBoxShape*)c;+	int retVal = (int)o->getNumEdges();+	return retVal;+}+//method: getName char const * ( ::btBoxShape::* )(  ) const+char const * btBoxShape_getName(void *c) {+	::btBoxShape *o = (::btBoxShape*)c;+	char const * retVal = (char const *)o->getName();+	return retVal;+}+//method: getVertex void ( ::btBoxShape::* )( int,::btVector3 & ) const+void btBoxShape_getVertex(void *c,int p0,float* p1) {+	::btBoxShape *o = (::btBoxShape*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->getVertex(p0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: getEdge void ( ::btBoxShape::* )( int,::btVector3 &,::btVector3 & ) const+void btBoxShape_getEdge(void *c,int p0,float* p1,float* p2) {+	::btBoxShape *o = (::btBoxShape*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->getEdge(p0,tp1,tp2);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: isInside bool ( ::btBoxShape::* )( ::btVector3 const &,::btScalar ) const+int btBoxShape_isInside(void *c,float* p0,float p1) {+	::btBoxShape *o = (::btBoxShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	int retVal = (int)o->isInside(tp0,p1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	return retVal;+}+//method: getPlane void ( ::btBoxShape::* )( ::btVector3 &,::btVector3 &,int ) const+void btBoxShape_getPlane(void *c,float* p0,float* p1,int p2) {+	::btBoxShape *o = (::btBoxShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->getPlane(tp0,tp1,p2);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: getHalfExtentsWithoutMargin ::btVector3 const & ( ::btBoxShape::* )(  ) const+void btBoxShape_getHalfExtentsWithoutMargin(void *c,float* ret) {+	::btBoxShape *o = (::btBoxShape*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getHalfExtentsWithoutMargin();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getNumPreferredPenetrationDirections int ( ::btBoxShape::* )(  ) const+int btBoxShape_getNumPreferredPenetrationDirections(void *c) {+	::btBoxShape *o = (::btBoxShape*)c;+	int retVal = (int)o->getNumPreferredPenetrationDirections();+	return retVal;+}+//method: getAabb void ( ::btBoxShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btBoxShape_getAabb(void *c,float* p0,float* p1,float* p2) {+	::btBoxShape *o = (::btBoxShape*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->getAabb(tp0,tp1,tp2);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: setMargin void ( ::btBoxShape::* )( ::btScalar ) +void btBoxShape_setMargin(void *c,float p0) {+	::btBoxShape *o = (::btBoxShape*)c;+	o->setMargin(p0);+}+//method: getNumVertices int ( ::btBoxShape::* )(  ) const+int btBoxShape_getNumVertices(void *c) {+	::btBoxShape *o = (::btBoxShape*)c;+	int retVal = (int)o->getNumVertices();+	return retVal;+}+//method: getHalfExtentsWithMargin ::btVector3 ( ::btBoxShape::* )(  ) const+void btBoxShape_getHalfExtentsWithMargin(void *c,float* ret) {+	::btBoxShape *o = (::btBoxShape*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getHalfExtentsWithMargin();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: localGetSupportingVertexWithoutMargin ::btVector3 ( ::btBoxShape::* )( ::btVector3 const & ) const+void btBoxShape_localGetSupportingVertexWithoutMargin(void *c,float* p0,float* ret) {+	::btBoxShape *o = (::btBoxShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->localGetSupportingVertexWithoutMargin(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}++// ::btBvhTriangleMeshShape+//constructor: btBvhTriangleMeshShape  ( ::btBvhTriangleMeshShape::* )( ::btStridingMeshInterface *,bool,bool ) +void* btBvhTriangleMeshShape_new0(void* p0,int p1,int p2) {+	::btBvhTriangleMeshShape *o = 0;+	 void *mem = 0;+	::btStridingMeshInterface * tp0 = (::btStridingMeshInterface *)p0;+	mem = btAlignedAlloc(sizeof(::btBvhTriangleMeshShape),16);+	o = new (mem)::btBvhTriangleMeshShape(tp0,p1,p2);+	return (void*)o;+}+//constructor: btBvhTriangleMeshShape  ( ::btBvhTriangleMeshShape::* )( ::btStridingMeshInterface *,bool,::btVector3 const &,::btVector3 const &,bool ) +void* btBvhTriangleMeshShape_new1(void* p0,int p1,float* p2,float* p3,int p4) {+	::btBvhTriangleMeshShape *o = 0;+	 void *mem = 0;+	::btStridingMeshInterface * tp0 = (::btStridingMeshInterface *)p0;+	btVector3 tp2(p2[0],p2[1],p2[2]);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	mem = btAlignedAlloc(sizeof(::btBvhTriangleMeshShape),16);+	o = new (mem)::btBvhTriangleMeshShape(tp0,p1,tp2,tp3,p4);+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+	return (void*)o;+}+void btBvhTriangleMeshShape_free(void *c) {+	::btBvhTriangleMeshShape *o = (::btBvhTriangleMeshShape*)c;+	delete o;+}+//method: calculateSerializeBufferSize int ( ::btBvhTriangleMeshShape::* )(  ) const+int btBvhTriangleMeshShape_calculateSerializeBufferSize(void *c) {+	::btBvhTriangleMeshShape *o = (::btBvhTriangleMeshShape*)c;+	int retVal = (int)o->calculateSerializeBufferSize();+	return retVal;+}+//method: buildOptimizedBvh void ( ::btBvhTriangleMeshShape::* )(  ) +void btBvhTriangleMeshShape_buildOptimizedBvh(void *c) {+	::btBvhTriangleMeshShape *o = (::btBvhTriangleMeshShape*)c;+	o->buildOptimizedBvh();+}+//method: setLocalScaling void ( ::btBvhTriangleMeshShape::* )( ::btVector3 const & ) +void btBvhTriangleMeshShape_setLocalScaling(void *c,float* p0) {+	::btBvhTriangleMeshShape *o = (::btBvhTriangleMeshShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setLocalScaling(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: performRaycast void ( ::btBvhTriangleMeshShape::* )( ::btTriangleCallback *,::btVector3 const &,::btVector3 const & ) +void btBvhTriangleMeshShape_performRaycast(void *c,void* p0,float* p1,float* p2) {+	::btBvhTriangleMeshShape *o = (::btBvhTriangleMeshShape*)c;+	::btTriangleCallback * tp0 = (::btTriangleCallback *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->performRaycast(tp0,tp1,tp2);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: setTriangleInfoMap void ( ::btBvhTriangleMeshShape::* )( ::btTriangleInfoMap * ) +void btBvhTriangleMeshShape_setTriangleInfoMap(void *c,void* p0) {+	::btBvhTriangleMeshShape *o = (::btBvhTriangleMeshShape*)c;+	::btTriangleInfoMap * tp0 = (::btTriangleInfoMap *)p0;+	o->setTriangleInfoMap(tp0);+}+//method: usesQuantizedAabbCompression bool ( ::btBvhTriangleMeshShape::* )(  ) const+int btBvhTriangleMeshShape_usesQuantizedAabbCompression(void *c) {+	::btBvhTriangleMeshShape *o = (::btBvhTriangleMeshShape*)c;+	int retVal = (int)o->usesQuantizedAabbCompression();+	return retVal;+}+//method: getName char const * ( ::btBvhTriangleMeshShape::* )(  ) const+char const * btBvhTriangleMeshShape_getName(void *c) {+	::btBvhTriangleMeshShape *o = (::btBvhTriangleMeshShape*)c;+	char const * retVal = (char const *)o->getName();+	return retVal;+}+//not supported method: serialize char const * ( ::btBvhTriangleMeshShape::* )( void *,::btSerializer * ) const+//method: getTriangleInfoMap ::btTriangleInfoMap const * ( ::btBvhTriangleMeshShape::* )(  ) const+void* btBvhTriangleMeshShape_getTriangleInfoMap(void *c) {+	::btBvhTriangleMeshShape *o = (::btBvhTriangleMeshShape*)c;+	void* retVal = (void*) o->getTriangleInfoMap();+	return retVal;+}+//method: getTriangleInfoMap ::btTriangleInfoMap const * ( ::btBvhTriangleMeshShape::* )(  ) const+void* btBvhTriangleMeshShape_getTriangleInfoMap0(void *c) {+	::btBvhTriangleMeshShape *o = (::btBvhTriangleMeshShape*)c;+	void* retVal = (void*) o->getTriangleInfoMap();+	return retVal;+}+//method: getTriangleInfoMap ::btTriangleInfoMap * ( ::btBvhTriangleMeshShape::* )(  ) +void* btBvhTriangleMeshShape_getTriangleInfoMap1(void *c) {+	::btBvhTriangleMeshShape *o = (::btBvhTriangleMeshShape*)c;+	void* retVal = (void*) o->getTriangleInfoMap();+	return retVal;+}+//method: serializeSingleTriangleInfoMap void ( ::btBvhTriangleMeshShape::* )( ::btSerializer * ) const+void btBvhTriangleMeshShape_serializeSingleTriangleInfoMap(void *c,void* p0) {+	::btBvhTriangleMeshShape *o = (::btBvhTriangleMeshShape*)c;+	::btSerializer * tp0 = (::btSerializer *)p0;+	o->serializeSingleTriangleInfoMap(tp0);+}+//method: getOwnsBvh bool ( ::btBvhTriangleMeshShape::* )(  ) const+int btBvhTriangleMeshShape_getOwnsBvh(void *c) {+	::btBvhTriangleMeshShape *o = (::btBvhTriangleMeshShape*)c;+	int retVal = (int)o->getOwnsBvh();+	return retVal;+}+//method: partialRefitTree void ( ::btBvhTriangleMeshShape::* )( ::btVector3 const &,::btVector3 const & ) +void btBvhTriangleMeshShape_partialRefitTree(void *c,float* p0,float* p1) {+	::btBvhTriangleMeshShape *o = (::btBvhTriangleMeshShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->partialRefitTree(tp0,tp1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: getOptimizedBvh ::btOptimizedBvh * ( ::btBvhTriangleMeshShape::* )(  ) +void* btBvhTriangleMeshShape_getOptimizedBvh(void *c) {+	::btBvhTriangleMeshShape *o = (::btBvhTriangleMeshShape*)c;+	void* retVal = (void*) o->getOptimizedBvh();+	return retVal;+}+//method: processAllTriangles void ( ::btBvhTriangleMeshShape::* )( ::btTriangleCallback *,::btVector3 const &,::btVector3 const & ) const+void btBvhTriangleMeshShape_processAllTriangles(void *c,void* p0,float* p1,float* p2) {+	::btBvhTriangleMeshShape *o = (::btBvhTriangleMeshShape*)c;+	::btTriangleCallback * tp0 = (::btTriangleCallback *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->processAllTriangles(tp0,tp1,tp2);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: refitTree void ( ::btBvhTriangleMeshShape::* )( ::btVector3 const &,::btVector3 const & ) +void btBvhTriangleMeshShape_refitTree(void *c,float* p0,float* p1) {+	::btBvhTriangleMeshShape *o = (::btBvhTriangleMeshShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->refitTree(tp0,tp1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: performConvexcast void ( ::btBvhTriangleMeshShape::* )( ::btTriangleCallback *,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void btBvhTriangleMeshShape_performConvexcast(void *c,void* p0,float* p1,float* p2,float* p3,float* p4) {+	::btBvhTriangleMeshShape *o = (::btBvhTriangleMeshShape*)c;+	::btTriangleCallback * tp0 = (::btTriangleCallback *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	btVector3 tp4(p4[0],p4[1],p4[2]);+	o->performConvexcast(tp0,tp1,tp2,tp3,tp4);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+	p4[0]=tp4.m_floats[0];p4[1]=tp4.m_floats[1];p4[2]=tp4.m_floats[2];+}+//method: serializeSingleBvh void ( ::btBvhTriangleMeshShape::* )( ::btSerializer * ) const+void btBvhTriangleMeshShape_serializeSingleBvh(void *c,void* p0) {+	::btBvhTriangleMeshShape *o = (::btBvhTriangleMeshShape*)c;+	::btSerializer * tp0 = (::btSerializer *)p0;+	o->serializeSingleBvh(tp0);+}+//method: setOptimizedBvh void ( ::btBvhTriangleMeshShape::* )( ::btOptimizedBvh *,::btVector3 const & ) +void btBvhTriangleMeshShape_setOptimizedBvh(void *c,void* p0,float* p1) {+	::btBvhTriangleMeshShape *o = (::btBvhTriangleMeshShape*)c;+	::btOptimizedBvh * tp0 = (::btOptimizedBvh *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->setOptimizedBvh(tp0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}++// ::btCapsuleShape+//constructor: btCapsuleShape  ( ::btCapsuleShape::* )( ::btScalar,::btScalar ) +void* btCapsuleShape_new(float p0,float p1) {+	::btCapsuleShape *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btCapsuleShape),16);+	o = new (mem)::btCapsuleShape(p0,p1);+	return (void*)o;+}+void btCapsuleShape_free(void *c) {+	::btCapsuleShape *o = (::btCapsuleShape*)c;+	delete o;+}+//method: calculateLocalInertia void ( ::btCapsuleShape::* )( ::btScalar,::btVector3 & ) const+void btCapsuleShape_calculateLocalInertia(void *c,float p0,float* p1) {+	::btCapsuleShape *o = (::btCapsuleShape*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->calculateLocalInertia(p0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: calculateSerializeBufferSize int ( ::btCapsuleShape::* )(  ) const+int btCapsuleShape_calculateSerializeBufferSize(void *c) {+	::btCapsuleShape *o = (::btCapsuleShape*)c;+	int retVal = (int)o->calculateSerializeBufferSize();+	return retVal;+}+//not supported method: batchedUnitVectorGetSupportingVertexWithoutMargin void ( ::btCapsuleShape::* )( ::btVector3 const *,::btVector3 *,int ) const+//method: setLocalScaling void ( ::btCapsuleShape::* )( ::btVector3 const & ) +void btCapsuleShape_setLocalScaling(void *c,float* p0) {+	::btCapsuleShape *o = (::btCapsuleShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setLocalScaling(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: getUpAxis int ( ::btCapsuleShape::* )(  ) const+int btCapsuleShape_getUpAxis(void *c) {+	::btCapsuleShape *o = (::btCapsuleShape*)c;+	int retVal = (int)o->getUpAxis();+	return retVal;+}+//method: getName char const * ( ::btCapsuleShape::* )(  ) const+char const * btCapsuleShape_getName(void *c) {+	::btCapsuleShape *o = (::btCapsuleShape*)c;+	char const * retVal = (char const *)o->getName();+	return retVal;+}+//method: getHalfHeight ::btScalar ( ::btCapsuleShape::* )(  ) const+float btCapsuleShape_getHalfHeight(void *c) {+	::btCapsuleShape *o = (::btCapsuleShape*)c;+	float retVal = (float)o->getHalfHeight();+	return retVal;+}+//method: setMargin void ( ::btCapsuleShape::* )( ::btScalar ) +void btCapsuleShape_setMargin(void *c,float p0) {+	::btCapsuleShape *o = (::btCapsuleShape*)c;+	o->setMargin(p0);+}+//method: getAabb void ( ::btCapsuleShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btCapsuleShape_getAabb(void *c,float* p0,float* p1,float* p2) {+	::btCapsuleShape *o = (::btCapsuleShape*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->getAabb(tp0,tp1,tp2);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//not supported method: serialize char const * ( ::btCapsuleShape::* )( void *,::btSerializer * ) const+//method: localGetSupportingVertexWithoutMargin ::btVector3 ( ::btCapsuleShape::* )( ::btVector3 const & ) const+void btCapsuleShape_localGetSupportingVertexWithoutMargin(void *c,float* p0,float* ret) {+	::btCapsuleShape *o = (::btCapsuleShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->localGetSupportingVertexWithoutMargin(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getRadius ::btScalar ( ::btCapsuleShape::* )(  ) const+float btCapsuleShape_getRadius(void *c) {+	::btCapsuleShape *o = (::btCapsuleShape*)c;+	float retVal = (float)o->getRadius();+	return retVal;+}++// ::btCapsuleShapeData+//constructor: btCapsuleShapeData  ( ::btCapsuleShapeData::* )(  ) +void* btCapsuleShapeData_new() {+	::btCapsuleShapeData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btCapsuleShapeData),16);+	o = new (mem)::btCapsuleShapeData();+	return (void*)o;+}+void btCapsuleShapeData_free(void *c) {+	::btCapsuleShapeData *o = (::btCapsuleShapeData*)c;+	delete o;+}+//attribute: ::btConvexInternalShapeData btCapsuleShapeData->m_convexInternalShapeData+// attribute not supported: //attribute: ::btConvexInternalShapeData btCapsuleShapeData->m_convexInternalShapeData+//attribute: int btCapsuleShapeData->m_upAxis+void btCapsuleShapeData_m_upAxis_set(void *c,int a) {+	::btCapsuleShapeData *o = (::btCapsuleShapeData*)c;+	o->m_upAxis = a;+}+int btCapsuleShapeData_m_upAxis_get(void *c) {+	::btCapsuleShapeData *o = (::btCapsuleShapeData*)c;+	return (int)(o->m_upAxis);+}++//attribute: char[4] btCapsuleShapeData->m_padding+// attribute not supported: //attribute: char[4] btCapsuleShapeData->m_padding++// ::btCapsuleShapeX+//constructor: btCapsuleShapeX  ( ::btCapsuleShapeX::* )( ::btScalar,::btScalar ) +void* btCapsuleShapeX_new(float p0,float p1) {+	::btCapsuleShapeX *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btCapsuleShapeX),16);+	o = new (mem)::btCapsuleShapeX(p0,p1);+	return (void*)o;+}+void btCapsuleShapeX_free(void *c) {+	::btCapsuleShapeX *o = (::btCapsuleShapeX*)c;+	delete o;+}+//method: getName char const * ( ::btCapsuleShapeX::* )(  ) const+char const * btCapsuleShapeX_getName(void *c) {+	::btCapsuleShapeX *o = (::btCapsuleShapeX*)c;+	char const * retVal = (char const *)o->getName();+	return retVal;+}++// ::btCapsuleShapeZ+//constructor: btCapsuleShapeZ  ( ::btCapsuleShapeZ::* )( ::btScalar,::btScalar ) +void* btCapsuleShapeZ_new(float p0,float p1) {+	::btCapsuleShapeZ *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btCapsuleShapeZ),16);+	o = new (mem)::btCapsuleShapeZ(p0,p1);+	return (void*)o;+}+void btCapsuleShapeZ_free(void *c) {+	::btCapsuleShapeZ *o = (::btCapsuleShapeZ*)c;+	delete o;+}+//method: getName char const * ( ::btCapsuleShapeZ::* )(  ) const+char const * btCapsuleShapeZ_getName(void *c) {+	::btCapsuleShapeZ *o = (::btCapsuleShapeZ*)c;+	char const * retVal = (char const *)o->getName();+	return retVal;+}++// ::btCharIndexTripletData+//constructor: btCharIndexTripletData  ( ::btCharIndexTripletData::* )(  ) +void* btCharIndexTripletData_new() {+	::btCharIndexTripletData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btCharIndexTripletData),16);+	o = new (mem)::btCharIndexTripletData();+	return (void*)o;+}+void btCharIndexTripletData_free(void *c) {+	::btCharIndexTripletData *o = (::btCharIndexTripletData*)c;+	delete o;+}+//attribute: unsigned char[3] btCharIndexTripletData->m_values+// attribute not supported: //attribute: unsigned char[3] btCharIndexTripletData->m_values+//attribute: char btCharIndexTripletData->m_pad+void btCharIndexTripletData_m_pad_set(void *c,char a) {+	::btCharIndexTripletData *o = (::btCharIndexTripletData*)c;+	o->m_pad = a;+}+char btCharIndexTripletData_m_pad_get(void *c) {+	::btCharIndexTripletData *o = (::btCharIndexTripletData*)c;+	return (char)(o->m_pad);+}+++// ::btCollisionShape+//method: calculateLocalInertia void ( ::btCollisionShape::* )( ::btScalar,::btVector3 & ) const+void btCollisionShape_calculateLocalInertia(void *c,float p0,float* p1) {+	::btCollisionShape *o = (::btCollisionShape*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->calculateLocalInertia(p0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//not supported method: setUserPointer void ( ::btCollisionShape::* )( void * ) +//not supported method: serialize char const * ( ::btCollisionShape::* )( void *,::btSerializer * ) const+//method: getLocalScaling ::btVector3 const & ( ::btCollisionShape::* )(  ) const+void btCollisionShape_getLocalScaling(void *c,float* ret) {+	::btCollisionShape *o = (::btCollisionShape*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getLocalScaling();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: calculateSerializeBufferSize int ( ::btCollisionShape::* )(  ) const+int btCollisionShape_calculateSerializeBufferSize(void *c) {+	::btCollisionShape *o = (::btCollisionShape*)c;+	int retVal = (int)o->calculateSerializeBufferSize();+	return retVal;+}+//method: getName char const * ( ::btCollisionShape::* )(  ) const+char const * btCollisionShape_getName(void *c) {+	::btCollisionShape *o = (::btCollisionShape*)c;+	char const * retVal = (char const *)o->getName();+	return retVal;+}+//method: isCompound bool ( ::btCollisionShape::* )(  ) const+int btCollisionShape_isCompound(void *c) {+	::btCollisionShape *o = (::btCollisionShape*)c;+	int retVal = (int)o->isCompound();+	return retVal;+}+//method: isPolyhedral bool ( ::btCollisionShape::* )(  ) const+int btCollisionShape_isPolyhedral(void *c) {+	::btCollisionShape *o = (::btCollisionShape*)c;+	int retVal = (int)o->isPolyhedral();+	return retVal;+}+//method: setLocalScaling void ( ::btCollisionShape::* )( ::btVector3 const & ) +void btCollisionShape_setLocalScaling(void *c,float* p0) {+	::btCollisionShape *o = (::btCollisionShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setLocalScaling(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: getAabb void ( ::btCollisionShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btCollisionShape_getAabb(void *c,float* p0,float* p1,float* p2) {+	::btCollisionShape *o = (::btCollisionShape*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->getAabb(tp0,tp1,tp2);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: getContactBreakingThreshold ::btScalar ( ::btCollisionShape::* )( ::btScalar ) const+float btCollisionShape_getContactBreakingThreshold(void *c,float p0) {+	::btCollisionShape *o = (::btCollisionShape*)c;+	float retVal = (float)o->getContactBreakingThreshold(p0);+	return retVal;+}+//method: isConvex bool ( ::btCollisionShape::* )(  ) const+int btCollisionShape_isConvex(void *c) {+	::btCollisionShape *o = (::btCollisionShape*)c;+	int retVal = (int)o->isConvex();+	return retVal;+}+//method: isInfinite bool ( ::btCollisionShape::* )(  ) const+int btCollisionShape_isInfinite(void *c) {+	::btCollisionShape *o = (::btCollisionShape*)c;+	int retVal = (int)o->isInfinite();+	return retVal;+}+//not supported method: getUserPointer void * ( ::btCollisionShape::* )(  ) const+//method: isNonMoving bool ( ::btCollisionShape::* )(  ) const+int btCollisionShape_isNonMoving(void *c) {+	::btCollisionShape *o = (::btCollisionShape*)c;+	int retVal = (int)o->isNonMoving();+	return retVal;+}+//method: getMargin ::btScalar ( ::btCollisionShape::* )(  ) const+float btCollisionShape_getMargin(void *c) {+	::btCollisionShape *o = (::btCollisionShape*)c;+	float retVal = (float)o->getMargin();+	return retVal;+}+//method: setMargin void ( ::btCollisionShape::* )( ::btScalar ) +void btCollisionShape_setMargin(void *c,float p0) {+	::btCollisionShape *o = (::btCollisionShape*)c;+	o->setMargin(p0);+}+//method: isConvex2d bool ( ::btCollisionShape::* )(  ) const+int btCollisionShape_isConvex2d(void *c) {+	::btCollisionShape *o = (::btCollisionShape*)c;+	int retVal = (int)o->isConvex2d();+	return retVal;+}+//method: isSoftBody bool ( ::btCollisionShape::* )(  ) const+int btCollisionShape_isSoftBody(void *c) {+	::btCollisionShape *o = (::btCollisionShape*)c;+	int retVal = (int)o->isSoftBody();+	return retVal;+}+//method: calculateTemporalAabb void ( ::btCollisionShape::* )( ::btTransform const &,::btVector3 const &,::btVector3 const &,::btScalar,::btVector3 &,::btVector3 & ) const+void btCollisionShape_calculateTemporalAabb(void *c,float* p0,float* p1,float* p2,float p3,float* p4,float* p5) {+	::btCollisionShape *o = (::btCollisionShape*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	btVector3 tp4(p4[0],p4[1],p4[2]);+	btVector3 tp5(p5[0],p5[1],p5[2]);+	o->calculateTemporalAabb(tp0,tp1,tp2,p3,tp4,tp5);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	p4[0]=tp4.m_floats[0];p4[1]=tp4.m_floats[1];p4[2]=tp4.m_floats[2];+	p5[0]=tp5.m_floats[0];p5[1]=tp5.m_floats[1];p5[2]=tp5.m_floats[2];+}+//method: isConcave bool ( ::btCollisionShape::* )(  ) const+int btCollisionShape_isConcave(void *c) {+	::btCollisionShape *o = (::btCollisionShape*)c;+	int retVal = (int)o->isConcave();+	return retVal;+}+//method: getAngularMotionDisc ::btScalar ( ::btCollisionShape::* )(  ) const+float btCollisionShape_getAngularMotionDisc(void *c) {+	::btCollisionShape *o = (::btCollisionShape*)c;+	float retVal = (float)o->getAngularMotionDisc();+	return retVal;+}+//method: serializeSingleShape void ( ::btCollisionShape::* )( ::btSerializer * ) const+void btCollisionShape_serializeSingleShape(void *c,void* p0) {+	::btCollisionShape *o = (::btCollisionShape*)c;+	::btSerializer * tp0 = (::btSerializer *)p0;+	o->serializeSingleShape(tp0);+}+//not supported method: getBoundingSphere void ( ::btCollisionShape::* )( ::btVector3 &,::btScalar & ) const+//method: getShapeType int ( ::btCollisionShape::* )(  ) const+int btCollisionShape_getShapeType(void *c) {+	::btCollisionShape *o = (::btCollisionShape*)c;+	int retVal = (int)o->getShapeType();+	return retVal;+}++// ::btCollisionShapeData+//constructor: btCollisionShapeData  ( ::btCollisionShapeData::* )(  ) +void* btCollisionShapeData_new() {+	::btCollisionShapeData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btCollisionShapeData),16);+	o = new (mem)::btCollisionShapeData();+	return (void*)o;+}+void btCollisionShapeData_free(void *c) {+	::btCollisionShapeData *o = (::btCollisionShapeData*)c;+	delete o;+}+//attribute: char * btCollisionShapeData->m_name+void btCollisionShapeData_m_name_set(void *c,char * a) {+	::btCollisionShapeData *o = (::btCollisionShapeData*)c;+	o->m_name = a;+}+char * btCollisionShapeData_m_name_get(void *c) {+	::btCollisionShapeData *o = (::btCollisionShapeData*)c;+	return (char *)(o->m_name);+}++//attribute: int btCollisionShapeData->m_shapeType+void btCollisionShapeData_m_shapeType_set(void *c,int a) {+	::btCollisionShapeData *o = (::btCollisionShapeData*)c;+	o->m_shapeType = a;+}+int btCollisionShapeData_m_shapeType_get(void *c) {+	::btCollisionShapeData *o = (::btCollisionShapeData*)c;+	return (int)(o->m_shapeType);+}++//attribute: char[4] btCollisionShapeData->m_padding+// attribute not supported: //attribute: char[4] btCollisionShapeData->m_padding++// ::btCompoundShape+//constructor: btCompoundShape  ( ::btCompoundShape::* )( bool ) +void* btCompoundShape_new(int p0) {+	::btCompoundShape *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btCompoundShape),16);+	o = new (mem)::btCompoundShape(p0);+	return (void*)o;+}+void btCompoundShape_free(void *c) {+	::btCompoundShape *o = (::btCompoundShape*)c;+	delete o;+}+//method: calculateLocalInertia void ( ::btCompoundShape::* )( ::btScalar,::btVector3 & ) const+void btCompoundShape_calculateLocalInertia(void *c,float p0,float* p1) {+	::btCompoundShape *o = (::btCompoundShape*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->calculateLocalInertia(p0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: getDynamicAabbTree ::btDbvt const * ( ::btCompoundShape::* )(  ) const+void* btCompoundShape_getDynamicAabbTree(void *c) {+	::btCompoundShape *o = (::btCompoundShape*)c;+	void* retVal = (void*) o->getDynamicAabbTree();+	return retVal;+}+//method: getDynamicAabbTree ::btDbvt const * ( ::btCompoundShape::* )(  ) const+void* btCompoundShape_getDynamicAabbTree0(void *c) {+	::btCompoundShape *o = (::btCompoundShape*)c;+	void* retVal = (void*) o->getDynamicAabbTree();+	return retVal;+}+//method: getDynamicAabbTree ::btDbvt * ( ::btCompoundShape::* )(  ) +void* btCompoundShape_getDynamicAabbTree1(void *c) {+	::btCompoundShape *o = (::btCompoundShape*)c;+	void* retVal = (void*) o->getDynamicAabbTree();+	return retVal;+}+//method: getUpdateRevision int ( ::btCompoundShape::* )(  ) const+int btCompoundShape_getUpdateRevision(void *c) {+	::btCompoundShape *o = (::btCompoundShape*)c;+	int retVal = (int)o->getUpdateRevision();+	return retVal;+}+//not supported method: serialize char const * ( ::btCompoundShape::* )( void *,::btSerializer * ) const+//method: getLocalScaling ::btVector3 const & ( ::btCompoundShape::* )(  ) const+void btCompoundShape_getLocalScaling(void *c,float* ret) {+	::btCompoundShape *o = (::btCompoundShape*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getLocalScaling();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: createAabbTreeFromChildren void ( ::btCompoundShape::* )(  ) +void btCompoundShape_createAabbTreeFromChildren(void *c) {+	::btCompoundShape *o = (::btCompoundShape*)c;+	o->createAabbTreeFromChildren();+}+//method: calculateSerializeBufferSize int ( ::btCompoundShape::* )(  ) const+int btCompoundShape_calculateSerializeBufferSize(void *c) {+	::btCompoundShape *o = (::btCompoundShape*)c;+	int retVal = (int)o->calculateSerializeBufferSize();+	return retVal;+}+//method: getName char const * ( ::btCompoundShape::* )(  ) const+char const * btCompoundShape_getName(void *c) {+	::btCompoundShape *o = (::btCompoundShape*)c;+	char const * retVal = (char const *)o->getName();+	return retVal;+}+//method: setLocalScaling void ( ::btCompoundShape::* )( ::btVector3 const & ) +void btCompoundShape_setLocalScaling(void *c,float* p0) {+	::btCompoundShape *o = (::btCompoundShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setLocalScaling(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: getAabb void ( ::btCompoundShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btCompoundShape_getAabb(void *c,float* p0,float* p1,float* p2) {+	::btCompoundShape *o = (::btCompoundShape*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->getAabb(tp0,tp1,tp2);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: getChildShape ::btCollisionShape * ( ::btCompoundShape::* )( int ) +void* btCompoundShape_getChildShape(void *c,int p0) {+	::btCompoundShape *o = (::btCompoundShape*)c;+	void* retVal = (void*) o->getChildShape(p0);+	return retVal;+}+//method: getChildShape ::btCollisionShape * ( ::btCompoundShape::* )( int ) +void* btCompoundShape_getChildShape0(void *c,int p0) {+	::btCompoundShape *o = (::btCompoundShape*)c;+	void* retVal = (void*) o->getChildShape(p0);+	return retVal;+}+//method: getChildShape ::btCollisionShape const * ( ::btCompoundShape::* )( int ) const+void* btCompoundShape_getChildShape1(void *c,int p0) {+	::btCompoundShape *o = (::btCompoundShape*)c;+	void* retVal = (void*) o->getChildShape(p0);+	return retVal;+}+//method: addChildShape void ( ::btCompoundShape::* )( ::btTransform const &,::btCollisionShape * ) +void btCompoundShape_addChildShape(void *c,float* p0,void* p1) {+	::btCompoundShape *o = (::btCompoundShape*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	::btCollisionShape * tp1 = (::btCollisionShape *)p1;+	o->addChildShape(tp0,tp1);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+}+//method: getChildTransform ::btTransform & ( ::btCompoundShape::* )( int ) +void btCompoundShape_getChildTransform(void *c,int p0,float* ret) {+	::btCompoundShape *o = (::btCompoundShape*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getChildTransform(p0);+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: getChildTransform ::btTransform & ( ::btCompoundShape::* )( int ) +void btCompoundShape_getChildTransform0(void *c,int p0,float* ret) {+	::btCompoundShape *o = (::btCompoundShape*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getChildTransform(p0);+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: getChildTransform ::btTransform const & ( ::btCompoundShape::* )( int ) const+void btCompoundShape_getChildTransform1(void *c,int p0,float* ret) {+	::btCompoundShape *o = (::btCompoundShape*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getChildTransform(p0);+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: getChildList ::btCompoundShapeChild * ( ::btCompoundShape::* )(  ) +void* btCompoundShape_getChildList(void *c) {+	::btCompoundShape *o = (::btCompoundShape*)c;+	void* retVal = (void*) o->getChildList();+	return retVal;+}+//method: getMargin ::btScalar ( ::btCompoundShape::* )(  ) const+float btCompoundShape_getMargin(void *c) {+	::btCompoundShape *o = (::btCompoundShape*)c;+	float retVal = (float)o->getMargin();+	return retVal;+}+//method: setMargin void ( ::btCompoundShape::* )( ::btScalar ) +void btCompoundShape_setMargin(void *c,float p0) {+	::btCompoundShape *o = (::btCompoundShape*)c;+	o->setMargin(p0);+}+//method: getNumChildShapes int ( ::btCompoundShape::* )(  ) const+int btCompoundShape_getNumChildShapes(void *c) {+	::btCompoundShape *o = (::btCompoundShape*)c;+	int retVal = (int)o->getNumChildShapes();+	return retVal;+}+//method: removeChildShapeByIndex void ( ::btCompoundShape::* )( int ) +void btCompoundShape_removeChildShapeByIndex(void *c,int p0) {+	::btCompoundShape *o = (::btCompoundShape*)c;+	o->removeChildShapeByIndex(p0);+}+//method: recalculateLocalAabb void ( ::btCompoundShape::* )(  ) +void btCompoundShape_recalculateLocalAabb(void *c) {+	::btCompoundShape *o = (::btCompoundShape*)c;+	o->recalculateLocalAabb();+}+//method: updateChildTransform void ( ::btCompoundShape::* )( int,::btTransform const &,bool ) +void btCompoundShape_updateChildTransform(void *c,int p0,float* p1,int p2) {+	::btCompoundShape *o = (::btCompoundShape*)c;+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	o->updateChildTransform(p0,tp1,p2);+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+}+//not supported method: calculatePrincipalAxisTransform void ( ::btCompoundShape::* )( ::btScalar *,::btTransform &,::btVector3 & ) const+//method: removeChildShape void ( ::btCompoundShape::* )( ::btCollisionShape * ) +void btCompoundShape_removeChildShape(void *c,void* p0) {+	::btCompoundShape *o = (::btCompoundShape*)c;+	::btCollisionShape * tp0 = (::btCollisionShape *)p0;+	o->removeChildShape(tp0);+}++// ::btCompoundShapeChild+//constructor: btCompoundShapeChild  ( ::btCompoundShapeChild::* )(  ) +void* btCompoundShapeChild_new() {+	::btCompoundShapeChild *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btCompoundShapeChild),16);+	o = new (mem)::btCompoundShapeChild();+	return (void*)o;+}+void btCompoundShapeChild_free(void *c) {+	::btCompoundShapeChild *o = (::btCompoundShapeChild*)c;+	delete o;+}+//attribute: ::btScalar btCompoundShapeChild->m_childMargin+void btCompoundShapeChild_m_childMargin_set(void *c,float a) {+	::btCompoundShapeChild *o = (::btCompoundShapeChild*)c;+	o->m_childMargin = a;+}+float btCompoundShapeChild_m_childMargin_get(void *c) {+	::btCompoundShapeChild *o = (::btCompoundShapeChild*)c;+	return (float)(o->m_childMargin);+}++//attribute: ::btCollisionShape * btCompoundShapeChild->m_childShape+void btCompoundShapeChild_m_childShape_set(void *c,void* a) {+	::btCompoundShapeChild *o = (::btCompoundShapeChild*)c;+	::btCollisionShape * ta = (::btCollisionShape *)a;+	o->m_childShape = ta;+}+// attriibute getter not supported: //attribute: ::btCollisionShape * btCompoundShapeChild->m_childShape+//attribute: int btCompoundShapeChild->m_childShapeType+void btCompoundShapeChild_m_childShapeType_set(void *c,int a) {+	::btCompoundShapeChild *o = (::btCompoundShapeChild*)c;+	o->m_childShapeType = a;+}+int btCompoundShapeChild_m_childShapeType_get(void *c) {+	::btCompoundShapeChild *o = (::btCompoundShapeChild*)c;+	return (int)(o->m_childShapeType);+}++//attribute: ::btDbvtNode * btCompoundShapeChild->m_node+void btCompoundShapeChild_m_node_set(void *c,void* a) {+	::btCompoundShapeChild *o = (::btCompoundShapeChild*)c;+	::btDbvtNode * ta = (::btDbvtNode *)a;+	o->m_node = ta;+}+// attriibute getter not supported: //attribute: ::btDbvtNode * btCompoundShapeChild->m_node+//attribute: ::btTransform btCompoundShapeChild->m_transform+void btCompoundShapeChild_m_transform_set(void *c,float* a) {+	::btCompoundShapeChild *o = (::btCompoundShapeChild*)c;+	btMatrix3x3 mta(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]);+	btVector3 vta(a[9],a[10],a[11]);+	btTransform ta(mta,vta);+	o->m_transform = ta;+}+void btCompoundShapeChild_m_transform_get(void *c,float* a) {+	::btCompoundShapeChild *o = (::btCompoundShapeChild*)c;+	a[0]=(o->m_transform).getBasis().getRow(0).m_floats[0];a[1]=(o->m_transform).getBasis().getRow(0).m_floats[1];a[2]=(o->m_transform).getBasis().getRow(0).m_floats[2];a[3]=(o->m_transform).getBasis().getRow(1).m_floats[0];a[4]=(o->m_transform).getBasis().getRow(1).m_floats[1];a[5]=(o->m_transform).getBasis().getRow(1).m_floats[2];a[6]=(o->m_transform).getBasis().getRow(2).m_floats[0];a[7]=(o->m_transform).getBasis().getRow(2).m_floats[1];a[8]=(o->m_transform).getBasis().getRow(2).m_floats[2];+	a[9]=(o->m_transform).getOrigin().m_floats[0];a[10]=(o->m_transform).getOrigin().m_floats[1];a[11]=(o->m_transform).getOrigin().m_floats[2];+}+++// ::btCompoundShapeChildData+//constructor: btCompoundShapeChildData  ( ::btCompoundShapeChildData::* )(  ) +void* btCompoundShapeChildData_new() {+	::btCompoundShapeChildData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btCompoundShapeChildData),16);+	o = new (mem)::btCompoundShapeChildData();+	return (void*)o;+}+void btCompoundShapeChildData_free(void *c) {+	::btCompoundShapeChildData *o = (::btCompoundShapeChildData*)c;+	delete o;+}+//attribute: ::btTransformFloatData btCompoundShapeChildData->m_transform+// attribute not supported: //attribute: ::btTransformFloatData btCompoundShapeChildData->m_transform+//attribute: ::btCollisionShapeData * btCompoundShapeChildData->m_childShape+void btCompoundShapeChildData_m_childShape_set(void *c,void* a) {+	::btCompoundShapeChildData *o = (::btCompoundShapeChildData*)c;+	::btCollisionShapeData * ta = (::btCollisionShapeData *)a;+	o->m_childShape = ta;+}+// attriibute getter not supported: //attribute: ::btCollisionShapeData * btCompoundShapeChildData->m_childShape+//attribute: int btCompoundShapeChildData->m_childShapeType+void btCompoundShapeChildData_m_childShapeType_set(void *c,int a) {+	::btCompoundShapeChildData *o = (::btCompoundShapeChildData*)c;+	o->m_childShapeType = a;+}+int btCompoundShapeChildData_m_childShapeType_get(void *c) {+	::btCompoundShapeChildData *o = (::btCompoundShapeChildData*)c;+	return (int)(o->m_childShapeType);+}++//attribute: float btCompoundShapeChildData->m_childMargin+void btCompoundShapeChildData_m_childMargin_set(void *c,float a) {+	::btCompoundShapeChildData *o = (::btCompoundShapeChildData*)c;+	o->m_childMargin = a;+}+float btCompoundShapeChildData_m_childMargin_get(void *c) {+	::btCompoundShapeChildData *o = (::btCompoundShapeChildData*)c;+	return (float)(o->m_childMargin);+}+++// ::btCompoundShapeData+//constructor: btCompoundShapeData  ( ::btCompoundShapeData::* )(  ) +void* btCompoundShapeData_new() {+	::btCompoundShapeData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btCompoundShapeData),16);+	o = new (mem)::btCompoundShapeData();+	return (void*)o;+}+void btCompoundShapeData_free(void *c) {+	::btCompoundShapeData *o = (::btCompoundShapeData*)c;+	delete o;+}+//attribute: ::btCollisionShapeData btCompoundShapeData->m_collisionShapeData+// attribute not supported: //attribute: ::btCollisionShapeData btCompoundShapeData->m_collisionShapeData+//attribute: ::btCompoundShapeChildData * btCompoundShapeData->m_childShapePtr+void btCompoundShapeData_m_childShapePtr_set(void *c,void* a) {+	::btCompoundShapeData *o = (::btCompoundShapeData*)c;+	::btCompoundShapeChildData * ta = (::btCompoundShapeChildData *)a;+	o->m_childShapePtr = ta;+}+// attriibute getter not supported: //attribute: ::btCompoundShapeChildData * btCompoundShapeData->m_childShapePtr+//attribute: int btCompoundShapeData->m_numChildShapes+void btCompoundShapeData_m_numChildShapes_set(void *c,int a) {+	::btCompoundShapeData *o = (::btCompoundShapeData*)c;+	o->m_numChildShapes = a;+}+int btCompoundShapeData_m_numChildShapes_get(void *c) {+	::btCompoundShapeData *o = (::btCompoundShapeData*)c;+	return (int)(o->m_numChildShapes);+}++//attribute: float btCompoundShapeData->m_collisionMargin+void btCompoundShapeData_m_collisionMargin_set(void *c,float a) {+	::btCompoundShapeData *o = (::btCompoundShapeData*)c;+	o->m_collisionMargin = a;+}+float btCompoundShapeData_m_collisionMargin_get(void *c) {+	::btCompoundShapeData *o = (::btCompoundShapeData*)c;+	return (float)(o->m_collisionMargin);+}+++// ::btConcaveShape+//method: processAllTriangles void ( ::btConcaveShape::* )( ::btTriangleCallback *,::btVector3 const &,::btVector3 const & ) const+void btConcaveShape_processAllTriangles(void *c,void* p0,float* p1,float* p2) {+	::btConcaveShape *o = (::btConcaveShape*)c;+	::btTriangleCallback * tp0 = (::btTriangleCallback *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->processAllTriangles(tp0,tp1,tp2);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: setMargin void ( ::btConcaveShape::* )( ::btScalar ) +void btConcaveShape_setMargin(void *c,float p0) {+	::btConcaveShape *o = (::btConcaveShape*)c;+	o->setMargin(p0);+}+//method: getMargin ::btScalar ( ::btConcaveShape::* )(  ) const+float btConcaveShape_getMargin(void *c) {+	::btConcaveShape *o = (::btConcaveShape*)c;+	float retVal = (float)o->getMargin();+	return retVal;+}++// ::btConeShape+//constructor: btConeShape  ( ::btConeShape::* )( ::btScalar,::btScalar ) +void* btConeShape_new(float p0,float p1) {+	::btConeShape *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btConeShape),16);+	o = new (mem)::btConeShape(p0,p1);+	return (void*)o;+}+void btConeShape_free(void *c) {+	::btConeShape *o = (::btConeShape*)c;+	delete o;+}+//method: calculateLocalInertia void ( ::btConeShape::* )( ::btScalar,::btVector3 & ) const+void btConeShape_calculateLocalInertia(void *c,float p0,float* p1) {+	::btConeShape *o = (::btConeShape*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->calculateLocalInertia(p0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: localGetSupportingVertex ::btVector3 ( ::btConeShape::* )( ::btVector3 const & ) const+void btConeShape_localGetSupportingVertex(void *c,float* p0,float* ret) {+	::btConeShape *o = (::btConeShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->localGetSupportingVertex(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//not supported method: batchedUnitVectorGetSupportingVertexWithoutMargin void ( ::btConeShape::* )( ::btVector3 const *,::btVector3 *,int ) const+//method: getConeUpIndex int ( ::btConeShape::* )(  ) const+int btConeShape_getConeUpIndex(void *c) {+	::btConeShape *o = (::btConeShape*)c;+	int retVal = (int)o->getConeUpIndex();+	return retVal;+}+//method: getName char const * ( ::btConeShape::* )(  ) const+char const * btConeShape_getName(void *c) {+	::btConeShape *o = (::btConeShape*)c;+	char const * retVal = (char const *)o->getName();+	return retVal;+}+//method: getHeight ::btScalar ( ::btConeShape::* )(  ) const+float btConeShape_getHeight(void *c) {+	::btConeShape *o = (::btConeShape*)c;+	float retVal = (float)o->getHeight();+	return retVal;+}+//method: setConeUpIndex void ( ::btConeShape::* )( int ) +void btConeShape_setConeUpIndex(void *c,int p0) {+	::btConeShape *o = (::btConeShape*)c;+	o->setConeUpIndex(p0);+}+//method: setLocalScaling void ( ::btConeShape::* )( ::btVector3 const & ) +void btConeShape_setLocalScaling(void *c,float* p0) {+	::btConeShape *o = (::btConeShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setLocalScaling(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: localGetSupportingVertexWithoutMargin ::btVector3 ( ::btConeShape::* )( ::btVector3 const & ) const+void btConeShape_localGetSupportingVertexWithoutMargin(void *c,float* p0,float* ret) {+	::btConeShape *o = (::btConeShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->localGetSupportingVertexWithoutMargin(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getRadius ::btScalar ( ::btConeShape::* )(  ) const+float btConeShape_getRadius(void *c) {+	::btConeShape *o = (::btConeShape*)c;+	float retVal = (float)o->getRadius();+	return retVal;+}++// ::btConeShapeX+//constructor: btConeShapeX  ( ::btConeShapeX::* )( ::btScalar,::btScalar ) +void* btConeShapeX_new(float p0,float p1) {+	::btConeShapeX *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btConeShapeX),16);+	o = new (mem)::btConeShapeX(p0,p1);+	return (void*)o;+}+void btConeShapeX_free(void *c) {+	::btConeShapeX *o = (::btConeShapeX*)c;+	delete o;+}++// ::btConeShapeZ+//constructor: btConeShapeZ  ( ::btConeShapeZ::* )( ::btScalar,::btScalar ) +void* btConeShapeZ_new(float p0,float p1) {+	::btConeShapeZ *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btConeShapeZ),16);+	o = new (mem)::btConeShapeZ(p0,p1);+	return (void*)o;+}+void btConeShapeZ_free(void *c) {+	::btConeShapeZ *o = (::btConeShapeZ*)c;+	delete o;+}++// ::btConvexHullShape+//not supported constructor: btConvexHullShape  ( ::btConvexHullShape::* )( ::btScalar const *,int,int ) +void btConvexHullShape_free(void *c) {+	::btConvexHullShape *o = (::btConvexHullShape*)c;+	delete o;+}+//method: addPoint void ( ::btConvexHullShape::* )( ::btVector3 const & ) +void btConvexHullShape_addPoint(void *c,float* p0) {+	::btConvexHullShape *o = (::btConvexHullShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->addPoint(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: localGetSupportingVertex ::btVector3 ( ::btConvexHullShape::* )( ::btVector3 const & ) const+void btConvexHullShape_localGetSupportingVertex(void *c,float* p0,float* ret) {+	::btConvexHullShape *o = (::btConvexHullShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->localGetSupportingVertex(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: calculateSerializeBufferSize int ( ::btConvexHullShape::* )(  ) const+int btConvexHullShape_calculateSerializeBufferSize(void *c) {+	::btConvexHullShape *o = (::btConvexHullShape*)c;+	int retVal = (int)o->calculateSerializeBufferSize();+	return retVal;+}+//not supported method: batchedUnitVectorGetSupportingVertexWithoutMargin void ( ::btConvexHullShape::* )( ::btVector3 const *,::btVector3 *,int ) const+//method: getScaledPoint ::btVector3 ( ::btConvexHullShape::* )( int ) const+void btConvexHullShape_getScaledPoint(void *c,int p0,float* ret) {+	::btConvexHullShape *o = (::btConvexHullShape*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getScaledPoint(p0);+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getNumPlanes int ( ::btConvexHullShape::* )(  ) const+int btConvexHullShape_getNumPlanes(void *c) {+	::btConvexHullShape *o = (::btConvexHullShape*)c;+	int retVal = (int)o->getNumPlanes();+	return retVal;+}+//not supported method: getPoints ::btVector3 const * ( ::btConvexHullShape::* )(  ) const+//method: getNumEdges int ( ::btConvexHullShape::* )(  ) const+int btConvexHullShape_getNumEdges(void *c) {+	::btConvexHullShape *o = (::btConvexHullShape*)c;+	int retVal = (int)o->getNumEdges();+	return retVal;+}+//method: getName char const * ( ::btConvexHullShape::* )(  ) const+char const * btConvexHullShape_getName(void *c) {+	::btConvexHullShape *o = (::btConvexHullShape*)c;+	char const * retVal = (char const *)o->getName();+	return retVal;+}+//method: getVertex void ( ::btConvexHullShape::* )( int,::btVector3 & ) const+void btConvexHullShape_getVertex(void *c,int p0,float* p1) {+	::btConvexHullShape *o = (::btConvexHullShape*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->getVertex(p0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: getEdge void ( ::btConvexHullShape::* )( int,::btVector3 &,::btVector3 & ) const+void btConvexHullShape_getEdge(void *c,int p0,float* p1,float* p2) {+	::btConvexHullShape *o = (::btConvexHullShape*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->getEdge(p0,tp1,tp2);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: localGetSupportingVertexWithoutMargin ::btVector3 ( ::btConvexHullShape::* )( ::btVector3 const & ) const+void btConvexHullShape_localGetSupportingVertexWithoutMargin(void *c,float* p0,float* ret) {+	::btConvexHullShape *o = (::btConvexHullShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->localGetSupportingVertexWithoutMargin(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: isInside bool ( ::btConvexHullShape::* )( ::btVector3 const &,::btScalar ) const+int btConvexHullShape_isInside(void *c,float* p0,float p1) {+	::btConvexHullShape *o = (::btConvexHullShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	int retVal = (int)o->isInside(tp0,p1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	return retVal;+}+//method: getPlane void ( ::btConvexHullShape::* )( ::btVector3 &,::btVector3 &,int ) const+void btConvexHullShape_getPlane(void *c,float* p0,float* p1,int p2) {+	::btConvexHullShape *o = (::btConvexHullShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->getPlane(tp0,tp1,p2);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: setLocalScaling void ( ::btConvexHullShape::* )( ::btVector3 const & ) +void btConvexHullShape_setLocalScaling(void *c,float* p0) {+	::btConvexHullShape *o = (::btConvexHullShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setLocalScaling(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: getNumVertices int ( ::btConvexHullShape::* )(  ) const+int btConvexHullShape_getNumVertices(void *c) {+	::btConvexHullShape *o = (::btConvexHullShape*)c;+	int retVal = (int)o->getNumVertices();+	return retVal;+}+//not supported method: serialize char const * ( ::btConvexHullShape::* )( void *,::btSerializer * ) const+//method: getNumPoints int ( ::btConvexHullShape::* )(  ) const+int btConvexHullShape_getNumPoints(void *c) {+	::btConvexHullShape *o = (::btConvexHullShape*)c;+	int retVal = (int)o->getNumPoints();+	return retVal;+}+//not supported method: getUnscaledPoints ::btVector3 * ( ::btConvexHullShape::* )(  ) +//not supported method: getUnscaledPoints ::btVector3 * ( ::btConvexHullShape::* )(  ) +//not supported method: getUnscaledPoints ::btVector3 const * ( ::btConvexHullShape::* )(  ) const++// ::btConvexHullShapeData+//constructor: btConvexHullShapeData  ( ::btConvexHullShapeData::* )(  ) +void* btConvexHullShapeData_new() {+	::btConvexHullShapeData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btConvexHullShapeData),16);+	o = new (mem)::btConvexHullShapeData();+	return (void*)o;+}+void btConvexHullShapeData_free(void *c) {+	::btConvexHullShapeData *o = (::btConvexHullShapeData*)c;+	delete o;+}+//attribute: ::btConvexInternalShapeData btConvexHullShapeData->m_convexInternalShapeData+// attribute not supported: //attribute: ::btConvexInternalShapeData btConvexHullShapeData->m_convexInternalShapeData+//attribute: ::btVector3FloatData * btConvexHullShapeData->m_unscaledPointsFloatPtr+void btConvexHullShapeData_m_unscaledPointsFloatPtr_set(void *c,void* a) {+	::btConvexHullShapeData *o = (::btConvexHullShapeData*)c;+	::btVector3FloatData * ta = (::btVector3FloatData *)a;+	o->m_unscaledPointsFloatPtr = ta;+}+// attriibute getter not supported: //attribute: ::btVector3FloatData * btConvexHullShapeData->m_unscaledPointsFloatPtr+//attribute: ::btVector3DoubleData * btConvexHullShapeData->m_unscaledPointsDoublePtr+void btConvexHullShapeData_m_unscaledPointsDoublePtr_set(void *c,void* a) {+	::btConvexHullShapeData *o = (::btConvexHullShapeData*)c;+	::btVector3DoubleData * ta = (::btVector3DoubleData *)a;+	o->m_unscaledPointsDoublePtr = ta;+}+// attriibute getter not supported: //attribute: ::btVector3DoubleData * btConvexHullShapeData->m_unscaledPointsDoublePtr+//attribute: int btConvexHullShapeData->m_numUnscaledPoints+void btConvexHullShapeData_m_numUnscaledPoints_set(void *c,int a) {+	::btConvexHullShapeData *o = (::btConvexHullShapeData*)c;+	o->m_numUnscaledPoints = a;+}+int btConvexHullShapeData_m_numUnscaledPoints_get(void *c) {+	::btConvexHullShapeData *o = (::btConvexHullShapeData*)c;+	return (int)(o->m_numUnscaledPoints);+}++//attribute: char[4] btConvexHullShapeData->m_padding3+// attribute not supported: //attribute: char[4] btConvexHullShapeData->m_padding3++// ::btConvexInternalAabbCachingShape+//method: recalcLocalAabb void ( ::btConvexInternalAabbCachingShape::* )(  ) +void btConvexInternalAabbCachingShape_recalcLocalAabb(void *c) {+	::btConvexInternalAabbCachingShape *o = (::btConvexInternalAabbCachingShape*)c;+	o->recalcLocalAabb();+}+//method: setLocalScaling void ( ::btConvexInternalAabbCachingShape::* )( ::btVector3 const & ) +void btConvexInternalAabbCachingShape_setLocalScaling(void *c,float* p0) {+	::btConvexInternalAabbCachingShape *o = (::btConvexInternalAabbCachingShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setLocalScaling(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: getAabb void ( ::btConvexInternalAabbCachingShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btConvexInternalAabbCachingShape_getAabb(void *c,float* p0,float* p1,float* p2) {+	::btConvexInternalAabbCachingShape *o = (::btConvexInternalAabbCachingShape*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->getAabb(tp0,tp1,tp2);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}++// ::btConvexInternalShape+//method: localGetSupportingVertex ::btVector3 ( ::btConvexInternalShape::* )( ::btVector3 const & ) const+void btConvexInternalShape_localGetSupportingVertex(void *c,float* p0,float* ret) {+	::btConvexInternalShape *o = (::btConvexInternalShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->localGetSupportingVertex(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: calculateSerializeBufferSize int ( ::btConvexInternalShape::* )(  ) const+int btConvexInternalShape_calculateSerializeBufferSize(void *c) {+	::btConvexInternalShape *o = (::btConvexInternalShape*)c;+	int retVal = (int)o->calculateSerializeBufferSize();+	return retVal;+}+//method: getImplicitShapeDimensions ::btVector3 const & ( ::btConvexInternalShape::* )(  ) const+void btConvexInternalShape_getImplicitShapeDimensions(void *c,float* ret) {+	::btConvexInternalShape *o = (::btConvexInternalShape*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getImplicitShapeDimensions();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//not supported method: serialize char const * ( ::btConvexInternalShape::* )( void *,::btSerializer * ) const+//method: getLocalScalingNV ::btVector3 const & ( ::btConvexInternalShape::* )(  ) const+void btConvexInternalShape_getLocalScalingNV(void *c,float* ret) {+	::btConvexInternalShape *o = (::btConvexInternalShape*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getLocalScalingNV();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getAabbSlow void ( ::btConvexInternalShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btConvexInternalShape_getAabbSlow(void *c,float* p0,float* p1,float* p2) {+	::btConvexInternalShape *o = (::btConvexInternalShape*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->getAabbSlow(tp0,tp1,tp2);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: getLocalScaling ::btVector3 const & ( ::btConvexInternalShape::* )(  ) const+void btConvexInternalShape_getLocalScaling(void *c,float* ret) {+	::btConvexInternalShape *o = (::btConvexInternalShape*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getLocalScaling();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getPreferredPenetrationDirection void ( ::btConvexInternalShape::* )( int,::btVector3 & ) const+void btConvexInternalShape_getPreferredPenetrationDirection(void *c,int p0,float* p1) {+	::btConvexInternalShape *o = (::btConvexInternalShape*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->getPreferredPenetrationDirection(p0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: setLocalScaling void ( ::btConvexInternalShape::* )( ::btVector3 const & ) +void btConvexInternalShape_setLocalScaling(void *c,float* p0) {+	::btConvexInternalShape *o = (::btConvexInternalShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setLocalScaling(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: getNumPreferredPenetrationDirections int ( ::btConvexInternalShape::* )(  ) const+int btConvexInternalShape_getNumPreferredPenetrationDirections(void *c) {+	::btConvexInternalShape *o = (::btConvexInternalShape*)c;+	int retVal = (int)o->getNumPreferredPenetrationDirections();+	return retVal;+}+//method: getAabb void ( ::btConvexInternalShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btConvexInternalShape_getAabb(void *c,float* p0,float* p1,float* p2) {+	::btConvexInternalShape *o = (::btConvexInternalShape*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->getAabb(tp0,tp1,tp2);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: setMargin void ( ::btConvexInternalShape::* )( ::btScalar ) +void btConvexInternalShape_setMargin(void *c,float p0) {+	::btConvexInternalShape *o = (::btConvexInternalShape*)c;+	o->setMargin(p0);+}+//method: getMarginNV ::btScalar ( ::btConvexInternalShape::* )(  ) const+float btConvexInternalShape_getMarginNV(void *c) {+	::btConvexInternalShape *o = (::btConvexInternalShape*)c;+	float retVal = (float)o->getMarginNV();+	return retVal;+}+//method: getMargin ::btScalar ( ::btConvexInternalShape::* )(  ) const+float btConvexInternalShape_getMargin(void *c) {+	::btConvexInternalShape *o = (::btConvexInternalShape*)c;+	float retVal = (float)o->getMargin();+	return retVal;+}+//method: setImplicitShapeDimensions void ( ::btConvexInternalShape::* )( ::btVector3 const & ) +void btConvexInternalShape_setImplicitShapeDimensions(void *c,float* p0) {+	::btConvexInternalShape *o = (::btConvexInternalShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setImplicitShapeDimensions(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}++// ::btConvexInternalShapeData+//constructor: btConvexInternalShapeData  ( ::btConvexInternalShapeData::* )(  ) +void* btConvexInternalShapeData_new() {+	::btConvexInternalShapeData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btConvexInternalShapeData),16);+	o = new (mem)::btConvexInternalShapeData();+	return (void*)o;+}+void btConvexInternalShapeData_free(void *c) {+	::btConvexInternalShapeData *o = (::btConvexInternalShapeData*)c;+	delete o;+}+//attribute: float btConvexInternalShapeData->m_collisionMargin+void btConvexInternalShapeData_m_collisionMargin_set(void *c,float a) {+	::btConvexInternalShapeData *o = (::btConvexInternalShapeData*)c;+	o->m_collisionMargin = a;+}+float btConvexInternalShapeData_m_collisionMargin_get(void *c) {+	::btConvexInternalShapeData *o = (::btConvexInternalShapeData*)c;+	return (float)(o->m_collisionMargin);+}++//attribute: ::btCollisionShapeData btConvexInternalShapeData->m_collisionShapeData+// attribute not supported: //attribute: ::btCollisionShapeData btConvexInternalShapeData->m_collisionShapeData+//attribute: ::btVector3FloatData btConvexInternalShapeData->m_implicitShapeDimensions+// attribute not supported: //attribute: ::btVector3FloatData btConvexInternalShapeData->m_implicitShapeDimensions+//attribute: ::btVector3FloatData btConvexInternalShapeData->m_localScaling+// attribute not supported: //attribute: ::btVector3FloatData btConvexInternalShapeData->m_localScaling+//attribute: int btConvexInternalShapeData->m_padding+void btConvexInternalShapeData_m_padding_set(void *c,int a) {+	::btConvexInternalShapeData *o = (::btConvexInternalShapeData*)c;+	o->m_padding = a;+}+int btConvexInternalShapeData_m_padding_get(void *c) {+	::btConvexInternalShapeData *o = (::btConvexInternalShapeData*)c;+	return (int)(o->m_padding);+}+++// ::btConvexShape+//method: getAabbNonVirtual void ( ::btConvexShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btConvexShape_getAabbNonVirtual(void *c,float* p0,float* p1,float* p2) {+	::btConvexShape *o = (::btConvexShape*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->getAabbNonVirtual(tp0,tp1,tp2);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: localGetSupportingVertex ::btVector3 ( ::btConvexShape::* )( ::btVector3 const & ) const+void btConvexShape_localGetSupportingVertex(void *c,float* p0,float* ret) {+	::btConvexShape *o = (::btConvexShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->localGetSupportingVertex(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//not supported method: batchedUnitVectorGetSupportingVertexWithoutMargin void ( ::btConvexShape::* )( ::btVector3 const *,::btVector3 *,int ) const+//method: getMargin ::btScalar ( ::btConvexShape::* )(  ) const+float btConvexShape_getMargin(void *c) {+	::btConvexShape *o = (::btConvexShape*)c;+	float retVal = (float)o->getMargin();+	return retVal;+}+//method: localGetSupportVertexWithoutMarginNonVirtual ::btVector3 ( ::btConvexShape::* )( ::btVector3 const & ) const+void btConvexShape_localGetSupportVertexWithoutMarginNonVirtual(void *c,float* p0,float* ret) {+	::btConvexShape *o = (::btConvexShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->localGetSupportVertexWithoutMarginNonVirtual(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getLocalScaling ::btVector3 const & ( ::btConvexShape::* )(  ) const+void btConvexShape_getLocalScaling(void *c,float* ret) {+	::btConvexShape *o = (::btConvexShape*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getLocalScaling();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getPreferredPenetrationDirection void ( ::btConvexShape::* )( int,::btVector3 & ) const+void btConvexShape_getPreferredPenetrationDirection(void *c,int p0,float* p1) {+	::btConvexShape *o = (::btConvexShape*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->getPreferredPenetrationDirection(p0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: setLocalScaling void ( ::btConvexShape::* )( ::btVector3 const & ) +void btConvexShape_setLocalScaling(void *c,float* p0) {+	::btConvexShape *o = (::btConvexShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setLocalScaling(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: getAabbSlow void ( ::btConvexShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btConvexShape_getAabbSlow(void *c,float* p0,float* p1,float* p2) {+	::btConvexShape *o = (::btConvexShape*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->getAabbSlow(tp0,tp1,tp2);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: getAabb void ( ::btConvexShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btConvexShape_getAabb(void *c,float* p0,float* p1,float* p2) {+	::btConvexShape *o = (::btConvexShape*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->getAabb(tp0,tp1,tp2);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: setMargin void ( ::btConvexShape::* )( ::btScalar ) +void btConvexShape_setMargin(void *c,float p0) {+	::btConvexShape *o = (::btConvexShape*)c;+	o->setMargin(p0);+}+//method: getNumPreferredPenetrationDirections int ( ::btConvexShape::* )(  ) const+int btConvexShape_getNumPreferredPenetrationDirections(void *c) {+	::btConvexShape *o = (::btConvexShape*)c;+	int retVal = (int)o->getNumPreferredPenetrationDirections();+	return retVal;+}+//method: localGetSupportVertexNonVirtual ::btVector3 ( ::btConvexShape::* )( ::btVector3 const & ) const+void btConvexShape_localGetSupportVertexNonVirtual(void *c,float* p0,float* ret) {+	::btConvexShape *o = (::btConvexShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->localGetSupportVertexNonVirtual(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: localGetSupportingVertexWithoutMargin ::btVector3 ( ::btConvexShape::* )( ::btVector3 const & ) const+void btConvexShape_localGetSupportingVertexWithoutMargin(void *c,float* p0,float* ret) {+	::btConvexShape *o = (::btConvexShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->localGetSupportingVertexWithoutMargin(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getMarginNonVirtual ::btScalar ( ::btConvexShape::* )(  ) const+float btConvexShape_getMarginNonVirtual(void *c) {+	::btConvexShape *o = (::btConvexShape*)c;+	float retVal = (float)o->getMarginNonVirtual();+	return retVal;+}++// ::btConvexTriangleMeshShape+//constructor: btConvexTriangleMeshShape  ( ::btConvexTriangleMeshShape::* )( ::btStridingMeshInterface *,bool ) +void* btConvexTriangleMeshShape_new(void* p0,int p1) {+	::btConvexTriangleMeshShape *o = 0;+	 void *mem = 0;+	::btStridingMeshInterface * tp0 = (::btStridingMeshInterface *)p0;+	mem = btAlignedAlloc(sizeof(::btConvexTriangleMeshShape),16);+	o = new (mem)::btConvexTriangleMeshShape(tp0,p1);+	return (void*)o;+}+void btConvexTriangleMeshShape_free(void *c) {+	::btConvexTriangleMeshShape *o = (::btConvexTriangleMeshShape*)c;+	delete o;+}+//method: getNumPlanes int ( ::btConvexTriangleMeshShape::* )(  ) const+int btConvexTriangleMeshShape_getNumPlanes(void *c) {+	::btConvexTriangleMeshShape *o = (::btConvexTriangleMeshShape*)c;+	int retVal = (int)o->getNumPlanes();+	return retVal;+}+//method: localGetSupportingVertex ::btVector3 ( ::btConvexTriangleMeshShape::* )( ::btVector3 const & ) const+void btConvexTriangleMeshShape_localGetSupportingVertex(void *c,float* p0,float* ret) {+	::btConvexTriangleMeshShape *o = (::btConvexTriangleMeshShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->localGetSupportingVertex(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//not supported method: batchedUnitVectorGetSupportingVertexWithoutMargin void ( ::btConvexTriangleMeshShape::* )( ::btVector3 const *,::btVector3 *,int ) const+//method: getNumEdges int ( ::btConvexTriangleMeshShape::* )(  ) const+int btConvexTriangleMeshShape_getNumEdges(void *c) {+	::btConvexTriangleMeshShape *o = (::btConvexTriangleMeshShape*)c;+	int retVal = (int)o->getNumEdges();+	return retVal;+}+//method: getName char const * ( ::btConvexTriangleMeshShape::* )(  ) const+char const * btConvexTriangleMeshShape_getName(void *c) {+	::btConvexTriangleMeshShape *o = (::btConvexTriangleMeshShape*)c;+	char const * retVal = (char const *)o->getName();+	return retVal;+}+//method: getVertex void ( ::btConvexTriangleMeshShape::* )( int,::btVector3 & ) const+void btConvexTriangleMeshShape_getVertex(void *c,int p0,float* p1) {+	::btConvexTriangleMeshShape *o = (::btConvexTriangleMeshShape*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->getVertex(p0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: getEdge void ( ::btConvexTriangleMeshShape::* )( int,::btVector3 &,::btVector3 & ) const+void btConvexTriangleMeshShape_getEdge(void *c,int p0,float* p1,float* p2) {+	::btConvexTriangleMeshShape *o = (::btConvexTriangleMeshShape*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->getEdge(p0,tp1,tp2);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: getLocalScaling ::btVector3 const & ( ::btConvexTriangleMeshShape::* )(  ) const+void btConvexTriangleMeshShape_getLocalScaling(void *c,float* ret) {+	::btConvexTriangleMeshShape *o = (::btConvexTriangleMeshShape*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getLocalScaling();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: isInside bool ( ::btConvexTriangleMeshShape::* )( ::btVector3 const &,::btScalar ) const+int btConvexTriangleMeshShape_isInside(void *c,float* p0,float p1) {+	::btConvexTriangleMeshShape *o = (::btConvexTriangleMeshShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	int retVal = (int)o->isInside(tp0,p1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	return retVal;+}+//method: getPlane void ( ::btConvexTriangleMeshShape::* )( ::btVector3 &,::btVector3 &,int ) const+void btConvexTriangleMeshShape_getPlane(void *c,float* p0,float* p1,int p2) {+	::btConvexTriangleMeshShape *o = (::btConvexTriangleMeshShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->getPlane(tp0,tp1,p2);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: setLocalScaling void ( ::btConvexTriangleMeshShape::* )( ::btVector3 const & ) +void btConvexTriangleMeshShape_setLocalScaling(void *c,float* p0) {+	::btConvexTriangleMeshShape *o = (::btConvexTriangleMeshShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setLocalScaling(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: getMeshInterface ::btStridingMeshInterface * ( ::btConvexTriangleMeshShape::* )(  ) +void* btConvexTriangleMeshShape_getMeshInterface(void *c) {+	::btConvexTriangleMeshShape *o = (::btConvexTriangleMeshShape*)c;+	void* retVal = (void*) o->getMeshInterface();+	return retVal;+}+//method: getMeshInterface ::btStridingMeshInterface * ( ::btConvexTriangleMeshShape::* )(  ) +void* btConvexTriangleMeshShape_getMeshInterface0(void *c) {+	::btConvexTriangleMeshShape *o = (::btConvexTriangleMeshShape*)c;+	void* retVal = (void*) o->getMeshInterface();+	return retVal;+}+//method: getMeshInterface ::btStridingMeshInterface const * ( ::btConvexTriangleMeshShape::* )(  ) const+void* btConvexTriangleMeshShape_getMeshInterface1(void *c) {+	::btConvexTriangleMeshShape *o = (::btConvexTriangleMeshShape*)c;+	void* retVal = (void*) o->getMeshInterface();+	return retVal;+}+//method: getNumVertices int ( ::btConvexTriangleMeshShape::* )(  ) const+int btConvexTriangleMeshShape_getNumVertices(void *c) {+	::btConvexTriangleMeshShape *o = (::btConvexTriangleMeshShape*)c;+	int retVal = (int)o->getNumVertices();+	return retVal;+}+//not supported method: calculatePrincipalAxisTransform void ( ::btConvexTriangleMeshShape::* )( ::btTransform &,::btVector3 &,::btScalar & ) const+//method: localGetSupportingVertexWithoutMargin ::btVector3 ( ::btConvexTriangleMeshShape::* )( ::btVector3 const & ) const+void btConvexTriangleMeshShape_localGetSupportingVertexWithoutMargin(void *c,float* p0,float* ret) {+	::btConvexTriangleMeshShape *o = (::btConvexTriangleMeshShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->localGetSupportingVertexWithoutMargin(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}++// ::btCylinderShape+//constructor: btCylinderShape  ( ::btCylinderShape::* )( ::btVector3 const & ) +void* btCylinderShape_new(float* p0) {+	::btCylinderShape *o = 0;+	 void *mem = 0;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	mem = btAlignedAlloc(sizeof(::btCylinderShape),16);+	o = new (mem)::btCylinderShape(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	return (void*)o;+}+void btCylinderShape_free(void *c) {+	::btCylinderShape *o = (::btCylinderShape*)c;+	delete o;+}+//method: calculateLocalInertia void ( ::btCylinderShape::* )( ::btScalar,::btVector3 & ) const+void btCylinderShape_calculateLocalInertia(void *c,float p0,float* p1) {+	::btCylinderShape *o = (::btCylinderShape*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->calculateLocalInertia(p0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: localGetSupportingVertex ::btVector3 ( ::btCylinderShape::* )( ::btVector3 const & ) const+void btCylinderShape_localGetSupportingVertex(void *c,float* p0,float* ret) {+	::btCylinderShape *o = (::btCylinderShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->localGetSupportingVertex(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: calculateSerializeBufferSize int ( ::btCylinderShape::* )(  ) const+int btCylinderShape_calculateSerializeBufferSize(void *c) {+	::btCylinderShape *o = (::btCylinderShape*)c;+	int retVal = (int)o->calculateSerializeBufferSize();+	return retVal;+}+//not supported method: batchedUnitVectorGetSupportingVertexWithoutMargin void ( ::btCylinderShape::* )( ::btVector3 const *,::btVector3 *,int ) const+//method: setLocalScaling void ( ::btCylinderShape::* )( ::btVector3 const & ) +void btCylinderShape_setLocalScaling(void *c,float* p0) {+	::btCylinderShape *o = (::btCylinderShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setLocalScaling(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: getUpAxis int ( ::btCylinderShape::* )(  ) const+int btCylinderShape_getUpAxis(void *c) {+	::btCylinderShape *o = (::btCylinderShape*)c;+	int retVal = (int)o->getUpAxis();+	return retVal;+}+//method: getName char const * ( ::btCylinderShape::* )(  ) const+char const * btCylinderShape_getName(void *c) {+	::btCylinderShape *o = (::btCylinderShape*)c;+	char const * retVal = (char const *)o->getName();+	return retVal;+}+//not supported method: serialize char const * ( ::btCylinderShape::* )( void *,::btSerializer * ) const+//method: getHalfExtentsWithoutMargin ::btVector3 const & ( ::btCylinderShape::* )(  ) const+void btCylinderShape_getHalfExtentsWithoutMargin(void *c,float* ret) {+	::btCylinderShape *o = (::btCylinderShape*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getHalfExtentsWithoutMargin();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getAabb void ( ::btCylinderShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btCylinderShape_getAabb(void *c,float* p0,float* p1,float* p2) {+	::btCylinderShape *o = (::btCylinderShape*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->getAabb(tp0,tp1,tp2);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: setMargin void ( ::btCylinderShape::* )( ::btScalar ) +void btCylinderShape_setMargin(void *c,float p0) {+	::btCylinderShape *o = (::btCylinderShape*)c;+	o->setMargin(p0);+}+//method: getHalfExtentsWithMargin ::btVector3 ( ::btCylinderShape::* )(  ) const+void btCylinderShape_getHalfExtentsWithMargin(void *c,float* ret) {+	::btCylinderShape *o = (::btCylinderShape*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getHalfExtentsWithMargin();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: localGetSupportingVertexWithoutMargin ::btVector3 ( ::btCylinderShape::* )( ::btVector3 const & ) const+void btCylinderShape_localGetSupportingVertexWithoutMargin(void *c,float* p0,float* ret) {+	::btCylinderShape *o = (::btCylinderShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->localGetSupportingVertexWithoutMargin(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getRadius ::btScalar ( ::btCylinderShape::* )(  ) const+float btCylinderShape_getRadius(void *c) {+	::btCylinderShape *o = (::btCylinderShape*)c;+	float retVal = (float)o->getRadius();+	return retVal;+}++// ::btCylinderShapeData+//constructor: btCylinderShapeData  ( ::btCylinderShapeData::* )(  ) +void* btCylinderShapeData_new() {+	::btCylinderShapeData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btCylinderShapeData),16);+	o = new (mem)::btCylinderShapeData();+	return (void*)o;+}+void btCylinderShapeData_free(void *c) {+	::btCylinderShapeData *o = (::btCylinderShapeData*)c;+	delete o;+}+//attribute: ::btConvexInternalShapeData btCylinderShapeData->m_convexInternalShapeData+// attribute not supported: //attribute: ::btConvexInternalShapeData btCylinderShapeData->m_convexInternalShapeData+//attribute: int btCylinderShapeData->m_upAxis+void btCylinderShapeData_m_upAxis_set(void *c,int a) {+	::btCylinderShapeData *o = (::btCylinderShapeData*)c;+	o->m_upAxis = a;+}+int btCylinderShapeData_m_upAxis_get(void *c) {+	::btCylinderShapeData *o = (::btCylinderShapeData*)c;+	return (int)(o->m_upAxis);+}++//attribute: char[4] btCylinderShapeData->m_padding+// attribute not supported: //attribute: char[4] btCylinderShapeData->m_padding++// ::btCylinderShapeX+//constructor: btCylinderShapeX  ( ::btCylinderShapeX::* )( ::btVector3 const & ) +void* btCylinderShapeX_new(float* p0) {+	::btCylinderShapeX *o = 0;+	 void *mem = 0;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	mem = btAlignedAlloc(sizeof(::btCylinderShapeX),16);+	o = new (mem)::btCylinderShapeX(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	return (void*)o;+}+void btCylinderShapeX_free(void *c) {+	::btCylinderShapeX *o = (::btCylinderShapeX*)c;+	delete o;+}+//method: getName char const * ( ::btCylinderShapeX::* )(  ) const+char const * btCylinderShapeX_getName(void *c) {+	::btCylinderShapeX *o = (::btCylinderShapeX*)c;+	char const * retVal = (char const *)o->getName();+	return retVal;+}+//not supported method: batchedUnitVectorGetSupportingVertexWithoutMargin void ( ::btCylinderShapeX::* )( ::btVector3 const *,::btVector3 *,int ) const+//method: localGetSupportingVertexWithoutMargin ::btVector3 ( ::btCylinderShapeX::* )( ::btVector3 const & ) const+void btCylinderShapeX_localGetSupportingVertexWithoutMargin(void *c,float* p0,float* ret) {+	::btCylinderShapeX *o = (::btCylinderShapeX*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->localGetSupportingVertexWithoutMargin(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getRadius ::btScalar ( ::btCylinderShapeX::* )(  ) const+float btCylinderShapeX_getRadius(void *c) {+	::btCylinderShapeX *o = (::btCylinderShapeX*)c;+	float retVal = (float)o->getRadius();+	return retVal;+}++// ::btCylinderShapeZ+//constructor: btCylinderShapeZ  ( ::btCylinderShapeZ::* )( ::btVector3 const & ) +void* btCylinderShapeZ_new(float* p0) {+	::btCylinderShapeZ *o = 0;+	 void *mem = 0;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	mem = btAlignedAlloc(sizeof(::btCylinderShapeZ),16);+	o = new (mem)::btCylinderShapeZ(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	return (void*)o;+}+void btCylinderShapeZ_free(void *c) {+	::btCylinderShapeZ *o = (::btCylinderShapeZ*)c;+	delete o;+}+//method: getName char const * ( ::btCylinderShapeZ::* )(  ) const+char const * btCylinderShapeZ_getName(void *c) {+	::btCylinderShapeZ *o = (::btCylinderShapeZ*)c;+	char const * retVal = (char const *)o->getName();+	return retVal;+}+//not supported method: batchedUnitVectorGetSupportingVertexWithoutMargin void ( ::btCylinderShapeZ::* )( ::btVector3 const *,::btVector3 *,int ) const+//method: localGetSupportingVertexWithoutMargin ::btVector3 ( ::btCylinderShapeZ::* )( ::btVector3 const & ) const+void btCylinderShapeZ_localGetSupportingVertexWithoutMargin(void *c,float* p0,float* ret) {+	::btCylinderShapeZ *o = (::btCylinderShapeZ*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->localGetSupportingVertexWithoutMargin(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getRadius ::btScalar ( ::btCylinderShapeZ::* )(  ) const+float btCylinderShapeZ_getRadius(void *c) {+	::btCylinderShapeZ *o = (::btCylinderShapeZ*)c;+	float retVal = (float)o->getRadius();+	return retVal;+}++// ::btEmptyShape+//constructor: btEmptyShape  ( ::btEmptyShape::* )(  ) +void* btEmptyShape_new() {+	::btEmptyShape *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btEmptyShape),16);+	o = new (mem)::btEmptyShape();+	return (void*)o;+}+void btEmptyShape_free(void *c) {+	::btEmptyShape *o = (::btEmptyShape*)c;+	delete o;+}+//method: calculateLocalInertia void ( ::btEmptyShape::* )( ::btScalar,::btVector3 & ) const+void btEmptyShape_calculateLocalInertia(void *c,float p0,float* p1) {+	::btEmptyShape *o = (::btEmptyShape*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->calculateLocalInertia(p0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: getName char const * ( ::btEmptyShape::* )(  ) const+char const * btEmptyShape_getName(void *c) {+	::btEmptyShape *o = (::btEmptyShape*)c;+	char const * retVal = (char const *)o->getName();+	return retVal;+}+//method: getLocalScaling ::btVector3 const & ( ::btEmptyShape::* )(  ) const+void btEmptyShape_getLocalScaling(void *c,float* ret) {+	::btEmptyShape *o = (::btEmptyShape*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getLocalScaling();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: setLocalScaling void ( ::btEmptyShape::* )( ::btVector3 const & ) +void btEmptyShape_setLocalScaling(void *c,float* p0) {+	::btEmptyShape *o = (::btEmptyShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setLocalScaling(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: getAabb void ( ::btEmptyShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btEmptyShape_getAabb(void *c,float* p0,float* p1,float* p2) {+	::btEmptyShape *o = (::btEmptyShape*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->getAabb(tp0,tp1,tp2);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: processAllTriangles void ( ::btEmptyShape::* )( ::btTriangleCallback *,::btVector3 const &,::btVector3 const & ) const+void btEmptyShape_processAllTriangles(void *c,void* p0,float* p1,float* p2) {+	::btEmptyShape *o = (::btEmptyShape*)c;+	::btTriangleCallback * tp0 = (::btTriangleCallback *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->processAllTriangles(tp0,tp1,tp2);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}++// ::btIndexedMesh+//constructor: btIndexedMesh  ( ::btIndexedMesh::* )(  ) +void* btIndexedMesh_new() {+	::btIndexedMesh *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btIndexedMesh),16);+	o = new (mem)::btIndexedMesh();+	return (void*)o;+}+void btIndexedMesh_free(void *c) {+	::btIndexedMesh *o = (::btIndexedMesh*)c;+	delete o;+}+//attribute: int btIndexedMesh->m_numTriangles+void btIndexedMesh_m_numTriangles_set(void *c,int a) {+	::btIndexedMesh *o = (::btIndexedMesh*)c;+	o->m_numTriangles = a;+}+int btIndexedMesh_m_numTriangles_get(void *c) {+	::btIndexedMesh *o = (::btIndexedMesh*)c;+	return (int)(o->m_numTriangles);+}++//attribute: unsigned char const * btIndexedMesh->m_triangleIndexBase+// attribute not supported: //attribute: unsigned char const * btIndexedMesh->m_triangleIndexBase+//attribute: int btIndexedMesh->m_triangleIndexStride+void btIndexedMesh_m_triangleIndexStride_set(void *c,int a) {+	::btIndexedMesh *o = (::btIndexedMesh*)c;+	o->m_triangleIndexStride = a;+}+int btIndexedMesh_m_triangleIndexStride_get(void *c) {+	::btIndexedMesh *o = (::btIndexedMesh*)c;+	return (int)(o->m_triangleIndexStride);+}++//attribute: int btIndexedMesh->m_numVertices+void btIndexedMesh_m_numVertices_set(void *c,int a) {+	::btIndexedMesh *o = (::btIndexedMesh*)c;+	o->m_numVertices = a;+}+int btIndexedMesh_m_numVertices_get(void *c) {+	::btIndexedMesh *o = (::btIndexedMesh*)c;+	return (int)(o->m_numVertices);+}++//attribute: unsigned char const * btIndexedMesh->m_vertexBase+// attribute not supported: //attribute: unsigned char const * btIndexedMesh->m_vertexBase+//attribute: int btIndexedMesh->m_vertexStride+void btIndexedMesh_m_vertexStride_set(void *c,int a) {+	::btIndexedMesh *o = (::btIndexedMesh*)c;+	o->m_vertexStride = a;+}+int btIndexedMesh_m_vertexStride_get(void *c) {+	::btIndexedMesh *o = (::btIndexedMesh*)c;+	return (int)(o->m_vertexStride);+}++//attribute: ::PHY_ScalarType btIndexedMesh->m_indexType+// attribute not supported: //attribute: ::PHY_ScalarType btIndexedMesh->m_indexType+//attribute: ::PHY_ScalarType btIndexedMesh->m_vertexType+// attribute not supported: //attribute: ::PHY_ScalarType btIndexedMesh->m_vertexType++// ::btIntIndexData+//constructor: btIntIndexData  ( ::btIntIndexData::* )(  ) +void* btIntIndexData_new() {+	::btIntIndexData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btIntIndexData),16);+	o = new (mem)::btIntIndexData();+	return (void*)o;+}+void btIntIndexData_free(void *c) {+	::btIntIndexData *o = (::btIntIndexData*)c;+	delete o;+}+//attribute: int btIntIndexData->m_value+void btIntIndexData_m_value_set(void *c,int a) {+	::btIntIndexData *o = (::btIntIndexData*)c;+	o->m_value = a;+}+int btIntIndexData_m_value_get(void *c) {+	::btIntIndexData *o = (::btIntIndexData*)c;+	return (int)(o->m_value);+}+++// ::btInternalTriangleIndexCallback+//not supported method: internalProcessTriangleIndex void ( ::btInternalTriangleIndexCallback::* )( ::btVector3 *,int,int ) ++// ::btMeshPartData+//constructor: btMeshPartData  ( ::btMeshPartData::* )(  ) +void* btMeshPartData_new() {+	::btMeshPartData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btMeshPartData),16);+	o = new (mem)::btMeshPartData();+	return (void*)o;+}+void btMeshPartData_free(void *c) {+	::btMeshPartData *o = (::btMeshPartData*)c;+	delete o;+}+//attribute: ::btVector3FloatData * btMeshPartData->m_vertices3f+void btMeshPartData_m_vertices3f_set(void *c,void* a) {+	::btMeshPartData *o = (::btMeshPartData*)c;+	::btVector3FloatData * ta = (::btVector3FloatData *)a;+	o->m_vertices3f = ta;+}+// attriibute getter not supported: //attribute: ::btVector3FloatData * btMeshPartData->m_vertices3f+//attribute: ::btVector3DoubleData * btMeshPartData->m_vertices3d+void btMeshPartData_m_vertices3d_set(void *c,void* a) {+	::btMeshPartData *o = (::btMeshPartData*)c;+	::btVector3DoubleData * ta = (::btVector3DoubleData *)a;+	o->m_vertices3d = ta;+}+// attriibute getter not supported: //attribute: ::btVector3DoubleData * btMeshPartData->m_vertices3d+//attribute: ::btIntIndexData * btMeshPartData->m_indices32+void btMeshPartData_m_indices32_set(void *c,void* a) {+	::btMeshPartData *o = (::btMeshPartData*)c;+	::btIntIndexData * ta = (::btIntIndexData *)a;+	o->m_indices32 = ta;+}+// attriibute getter not supported: //attribute: ::btIntIndexData * btMeshPartData->m_indices32+//attribute: ::btShortIntIndexTripletData * btMeshPartData->m_3indices16+void btMeshPartData_m_3indices16_set(void *c,void* a) {+	::btMeshPartData *o = (::btMeshPartData*)c;+	::btShortIntIndexTripletData * ta = (::btShortIntIndexTripletData *)a;+	o->m_3indices16 = ta;+}+// attriibute getter not supported: //attribute: ::btShortIntIndexTripletData * btMeshPartData->m_3indices16+//attribute: ::btCharIndexTripletData * btMeshPartData->m_3indices8+void btMeshPartData_m_3indices8_set(void *c,void* a) {+	::btMeshPartData *o = (::btMeshPartData*)c;+	::btCharIndexTripletData * ta = (::btCharIndexTripletData *)a;+	o->m_3indices8 = ta;+}+// attriibute getter not supported: //attribute: ::btCharIndexTripletData * btMeshPartData->m_3indices8+//attribute: ::btShortIntIndexData * btMeshPartData->m_indices16+void btMeshPartData_m_indices16_set(void *c,void* a) {+	::btMeshPartData *o = (::btMeshPartData*)c;+	::btShortIntIndexData * ta = (::btShortIntIndexData *)a;+	o->m_indices16 = ta;+}+// attriibute getter not supported: //attribute: ::btShortIntIndexData * btMeshPartData->m_indices16+//attribute: int btMeshPartData->m_numTriangles+void btMeshPartData_m_numTriangles_set(void *c,int a) {+	::btMeshPartData *o = (::btMeshPartData*)c;+	o->m_numTriangles = a;+}+int btMeshPartData_m_numTriangles_get(void *c) {+	::btMeshPartData *o = (::btMeshPartData*)c;+	return (int)(o->m_numTriangles);+}++//attribute: int btMeshPartData->m_numVertices+void btMeshPartData_m_numVertices_set(void *c,int a) {+	::btMeshPartData *o = (::btMeshPartData*)c;+	o->m_numVertices = a;+}+int btMeshPartData_m_numVertices_get(void *c) {+	::btMeshPartData *o = (::btMeshPartData*)c;+	return (int)(o->m_numVertices);+}+++// ::btMultiSphereShape+//not supported constructor: btMultiSphereShape  ( ::btMultiSphereShape::* )( ::btVector3 const *,::btScalar const *,int ) +void btMultiSphereShape_free(void *c) {+	::btMultiSphereShape *o = (::btMultiSphereShape*)c;+	delete o;+}+//method: calculateLocalInertia void ( ::btMultiSphereShape::* )( ::btScalar,::btVector3 & ) const+void btMultiSphereShape_calculateLocalInertia(void *c,float p0,float* p1) {+	::btMultiSphereShape *o = (::btMultiSphereShape*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->calculateLocalInertia(p0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: calculateSerializeBufferSize int ( ::btMultiSphereShape::* )(  ) const+int btMultiSphereShape_calculateSerializeBufferSize(void *c) {+	::btMultiSphereShape *o = (::btMultiSphereShape*)c;+	int retVal = (int)o->calculateSerializeBufferSize();+	return retVal;+}+//not supported method: batchedUnitVectorGetSupportingVertexWithoutMargin void ( ::btMultiSphereShape::* )( ::btVector3 const *,::btVector3 *,int ) const+//method: getSphereCount int ( ::btMultiSphereShape::* )(  ) const+int btMultiSphereShape_getSphereCount(void *c) {+	::btMultiSphereShape *o = (::btMultiSphereShape*)c;+	int retVal = (int)o->getSphereCount();+	return retVal;+}+//method: getName char const * ( ::btMultiSphereShape::* )(  ) const+char const * btMultiSphereShape_getName(void *c) {+	::btMultiSphereShape *o = (::btMultiSphereShape*)c;+	char const * retVal = (char const *)o->getName();+	return retVal;+}+//not supported method: serialize char const * ( ::btMultiSphereShape::* )( void *,::btSerializer * ) const+//method: getSpherePosition ::btVector3 const & ( ::btMultiSphereShape::* )( int ) const+void btMultiSphereShape_getSpherePosition(void *c,int p0,float* ret) {+	::btMultiSphereShape *o = (::btMultiSphereShape*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getSpherePosition(p0);+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getSphereRadius ::btScalar ( ::btMultiSphereShape::* )( int ) const+float btMultiSphereShape_getSphereRadius(void *c,int p0) {+	::btMultiSphereShape *o = (::btMultiSphereShape*)c;+	float retVal = (float)o->getSphereRadius(p0);+	return retVal;+}+//method: localGetSupportingVertexWithoutMargin ::btVector3 ( ::btMultiSphereShape::* )( ::btVector3 const & ) const+void btMultiSphereShape_localGetSupportingVertexWithoutMargin(void *c,float* p0,float* ret) {+	::btMultiSphereShape *o = (::btMultiSphereShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->localGetSupportingVertexWithoutMargin(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}++// ::btMultiSphereShapeData+//constructor: btMultiSphereShapeData  ( ::btMultiSphereShapeData::* )(  ) +void* btMultiSphereShapeData_new() {+	::btMultiSphereShapeData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btMultiSphereShapeData),16);+	o = new (mem)::btMultiSphereShapeData();+	return (void*)o;+}+void btMultiSphereShapeData_free(void *c) {+	::btMultiSphereShapeData *o = (::btMultiSphereShapeData*)c;+	delete o;+}+//attribute: ::btConvexInternalShapeData btMultiSphereShapeData->m_convexInternalShapeData+// attribute not supported: //attribute: ::btConvexInternalShapeData btMultiSphereShapeData->m_convexInternalShapeData+//attribute: ::btPositionAndRadius * btMultiSphereShapeData->m_localPositionArrayPtr+void btMultiSphereShapeData_m_localPositionArrayPtr_set(void *c,void* a) {+	::btMultiSphereShapeData *o = (::btMultiSphereShapeData*)c;+	::btPositionAndRadius * ta = (::btPositionAndRadius *)a;+	o->m_localPositionArrayPtr = ta;+}+// attriibute getter not supported: //attribute: ::btPositionAndRadius * btMultiSphereShapeData->m_localPositionArrayPtr+//attribute: int btMultiSphereShapeData->m_localPositionArraySize+void btMultiSphereShapeData_m_localPositionArraySize_set(void *c,int a) {+	::btMultiSphereShapeData *o = (::btMultiSphereShapeData*)c;+	o->m_localPositionArraySize = a;+}+int btMultiSphereShapeData_m_localPositionArraySize_get(void *c) {+	::btMultiSphereShapeData *o = (::btMultiSphereShapeData*)c;+	return (int)(o->m_localPositionArraySize);+}++//attribute: char[4] btMultiSphereShapeData->m_padding+// attribute not supported: //attribute: char[4] btMultiSphereShapeData->m_padding++// ::btOptimizedBvh+//constructor: btOptimizedBvh  ( ::btOptimizedBvh::* )(  ) +void* btOptimizedBvh_new() {+	::btOptimizedBvh *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btOptimizedBvh),16);+	o = new (mem)::btOptimizedBvh();+	return (void*)o;+}+void btOptimizedBvh_free(void *c) {+	::btOptimizedBvh *o = (::btOptimizedBvh*)c;+	delete o;+}+//method: updateBvhNodes void ( ::btOptimizedBvh::* )( ::btStridingMeshInterface *,int,int,int ) +void btOptimizedBvh_updateBvhNodes(void *c,void* p0,int p1,int p2,int p3) {+	::btOptimizedBvh *o = (::btOptimizedBvh*)c;+	::btStridingMeshInterface * tp0 = (::btStridingMeshInterface *)p0;+	o->updateBvhNodes(tp0,p1,p2,p3);+}+//not supported method: serializeInPlace bool ( ::btOptimizedBvh::* )( void *,unsigned int,bool ) const+//method: refit void ( ::btOptimizedBvh::* )( ::btStridingMeshInterface *,::btVector3 const &,::btVector3 const & ) +void btOptimizedBvh_refit(void *c,void* p0,float* p1,float* p2) {+	::btOptimizedBvh *o = (::btOptimizedBvh*)c;+	::btStridingMeshInterface * tp0 = (::btStridingMeshInterface *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->refit(tp0,tp1,tp2);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: build void ( ::btOptimizedBvh::* )( ::btStridingMeshInterface *,bool,::btVector3 const &,::btVector3 const & ) +void btOptimizedBvh_build(void *c,void* p0,int p1,float* p2,float* p3) {+	::btOptimizedBvh *o = (::btOptimizedBvh*)c;+	::btStridingMeshInterface * tp0 = (::btStridingMeshInterface *)p0;+	btVector3 tp2(p2[0],p2[1],p2[2]);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	o->build(tp0,p1,tp2,tp3);+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+}+//method: refitPartial void ( ::btOptimizedBvh::* )( ::btStridingMeshInterface *,::btVector3 const &,::btVector3 const & ) +void btOptimizedBvh_refitPartial(void *c,void* p0,float* p1,float* p2) {+	::btOptimizedBvh *o = (::btOptimizedBvh*)c;+	::btStridingMeshInterface * tp0 = (::btStridingMeshInterface *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->refitPartial(tp0,tp1,tp2);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//not supported method: deSerializeInPlace ::btOptimizedBvh * (*)( void *,unsigned int,bool )++// ::btPolyhedralConvexAabbCachingShape+//method: recalcLocalAabb void ( ::btPolyhedralConvexAabbCachingShape::* )(  ) +void btPolyhedralConvexAabbCachingShape_recalcLocalAabb(void *c) {+	::btPolyhedralConvexAabbCachingShape *o = (::btPolyhedralConvexAabbCachingShape*)c;+	o->recalcLocalAabb();+}+//method: setLocalScaling void ( ::btPolyhedralConvexAabbCachingShape::* )( ::btVector3 const & ) +void btPolyhedralConvexAabbCachingShape_setLocalScaling(void *c,float* p0) {+	::btPolyhedralConvexAabbCachingShape *o = (::btPolyhedralConvexAabbCachingShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setLocalScaling(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: getNonvirtualAabb void ( ::btPolyhedralConvexAabbCachingShape::* )( ::btTransform const &,::btVector3 &,::btVector3 &,::btScalar ) const+void btPolyhedralConvexAabbCachingShape_getNonvirtualAabb(void *c,float* p0,float* p1,float* p2,float p3) {+	::btPolyhedralConvexAabbCachingShape *o = (::btPolyhedralConvexAabbCachingShape*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->getNonvirtualAabb(tp0,tp1,tp2,p3);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: getAabb void ( ::btPolyhedralConvexAabbCachingShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btPolyhedralConvexAabbCachingShape_getAabb(void *c,float* p0,float* p1,float* p2) {+	::btPolyhedralConvexAabbCachingShape *o = (::btPolyhedralConvexAabbCachingShape*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->getAabb(tp0,tp1,tp2);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}++// ::btPolyhedralConvexShape+//method: calculateLocalInertia void ( ::btPolyhedralConvexShape::* )( ::btScalar,::btVector3 & ) const+void btPolyhedralConvexShape_calculateLocalInertia(void *c,float p0,float* p1) {+	::btPolyhedralConvexShape *o = (::btPolyhedralConvexShape*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->calculateLocalInertia(p0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: getNumPlanes int ( ::btPolyhedralConvexShape::* )(  ) const+int btPolyhedralConvexShape_getNumPlanes(void *c) {+	::btPolyhedralConvexShape *o = (::btPolyhedralConvexShape*)c;+	int retVal = (int)o->getNumPlanes();+	return retVal;+}+//not supported method: batchedUnitVectorGetSupportingVertexWithoutMargin void ( ::btPolyhedralConvexShape::* )( ::btVector3 const *,::btVector3 *,int ) const+//method: getNumEdges int ( ::btPolyhedralConvexShape::* )(  ) const+int btPolyhedralConvexShape_getNumEdges(void *c) {+	::btPolyhedralConvexShape *o = (::btPolyhedralConvexShape*)c;+	int retVal = (int)o->getNumEdges();+	return retVal;+}+//method: getVertex void ( ::btPolyhedralConvexShape::* )( int,::btVector3 & ) const+void btPolyhedralConvexShape_getVertex(void *c,int p0,float* p1) {+	::btPolyhedralConvexShape *o = (::btPolyhedralConvexShape*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->getVertex(p0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: getEdge void ( ::btPolyhedralConvexShape::* )( int,::btVector3 &,::btVector3 & ) const+void btPolyhedralConvexShape_getEdge(void *c,int p0,float* p1,float* p2) {+	::btPolyhedralConvexShape *o = (::btPolyhedralConvexShape*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->getEdge(p0,tp1,tp2);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: isInside bool ( ::btPolyhedralConvexShape::* )( ::btVector3 const &,::btScalar ) const+int btPolyhedralConvexShape_isInside(void *c,float* p0,float p1) {+	::btPolyhedralConvexShape *o = (::btPolyhedralConvexShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	int retVal = (int)o->isInside(tp0,p1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	return retVal;+}+//method: getPlane void ( ::btPolyhedralConvexShape::* )( ::btVector3 &,::btVector3 &,int ) const+void btPolyhedralConvexShape_getPlane(void *c,float* p0,float* p1,int p2) {+	::btPolyhedralConvexShape *o = (::btPolyhedralConvexShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->getPlane(tp0,tp1,p2);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//not supported method: getConvexPolyhedron ::btConvexPolyhedron const * ( ::btPolyhedralConvexShape::* )(  ) const+//method: initializePolyhedralFeatures bool ( ::btPolyhedralConvexShape::* )(  ) +int btPolyhedralConvexShape_initializePolyhedralFeatures(void *c) {+	::btPolyhedralConvexShape *o = (::btPolyhedralConvexShape*)c;+	int retVal = (int)o->initializePolyhedralFeatures();+	return retVal;+}+//method: getNumVertices int ( ::btPolyhedralConvexShape::* )(  ) const+int btPolyhedralConvexShape_getNumVertices(void *c) {+	::btPolyhedralConvexShape *o = (::btPolyhedralConvexShape*)c;+	int retVal = (int)o->getNumVertices();+	return retVal;+}+//method: localGetSupportingVertexWithoutMargin ::btVector3 ( ::btPolyhedralConvexShape::* )( ::btVector3 const & ) const+void btPolyhedralConvexShape_localGetSupportingVertexWithoutMargin(void *c,float* p0,float* ret) {+	::btPolyhedralConvexShape *o = (::btPolyhedralConvexShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->localGetSupportingVertexWithoutMargin(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}++// ::btPositionAndRadius+//constructor: btPositionAndRadius  ( ::btPositionAndRadius::* )(  ) +void* btPositionAndRadius_new() {+	::btPositionAndRadius *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btPositionAndRadius),16);+	o = new (mem)::btPositionAndRadius();+	return (void*)o;+}+void btPositionAndRadius_free(void *c) {+	::btPositionAndRadius *o = (::btPositionAndRadius*)c;+	delete o;+}+//attribute: ::btVector3FloatData btPositionAndRadius->m_pos+// attribute not supported: //attribute: ::btVector3FloatData btPositionAndRadius->m_pos+//attribute: float btPositionAndRadius->m_radius+void btPositionAndRadius_m_radius_set(void *c,float a) {+	::btPositionAndRadius *o = (::btPositionAndRadius*)c;+	o->m_radius = a;+}+float btPositionAndRadius_m_radius_get(void *c) {+	::btPositionAndRadius *o = (::btPositionAndRadius*)c;+	return (float)(o->m_radius);+}+++// ::btScaledBvhTriangleMeshShape+//constructor: btScaledBvhTriangleMeshShape  ( ::btScaledBvhTriangleMeshShape::* )( ::btBvhTriangleMeshShape *,::btVector3 const & ) +void* btScaledBvhTriangleMeshShape_new(void* p0,float* p1) {+	::btScaledBvhTriangleMeshShape *o = 0;+	 void *mem = 0;+	::btBvhTriangleMeshShape * tp0 = (::btBvhTriangleMeshShape *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	mem = btAlignedAlloc(sizeof(::btScaledBvhTriangleMeshShape),16);+	o = new (mem)::btScaledBvhTriangleMeshShape(tp0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	return (void*)o;+}+void btScaledBvhTriangleMeshShape_free(void *c) {+	::btScaledBvhTriangleMeshShape *o = (::btScaledBvhTriangleMeshShape*)c;+	delete o;+}+//method: calculateLocalInertia void ( ::btScaledBvhTriangleMeshShape::* )( ::btScalar,::btVector3 & ) const+void btScaledBvhTriangleMeshShape_calculateLocalInertia(void *c,float p0,float* p1) {+	::btScaledBvhTriangleMeshShape *o = (::btScaledBvhTriangleMeshShape*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->calculateLocalInertia(p0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: getChildShape ::btBvhTriangleMeshShape * ( ::btScaledBvhTriangleMeshShape::* )(  ) +void* btScaledBvhTriangleMeshShape_getChildShape(void *c) {+	::btScaledBvhTriangleMeshShape *o = (::btScaledBvhTriangleMeshShape*)c;+	void* retVal = (void*) o->getChildShape();+	return retVal;+}+//method: getChildShape ::btBvhTriangleMeshShape * ( ::btScaledBvhTriangleMeshShape::* )(  ) +void* btScaledBvhTriangleMeshShape_getChildShape0(void *c) {+	::btScaledBvhTriangleMeshShape *o = (::btScaledBvhTriangleMeshShape*)c;+	void* retVal = (void*) o->getChildShape();+	return retVal;+}+//method: getChildShape ::btBvhTriangleMeshShape const * ( ::btScaledBvhTriangleMeshShape::* )(  ) const+void* btScaledBvhTriangleMeshShape_getChildShape1(void *c) {+	::btScaledBvhTriangleMeshShape *o = (::btScaledBvhTriangleMeshShape*)c;+	void* retVal = (void*) o->getChildShape();+	return retVal;+}+//method: calculateSerializeBufferSize int ( ::btScaledBvhTriangleMeshShape::* )(  ) const+int btScaledBvhTriangleMeshShape_calculateSerializeBufferSize(void *c) {+	::btScaledBvhTriangleMeshShape *o = (::btScaledBvhTriangleMeshShape*)c;+	int retVal = (int)o->calculateSerializeBufferSize();+	return retVal;+}+//method: getName char const * ( ::btScaledBvhTriangleMeshShape::* )(  ) const+char const * btScaledBvhTriangleMeshShape_getName(void *c) {+	::btScaledBvhTriangleMeshShape *o = (::btScaledBvhTriangleMeshShape*)c;+	char const * retVal = (char const *)o->getName();+	return retVal;+}+//not supported method: serialize char const * ( ::btScaledBvhTriangleMeshShape::* )( void *,::btSerializer * ) const+//method: getLocalScaling ::btVector3 const & ( ::btScaledBvhTriangleMeshShape::* )(  ) const+void btScaledBvhTriangleMeshShape_getLocalScaling(void *c,float* ret) {+	::btScaledBvhTriangleMeshShape *o = (::btScaledBvhTriangleMeshShape*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getLocalScaling();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: setLocalScaling void ( ::btScaledBvhTriangleMeshShape::* )( ::btVector3 const & ) +void btScaledBvhTriangleMeshShape_setLocalScaling(void *c,float* p0) {+	::btScaledBvhTriangleMeshShape *o = (::btScaledBvhTriangleMeshShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setLocalScaling(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: getAabb void ( ::btScaledBvhTriangleMeshShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btScaledBvhTriangleMeshShape_getAabb(void *c,float* p0,float* p1,float* p2) {+	::btScaledBvhTriangleMeshShape *o = (::btScaledBvhTriangleMeshShape*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->getAabb(tp0,tp1,tp2);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: processAllTriangles void ( ::btScaledBvhTriangleMeshShape::* )( ::btTriangleCallback *,::btVector3 const &,::btVector3 const & ) const+void btScaledBvhTriangleMeshShape_processAllTriangles(void *c,void* p0,float* p1,float* p2) {+	::btScaledBvhTriangleMeshShape *o = (::btScaledBvhTriangleMeshShape*)c;+	::btTriangleCallback * tp0 = (::btTriangleCallback *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->processAllTriangles(tp0,tp1,tp2);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}++// ::btScaledTriangleMeshShapeData+//constructor: btScaledTriangleMeshShapeData  ( ::btScaledTriangleMeshShapeData::* )(  ) +void* btScaledTriangleMeshShapeData_new() {+	::btScaledTriangleMeshShapeData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btScaledTriangleMeshShapeData),16);+	o = new (mem)::btScaledTriangleMeshShapeData();+	return (void*)o;+}+void btScaledTriangleMeshShapeData_free(void *c) {+	::btScaledTriangleMeshShapeData *o = (::btScaledTriangleMeshShapeData*)c;+	delete o;+}+//attribute: ::btTriangleMeshShapeData btScaledTriangleMeshShapeData->m_trimeshShapeData+// attribute not supported: //attribute: ::btTriangleMeshShapeData btScaledTriangleMeshShapeData->m_trimeshShapeData+//attribute: ::btVector3FloatData btScaledTriangleMeshShapeData->m_localScaling+// attribute not supported: //attribute: ::btVector3FloatData btScaledTriangleMeshShapeData->m_localScaling++// ::btShortIntIndexData+//constructor: btShortIntIndexData  ( ::btShortIntIndexData::* )(  ) +void* btShortIntIndexData_new() {+	::btShortIntIndexData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btShortIntIndexData),16);+	o = new (mem)::btShortIntIndexData();+	return (void*)o;+}+void btShortIntIndexData_free(void *c) {+	::btShortIntIndexData *o = (::btShortIntIndexData*)c;+	delete o;+}+//attribute: char[2] btShortIntIndexData->m_pad+// attribute not supported: //attribute: char[2] btShortIntIndexData->m_pad+//attribute: short int btShortIntIndexData->m_value+void btShortIntIndexData_m_value_set(void *c,short int a) {+	::btShortIntIndexData *o = (::btShortIntIndexData*)c;+	o->m_value = a;+}+short int btShortIntIndexData_m_value_get(void *c) {+	::btShortIntIndexData *o = (::btShortIntIndexData*)c;+	return (short int)(o->m_value);+}+++// ::btShortIntIndexTripletData+//constructor: btShortIntIndexTripletData  ( ::btShortIntIndexTripletData::* )(  ) +void* btShortIntIndexTripletData_new() {+	::btShortIntIndexTripletData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btShortIntIndexTripletData),16);+	o = new (mem)::btShortIntIndexTripletData();+	return (void*)o;+}+void btShortIntIndexTripletData_free(void *c) {+	::btShortIntIndexTripletData *o = (::btShortIntIndexTripletData*)c;+	delete o;+}+//attribute: char[2] btShortIntIndexTripletData->m_pad+// attribute not supported: //attribute: char[2] btShortIntIndexTripletData->m_pad+//attribute: short int[3] btShortIntIndexTripletData->m_values+// attribute not supported: //attribute: short int[3] btShortIntIndexTripletData->m_values++// ::btSphereShape+//constructor: btSphereShape  ( ::btSphereShape::* )( ::btScalar ) +void* btSphereShape_new(float p0) {+	::btSphereShape *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSphereShape),16);+	o = new (mem)::btSphereShape(p0);+	return (void*)o;+}+void btSphereShape_free(void *c) {+	::btSphereShape *o = (::btSphereShape*)c;+	delete o;+}+//method: calculateLocalInertia void ( ::btSphereShape::* )( ::btScalar,::btVector3 & ) const+void btSphereShape_calculateLocalInertia(void *c,float p0,float* p1) {+	::btSphereShape *o = (::btSphereShape*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->calculateLocalInertia(p0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: localGetSupportingVertex ::btVector3 ( ::btSphereShape::* )( ::btVector3 const & ) const+void btSphereShape_localGetSupportingVertex(void *c,float* p0,float* ret) {+	::btSphereShape *o = (::btSphereShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->localGetSupportingVertex(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//not supported method: batchedUnitVectorGetSupportingVertexWithoutMargin void ( ::btSphereShape::* )( ::btVector3 const *,::btVector3 *,int ) const+//method: getName char const * ( ::btSphereShape::* )(  ) const+char const * btSphereShape_getName(void *c) {+	::btSphereShape *o = (::btSphereShape*)c;+	char const * retVal = (char const *)o->getName();+	return retVal;+}+//method: getMargin ::btScalar ( ::btSphereShape::* )(  ) const+float btSphereShape_getMargin(void *c) {+	::btSphereShape *o = (::btSphereShape*)c;+	float retVal = (float)o->getMargin();+	return retVal;+}+//method: setMargin void ( ::btSphereShape::* )( ::btScalar ) +void btSphereShape_setMargin(void *c,float p0) {+	::btSphereShape *o = (::btSphereShape*)c;+	o->setMargin(p0);+}+//method: getAabb void ( ::btSphereShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btSphereShape_getAabb(void *c,float* p0,float* p1,float* p2) {+	::btSphereShape *o = (::btSphereShape*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->getAabb(tp0,tp1,tp2);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: setUnscaledRadius void ( ::btSphereShape::* )( ::btScalar ) +void btSphereShape_setUnscaledRadius(void *c,float p0) {+	::btSphereShape *o = (::btSphereShape*)c;+	o->setUnscaledRadius(p0);+}+//method: localGetSupportingVertexWithoutMargin ::btVector3 ( ::btSphereShape::* )( ::btVector3 const & ) const+void btSphereShape_localGetSupportingVertexWithoutMargin(void *c,float* p0,float* ret) {+	::btSphereShape *o = (::btSphereShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->localGetSupportingVertexWithoutMargin(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getRadius ::btScalar ( ::btSphereShape::* )(  ) const+float btSphereShape_getRadius(void *c) {+	::btSphereShape *o = (::btSphereShape*)c;+	float retVal = (float)o->getRadius();+	return retVal;+}++// ::btStaticPlaneShape+//constructor: btStaticPlaneShape  ( ::btStaticPlaneShape::* )( ::btVector3 const &,::btScalar ) +void* btStaticPlaneShape_new(float* p0,float p1) {+	::btStaticPlaneShape *o = 0;+	 void *mem = 0;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	mem = btAlignedAlloc(sizeof(::btStaticPlaneShape),16);+	o = new (mem)::btStaticPlaneShape(tp0,p1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	return (void*)o;+}+void btStaticPlaneShape_free(void *c) {+	::btStaticPlaneShape *o = (::btStaticPlaneShape*)c;+	delete o;+}+//method: calculateLocalInertia void ( ::btStaticPlaneShape::* )( ::btScalar,::btVector3 & ) const+void btStaticPlaneShape_calculateLocalInertia(void *c,float p0,float* p1) {+	::btStaticPlaneShape *o = (::btStaticPlaneShape*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->calculateLocalInertia(p0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: calculateSerializeBufferSize int ( ::btStaticPlaneShape::* )(  ) const+int btStaticPlaneShape_calculateSerializeBufferSize(void *c) {+	::btStaticPlaneShape *o = (::btStaticPlaneShape*)c;+	int retVal = (int)o->calculateSerializeBufferSize();+	return retVal;+}+//method: getName char const * ( ::btStaticPlaneShape::* )(  ) const+char const * btStaticPlaneShape_getName(void *c) {+	::btStaticPlaneShape *o = (::btStaticPlaneShape*)c;+	char const * retVal = (char const *)o->getName();+	return retVal;+}+//not supported method: serialize char const * ( ::btStaticPlaneShape::* )( void *,::btSerializer * ) const+//method: getLocalScaling ::btVector3 const & ( ::btStaticPlaneShape::* )(  ) const+void btStaticPlaneShape_getLocalScaling(void *c,float* ret) {+	::btStaticPlaneShape *o = (::btStaticPlaneShape*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getLocalScaling();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getPlaneNormal ::btVector3 const & ( ::btStaticPlaneShape::* )(  ) const+void btStaticPlaneShape_getPlaneNormal(void *c,float* ret) {+	::btStaticPlaneShape *o = (::btStaticPlaneShape*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getPlaneNormal();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getPlaneConstant ::btScalar const & ( ::btStaticPlaneShape::* )(  ) const+float btStaticPlaneShape_getPlaneConstant(void *c) {+	::btStaticPlaneShape *o = (::btStaticPlaneShape*)c;+	float retVal = (float)o->getPlaneConstant();+	return retVal;+}+//method: setLocalScaling void ( ::btStaticPlaneShape::* )( ::btVector3 const & ) +void btStaticPlaneShape_setLocalScaling(void *c,float* p0) {+	::btStaticPlaneShape *o = (::btStaticPlaneShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setLocalScaling(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: getAabb void ( ::btStaticPlaneShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btStaticPlaneShape_getAabb(void *c,float* p0,float* p1,float* p2) {+	::btStaticPlaneShape *o = (::btStaticPlaneShape*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->getAabb(tp0,tp1,tp2);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: processAllTriangles void ( ::btStaticPlaneShape::* )( ::btTriangleCallback *,::btVector3 const &,::btVector3 const & ) const+void btStaticPlaneShape_processAllTriangles(void *c,void* p0,float* p1,float* p2) {+	::btStaticPlaneShape *o = (::btStaticPlaneShape*)c;+	::btTriangleCallback * tp0 = (::btTriangleCallback *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->processAllTriangles(tp0,tp1,tp2);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}++// ::btStaticPlaneShapeData+//constructor: btStaticPlaneShapeData  ( ::btStaticPlaneShapeData::* )(  ) +void* btStaticPlaneShapeData_new() {+	::btStaticPlaneShapeData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btStaticPlaneShapeData),16);+	o = new (mem)::btStaticPlaneShapeData();+	return (void*)o;+}+void btStaticPlaneShapeData_free(void *c) {+	::btStaticPlaneShapeData *o = (::btStaticPlaneShapeData*)c;+	delete o;+}+//attribute: ::btCollisionShapeData btStaticPlaneShapeData->m_collisionShapeData+// attribute not supported: //attribute: ::btCollisionShapeData btStaticPlaneShapeData->m_collisionShapeData+//attribute: ::btVector3FloatData btStaticPlaneShapeData->m_localScaling+// attribute not supported: //attribute: ::btVector3FloatData btStaticPlaneShapeData->m_localScaling+//attribute: ::btVector3FloatData btStaticPlaneShapeData->m_planeNormal+// attribute not supported: //attribute: ::btVector3FloatData btStaticPlaneShapeData->m_planeNormal+//attribute: float btStaticPlaneShapeData->m_planeConstant+void btStaticPlaneShapeData_m_planeConstant_set(void *c,float a) {+	::btStaticPlaneShapeData *o = (::btStaticPlaneShapeData*)c;+	o->m_planeConstant = a;+}+float btStaticPlaneShapeData_m_planeConstant_get(void *c) {+	::btStaticPlaneShapeData *o = (::btStaticPlaneShapeData*)c;+	return (float)(o->m_planeConstant);+}++//attribute: char[4] btStaticPlaneShapeData->m_pad+// attribute not supported: //attribute: char[4] btStaticPlaneShapeData->m_pad++// ::btStridingMeshInterface+//not supported method: getLockedReadOnlyVertexIndexBase void ( ::btStridingMeshInterface::* )( unsigned char const * *,int &,::PHY_ScalarType &,int &,unsigned char const * *,int &,int &,::PHY_ScalarType &,int ) const+//method: calculateSerializeBufferSize int ( ::btStridingMeshInterface::* )(  ) const+int btStridingMeshInterface_calculateSerializeBufferSize(void *c) {+	::btStridingMeshInterface *o = (::btStridingMeshInterface*)c;+	int retVal = (int)o->calculateSerializeBufferSize();+	return retVal;+}+//method: calculateAabbBruteForce void ( ::btStridingMeshInterface::* )( ::btVector3 &,::btVector3 & ) +void btStridingMeshInterface_calculateAabbBruteForce(void *c,float* p0,float* p1) {+	::btStridingMeshInterface *o = (::btStridingMeshInterface*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->calculateAabbBruteForce(tp0,tp1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//not supported method: serialize char const * ( ::btStridingMeshInterface::* )( void *,::btSerializer * ) const+//method: preallocateVertices void ( ::btStridingMeshInterface::* )( int ) +void btStridingMeshInterface_preallocateVertices(void *c,int p0) {+	::btStridingMeshInterface *o = (::btStridingMeshInterface*)c;+	o->preallocateVertices(p0);+}+//method: unLockVertexBase void ( ::btStridingMeshInterface::* )( int ) +void btStridingMeshInterface_unLockVertexBase(void *c,int p0) {+	::btStridingMeshInterface *o = (::btStridingMeshInterface*)c;+	o->unLockVertexBase(p0);+}+//method: getScaling ::btVector3 const & ( ::btStridingMeshInterface::* )(  ) const+void btStridingMeshInterface_getScaling(void *c,float* ret) {+	::btStridingMeshInterface *o = (::btStridingMeshInterface*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getScaling();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: preallocateIndices void ( ::btStridingMeshInterface::* )( int ) +void btStridingMeshInterface_preallocateIndices(void *c,int p0) {+	::btStridingMeshInterface *o = (::btStridingMeshInterface*)c;+	o->preallocateIndices(p0);+}+//method: setPremadeAabb void ( ::btStridingMeshInterface::* )( ::btVector3 const &,::btVector3 const & ) const+void btStridingMeshInterface_setPremadeAabb(void *c,float* p0,float* p1) {+	::btStridingMeshInterface *o = (::btStridingMeshInterface*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->setPremadeAabb(tp0,tp1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: InternalProcessAllTriangles void ( ::btStridingMeshInterface::* )( ::btInternalTriangleIndexCallback *,::btVector3 const &,::btVector3 const & ) const+void btStridingMeshInterface_InternalProcessAllTriangles(void *c,void* p0,float* p1,float* p2) {+	::btStridingMeshInterface *o = (::btStridingMeshInterface*)c;+	::btInternalTriangleIndexCallback * tp0 = (::btInternalTriangleIndexCallback *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->InternalProcessAllTriangles(tp0,tp1,tp2);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//not supported method: getPremadeAabb void ( ::btStridingMeshInterface::* )( ::btVector3 *,::btVector3 * ) const+//method: getNumSubParts int ( ::btStridingMeshInterface::* )(  ) const+int btStridingMeshInterface_getNumSubParts(void *c) {+	::btStridingMeshInterface *o = (::btStridingMeshInterface*)c;+	int retVal = (int)o->getNumSubParts();+	return retVal;+}+//not supported method: getLockedVertexIndexBase void ( ::btStridingMeshInterface::* )( unsigned char * *,int &,::PHY_ScalarType &,int &,unsigned char * *,int &,int &,::PHY_ScalarType &,int ) +//method: hasPremadeAabb bool ( ::btStridingMeshInterface::* )(  ) const+int btStridingMeshInterface_hasPremadeAabb(void *c) {+	::btStridingMeshInterface *o = (::btStridingMeshInterface*)c;+	int retVal = (int)o->hasPremadeAabb();+	return retVal;+}+//method: setScaling void ( ::btStridingMeshInterface::* )( ::btVector3 const & ) +void btStridingMeshInterface_setScaling(void *c,float* p0) {+	::btStridingMeshInterface *o = (::btStridingMeshInterface*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setScaling(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: unLockReadOnlyVertexBase void ( ::btStridingMeshInterface::* )( int ) const+void btStridingMeshInterface_unLockReadOnlyVertexBase(void *c,int p0) {+	::btStridingMeshInterface *o = (::btStridingMeshInterface*)c;+	o->unLockReadOnlyVertexBase(p0);+}++// ::btStridingMeshInterfaceData+//constructor: btStridingMeshInterfaceData  ( ::btStridingMeshInterfaceData::* )(  ) +void* btStridingMeshInterfaceData_new() {+	::btStridingMeshInterfaceData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btStridingMeshInterfaceData),16);+	o = new (mem)::btStridingMeshInterfaceData();+	return (void*)o;+}+void btStridingMeshInterfaceData_free(void *c) {+	::btStridingMeshInterfaceData *o = (::btStridingMeshInterfaceData*)c;+	delete o;+}+//attribute: ::btMeshPartData * btStridingMeshInterfaceData->m_meshPartsPtr+void btStridingMeshInterfaceData_m_meshPartsPtr_set(void *c,void* a) {+	::btStridingMeshInterfaceData *o = (::btStridingMeshInterfaceData*)c;+	::btMeshPartData * ta = (::btMeshPartData *)a;+	o->m_meshPartsPtr = ta;+}+// attriibute getter not supported: //attribute: ::btMeshPartData * btStridingMeshInterfaceData->m_meshPartsPtr+//attribute: ::btVector3FloatData btStridingMeshInterfaceData->m_scaling+// attribute not supported: //attribute: ::btVector3FloatData btStridingMeshInterfaceData->m_scaling+//attribute: int btStridingMeshInterfaceData->m_numMeshParts+void btStridingMeshInterfaceData_m_numMeshParts_set(void *c,int a) {+	::btStridingMeshInterfaceData *o = (::btStridingMeshInterfaceData*)c;+	o->m_numMeshParts = a;+}+int btStridingMeshInterfaceData_m_numMeshParts_get(void *c) {+	::btStridingMeshInterfaceData *o = (::btStridingMeshInterfaceData*)c;+	return (int)(o->m_numMeshParts);+}++//attribute: char[4] btStridingMeshInterfaceData->m_padding+// attribute not supported: //attribute: char[4] btStridingMeshInterfaceData->m_padding++// ::btTriangleCallback+//not supported method: processTriangle void ( ::btTriangleCallback::* )( ::btVector3 *,int,int ) ++// ::btTriangleIndexVertexArray+//constructor: btTriangleIndexVertexArray  ( ::btTriangleIndexVertexArray::* )(  ) +void* btTriangleIndexVertexArray_new0() {+	::btTriangleIndexVertexArray *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btTriangleIndexVertexArray),16);+	o = new (mem)::btTriangleIndexVertexArray();+	return (void*)o;+}+//not supported constructor: btTriangleIndexVertexArray  ( ::btTriangleIndexVertexArray::* )( int,int *,int,int,::btScalar *,int ) +void btTriangleIndexVertexArray_free(void *c) {+	::btTriangleIndexVertexArray *o = (::btTriangleIndexVertexArray*)c;+	delete o;+}+//not supported method: getLockedReadOnlyVertexIndexBase void ( ::btTriangleIndexVertexArray::* )( unsigned char const * *,int &,::PHY_ScalarType &,int &,unsigned char const * *,int &,int &,::PHY_ScalarType &,int ) const+//method: preallocateIndices void ( ::btTriangleIndexVertexArray::* )( int ) +void btTriangleIndexVertexArray_preallocateIndices(void *c,int p0) {+	::btTriangleIndexVertexArray *o = (::btTriangleIndexVertexArray*)c;+	o->preallocateIndices(p0);+}+//method: preallocateVertices void ( ::btTriangleIndexVertexArray::* )( int ) +void btTriangleIndexVertexArray_preallocateVertices(void *c,int p0) {+	::btTriangleIndexVertexArray *o = (::btTriangleIndexVertexArray*)c;+	o->preallocateVertices(p0);+}+//not supported method: getIndexedMeshArray ::IndexedMeshArray & ( ::btTriangleIndexVertexArray::* )(  ) +//not supported method: getIndexedMeshArray ::IndexedMeshArray & ( ::btTriangleIndexVertexArray::* )(  ) +//not supported method: getIndexedMeshArray ::IndexedMeshArray const & ( ::btTriangleIndexVertexArray::* )(  ) const+//method: setPremadeAabb void ( ::btTriangleIndexVertexArray::* )( ::btVector3 const &,::btVector3 const & ) const+void btTriangleIndexVertexArray_setPremadeAabb(void *c,float* p0,float* p1) {+	::btTriangleIndexVertexArray *o = (::btTriangleIndexVertexArray*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->setPremadeAabb(tp0,tp1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//not supported method: getPremadeAabb void ( ::btTriangleIndexVertexArray::* )( ::btVector3 *,::btVector3 * ) const+//not supported method: addIndexedMesh void ( ::btTriangleIndexVertexArray::* )( ::btIndexedMesh const &,::PHY_ScalarType ) +//method: getNumSubParts int ( ::btTriangleIndexVertexArray::* )(  ) const+int btTriangleIndexVertexArray_getNumSubParts(void *c) {+	::btTriangleIndexVertexArray *o = (::btTriangleIndexVertexArray*)c;+	int retVal = (int)o->getNumSubParts();+	return retVal;+}+//not supported method: getLockedVertexIndexBase void ( ::btTriangleIndexVertexArray::* )( unsigned char * *,int &,::PHY_ScalarType &,int &,unsigned char * *,int &,int &,::PHY_ScalarType &,int ) +//method: hasPremadeAabb bool ( ::btTriangleIndexVertexArray::* )(  ) const+int btTriangleIndexVertexArray_hasPremadeAabb(void *c) {+	::btTriangleIndexVertexArray *o = (::btTriangleIndexVertexArray*)c;+	int retVal = (int)o->hasPremadeAabb();+	return retVal;+}+//method: unLockVertexBase void ( ::btTriangleIndexVertexArray::* )( int ) +void btTriangleIndexVertexArray_unLockVertexBase(void *c,int p0) {+	::btTriangleIndexVertexArray *o = (::btTriangleIndexVertexArray*)c;+	o->unLockVertexBase(p0);+}+//method: unLockReadOnlyVertexBase void ( ::btTriangleIndexVertexArray::* )( int ) const+void btTriangleIndexVertexArray_unLockReadOnlyVertexBase(void *c,int p0) {+	::btTriangleIndexVertexArray *o = (::btTriangleIndexVertexArray*)c;+	o->unLockReadOnlyVertexBase(p0);+}++// ::btTriangleInfo+//constructor: btTriangleInfo  ( ::btTriangleInfo::* )(  ) +void* btTriangleInfo_new() {+	::btTriangleInfo *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btTriangleInfo),16);+	o = new (mem)::btTriangleInfo();+	return (void*)o;+}+void btTriangleInfo_free(void *c) {+	::btTriangleInfo *o = (::btTriangleInfo*)c;+	delete o;+}+//attribute: int btTriangleInfo->m_flags+void btTriangleInfo_m_flags_set(void *c,int a) {+	::btTriangleInfo *o = (::btTriangleInfo*)c;+	o->m_flags = a;+}+int btTriangleInfo_m_flags_get(void *c) {+	::btTriangleInfo *o = (::btTriangleInfo*)c;+	return (int)(o->m_flags);+}++//attribute: ::btScalar btTriangleInfo->m_edgeV0V1Angle+void btTriangleInfo_m_edgeV0V1Angle_set(void *c,float a) {+	::btTriangleInfo *o = (::btTriangleInfo*)c;+	o->m_edgeV0V1Angle = a;+}+float btTriangleInfo_m_edgeV0V1Angle_get(void *c) {+	::btTriangleInfo *o = (::btTriangleInfo*)c;+	return (float)(o->m_edgeV0V1Angle);+}++//attribute: ::btScalar btTriangleInfo->m_edgeV1V2Angle+void btTriangleInfo_m_edgeV1V2Angle_set(void *c,float a) {+	::btTriangleInfo *o = (::btTriangleInfo*)c;+	o->m_edgeV1V2Angle = a;+}+float btTriangleInfo_m_edgeV1V2Angle_get(void *c) {+	::btTriangleInfo *o = (::btTriangleInfo*)c;+	return (float)(o->m_edgeV1V2Angle);+}++//attribute: ::btScalar btTriangleInfo->m_edgeV2V0Angle+void btTriangleInfo_m_edgeV2V0Angle_set(void *c,float a) {+	::btTriangleInfo *o = (::btTriangleInfo*)c;+	o->m_edgeV2V0Angle = a;+}+float btTriangleInfo_m_edgeV2V0Angle_get(void *c) {+	::btTriangleInfo *o = (::btTriangleInfo*)c;+	return (float)(o->m_edgeV2V0Angle);+}+++// ::btTriangleInfoData+//constructor: btTriangleInfoData  ( ::btTriangleInfoData::* )(  ) +void* btTriangleInfoData_new() {+	::btTriangleInfoData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btTriangleInfoData),16);+	o = new (mem)::btTriangleInfoData();+	return (void*)o;+}+void btTriangleInfoData_free(void *c) {+	::btTriangleInfoData *o = (::btTriangleInfoData*)c;+	delete o;+}+//attribute: int btTriangleInfoData->m_flags+void btTriangleInfoData_m_flags_set(void *c,int a) {+	::btTriangleInfoData *o = (::btTriangleInfoData*)c;+	o->m_flags = a;+}+int btTriangleInfoData_m_flags_get(void *c) {+	::btTriangleInfoData *o = (::btTriangleInfoData*)c;+	return (int)(o->m_flags);+}++//attribute: float btTriangleInfoData->m_edgeV0V1Angle+void btTriangleInfoData_m_edgeV0V1Angle_set(void *c,float a) {+	::btTriangleInfoData *o = (::btTriangleInfoData*)c;+	o->m_edgeV0V1Angle = a;+}+float btTriangleInfoData_m_edgeV0V1Angle_get(void *c) {+	::btTriangleInfoData *o = (::btTriangleInfoData*)c;+	return (float)(o->m_edgeV0V1Angle);+}++//attribute: float btTriangleInfoData->m_edgeV1V2Angle+void btTriangleInfoData_m_edgeV1V2Angle_set(void *c,float a) {+	::btTriangleInfoData *o = (::btTriangleInfoData*)c;+	o->m_edgeV1V2Angle = a;+}+float btTriangleInfoData_m_edgeV1V2Angle_get(void *c) {+	::btTriangleInfoData *o = (::btTriangleInfoData*)c;+	return (float)(o->m_edgeV1V2Angle);+}++//attribute: float btTriangleInfoData->m_edgeV2V0Angle+void btTriangleInfoData_m_edgeV2V0Angle_set(void *c,float a) {+	::btTriangleInfoData *o = (::btTriangleInfoData*)c;+	o->m_edgeV2V0Angle = a;+}+float btTriangleInfoData_m_edgeV2V0Angle_get(void *c) {+	::btTriangleInfoData *o = (::btTriangleInfoData*)c;+	return (float)(o->m_edgeV2V0Angle);+}+++// ::btTriangleInfoMap+//constructor: btTriangleInfoMap  ( ::btTriangleInfoMap::* )(  ) +void* btTriangleInfoMap_new() {+	::btTriangleInfoMap *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btTriangleInfoMap),16);+	o = new (mem)::btTriangleInfoMap();+	return (void*)o;+}+void btTriangleInfoMap_free(void *c) {+	::btTriangleInfoMap *o = (::btTriangleInfoMap*)c;+	delete o;+}+//not supported method: serialize char const * ( ::btTriangleInfoMap::* )( void *,::btSerializer * ) const+//method: calculateSerializeBufferSize int ( ::btTriangleInfoMap::* )(  ) const+int btTriangleInfoMap_calculateSerializeBufferSize(void *c) {+	::btTriangleInfoMap *o = (::btTriangleInfoMap*)c;+	int retVal = (int)o->calculateSerializeBufferSize();+	return retVal;+}+//method: deSerialize void ( ::btTriangleInfoMap::* )( ::btTriangleInfoMapData & ) +void btTriangleInfoMap_deSerialize(void *c,void* p0) {+	::btTriangleInfoMap *o = (::btTriangleInfoMap*)c;+	::btTriangleInfoMapData & tp0 = *(::btTriangleInfoMapData *)p0;+	o->deSerialize(tp0);+}+//attribute: ::btScalar btTriangleInfoMap->m_convexEpsilon+void btTriangleInfoMap_m_convexEpsilon_set(void *c,float a) {+	::btTriangleInfoMap *o = (::btTriangleInfoMap*)c;+	o->m_convexEpsilon = a;+}+float btTriangleInfoMap_m_convexEpsilon_get(void *c) {+	::btTriangleInfoMap *o = (::btTriangleInfoMap*)c;+	return (float)(o->m_convexEpsilon);+}++//attribute: ::btScalar btTriangleInfoMap->m_edgeDistanceThreshold+void btTriangleInfoMap_m_edgeDistanceThreshold_set(void *c,float a) {+	::btTriangleInfoMap *o = (::btTriangleInfoMap*)c;+	o->m_edgeDistanceThreshold = a;+}+float btTriangleInfoMap_m_edgeDistanceThreshold_get(void *c) {+	::btTriangleInfoMap *o = (::btTriangleInfoMap*)c;+	return (float)(o->m_edgeDistanceThreshold);+}++//attribute: ::btScalar btTriangleInfoMap->m_equalVertexThreshold+void btTriangleInfoMap_m_equalVertexThreshold_set(void *c,float a) {+	::btTriangleInfoMap *o = (::btTriangleInfoMap*)c;+	o->m_equalVertexThreshold = a;+}+float btTriangleInfoMap_m_equalVertexThreshold_get(void *c) {+	::btTriangleInfoMap *o = (::btTriangleInfoMap*)c;+	return (float)(o->m_equalVertexThreshold);+}++//attribute: ::btScalar btTriangleInfoMap->m_maxEdgeAngleThreshold+void btTriangleInfoMap_m_maxEdgeAngleThreshold_set(void *c,float a) {+	::btTriangleInfoMap *o = (::btTriangleInfoMap*)c;+	o->m_maxEdgeAngleThreshold = a;+}+float btTriangleInfoMap_m_maxEdgeAngleThreshold_get(void *c) {+	::btTriangleInfoMap *o = (::btTriangleInfoMap*)c;+	return (float)(o->m_maxEdgeAngleThreshold);+}++//attribute: ::btScalar btTriangleInfoMap->m_planarEpsilon+void btTriangleInfoMap_m_planarEpsilon_set(void *c,float a) {+	::btTriangleInfoMap *o = (::btTriangleInfoMap*)c;+	o->m_planarEpsilon = a;+}+float btTriangleInfoMap_m_planarEpsilon_get(void *c) {+	::btTriangleInfoMap *o = (::btTriangleInfoMap*)c;+	return (float)(o->m_planarEpsilon);+}++//attribute: ::btScalar btTriangleInfoMap->m_zeroAreaThreshold+void btTriangleInfoMap_m_zeroAreaThreshold_set(void *c,float a) {+	::btTriangleInfoMap *o = (::btTriangleInfoMap*)c;+	o->m_zeroAreaThreshold = a;+}+float btTriangleInfoMap_m_zeroAreaThreshold_get(void *c) {+	::btTriangleInfoMap *o = (::btTriangleInfoMap*)c;+	return (float)(o->m_zeroAreaThreshold);+}+++// ::btTriangleInfoMapData+//constructor: btTriangleInfoMapData  ( ::btTriangleInfoMapData::* )(  ) +void* btTriangleInfoMapData_new() {+	::btTriangleInfoMapData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btTriangleInfoMapData),16);+	o = new (mem)::btTriangleInfoMapData();+	return (void*)o;+}+void btTriangleInfoMapData_free(void *c) {+	::btTriangleInfoMapData *o = (::btTriangleInfoMapData*)c;+	delete o;+}+//attribute: float btTriangleInfoMapData->m_convexEpsilon+void btTriangleInfoMapData_m_convexEpsilon_set(void *c,float a) {+	::btTriangleInfoMapData *o = (::btTriangleInfoMapData*)c;+	o->m_convexEpsilon = a;+}+float btTriangleInfoMapData_m_convexEpsilon_get(void *c) {+	::btTriangleInfoMapData *o = (::btTriangleInfoMapData*)c;+	return (float)(o->m_convexEpsilon);+}++//attribute: float btTriangleInfoMapData->m_edgeDistanceThreshold+void btTriangleInfoMapData_m_edgeDistanceThreshold_set(void *c,float a) {+	::btTriangleInfoMapData *o = (::btTriangleInfoMapData*)c;+	o->m_edgeDistanceThreshold = a;+}+float btTriangleInfoMapData_m_edgeDistanceThreshold_get(void *c) {+	::btTriangleInfoMapData *o = (::btTriangleInfoMapData*)c;+	return (float)(o->m_edgeDistanceThreshold);+}++//attribute: float btTriangleInfoMapData->m_equalVertexThreshold+void btTriangleInfoMapData_m_equalVertexThreshold_set(void *c,float a) {+	::btTriangleInfoMapData *o = (::btTriangleInfoMapData*)c;+	o->m_equalVertexThreshold = a;+}+float btTriangleInfoMapData_m_equalVertexThreshold_get(void *c) {+	::btTriangleInfoMapData *o = (::btTriangleInfoMapData*)c;+	return (float)(o->m_equalVertexThreshold);+}++//attribute: int * btTriangleInfoMapData->m_hashTablePtr+// attribute not supported: //attribute: int * btTriangleInfoMapData->m_hashTablePtr+//attribute: int btTriangleInfoMapData->m_hashTableSize+void btTriangleInfoMapData_m_hashTableSize_set(void *c,int a) {+	::btTriangleInfoMapData *o = (::btTriangleInfoMapData*)c;+	o->m_hashTableSize = a;+}+int btTriangleInfoMapData_m_hashTableSize_get(void *c) {+	::btTriangleInfoMapData *o = (::btTriangleInfoMapData*)c;+	return (int)(o->m_hashTableSize);+}++//attribute: int * btTriangleInfoMapData->m_keyArrayPtr+// attribute not supported: //attribute: int * btTriangleInfoMapData->m_keyArrayPtr+//attribute: int * btTriangleInfoMapData->m_nextPtr+// attribute not supported: //attribute: int * btTriangleInfoMapData->m_nextPtr+//attribute: int btTriangleInfoMapData->m_nextSize+void btTriangleInfoMapData_m_nextSize_set(void *c,int a) {+	::btTriangleInfoMapData *o = (::btTriangleInfoMapData*)c;+	o->m_nextSize = a;+}+int btTriangleInfoMapData_m_nextSize_get(void *c) {+	::btTriangleInfoMapData *o = (::btTriangleInfoMapData*)c;+	return (int)(o->m_nextSize);+}++//attribute: int btTriangleInfoMapData->m_numKeys+void btTriangleInfoMapData_m_numKeys_set(void *c,int a) {+	::btTriangleInfoMapData *o = (::btTriangleInfoMapData*)c;+	o->m_numKeys = a;+}+int btTriangleInfoMapData_m_numKeys_get(void *c) {+	::btTriangleInfoMapData *o = (::btTriangleInfoMapData*)c;+	return (int)(o->m_numKeys);+}++//attribute: int btTriangleInfoMapData->m_numValues+void btTriangleInfoMapData_m_numValues_set(void *c,int a) {+	::btTriangleInfoMapData *o = (::btTriangleInfoMapData*)c;+	o->m_numValues = a;+}+int btTriangleInfoMapData_m_numValues_get(void *c) {+	::btTriangleInfoMapData *o = (::btTriangleInfoMapData*)c;+	return (int)(o->m_numValues);+}++//attribute: char[4] btTriangleInfoMapData->m_padding+// attribute not supported: //attribute: char[4] btTriangleInfoMapData->m_padding+//attribute: float btTriangleInfoMapData->m_planarEpsilon+void btTriangleInfoMapData_m_planarEpsilon_set(void *c,float a) {+	::btTriangleInfoMapData *o = (::btTriangleInfoMapData*)c;+	o->m_planarEpsilon = a;+}+float btTriangleInfoMapData_m_planarEpsilon_get(void *c) {+	::btTriangleInfoMapData *o = (::btTriangleInfoMapData*)c;+	return (float)(o->m_planarEpsilon);+}++//attribute: ::btTriangleInfoData * btTriangleInfoMapData->m_valueArrayPtr+void btTriangleInfoMapData_m_valueArrayPtr_set(void *c,void* a) {+	::btTriangleInfoMapData *o = (::btTriangleInfoMapData*)c;+	::btTriangleInfoData * ta = (::btTriangleInfoData *)a;+	o->m_valueArrayPtr = ta;+}+// attriibute getter not supported: //attribute: ::btTriangleInfoData * btTriangleInfoMapData->m_valueArrayPtr+//attribute: float btTriangleInfoMapData->m_zeroAreaThreshold+void btTriangleInfoMapData_m_zeroAreaThreshold_set(void *c,float a) {+	::btTriangleInfoMapData *o = (::btTriangleInfoMapData*)c;+	o->m_zeroAreaThreshold = a;+}+float btTriangleInfoMapData_m_zeroAreaThreshold_get(void *c) {+	::btTriangleInfoMapData *o = (::btTriangleInfoMapData*)c;+	return (float)(o->m_zeroAreaThreshold);+}+++// ::btTriangleMesh+//constructor: btTriangleMesh  ( ::btTriangleMesh::* )( bool,bool ) +void* btTriangleMesh_new(int p0,int p1) {+	::btTriangleMesh *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btTriangleMesh),16);+	o = new (mem)::btTriangleMesh(p0,p1);+	return (void*)o;+}+void btTriangleMesh_free(void *c) {+	::btTriangleMesh *o = (::btTriangleMesh*)c;+	delete o;+}+//method: preallocateIndices void ( ::btTriangleMesh::* )( int ) +void btTriangleMesh_preallocateIndices(void *c,int p0) {+	::btTriangleMesh *o = (::btTriangleMesh*)c;+	o->preallocateIndices(p0);+}+//method: getNumTriangles int ( ::btTriangleMesh::* )(  ) const+int btTriangleMesh_getNumTriangles(void *c) {+	::btTriangleMesh *o = (::btTriangleMesh*)c;+	int retVal = (int)o->getNumTriangles();+	return retVal;+}+//method: getUse32bitIndices bool ( ::btTriangleMesh::* )(  ) const+int btTriangleMesh_getUse32bitIndices(void *c) {+	::btTriangleMesh *o = (::btTriangleMesh*)c;+	int retVal = (int)o->getUse32bitIndices();+	return retVal;+}+//method: addIndex void ( ::btTriangleMesh::* )( int ) +void btTriangleMesh_addIndex(void *c,int p0) {+	::btTriangleMesh *o = (::btTriangleMesh*)c;+	o->addIndex(p0);+}+//method: preallocateVertices void ( ::btTriangleMesh::* )( int ) +void btTriangleMesh_preallocateVertices(void *c,int p0) {+	::btTriangleMesh *o = (::btTriangleMesh*)c;+	o->preallocateVertices(p0);+}+//method: findOrAddVertex int ( ::btTriangleMesh::* )( ::btVector3 const &,bool ) +int btTriangleMesh_findOrAddVertex(void *c,float* p0,int p1) {+	::btTriangleMesh *o = (::btTriangleMesh*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	int retVal = (int)o->findOrAddVertex(tp0,p1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	return retVal;+}+//method: getUse4componentVertices bool ( ::btTriangleMesh::* )(  ) const+int btTriangleMesh_getUse4componentVertices(void *c) {+	::btTriangleMesh *o = (::btTriangleMesh*)c;+	int retVal = (int)o->getUse4componentVertices();+	return retVal;+}+//method: addTriangle void ( ::btTriangleMesh::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,bool ) +void btTriangleMesh_addTriangle(void *c,float* p0,float* p1,float* p2,int p3) {+	::btTriangleMesh *o = (::btTriangleMesh*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->addTriangle(tp0,tp1,tp2,p3);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//attribute: ::btScalar btTriangleMesh->m_weldingThreshold+void btTriangleMesh_m_weldingThreshold_set(void *c,float a) {+	::btTriangleMesh *o = (::btTriangleMesh*)c;+	o->m_weldingThreshold = a;+}+float btTriangleMesh_m_weldingThreshold_get(void *c) {+	::btTriangleMesh *o = (::btTriangleMesh*)c;+	return (float)(o->m_weldingThreshold);+}+++// ::btTriangleMeshShape+void btTriangleMeshShape_free(void *c) {+	::btTriangleMeshShape *o = (::btTriangleMeshShape*)c;+	delete o;+}+//method: calculateLocalInertia void ( ::btTriangleMeshShape::* )( ::btScalar,::btVector3 & ) const+void btTriangleMeshShape_calculateLocalInertia(void *c,float p0,float* p1) {+	::btTriangleMeshShape *o = (::btTriangleMeshShape*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->calculateLocalInertia(p0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: getLocalAabbMax ::btVector3 const & ( ::btTriangleMeshShape::* )(  ) const+void btTriangleMeshShape_getLocalAabbMax(void *c,float* ret) {+	::btTriangleMeshShape *o = (::btTriangleMeshShape*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getLocalAabbMax();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: localGetSupportingVertex ::btVector3 ( ::btTriangleMeshShape::* )( ::btVector3 const & ) const+void btTriangleMeshShape_localGetSupportingVertex(void *c,float* p0,float* ret) {+	::btTriangleMeshShape *o = (::btTriangleMeshShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->localGetSupportingVertex(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getName char const * ( ::btTriangleMeshShape::* )(  ) const+char const * btTriangleMeshShape_getName(void *c) {+	::btTriangleMeshShape *o = (::btTriangleMeshShape*)c;+	char const * retVal = (char const *)o->getName();+	return retVal;+}+//method: getLocalScaling ::btVector3 const & ( ::btTriangleMeshShape::* )(  ) const+void btTriangleMeshShape_getLocalScaling(void *c,float* ret) {+	::btTriangleMeshShape *o = (::btTriangleMeshShape*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getLocalScaling();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: recalcLocalAabb void ( ::btTriangleMeshShape::* )(  ) +void btTriangleMeshShape_recalcLocalAabb(void *c) {+	::btTriangleMeshShape *o = (::btTriangleMeshShape*)c;+	o->recalcLocalAabb();+}+//method: setLocalScaling void ( ::btTriangleMeshShape::* )( ::btVector3 const & ) +void btTriangleMeshShape_setLocalScaling(void *c,float* p0) {+	::btTriangleMeshShape *o = (::btTriangleMeshShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setLocalScaling(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: getMeshInterface ::btStridingMeshInterface * ( ::btTriangleMeshShape::* )(  ) +void* btTriangleMeshShape_getMeshInterface(void *c) {+	::btTriangleMeshShape *o = (::btTriangleMeshShape*)c;+	void* retVal = (void*) o->getMeshInterface();+	return retVal;+}+//method: getMeshInterface ::btStridingMeshInterface * ( ::btTriangleMeshShape::* )(  ) +void* btTriangleMeshShape_getMeshInterface0(void *c) {+	::btTriangleMeshShape *o = (::btTriangleMeshShape*)c;+	void* retVal = (void*) o->getMeshInterface();+	return retVal;+}+//method: getMeshInterface ::btStridingMeshInterface const * ( ::btTriangleMeshShape::* )(  ) const+void* btTriangleMeshShape_getMeshInterface1(void *c) {+	::btTriangleMeshShape *o = (::btTriangleMeshShape*)c;+	void* retVal = (void*) o->getMeshInterface();+	return retVal;+}+//method: getAabb void ( ::btTriangleMeshShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btTriangleMeshShape_getAabb(void *c,float* p0,float* p1,float* p2) {+	::btTriangleMeshShape *o = (::btTriangleMeshShape*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->getAabb(tp0,tp1,tp2);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: processAllTriangles void ( ::btTriangleMeshShape::* )( ::btTriangleCallback *,::btVector3 const &,::btVector3 const & ) const+void btTriangleMeshShape_processAllTriangles(void *c,void* p0,float* p1,float* p2) {+	::btTriangleMeshShape *o = (::btTriangleMeshShape*)c;+	::btTriangleCallback * tp0 = (::btTriangleCallback *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->processAllTriangles(tp0,tp1,tp2);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: localGetSupportingVertexWithoutMargin ::btVector3 ( ::btTriangleMeshShape::* )( ::btVector3 const & ) const+void btTriangleMeshShape_localGetSupportingVertexWithoutMargin(void *c,float* p0,float* ret) {+	::btTriangleMeshShape *o = (::btTriangleMeshShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->localGetSupportingVertexWithoutMargin(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getLocalAabbMin ::btVector3 const & ( ::btTriangleMeshShape::* )(  ) const+void btTriangleMeshShape_getLocalAabbMin(void *c,float* ret) {+	::btTriangleMeshShape *o = (::btTriangleMeshShape*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getLocalAabbMin();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}++// ::btTriangleMeshShapeData+//constructor: btTriangleMeshShapeData  ( ::btTriangleMeshShapeData::* )(  ) +void* btTriangleMeshShapeData_new() {+	::btTriangleMeshShapeData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btTriangleMeshShapeData),16);+	o = new (mem)::btTriangleMeshShapeData();+	return (void*)o;+}+void btTriangleMeshShapeData_free(void *c) {+	::btTriangleMeshShapeData *o = (::btTriangleMeshShapeData*)c;+	delete o;+}+//attribute: float btTriangleMeshShapeData->m_collisionMargin+void btTriangleMeshShapeData_m_collisionMargin_set(void *c,float a) {+	::btTriangleMeshShapeData *o = (::btTriangleMeshShapeData*)c;+	o->m_collisionMargin = a;+}+float btTriangleMeshShapeData_m_collisionMargin_get(void *c) {+	::btTriangleMeshShapeData *o = (::btTriangleMeshShapeData*)c;+	return (float)(o->m_collisionMargin);+}++//attribute: ::btCollisionShapeData btTriangleMeshShapeData->m_collisionShapeData+// attribute not supported: //attribute: ::btCollisionShapeData btTriangleMeshShapeData->m_collisionShapeData+//attribute: ::btStridingMeshInterfaceData btTriangleMeshShapeData->m_meshInterface+// attribute not supported: //attribute: ::btStridingMeshInterfaceData btTriangleMeshShapeData->m_meshInterface+//attribute: char[4] btTriangleMeshShapeData->m_pad3+// attribute not supported: //attribute: char[4] btTriangleMeshShapeData->m_pad3+//attribute: ::btQuantizedBvhDoubleData * btTriangleMeshShapeData->m_quantizedDoubleBvh+void btTriangleMeshShapeData_m_quantizedDoubleBvh_set(void *c,void* a) {+	::btTriangleMeshShapeData *o = (::btTriangleMeshShapeData*)c;+	::btQuantizedBvhDoubleData * ta = (::btQuantizedBvhDoubleData *)a;+	o->m_quantizedDoubleBvh = ta;+}+// attriibute getter not supported: //attribute: ::btQuantizedBvhDoubleData * btTriangleMeshShapeData->m_quantizedDoubleBvh+//attribute: ::btQuantizedBvhFloatData * btTriangleMeshShapeData->m_quantizedFloatBvh+void btTriangleMeshShapeData_m_quantizedFloatBvh_set(void *c,void* a) {+	::btTriangleMeshShapeData *o = (::btTriangleMeshShapeData*)c;+	::btQuantizedBvhFloatData * ta = (::btQuantizedBvhFloatData *)a;+	o->m_quantizedFloatBvh = ta;+}+// attriibute getter not supported: //attribute: ::btQuantizedBvhFloatData * btTriangleMeshShapeData->m_quantizedFloatBvh+//attribute: ::btTriangleInfoMapData * btTriangleMeshShapeData->m_triangleInfoMap+void btTriangleMeshShapeData_m_triangleInfoMap_set(void *c,void* a) {+	::btTriangleMeshShapeData *o = (::btTriangleMeshShapeData*)c;+	::btTriangleInfoMapData * ta = (::btTriangleInfoMapData *)a;+	o->m_triangleInfoMap = ta;+}+// attriibute getter not supported: //attribute: ::btTriangleInfoMapData * btTriangleMeshShapeData->m_triangleInfoMap++// ::btTriangleShape+//constructor: btTriangleShape  ( ::btTriangleShape::* )(  ) +void* btTriangleShape_new0() {+	::btTriangleShape *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btTriangleShape),16);+	o = new (mem)::btTriangleShape();+	return (void*)o;+}+//constructor: btTriangleShape  ( ::btTriangleShape::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void* btTriangleShape_new1(float* p0,float* p1,float* p2) {+	::btTriangleShape *o = 0;+	 void *mem = 0;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	mem = btAlignedAlloc(sizeof(::btTriangleShape),16);+	o = new (mem)::btTriangleShape(tp0,tp1,tp2);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	return (void*)o;+}+void btTriangleShape_free(void *c) {+	::btTriangleShape *o = (::btTriangleShape*)c;+	delete o;+}+//method: getVertexPtr ::btVector3 & ( ::btTriangleShape::* )( int ) +void btTriangleShape_getVertexPtr(void *c,int p0,float* ret) {+	::btTriangleShape *o = (::btTriangleShape*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getVertexPtr(p0);+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getVertexPtr ::btVector3 & ( ::btTriangleShape::* )( int ) +void btTriangleShape_getVertexPtr0(void *c,int p0,float* ret) {+	::btTriangleShape *o = (::btTriangleShape*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getVertexPtr(p0);+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getVertexPtr ::btVector3 const & ( ::btTriangleShape::* )( int ) const+void btTriangleShape_getVertexPtr1(void *c,int p0,float* ret) {+	::btTriangleShape *o = (::btTriangleShape*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getVertexPtr(p0);+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getNumPlanes int ( ::btTriangleShape::* )(  ) const+int btTriangleShape_getNumPlanes(void *c) {+	::btTriangleShape *o = (::btTriangleShape*)c;+	int retVal = (int)o->getNumPlanes();+	return retVal;+}+//not supported method: batchedUnitVectorGetSupportingVertexWithoutMargin void ( ::btTriangleShape::* )( ::btVector3 const *,::btVector3 *,int ) const+//method: getPreferredPenetrationDirection void ( ::btTriangleShape::* )( int,::btVector3 & ) const+void btTriangleShape_getPreferredPenetrationDirection(void *c,int p0,float* p1) {+	::btTriangleShape *o = (::btTriangleShape*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->getPreferredPenetrationDirection(p0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: getNumEdges int ( ::btTriangleShape::* )(  ) const+int btTriangleShape_getNumEdges(void *c) {+	::btTriangleShape *o = (::btTriangleShape*)c;+	int retVal = (int)o->getNumEdges();+	return retVal;+}+//method: getName char const * ( ::btTriangleShape::* )(  ) const+char const * btTriangleShape_getName(void *c) {+	::btTriangleShape *o = (::btTriangleShape*)c;+	char const * retVal = (char const *)o->getName();+	return retVal;+}+//method: getNumVertices int ( ::btTriangleShape::* )(  ) const+int btTriangleShape_getNumVertices(void *c) {+	::btTriangleShape *o = (::btTriangleShape*)c;+	int retVal = (int)o->getNumVertices();+	return retVal;+}+//method: getEdge void ( ::btTriangleShape::* )( int,::btVector3 &,::btVector3 & ) const+void btTriangleShape_getEdge(void *c,int p0,float* p1,float* p2) {+	::btTriangleShape *o = (::btTriangleShape*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->getEdge(p0,tp1,tp2);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: isInside bool ( ::btTriangleShape::* )( ::btVector3 const &,::btScalar ) const+int btTriangleShape_isInside(void *c,float* p0,float p1) {+	::btTriangleShape *o = (::btTriangleShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	int retVal = (int)o->isInside(tp0,p1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	return retVal;+}+//method: getPlane void ( ::btTriangleShape::* )( ::btVector3 &,::btVector3 &,int ) const+void btTriangleShape_getPlane(void *c,float* p0,float* p1,int p2) {+	::btTriangleShape *o = (::btTriangleShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->getPlane(tp0,tp1,p2);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: getNumPreferredPenetrationDirections int ( ::btTriangleShape::* )(  ) const+int btTriangleShape_getNumPreferredPenetrationDirections(void *c) {+	::btTriangleShape *o = (::btTriangleShape*)c;+	int retVal = (int)o->getNumPreferredPenetrationDirections();+	return retVal;+}+//method: getAabb void ( ::btTriangleShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btTriangleShape_getAabb(void *c,float* p0,float* p1,float* p2) {+	::btTriangleShape *o = (::btTriangleShape*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->getAabb(tp0,tp1,tp2);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: getVertex void ( ::btTriangleShape::* )( int,::btVector3 & ) const+void btTriangleShape_getVertex(void *c,int p0,float* p1) {+	::btTriangleShape *o = (::btTriangleShape*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->getVertex(p0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: calcNormal void ( ::btTriangleShape::* )( ::btVector3 & ) const+void btTriangleShape_calcNormal(void *c,float* p0) {+	::btTriangleShape *o = (::btTriangleShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->calcNormal(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: calculateLocalInertia void ( ::btTriangleShape::* )( ::btScalar,::btVector3 & ) const+void btTriangleShape_calculateLocalInertia(void *c,float p0,float* p1) {+	::btTriangleShape *o = (::btTriangleShape*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->calculateLocalInertia(p0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: getPlaneEquation void ( ::btTriangleShape::* )( int,::btVector3 &,::btVector3 & ) const+void btTriangleShape_getPlaneEquation(void *c,int p0,float* p1,float* p2) {+	::btTriangleShape *o = (::btTriangleShape*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->getPlaneEquation(p0,tp1,tp2);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: localGetSupportingVertexWithoutMargin ::btVector3 ( ::btTriangleShape::* )( ::btVector3 const & ) const+void btTriangleShape_localGetSupportingVertexWithoutMargin(void *c,float* p0,float* ret) {+	::btTriangleShape *o = (::btTriangleShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->localGetSupportingVertexWithoutMargin(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//attribute: ::btVector3[3] btTriangleShape->m_vertices1+// attribute not supported: //attribute: ::btVector3[3] btTriangleShape->m_vertices1++// ::btUniformScalingShape+//constructor: btUniformScalingShape  ( ::btUniformScalingShape::* )( ::btConvexShape *,::btScalar ) +void* btUniformScalingShape_new(void* p0,float p1) {+	::btUniformScalingShape *o = 0;+	 void *mem = 0;+	::btConvexShape * tp0 = (::btConvexShape *)p0;+	mem = btAlignedAlloc(sizeof(::btUniformScalingShape),16);+	o = new (mem)::btUniformScalingShape(tp0,p1);+	return (void*)o;+}+void btUniformScalingShape_free(void *c) {+	::btUniformScalingShape *o = (::btUniformScalingShape*)c;+	delete o;+}+//method: calculateLocalInertia void ( ::btUniformScalingShape::* )( ::btScalar,::btVector3 & ) const+void btUniformScalingShape_calculateLocalInertia(void *c,float p0,float* p1) {+	::btUniformScalingShape *o = (::btUniformScalingShape*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->calculateLocalInertia(p0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: getUniformScalingFactor ::btScalar ( ::btUniformScalingShape::* )(  ) const+float btUniformScalingShape_getUniformScalingFactor(void *c) {+	::btUniformScalingShape *o = (::btUniformScalingShape*)c;+	float retVal = (float)o->getUniformScalingFactor();+	return retVal;+}+//method: localGetSupportingVertex ::btVector3 ( ::btUniformScalingShape::* )( ::btVector3 const & ) const+void btUniformScalingShape_localGetSupportingVertex(void *c,float* p0,float* ret) {+	::btUniformScalingShape *o = (::btUniformScalingShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->localGetSupportingVertex(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//not supported method: batchedUnitVectorGetSupportingVertexWithoutMargin void ( ::btUniformScalingShape::* )( ::btVector3 const *,::btVector3 *,int ) const+//method: getName char const * ( ::btUniformScalingShape::* )(  ) const+char const * btUniformScalingShape_getName(void *c) {+	::btUniformScalingShape *o = (::btUniformScalingShape*)c;+	char const * retVal = (char const *)o->getName();+	return retVal;+}+//method: getAabbSlow void ( ::btUniformScalingShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btUniformScalingShape_getAabbSlow(void *c,float* p0,float* p1,float* p2) {+	::btUniformScalingShape *o = (::btUniformScalingShape*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->getAabbSlow(tp0,tp1,tp2);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: getLocalScaling ::btVector3 const & ( ::btUniformScalingShape::* )(  ) const+void btUniformScalingShape_getLocalScaling(void *c,float* ret) {+	::btUniformScalingShape *o = (::btUniformScalingShape*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getLocalScaling();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getChildShape ::btConvexShape * ( ::btUniformScalingShape::* )(  ) +void* btUniformScalingShape_getChildShape(void *c) {+	::btUniformScalingShape *o = (::btUniformScalingShape*)c;+	void* retVal = (void*) o->getChildShape();+	return retVal;+}+//method: getChildShape ::btConvexShape * ( ::btUniformScalingShape::* )(  ) +void* btUniformScalingShape_getChildShape0(void *c) {+	::btUniformScalingShape *o = (::btUniformScalingShape*)c;+	void* retVal = (void*) o->getChildShape();+	return retVal;+}+//method: getChildShape ::btConvexShape const * ( ::btUniformScalingShape::* )(  ) const+void* btUniformScalingShape_getChildShape1(void *c) {+	::btUniformScalingShape *o = (::btUniformScalingShape*)c;+	void* retVal = (void*) o->getChildShape();+	return retVal;+}+//method: getPreferredPenetrationDirection void ( ::btUniformScalingShape::* )( int,::btVector3 & ) const+void btUniformScalingShape_getPreferredPenetrationDirection(void *c,int p0,float* p1) {+	::btUniformScalingShape *o = (::btUniformScalingShape*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->getPreferredPenetrationDirection(p0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: setLocalScaling void ( ::btUniformScalingShape::* )( ::btVector3 const & ) +void btUniformScalingShape_setLocalScaling(void *c,float* p0) {+	::btUniformScalingShape *o = (::btUniformScalingShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setLocalScaling(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: getNumPreferredPenetrationDirections int ( ::btUniformScalingShape::* )(  ) const+int btUniformScalingShape_getNumPreferredPenetrationDirections(void *c) {+	::btUniformScalingShape *o = (::btUniformScalingShape*)c;+	int retVal = (int)o->getNumPreferredPenetrationDirections();+	return retVal;+}+//method: getAabb void ( ::btUniformScalingShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btUniformScalingShape_getAabb(void *c,float* p0,float* p1,float* p2) {+	::btUniformScalingShape *o = (::btUniformScalingShape*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->getAabb(tp0,tp1,tp2);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: setMargin void ( ::btUniformScalingShape::* )( ::btScalar ) +void btUniformScalingShape_setMargin(void *c,float p0) {+	::btUniformScalingShape *o = (::btUniformScalingShape*)c;+	o->setMargin(p0);+}+//method: getMargin ::btScalar ( ::btUniformScalingShape::* )(  ) const+float btUniformScalingShape_getMargin(void *c) {+	::btUniformScalingShape *o = (::btUniformScalingShape*)c;+	float retVal = (float)o->getMargin();+	return retVal;+}+//method: localGetSupportingVertexWithoutMargin ::btVector3 ( ::btUniformScalingShape::* )( ::btVector3 const & ) const+void btUniformScalingShape_localGetSupportingVertexWithoutMargin(void *c,float* p0,float* ret) {+	::btUniformScalingShape *o = (::btUniformScalingShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->localGetSupportingVertexWithoutMargin(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}++// ::BT_BOX_BOX_TRANSFORM_CACHE+//constructor: BT_BOX_BOX_TRANSFORM_CACHE  ( ::BT_BOX_BOX_TRANSFORM_CACHE::* )(  ) +void* bT_BOX_BOX_TRANSFORM_CACHE_new() {+	::BT_BOX_BOX_TRANSFORM_CACHE *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::BT_BOX_BOX_TRANSFORM_CACHE),16);+	o = new (mem)::BT_BOX_BOX_TRANSFORM_CACHE();+	return (void*)o;+}+void bT_BOX_BOX_TRANSFORM_CACHE_free(void *c) {+	::BT_BOX_BOX_TRANSFORM_CACHE *o = (::BT_BOX_BOX_TRANSFORM_CACHE*)c;+	delete o;+}+//method: calc_from_full_invert void ( ::BT_BOX_BOX_TRANSFORM_CACHE::* )( ::btTransform const &,::btTransform const & ) +void bT_BOX_BOX_TRANSFORM_CACHE_calc_from_full_invert(void *c,float* p0,float* p1) {+	::BT_BOX_BOX_TRANSFORM_CACHE *o = (::BT_BOX_BOX_TRANSFORM_CACHE*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	o->calc_from_full_invert(tp0,tp1);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+}+//method: calc_from_homogenic void ( ::BT_BOX_BOX_TRANSFORM_CACHE::* )( ::btTransform const &,::btTransform const & ) +void bT_BOX_BOX_TRANSFORM_CACHE_calc_from_homogenic(void *c,float* p0,float* p1) {+	::BT_BOX_BOX_TRANSFORM_CACHE *o = (::BT_BOX_BOX_TRANSFORM_CACHE*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	o->calc_from_homogenic(tp0,tp1);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+}+//method: transform ::btVector3 ( ::BT_BOX_BOX_TRANSFORM_CACHE::* )( ::btVector3 const & ) const+void bT_BOX_BOX_TRANSFORM_CACHE_transform(void *c,float* p0,float* ret) {+	::BT_BOX_BOX_TRANSFORM_CACHE *o = (::BT_BOX_BOX_TRANSFORM_CACHE*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->transform(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: calc_absolute_matrix void ( ::BT_BOX_BOX_TRANSFORM_CACHE::* )(  ) +void bT_BOX_BOX_TRANSFORM_CACHE_calc_absolute_matrix(void *c) {+	::BT_BOX_BOX_TRANSFORM_CACHE *o = (::BT_BOX_BOX_TRANSFORM_CACHE*)c;+	o->calc_absolute_matrix();+}+//attribute: ::btVector3 bT_BOX_BOX_TRANSFORM_CACHE->m_T1to0+void bT_BOX_BOX_TRANSFORM_CACHE_m_T1to0_set(void *c,float* a) {+	::BT_BOX_BOX_TRANSFORM_CACHE *o = (::BT_BOX_BOX_TRANSFORM_CACHE*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_T1to0 = ta;+}+void bT_BOX_BOX_TRANSFORM_CACHE_m_T1to0_get(void *c,float* a) {+	::BT_BOX_BOX_TRANSFORM_CACHE *o = (::BT_BOX_BOX_TRANSFORM_CACHE*)c;+	a[0]=(o->m_T1to0).m_floats[0];a[1]=(o->m_T1to0).m_floats[1];a[2]=(o->m_T1to0).m_floats[2];+}++//attribute: ::btMatrix3x3 bT_BOX_BOX_TRANSFORM_CACHE->m_R1to0+void bT_BOX_BOX_TRANSFORM_CACHE_m_R1to0_set(void *c,float* a) {+	::BT_BOX_BOX_TRANSFORM_CACHE *o = (::BT_BOX_BOX_TRANSFORM_CACHE*)c;+	btMatrix3x3 ta(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]);+	o->m_R1to0 = ta;+}+void bT_BOX_BOX_TRANSFORM_CACHE_m_R1to0_get(void *c,float* a) {+	::BT_BOX_BOX_TRANSFORM_CACHE *o = (::BT_BOX_BOX_TRANSFORM_CACHE*)c;+	a[0]=(o->m_R1to0).getRow(0).m_floats[0];a[1]=(o->m_R1to0).getRow(0).m_floats[1];a[2]=(o->m_R1to0).getRow(0).m_floats[2];a[3]=(o->m_R1to0).getRow(1).m_floats[0];a[4]=(o->m_R1to0).getRow(1).m_floats[1];a[5]=(o->m_R1to0).getRow(1).m_floats[2];a[6]=(o->m_R1to0).getRow(2).m_floats[0];a[7]=(o->m_R1to0).getRow(2).m_floats[1];a[8]=(o->m_R1to0).getRow(2).m_floats[2];+}++//attribute: ::btMatrix3x3 bT_BOX_BOX_TRANSFORM_CACHE->m_AR+void bT_BOX_BOX_TRANSFORM_CACHE_m_AR_set(void *c,float* a) {+	::BT_BOX_BOX_TRANSFORM_CACHE *o = (::BT_BOX_BOX_TRANSFORM_CACHE*)c;+	btMatrix3x3 ta(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]);+	o->m_AR = ta;+}+void bT_BOX_BOX_TRANSFORM_CACHE_m_AR_get(void *c,float* a) {+	::BT_BOX_BOX_TRANSFORM_CACHE *o = (::BT_BOX_BOX_TRANSFORM_CACHE*)c;+	a[0]=(o->m_AR).getRow(0).m_floats[0];a[1]=(o->m_AR).getRow(0).m_floats[1];a[2]=(o->m_AR).getRow(0).m_floats[2];a[3]=(o->m_AR).getRow(1).m_floats[0];a[4]=(o->m_AR).getRow(1).m_floats[1];a[5]=(o->m_AR).getRow(1).m_floats[2];a[6]=(o->m_AR).getRow(2).m_floats[0];a[7]=(o->m_AR).getRow(2).m_floats[1];a[8]=(o->m_AR).getRow(2).m_floats[2];+}+++// ::BT_QUANTIZED_BVH_NODE+//constructor: BT_QUANTIZED_BVH_NODE  ( ::BT_QUANTIZED_BVH_NODE::* )(  ) +void* bT_QUANTIZED_BVH_NODE_new() {+	::BT_QUANTIZED_BVH_NODE *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::BT_QUANTIZED_BVH_NODE),16);+	o = new (mem)::BT_QUANTIZED_BVH_NODE();+	return (void*)o;+}+void bT_QUANTIZED_BVH_NODE_free(void *c) {+	::BT_QUANTIZED_BVH_NODE *o = (::BT_QUANTIZED_BVH_NODE*)c;+	delete o;+}+//method: getEscapeIndex int ( ::BT_QUANTIZED_BVH_NODE::* )(  ) const+int bT_QUANTIZED_BVH_NODE_getEscapeIndex(void *c) {+	::BT_QUANTIZED_BVH_NODE *o = (::BT_QUANTIZED_BVH_NODE*)c;+	int retVal = (int)o->getEscapeIndex();+	return retVal;+}+//method: getDataIndex int ( ::BT_QUANTIZED_BVH_NODE::* )(  ) const+int bT_QUANTIZED_BVH_NODE_getDataIndex(void *c) {+	::BT_QUANTIZED_BVH_NODE *o = (::BT_QUANTIZED_BVH_NODE*)c;+	int retVal = (int)o->getDataIndex();+	return retVal;+}+//method: setEscapeIndex void ( ::BT_QUANTIZED_BVH_NODE::* )( int ) +void bT_QUANTIZED_BVH_NODE_setEscapeIndex(void *c,int p0) {+	::BT_QUANTIZED_BVH_NODE *o = (::BT_QUANTIZED_BVH_NODE*)c;+	o->setEscapeIndex(p0);+}+//method: setDataIndex void ( ::BT_QUANTIZED_BVH_NODE::* )( int ) +void bT_QUANTIZED_BVH_NODE_setDataIndex(void *c,int p0) {+	::BT_QUANTIZED_BVH_NODE *o = (::BT_QUANTIZED_BVH_NODE*)c;+	o->setDataIndex(p0);+}+//method: isLeafNode bool ( ::BT_QUANTIZED_BVH_NODE::* )(  ) const+int bT_QUANTIZED_BVH_NODE_isLeafNode(void *c) {+	::BT_QUANTIZED_BVH_NODE *o = (::BT_QUANTIZED_BVH_NODE*)c;+	int retVal = (int)o->isLeafNode();+	return retVal;+}+//not supported method: testQuantizedBoxOverlapp bool ( ::BT_QUANTIZED_BVH_NODE::* )( short unsigned int *,short unsigned int * ) const+//attribute: short unsigned int[3] bT_QUANTIZED_BVH_NODE->m_quantizedAabbMin+// attribute not supported: //attribute: short unsigned int[3] bT_QUANTIZED_BVH_NODE->m_quantizedAabbMin+//attribute: short unsigned int[3] bT_QUANTIZED_BVH_NODE->m_quantizedAabbMax+// attribute not supported: //attribute: short unsigned int[3] bT_QUANTIZED_BVH_NODE->m_quantizedAabbMax+//attribute: int bT_QUANTIZED_BVH_NODE->m_escapeIndexOrDataIndex+void bT_QUANTIZED_BVH_NODE_m_escapeIndexOrDataIndex_set(void *c,int a) {+	::BT_QUANTIZED_BVH_NODE *o = (::BT_QUANTIZED_BVH_NODE*)c;+	o->m_escapeIndexOrDataIndex = a;+}+int bT_QUANTIZED_BVH_NODE_m_escapeIndexOrDataIndex_get(void *c) {+	::BT_QUANTIZED_BVH_NODE *o = (::BT_QUANTIZED_BVH_NODE*)c;+	return (int)(o->m_escapeIndexOrDataIndex);+}+++// ::btGImpactCompoundShape::CompoundPrimitiveManager+//constructor: CompoundPrimitiveManager  ( ::btGImpactCompoundShape::CompoundPrimitiveManager::* )( ::btGImpactCompoundShape * ) +void* btGImpactCompoundShape_CompoundPrimitiveManager_new0(void* p0) {+	::btGImpactCompoundShape::CompoundPrimitiveManager *o = 0;+	 void *mem = 0;+	::btGImpactCompoundShape * tp0 = (::btGImpactCompoundShape *)p0;+	mem = btAlignedAlloc(sizeof(::btGImpactCompoundShape::CompoundPrimitiveManager),16);+	o = new (mem)::btGImpactCompoundShape::CompoundPrimitiveManager(tp0);+	return (void*)o;+}+//constructor: CompoundPrimitiveManager  ( ::btGImpactCompoundShape::CompoundPrimitiveManager::* )(  ) +void* btGImpactCompoundShape_CompoundPrimitiveManager_new1() {+	::btGImpactCompoundShape::CompoundPrimitiveManager *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btGImpactCompoundShape::CompoundPrimitiveManager),16);+	o = new (mem)::btGImpactCompoundShape::CompoundPrimitiveManager();+	return (void*)o;+}+void btGImpactCompoundShape_CompoundPrimitiveManager_free(void *c) {+	::btGImpactCompoundShape::CompoundPrimitiveManager *o = (::btGImpactCompoundShape::CompoundPrimitiveManager*)c;+	delete o;+}+//method: get_primitive_count int ( ::btGImpactCompoundShape::CompoundPrimitiveManager::* )(  ) const+int btGImpactCompoundShape_CompoundPrimitiveManager_get_primitive_count(void *c) {+	::btGImpactCompoundShape::CompoundPrimitiveManager *o = (::btGImpactCompoundShape::CompoundPrimitiveManager*)c;+	int retVal = (int)o->get_primitive_count();+	return retVal;+}+//method: get_primitive_triangle void ( ::btGImpactCompoundShape::CompoundPrimitiveManager::* )( int,::btPrimitiveTriangle & ) const+void btGImpactCompoundShape_CompoundPrimitiveManager_get_primitive_triangle(void *c,int p0,void* p1) {+	::btGImpactCompoundShape::CompoundPrimitiveManager *o = (::btGImpactCompoundShape::CompoundPrimitiveManager*)c;+	::btPrimitiveTriangle & tp1 = *(::btPrimitiveTriangle *)p1;+	o->get_primitive_triangle(p0,tp1);+}+//method: get_primitive_box void ( ::btGImpactCompoundShape::CompoundPrimitiveManager::* )( int,::btAABB & ) const+void btGImpactCompoundShape_CompoundPrimitiveManager_get_primitive_box(void *c,int p0,void* p1) {+	::btGImpactCompoundShape::CompoundPrimitiveManager *o = (::btGImpactCompoundShape::CompoundPrimitiveManager*)c;+	::btAABB & tp1 = *(::btAABB *)p1;+	o->get_primitive_box(p0,tp1);+}+//method: is_trimesh bool ( ::btGImpactCompoundShape::CompoundPrimitiveManager::* )(  ) const+int btGImpactCompoundShape_CompoundPrimitiveManager_is_trimesh(void *c) {+	::btGImpactCompoundShape::CompoundPrimitiveManager *o = (::btGImpactCompoundShape::CompoundPrimitiveManager*)c;+	int retVal = (int)o->is_trimesh();+	return retVal;+}+//attribute: ::btGImpactCompoundShape * btGImpactCompoundShape_CompoundPrimitiveManager->m_compoundShape+void btGImpactCompoundShape_CompoundPrimitiveManager_m_compoundShape_set(void *c,void* a) {+	::btGImpactCompoundShape::CompoundPrimitiveManager *o = (::btGImpactCompoundShape::CompoundPrimitiveManager*)c;+	::btGImpactCompoundShape * ta = (::btGImpactCompoundShape *)a;+	o->m_compoundShape = ta;+}+// attriibute getter not supported: //attribute: ::btGImpactCompoundShape * btGImpactCompoundShape_CompoundPrimitiveManager->m_compoundShape++// ::btGImpactCollisionAlgorithm::CreateFunc+//constructor: CreateFunc  ( ::btGImpactCollisionAlgorithm::CreateFunc::* )(  ) +void* btGImpactCollisionAlgorithm_CreateFunc_new() {+	::btGImpactCollisionAlgorithm::CreateFunc *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btGImpactCollisionAlgorithm::CreateFunc),16);+	o = new (mem)::btGImpactCollisionAlgorithm::CreateFunc();+	return (void*)o;+}+void btGImpactCollisionAlgorithm_CreateFunc_free(void *c) {+	::btGImpactCollisionAlgorithm::CreateFunc *o = (::btGImpactCollisionAlgorithm::CreateFunc*)c;+	delete o;+}+//method: CreateCollisionAlgorithm ::btCollisionAlgorithm * ( ::btGImpactCollisionAlgorithm::CreateFunc::* )( ::btCollisionAlgorithmConstructionInfo &,::btCollisionObject *,::btCollisionObject * ) +void* btGImpactCollisionAlgorithm_CreateFunc_CreateCollisionAlgorithm(void *c,void* p0,void* p1,void* p2) {+	::btGImpactCollisionAlgorithm::CreateFunc *o = (::btGImpactCollisionAlgorithm::CreateFunc*)c;+	::btCollisionAlgorithmConstructionInfo & tp0 = *(::btCollisionAlgorithmConstructionInfo *)p0;+	::btCollisionObject * tp1 = (::btCollisionObject *)p1;+	::btCollisionObject * tp2 = (::btCollisionObject *)p2;+	void* retVal = (void*) o->CreateCollisionAlgorithm(tp0,tp1,tp2);+	return retVal;+}++// ::GIM_BVH_DATA+//constructor: GIM_BVH_DATA  ( ::GIM_BVH_DATA::* )(  ) +void* gIM_BVH_DATA_new() {+	::GIM_BVH_DATA *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::GIM_BVH_DATA),16);+	o = new (mem)::GIM_BVH_DATA();+	return (void*)o;+}+void gIM_BVH_DATA_free(void *c) {+	::GIM_BVH_DATA *o = (::GIM_BVH_DATA*)c;+	delete o;+}+//attribute: ::btAABB gIM_BVH_DATA->m_bound+// attribute not supported: //attribute: ::btAABB gIM_BVH_DATA->m_bound+//attribute: int gIM_BVH_DATA->m_data+void gIM_BVH_DATA_m_data_set(void *c,int a) {+	::GIM_BVH_DATA *o = (::GIM_BVH_DATA*)c;+	o->m_data = a;+}+int gIM_BVH_DATA_m_data_get(void *c) {+	::GIM_BVH_DATA *o = (::GIM_BVH_DATA*)c;+	return (int)(o->m_data);+}+++// ::GIM_BVH_DATA_ARRAY+//constructor: GIM_BVH_DATA_ARRAY  ( ::GIM_BVH_DATA_ARRAY::* )(  ) +void* gIM_BVH_DATA_ARRAY_new() {+	::GIM_BVH_DATA_ARRAY *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::GIM_BVH_DATA_ARRAY),16);+	o = new (mem)::GIM_BVH_DATA_ARRAY();+	return (void*)o;+}+void gIM_BVH_DATA_ARRAY_free(void *c) {+	::GIM_BVH_DATA_ARRAY *o = (::GIM_BVH_DATA_ARRAY*)c;+	delete o;+}++// ::GIM_BVH_TREE_NODE+//constructor: GIM_BVH_TREE_NODE  ( ::GIM_BVH_TREE_NODE::* )(  ) +void* gIM_BVH_TREE_NODE_new() {+	::GIM_BVH_TREE_NODE *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::GIM_BVH_TREE_NODE),16);+	o = new (mem)::GIM_BVH_TREE_NODE();+	return (void*)o;+}+void gIM_BVH_TREE_NODE_free(void *c) {+	::GIM_BVH_TREE_NODE *o = (::GIM_BVH_TREE_NODE*)c;+	delete o;+}+//method: setDataIndex void ( ::GIM_BVH_TREE_NODE::* )( int ) +void gIM_BVH_TREE_NODE_setDataIndex(void *c,int p0) {+	::GIM_BVH_TREE_NODE *o = (::GIM_BVH_TREE_NODE*)c;+	o->setDataIndex(p0);+}+//method: getEscapeIndex int ( ::GIM_BVH_TREE_NODE::* )(  ) const+int gIM_BVH_TREE_NODE_getEscapeIndex(void *c) {+	::GIM_BVH_TREE_NODE *o = (::GIM_BVH_TREE_NODE*)c;+	int retVal = (int)o->getEscapeIndex();+	return retVal;+}+//method: getDataIndex int ( ::GIM_BVH_TREE_NODE::* )(  ) const+int gIM_BVH_TREE_NODE_getDataIndex(void *c) {+	::GIM_BVH_TREE_NODE *o = (::GIM_BVH_TREE_NODE*)c;+	int retVal = (int)o->getDataIndex();+	return retVal;+}+//method: setEscapeIndex void ( ::GIM_BVH_TREE_NODE::* )( int ) +void gIM_BVH_TREE_NODE_setEscapeIndex(void *c,int p0) {+	::GIM_BVH_TREE_NODE *o = (::GIM_BVH_TREE_NODE*)c;+	o->setEscapeIndex(p0);+}+//method: isLeafNode bool ( ::GIM_BVH_TREE_NODE::* )(  ) const+int gIM_BVH_TREE_NODE_isLeafNode(void *c) {+	::GIM_BVH_TREE_NODE *o = (::GIM_BVH_TREE_NODE*)c;+	int retVal = (int)o->isLeafNode();+	return retVal;+}+//attribute: ::btAABB gIM_BVH_TREE_NODE->m_bound+// attribute not supported: //attribute: ::btAABB gIM_BVH_TREE_NODE->m_bound++// ::GIM_BVH_TREE_NODE_ARRAY+//constructor: GIM_BVH_TREE_NODE_ARRAY  ( ::GIM_BVH_TREE_NODE_ARRAY::* )(  ) +void* gIM_BVH_TREE_NODE_ARRAY_new() {+	::GIM_BVH_TREE_NODE_ARRAY *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::GIM_BVH_TREE_NODE_ARRAY),16);+	o = new (mem)::GIM_BVH_TREE_NODE_ARRAY();+	return (void*)o;+}+void gIM_BVH_TREE_NODE_ARRAY_free(void *c) {+	::GIM_BVH_TREE_NODE_ARRAY *o = (::GIM_BVH_TREE_NODE_ARRAY*)c;+	delete o;+}++// ::GIM_PAIR+//constructor: GIM_PAIR  ( ::GIM_PAIR::* )(  ) +void* gIM_PAIR_new0() {+	::GIM_PAIR *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::GIM_PAIR),16);+	o = new (mem)::GIM_PAIR();+	return (void*)o;+}+//constructor: GIM_PAIR  ( ::GIM_PAIR::* )( int,int ) +void* gIM_PAIR_new1(int p0,int p1) {+	::GIM_PAIR *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::GIM_PAIR),16);+	o = new (mem)::GIM_PAIR(p0,p1);+	return (void*)o;+}+void gIM_PAIR_free(void *c) {+	::GIM_PAIR *o = (::GIM_PAIR*)c;+	delete o;+}+//attribute: int gIM_PAIR->m_index1+void gIM_PAIR_m_index1_set(void *c,int a) {+	::GIM_PAIR *o = (::GIM_PAIR*)c;+	o->m_index1 = a;+}+int gIM_PAIR_m_index1_get(void *c) {+	::GIM_PAIR *o = (::GIM_PAIR*)c;+	return (int)(o->m_index1);+}++//attribute: int gIM_PAIR->m_index2+void gIM_PAIR_m_index2_set(void *c,int a) {+	::GIM_PAIR *o = (::GIM_PAIR*)c;+	o->m_index2 = a;+}+int gIM_PAIR_m_index2_get(void *c) {+	::GIM_PAIR *o = (::GIM_PAIR*)c;+	return (int)(o->m_index2);+}+++// ::GIM_QUANTIZED_BVH_NODE_ARRAY+//constructor: GIM_QUANTIZED_BVH_NODE_ARRAY  ( ::GIM_QUANTIZED_BVH_NODE_ARRAY::* )(  ) +void* gIM_QUANTIZED_BVH_NODE_ARRAY_new() {+	::GIM_QUANTIZED_BVH_NODE_ARRAY *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::GIM_QUANTIZED_BVH_NODE_ARRAY),16);+	o = new (mem)::GIM_QUANTIZED_BVH_NODE_ARRAY();+	return (void*)o;+}+void gIM_QUANTIZED_BVH_NODE_ARRAY_free(void *c) {+	::GIM_QUANTIZED_BVH_NODE_ARRAY *o = (::GIM_QUANTIZED_BVH_NODE_ARRAY*)c;+	delete o;+}++// ::GIM_TRIANGLE_CONTACT+//constructor: GIM_TRIANGLE_CONTACT  ( ::GIM_TRIANGLE_CONTACT::* )(  ) +void* gIM_TRIANGLE_CONTACT_new() {+	::GIM_TRIANGLE_CONTACT *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::GIM_TRIANGLE_CONTACT),16);+	o = new (mem)::GIM_TRIANGLE_CONTACT();+	return (void*)o;+}+void gIM_TRIANGLE_CONTACT_free(void *c) {+	::GIM_TRIANGLE_CONTACT *o = (::GIM_TRIANGLE_CONTACT*)c;+	delete o;+}+//not supported method: merge_points void ( ::GIM_TRIANGLE_CONTACT::* )( ::btVector4 const &,::btScalar,::btVector3 const *,int ) +//method: copy_from void ( ::GIM_TRIANGLE_CONTACT::* )( ::GIM_TRIANGLE_CONTACT const & ) +void gIM_TRIANGLE_CONTACT_copy_from(void *c,void* p0) {+	::GIM_TRIANGLE_CONTACT *o = (::GIM_TRIANGLE_CONTACT*)c;+	::GIM_TRIANGLE_CONTACT const & tp0 = *(::GIM_TRIANGLE_CONTACT const *)p0;+	o->copy_from(tp0);+}+//attribute: ::btScalar gIM_TRIANGLE_CONTACT->m_penetration_depth+void gIM_TRIANGLE_CONTACT_m_penetration_depth_set(void *c,float a) {+	::GIM_TRIANGLE_CONTACT *o = (::GIM_TRIANGLE_CONTACT*)c;+	o->m_penetration_depth = a;+}+float gIM_TRIANGLE_CONTACT_m_penetration_depth_get(void *c) {+	::GIM_TRIANGLE_CONTACT *o = (::GIM_TRIANGLE_CONTACT*)c;+	return (float)(o->m_penetration_depth);+}++//attribute: int gIM_TRIANGLE_CONTACT->m_point_count+void gIM_TRIANGLE_CONTACT_m_point_count_set(void *c,int a) {+	::GIM_TRIANGLE_CONTACT *o = (::GIM_TRIANGLE_CONTACT*)c;+	o->m_point_count = a;+}+int gIM_TRIANGLE_CONTACT_m_point_count_get(void *c) {+	::GIM_TRIANGLE_CONTACT *o = (::GIM_TRIANGLE_CONTACT*)c;+	return (int)(o->m_point_count);+}++//attribute: ::btVector3[16] gIM_TRIANGLE_CONTACT->m_points+// attribute not supported: //attribute: ::btVector3[16] gIM_TRIANGLE_CONTACT->m_points+//attribute: ::btVector4 gIM_TRIANGLE_CONTACT->m_separating_normal+void gIM_TRIANGLE_CONTACT_m_separating_normal_set(void *c,float* a) {+	::GIM_TRIANGLE_CONTACT *o = (::GIM_TRIANGLE_CONTACT*)c;+	btVector4 ta(a[0],a[1],a[2],a[3]);+	o->m_separating_normal = ta;+}+void gIM_TRIANGLE_CONTACT_m_separating_normal_get(void *c,float* a) {+	::GIM_TRIANGLE_CONTACT *o = (::GIM_TRIANGLE_CONTACT*)c;+	a[0]=(o->m_separating_normal).getX();a[1]=(o->m_separating_normal).getY();a[2]=(o->m_separating_normal).getZ();a[3]=(o->m_separating_normal).getW();+}+++// ::btGImpactMeshShapePart::TrimeshPrimitiveManager+//constructor: TrimeshPrimitiveManager  ( ::btGImpactMeshShapePart::TrimeshPrimitiveManager::* )(  ) +void* btGImpactMeshShapePart_TrimeshPrimitiveManager_new0() {+	::btGImpactMeshShapePart::TrimeshPrimitiveManager *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btGImpactMeshShapePart::TrimeshPrimitiveManager),16);+	o = new (mem)::btGImpactMeshShapePart::TrimeshPrimitiveManager();+	return (void*)o;+}+//constructor: TrimeshPrimitiveManager  ( ::btGImpactMeshShapePart::TrimeshPrimitiveManager::* )( ::btStridingMeshInterface *,int ) +void* btGImpactMeshShapePart_TrimeshPrimitiveManager_new1(void* p0,int p1) {+	::btGImpactMeshShapePart::TrimeshPrimitiveManager *o = 0;+	 void *mem = 0;+	::btStridingMeshInterface * tp0 = (::btStridingMeshInterface *)p0;+	mem = btAlignedAlloc(sizeof(::btGImpactMeshShapePart::TrimeshPrimitiveManager),16);+	o = new (mem)::btGImpactMeshShapePart::TrimeshPrimitiveManager(tp0,p1);+	return (void*)o;+}+void btGImpactMeshShapePart_TrimeshPrimitiveManager_free(void *c) {+	::btGImpactMeshShapePart::TrimeshPrimitiveManager *o = (::btGImpactMeshShapePart::TrimeshPrimitiveManager*)c;+	delete o;+}+//method: get_vertex_count int ( ::btGImpactMeshShapePart::TrimeshPrimitiveManager::* )(  ) const+int btGImpactMeshShapePart_TrimeshPrimitiveManager_get_vertex_count(void *c) {+	::btGImpactMeshShapePart::TrimeshPrimitiveManager *o = (::btGImpactMeshShapePart::TrimeshPrimitiveManager*)c;+	int retVal = (int)o->get_vertex_count();+	return retVal;+}+//method: get_vertex void ( ::btGImpactMeshShapePart::TrimeshPrimitiveManager::* )( int,::btVector3 & ) const+void btGImpactMeshShapePart_TrimeshPrimitiveManager_get_vertex(void *c,int p0,float* p1) {+	::btGImpactMeshShapePart::TrimeshPrimitiveManager *o = (::btGImpactMeshShapePart::TrimeshPrimitiveManager*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->get_vertex(p0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: is_trimesh bool ( ::btGImpactMeshShapePart::TrimeshPrimitiveManager::* )(  ) const+int btGImpactMeshShapePart_TrimeshPrimitiveManager_is_trimesh(void *c) {+	::btGImpactMeshShapePart::TrimeshPrimitiveManager *o = (::btGImpactMeshShapePart::TrimeshPrimitiveManager*)c;+	int retVal = (int)o->is_trimesh();+	return retVal;+}+//method: lock void ( ::btGImpactMeshShapePart::TrimeshPrimitiveManager::* )(  ) +void btGImpactMeshShapePart_TrimeshPrimitiveManager_lock(void *c) {+	::btGImpactMeshShapePart::TrimeshPrimitiveManager *o = (::btGImpactMeshShapePart::TrimeshPrimitiveManager*)c;+	o->lock();+}+//method: get_primitive_box void ( ::btGImpactMeshShapePart::TrimeshPrimitiveManager::* )( int,::btAABB & ) const+void btGImpactMeshShapePart_TrimeshPrimitiveManager_get_primitive_box(void *c,int p0,void* p1) {+	::btGImpactMeshShapePart::TrimeshPrimitiveManager *o = (::btGImpactMeshShapePart::TrimeshPrimitiveManager*)c;+	::btAABB & tp1 = *(::btAABB *)p1;+	o->get_primitive_box(p0,tp1);+}+//method: get_primitive_triangle void ( ::btGImpactMeshShapePart::TrimeshPrimitiveManager::* )( int,::btPrimitiveTriangle & ) const+void btGImpactMeshShapePart_TrimeshPrimitiveManager_get_primitive_triangle(void *c,int p0,void* p1) {+	::btGImpactMeshShapePart::TrimeshPrimitiveManager *o = (::btGImpactMeshShapePart::TrimeshPrimitiveManager*)c;+	::btPrimitiveTriangle & tp1 = *(::btPrimitiveTriangle *)p1;+	o->get_primitive_triangle(p0,tp1);+}+//method: unlock void ( ::btGImpactMeshShapePart::TrimeshPrimitiveManager::* )(  ) +void btGImpactMeshShapePart_TrimeshPrimitiveManager_unlock(void *c) {+	::btGImpactMeshShapePart::TrimeshPrimitiveManager *o = (::btGImpactMeshShapePart::TrimeshPrimitiveManager*)c;+	o->unlock();+}+//method: get_bullet_triangle void ( ::btGImpactMeshShapePart::TrimeshPrimitiveManager::* )( int,::btTriangleShapeEx & ) const+void btGImpactMeshShapePart_TrimeshPrimitiveManager_get_bullet_triangle(void *c,int p0,void* p1) {+	::btGImpactMeshShapePart::TrimeshPrimitiveManager *o = (::btGImpactMeshShapePart::TrimeshPrimitiveManager*)c;+	::btTriangleShapeEx & tp1 = *(::btTriangleShapeEx *)p1;+	o->get_bullet_triangle(p0,tp1);+}+//method: get_primitive_count int ( ::btGImpactMeshShapePart::TrimeshPrimitiveManager::* )(  ) const+int btGImpactMeshShapePart_TrimeshPrimitiveManager_get_primitive_count(void *c) {+	::btGImpactMeshShapePart::TrimeshPrimitiveManager *o = (::btGImpactMeshShapePart::TrimeshPrimitiveManager*)c;+	int retVal = (int)o->get_primitive_count();+	return retVal;+}+//not supported method: get_indices void ( ::btGImpactMeshShapePart::TrimeshPrimitiveManager::* )( int,int &,int &,int & ) const+//attribute: ::btScalar btGImpactMeshShapePart_TrimeshPrimitiveManager->m_margin+void btGImpactMeshShapePart_TrimeshPrimitiveManager_m_margin_set(void *c,float a) {+	::btGImpactMeshShapePart::TrimeshPrimitiveManager *o = (::btGImpactMeshShapePart::TrimeshPrimitiveManager*)c;+	o->m_margin = a;+}+float btGImpactMeshShapePart_TrimeshPrimitiveManager_m_margin_get(void *c) {+	::btGImpactMeshShapePart::TrimeshPrimitiveManager *o = (::btGImpactMeshShapePart::TrimeshPrimitiveManager*)c;+	return (float)(o->m_margin);+}++//attribute: ::btStridingMeshInterface * btGImpactMeshShapePart_TrimeshPrimitiveManager->m_meshInterface+void btGImpactMeshShapePart_TrimeshPrimitiveManager_m_meshInterface_set(void *c,void* a) {+	::btGImpactMeshShapePart::TrimeshPrimitiveManager *o = (::btGImpactMeshShapePart::TrimeshPrimitiveManager*)c;+	::btStridingMeshInterface * ta = (::btStridingMeshInterface *)a;+	o->m_meshInterface = ta;+}+// attriibute getter not supported: //attribute: ::btStridingMeshInterface * btGImpactMeshShapePart_TrimeshPrimitiveManager->m_meshInterface+//attribute: ::btVector3 btGImpactMeshShapePart_TrimeshPrimitiveManager->m_scale+void btGImpactMeshShapePart_TrimeshPrimitiveManager_m_scale_set(void *c,float* a) {+	::btGImpactMeshShapePart::TrimeshPrimitiveManager *o = (::btGImpactMeshShapePart::TrimeshPrimitiveManager*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_scale = ta;+}+void btGImpactMeshShapePart_TrimeshPrimitiveManager_m_scale_get(void *c,float* a) {+	::btGImpactMeshShapePart::TrimeshPrimitiveManager *o = (::btGImpactMeshShapePart::TrimeshPrimitiveManager*)c;+	a[0]=(o->m_scale).m_floats[0];a[1]=(o->m_scale).m_floats[1];a[2]=(o->m_scale).m_floats[2];+}++//attribute: int btGImpactMeshShapePart_TrimeshPrimitiveManager->m_part+void btGImpactMeshShapePart_TrimeshPrimitiveManager_m_part_set(void *c,int a) {+	::btGImpactMeshShapePart::TrimeshPrimitiveManager *o = (::btGImpactMeshShapePart::TrimeshPrimitiveManager*)c;+	o->m_part = a;+}+int btGImpactMeshShapePart_TrimeshPrimitiveManager_m_part_get(void *c) {+	::btGImpactMeshShapePart::TrimeshPrimitiveManager *o = (::btGImpactMeshShapePart::TrimeshPrimitiveManager*)c;+	return (int)(o->m_part);+}++//attribute: int btGImpactMeshShapePart_TrimeshPrimitiveManager->m_lock_count+void btGImpactMeshShapePart_TrimeshPrimitiveManager_m_lock_count_set(void *c,int a) {+	::btGImpactMeshShapePart::TrimeshPrimitiveManager *o = (::btGImpactMeshShapePart::TrimeshPrimitiveManager*)c;+	o->m_lock_count = a;+}+int btGImpactMeshShapePart_TrimeshPrimitiveManager_m_lock_count_get(void *c) {+	::btGImpactMeshShapePart::TrimeshPrimitiveManager *o = (::btGImpactMeshShapePart::TrimeshPrimitiveManager*)c;+	return (int)(o->m_lock_count);+}++//attribute: unsigned char const * btGImpactMeshShapePart_TrimeshPrimitiveManager->vertexbase+// attribute not supported: //attribute: unsigned char const * btGImpactMeshShapePart_TrimeshPrimitiveManager->vertexbase+//attribute: int btGImpactMeshShapePart_TrimeshPrimitiveManager->numverts+void btGImpactMeshShapePart_TrimeshPrimitiveManager_numverts_set(void *c,int a) {+	::btGImpactMeshShapePart::TrimeshPrimitiveManager *o = (::btGImpactMeshShapePart::TrimeshPrimitiveManager*)c;+	o->numverts = a;+}+int btGImpactMeshShapePart_TrimeshPrimitiveManager_numverts_get(void *c) {+	::btGImpactMeshShapePart::TrimeshPrimitiveManager *o = (::btGImpactMeshShapePart::TrimeshPrimitiveManager*)c;+	return (int)(o->numverts);+}++//attribute: ::PHY_ScalarType btGImpactMeshShapePart_TrimeshPrimitiveManager->type+// attribute not supported: //attribute: ::PHY_ScalarType btGImpactMeshShapePart_TrimeshPrimitiveManager->type+//attribute: int btGImpactMeshShapePart_TrimeshPrimitiveManager->stride+void btGImpactMeshShapePart_TrimeshPrimitiveManager_stride_set(void *c,int a) {+	::btGImpactMeshShapePart::TrimeshPrimitiveManager *o = (::btGImpactMeshShapePart::TrimeshPrimitiveManager*)c;+	o->stride = a;+}+int btGImpactMeshShapePart_TrimeshPrimitiveManager_stride_get(void *c) {+	::btGImpactMeshShapePart::TrimeshPrimitiveManager *o = (::btGImpactMeshShapePart::TrimeshPrimitiveManager*)c;+	return (int)(o->stride);+}++//attribute: unsigned char const * btGImpactMeshShapePart_TrimeshPrimitiveManager->indexbase+// attribute not supported: //attribute: unsigned char const * btGImpactMeshShapePart_TrimeshPrimitiveManager->indexbase+//attribute: int btGImpactMeshShapePart_TrimeshPrimitiveManager->indexstride+void btGImpactMeshShapePart_TrimeshPrimitiveManager_indexstride_set(void *c,int a) {+	::btGImpactMeshShapePart::TrimeshPrimitiveManager *o = (::btGImpactMeshShapePart::TrimeshPrimitiveManager*)c;+	o->indexstride = a;+}+int btGImpactMeshShapePart_TrimeshPrimitiveManager_indexstride_get(void *c) {+	::btGImpactMeshShapePart::TrimeshPrimitiveManager *o = (::btGImpactMeshShapePart::TrimeshPrimitiveManager*)c;+	return (int)(o->indexstride);+}++//attribute: int btGImpactMeshShapePart_TrimeshPrimitiveManager->numfaces+void btGImpactMeshShapePart_TrimeshPrimitiveManager_numfaces_set(void *c,int a) {+	::btGImpactMeshShapePart::TrimeshPrimitiveManager *o = (::btGImpactMeshShapePart::TrimeshPrimitiveManager*)c;+	o->numfaces = a;+}+int btGImpactMeshShapePart_TrimeshPrimitiveManager_numfaces_get(void *c) {+	::btGImpactMeshShapePart::TrimeshPrimitiveManager *o = (::btGImpactMeshShapePart::TrimeshPrimitiveManager*)c;+	return (int)(o->numfaces);+}++//attribute: ::PHY_ScalarType btGImpactMeshShapePart_TrimeshPrimitiveManager->indicestype+// attribute not supported: //attribute: ::PHY_ScalarType btGImpactMeshShapePart_TrimeshPrimitiveManager->indicestype++// ::btAABB+//constructor: btAABB  ( ::btAABB::* )(  ) +void* btAABB_new0() {+	::btAABB *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btAABB),16);+	o = new (mem)::btAABB();+	return (void*)o;+}+//constructor: btAABB  ( ::btAABB::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void* btAABB_new1(float* p0,float* p1,float* p2) {+	::btAABB *o = 0;+	 void *mem = 0;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	mem = btAlignedAlloc(sizeof(::btAABB),16);+	o = new (mem)::btAABB(tp0,tp1,tp2);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	return (void*)o;+}+//constructor: btAABB  ( ::btAABB::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btScalar ) +void* btAABB_new2(float* p0,float* p1,float* p2,float p3) {+	::btAABB *o = 0;+	 void *mem = 0;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	mem = btAlignedAlloc(sizeof(::btAABB),16);+	o = new (mem)::btAABB(tp0,tp1,tp2,p3);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	return (void*)o;+}+//constructor: btAABB  ( ::btAABB::* )( ::btAABB const &,::btScalar ) +void* btAABB_new3(void* p0,float p1) {+	::btAABB *o = 0;+	 void *mem = 0;+	::btAABB const & tp0 = *(::btAABB const *)p0;+	mem = btAlignedAlloc(sizeof(::btAABB),16);+	o = new (mem)::btAABB(tp0,p1);+	return (void*)o;+}+void btAABB_free(void *c) {+	::btAABB *o = (::btAABB*)c;+	delete o;+}+//method: overlapping_trans_conservative bool ( ::btAABB::* )( ::btAABB const &,::btTransform & ) const+int btAABB_overlapping_trans_conservative(void *c,void* p0,float* p1) {+	::btAABB *o = (::btAABB*)c;+	::btAABB const & tp0 = *(::btAABB const *)p0;+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	int retVal = (int)o->overlapping_trans_conservative(tp0,tp1);+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+	return retVal;+}+//method: appy_transform void ( ::btAABB::* )( ::btTransform const & ) +void btAABB_appy_transform(void *c,float* p0) {+	::btAABB *o = (::btAABB*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	o->appy_transform(tp0);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+}+//method: find_intersection void ( ::btAABB::* )( ::btAABB const &,::btAABB & ) const+void btAABB_find_intersection(void *c,void* p0,void* p1) {+	::btAABB *o = (::btAABB*)c;+	::btAABB const & tp0 = *(::btAABB const *)p0;+	::btAABB & tp1 = *(::btAABB *)p1;+	o->find_intersection(tp0,tp1);+}+//method: collide_ray bool ( ::btAABB::* )( ::btVector3 const &,::btVector3 const & ) const+int btAABB_collide_ray(void *c,float* p0,float* p1) {+	::btAABB *o = (::btAABB*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	int retVal = (int)o->collide_ray(tp0,tp1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	return retVal;+}+//method: overlapping_trans_cache bool ( ::btAABB::* )( ::btAABB const &,::BT_BOX_BOX_TRANSFORM_CACHE const &,bool ) const+int btAABB_overlapping_trans_cache(void *c,void* p0,void* p1,int p2) {+	::btAABB *o = (::btAABB*)c;+	::btAABB const & tp0 = *(::btAABB const *)p0;+	::BT_BOX_BOX_TRANSFORM_CACHE const & tp1 = *(::BT_BOX_BOX_TRANSFORM_CACHE const *)p1;+	int retVal = (int)o->overlapping_trans_cache(tp0,tp1,p2);+	return retVal;+}+//method: get_center_extend void ( ::btAABB::* )( ::btVector3 &,::btVector3 & ) const+void btAABB_get_center_extend(void *c,float* p0,float* p1) {+	::btAABB *o = (::btAABB*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->get_center_extend(tp0,tp1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: invalidate void ( ::btAABB::* )(  ) +void btAABB_invalidate(void *c) {+	::btAABB *o = (::btAABB*)c;+	o->invalidate();+}+//method: has_collision bool ( ::btAABB::* )( ::btAABB const & ) const+int btAABB_has_collision(void *c,void* p0) {+	::btAABB *o = (::btAABB*)c;+	::btAABB const & tp0 = *(::btAABB const *)p0;+	int retVal = (int)o->has_collision(tp0);+	return retVal;+}+//not supported method: projection_interval void ( ::btAABB::* )( ::btVector3 const &,::btScalar &,::btScalar & ) const+//method: appy_transform_trans_cache void ( ::btAABB::* )( ::BT_BOX_BOX_TRANSFORM_CACHE const & ) +void btAABB_appy_transform_trans_cache(void *c,void* p0) {+	::btAABB *o = (::btAABB*)c;+	::BT_BOX_BOX_TRANSFORM_CACHE const & tp0 = *(::BT_BOX_BOX_TRANSFORM_CACHE const *)p0;+	o->appy_transform_trans_cache(tp0);+}+//method: calc_from_triangle_margin void ( ::btAABB::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btScalar ) +void btAABB_calc_from_triangle_margin(void *c,float* p0,float* p1,float* p2,float p3) {+	::btAABB *o = (::btAABB*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->calc_from_triangle_margin(tp0,tp1,tp2,p3);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: increment_margin void ( ::btAABB::* )( ::btScalar ) +void btAABB_increment_margin(void *c,float p0) {+	::btAABB *o = (::btAABB*)c;+	o->increment_margin(p0);+}+//method: merge void ( ::btAABB::* )( ::btAABB const & ) +void btAABB_merge(void *c,void* p0) {+	::btAABB *o = (::btAABB*)c;+	::btAABB const & tp0 = *(::btAABB const *)p0;+	o->merge(tp0);+}+//method: collide_plane bool ( ::btAABB::* )( ::btVector4 const & ) const+int btAABB_collide_plane(void *c,float* p0) {+	::btAABB *o = (::btAABB*)c;+	btVector4 tp0(p0[0],p0[1],p0[2],p0[3]);+	int retVal = (int)o->collide_plane(tp0);+	p0[0]=tp0.getX();p0[1]=tp0.getY();p0[2]=tp0.getZ();p0[3]=tp0.getW();+	return retVal;+}+//not supported method: plane_classify ::eBT_PLANE_INTERSECTION_TYPE ( ::btAABB::* )( ::btVector4 const & ) const+//method: overlapping_trans_conservative2 bool ( ::btAABB::* )( ::btAABB const &,::BT_BOX_BOX_TRANSFORM_CACHE const & ) const+int btAABB_overlapping_trans_conservative2(void *c,void* p0,void* p1) {+	::btAABB *o = (::btAABB*)c;+	::btAABB const & tp0 = *(::btAABB const *)p0;+	::BT_BOX_BOX_TRANSFORM_CACHE const & tp1 = *(::BT_BOX_BOX_TRANSFORM_CACHE const *)p1;+	int retVal = (int)o->overlapping_trans_conservative2(tp0,tp1);+	return retVal;+}+//method: copy_with_margin void ( ::btAABB::* )( ::btAABB const &,::btScalar ) +void btAABB_copy_with_margin(void *c,void* p0,float p1) {+	::btAABB *o = (::btAABB*)c;+	::btAABB const & tp0 = *(::btAABB const *)p0;+	o->copy_with_margin(tp0,p1);+}+//method: collide_triangle_exact bool ( ::btAABB::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector4 const & ) const+int btAABB_collide_triangle_exact(void *c,float* p0,float* p1,float* p2,float* p3) {+	::btAABB *o = (::btAABB*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	btVector4 tp3(p3[0],p3[1],p3[2],p3[3]);+	int retVal = (int)o->collide_triangle_exact(tp0,tp1,tp2,tp3);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	p3[0]=tp3.getX();p3[1]=tp3.getY();p3[2]=tp3.getZ();p3[3]=tp3.getW();+	return retVal;+}+//attribute: ::btVector3 btAABB->m_max+void btAABB_m_max_set(void *c,float* a) {+	::btAABB *o = (::btAABB*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_max = ta;+}+void btAABB_m_max_get(void *c,float* a) {+	::btAABB *o = (::btAABB*)c;+	a[0]=(o->m_max).m_floats[0];a[1]=(o->m_max).m_floats[1];a[2]=(o->m_max).m_floats[2];+}++//attribute: ::btVector3 btAABB->m_min+void btAABB_m_min_set(void *c,float* a) {+	::btAABB *o = (::btAABB*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_min = ta;+}+void btAABB_m_min_get(void *c,float* a) {+	::btAABB *o = (::btAABB*)c;+	a[0]=(o->m_min).m_floats[0];a[1]=(o->m_min).m_floats[1];a[2]=(o->m_min).m_floats[2];+}+++// ::btBvhTree+//constructor: btBvhTree  ( ::btBvhTree::* )(  ) +void* btBvhTree_new() {+	::btBvhTree *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btBvhTree),16);+	o = new (mem)::btBvhTree();+	return (void*)o;+}+void btBvhTree_free(void *c) {+	::btBvhTree *o = (::btBvhTree*)c;+	delete o;+}+//method: getNodeCount int ( ::btBvhTree::* )(  ) const+int btBvhTree_getNodeCount(void *c) {+	::btBvhTree *o = (::btBvhTree*)c;+	int retVal = (int)o->getNodeCount();+	return retVal;+}+//method: build_tree void ( ::btBvhTree::* )( ::GIM_BVH_DATA_ARRAY & ) +void btBvhTree_build_tree(void *c,void* p0) {+	::btBvhTree *o = (::btBvhTree*)c;+	::GIM_BVH_DATA_ARRAY & tp0 = *(::GIM_BVH_DATA_ARRAY *)p0;+	o->build_tree(tp0);+}+//method: setNodeBound void ( ::btBvhTree::* )( int,::btAABB const & ) +void btBvhTree_setNodeBound(void *c,int p0,void* p1) {+	::btBvhTree *o = (::btBvhTree*)c;+	::btAABB const & tp1 = *(::btAABB const *)p1;+	o->setNodeBound(p0,tp1);+}+//method: getLeftNode int ( ::btBvhTree::* )( int ) const+int btBvhTree_getLeftNode(void *c,int p0) {+	::btBvhTree *o = (::btBvhTree*)c;+	int retVal = (int)o->getLeftNode(p0);+	return retVal;+}+//method: getRightNode int ( ::btBvhTree::* )( int ) const+int btBvhTree_getRightNode(void *c,int p0) {+	::btBvhTree *o = (::btBvhTree*)c;+	int retVal = (int)o->getRightNode(p0);+	return retVal;+}+//method: clearNodes void ( ::btBvhTree::* )(  ) +void btBvhTree_clearNodes(void *c) {+	::btBvhTree *o = (::btBvhTree*)c;+	o->clearNodes();+}+//method: getEscapeNodeIndex int ( ::btBvhTree::* )( int ) const+int btBvhTree_getEscapeNodeIndex(void *c,int p0) {+	::btBvhTree *o = (::btBvhTree*)c;+	int retVal = (int)o->getEscapeNodeIndex(p0);+	return retVal;+}+//method: isLeafNode bool ( ::btBvhTree::* )( int ) const+int btBvhTree_isLeafNode(void *c,int p0) {+	::btBvhTree *o = (::btBvhTree*)c;+	int retVal = (int)o->isLeafNode(p0);+	return retVal;+}+//method: get_node_pointer ::GIM_BVH_TREE_NODE const * ( ::btBvhTree::* )( int ) const+void* btBvhTree_get_node_pointer(void *c,int p0) {+	::btBvhTree *o = (::btBvhTree*)c;+	void* retVal = (void*) o->get_node_pointer(p0);+	return retVal;+}+//method: getNodeData int ( ::btBvhTree::* )( int ) const+int btBvhTree_getNodeData(void *c,int p0) {+	::btBvhTree *o = (::btBvhTree*)c;+	int retVal = (int)o->getNodeData(p0);+	return retVal;+}+//method: getNodeBound void ( ::btBvhTree::* )( int,::btAABB & ) const+void btBvhTree_getNodeBound(void *c,int p0,void* p1) {+	::btBvhTree *o = (::btBvhTree*)c;+	::btAABB & tp1 = *(::btAABB *)p1;+	o->getNodeBound(p0,tp1);+}++// ::btGImpactBvh+//constructor: btGImpactBvh  ( ::btGImpactBvh::* )(  ) +void* btGImpactBvh_new0() {+	::btGImpactBvh *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btGImpactBvh),16);+	o = new (mem)::btGImpactBvh();+	return (void*)o;+}+//constructor: btGImpactBvh  ( ::btGImpactBvh::* )( ::btPrimitiveManagerBase * ) +void* btGImpactBvh_new1(void* p0) {+	::btGImpactBvh *o = 0;+	 void *mem = 0;+	::btPrimitiveManagerBase * tp0 = (::btPrimitiveManagerBase *)p0;+	mem = btAlignedAlloc(sizeof(::btGImpactBvh),16);+	o = new (mem)::btGImpactBvh(tp0);+	return (void*)o;+}+void btGImpactBvh_free(void *c) {+	::btGImpactBvh *o = (::btGImpactBvh*)c;+	delete o;+}+//method: getNodeCount int ( ::btGImpactBvh::* )(  ) const+int btGImpactBvh_getNodeCount(void *c) {+	::btGImpactBvh *o = (::btGImpactBvh*)c;+	int retVal = (int)o->getNodeCount();+	return retVal;+}+//method: find_collision void (*)( ::btGImpactBvh *,::btTransform const &,::btGImpactBvh *,::btTransform const &,::btPairSet & )+void btGImpactBvh_find_collision(void* p0,float* p1,void* p2,float* p3,void* p4) {+	::btGImpactBvh * tp0 = (::btGImpactBvh *)p0;+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	::btGImpactBvh * tp2 = (::btGImpactBvh *)p2;+	btMatrix3x3 mtp3(p3[0],p3[1],p3[2],p3[3],p3[4],p3[5],p3[6],p3[7],p3[8]);+	btVector3 vtp3(p3[9],p3[10],p3[11]);+	btTransform tp3(mtp3,vtp3);+	::btPairSet & tp4 = *(::btPairSet *)p4;+	::btGImpactBvh::find_collision(tp0,tp1,tp2,tp3,tp4);+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+	p3[0]=tp3.getBasis().getRow(0).m_floats[0];p3[1]=tp3.getBasis().getRow(0).m_floats[1];p3[2]=tp3.getBasis().getRow(0).m_floats[2];p3[3]=tp3.getBasis().getRow(1).m_floats[0];p3[4]=tp3.getBasis().getRow(1).m_floats[1];p3[5]=tp3.getBasis().getRow(1).m_floats[2];p3[6]=tp3.getBasis().getRow(2).m_floats[0];p3[7]=tp3.getBasis().getRow(2).m_floats[1];p3[8]=tp3.getBasis().getRow(2).m_floats[2];+	p3[9]=tp3.getOrigin().m_floats[0];p3[10]=tp3.getOrigin().m_floats[1];p3[11]=tp3.getOrigin().m_floats[2];+}+//method: getNodeTriangle void ( ::btGImpactBvh::* )( int,::btPrimitiveTriangle & ) const+void btGImpactBvh_getNodeTriangle(void *c,int p0,void* p1) {+	::btGImpactBvh *o = (::btGImpactBvh*)c;+	::btPrimitiveTriangle & tp1 = *(::btPrimitiveTriangle *)p1;+	o->getNodeTriangle(p0,tp1);+}+//method: hasHierarchy bool ( ::btGImpactBvh::* )(  ) const+int btGImpactBvh_hasHierarchy(void *c) {+	::btGImpactBvh *o = (::btGImpactBvh*)c;+	int retVal = (int)o->hasHierarchy();+	return retVal;+}+//not supported method: rayQuery bool ( ::btGImpactBvh::* )( ::btVector3 const &,::btVector3 const &,::btAlignedObjectArray<int> & ) const+//method: getLeftNode int ( ::btGImpactBvh::* )( int ) const+int btGImpactBvh_getLeftNode(void *c,int p0) {+	::btGImpactBvh *o = (::btGImpactBvh*)c;+	int retVal = (int)o->getLeftNode(p0);+	return retVal;+}+//method: getRightNode int ( ::btGImpactBvh::* )( int ) const+int btGImpactBvh_getRightNode(void *c,int p0) {+	::btGImpactBvh *o = (::btGImpactBvh*)c;+	int retVal = (int)o->getRightNode(p0);+	return retVal;+}+//not supported method: boxQueryTrans bool ( ::btGImpactBvh::* )( ::btAABB const &,::btTransform const &,::btAlignedObjectArray<int> & ) const+//method: update void ( ::btGImpactBvh::* )(  ) +void btGImpactBvh_update(void *c) {+	::btGImpactBvh *o = (::btGImpactBvh*)c;+	o->update();+}+//not supported method: getGlobalBox ::btAABB ( ::btGImpactBvh::* )(  ) const+//method: isTrimesh bool ( ::btGImpactBvh::* )(  ) const+int btGImpactBvh_isTrimesh(void *c) {+	::btGImpactBvh *o = (::btGImpactBvh*)c;+	int retVal = (int)o->isTrimesh();+	return retVal;+}+//method: setNodeBound void ( ::btGImpactBvh::* )( int,::btAABB const & ) +void btGImpactBvh_setNodeBound(void *c,int p0,void* p1) {+	::btGImpactBvh *o = (::btGImpactBvh*)c;+	::btAABB const & tp1 = *(::btAABB const *)p1;+	o->setNodeBound(p0,tp1);+}+//method: setPrimitiveManager void ( ::btGImpactBvh::* )( ::btPrimitiveManagerBase * ) +void btGImpactBvh_setPrimitiveManager(void *c,void* p0) {+	::btGImpactBvh *o = (::btGImpactBvh*)c;+	::btPrimitiveManagerBase * tp0 = (::btPrimitiveManagerBase *)p0;+	o->setPrimitiveManager(tp0);+}+//method: getEscapeNodeIndex int ( ::btGImpactBvh::* )( int ) const+int btGImpactBvh_getEscapeNodeIndex(void *c,int p0) {+	::btGImpactBvh *o = (::btGImpactBvh*)c;+	int retVal = (int)o->getEscapeNodeIndex(p0);+	return retVal;+}+//method: isLeafNode bool ( ::btGImpactBvh::* )( int ) const+int btGImpactBvh_isLeafNode(void *c,int p0) {+	::btGImpactBvh *o = (::btGImpactBvh*)c;+	int retVal = (int)o->isLeafNode(p0);+	return retVal;+}+//method: getPrimitiveManager ::btPrimitiveManagerBase * ( ::btGImpactBvh::* )(  ) const+void* btGImpactBvh_getPrimitiveManager(void *c) {+	::btGImpactBvh *o = (::btGImpactBvh*)c;+	void* retVal = (void*) o->getPrimitiveManager();+	return retVal;+}+//method: buildSet void ( ::btGImpactBvh::* )(  ) +void btGImpactBvh_buildSet(void *c) {+	::btGImpactBvh *o = (::btGImpactBvh*)c;+	o->buildSet();+}+//method: get_node_pointer ::GIM_BVH_TREE_NODE const * ( ::btGImpactBvh::* )( int ) const+void* btGImpactBvh_get_node_pointer(void *c,int p0) {+	::btGImpactBvh *o = (::btGImpactBvh*)c;+	void* retVal = (void*) o->get_node_pointer(p0);+	return retVal;+}+//method: getNodeData int ( ::btGImpactBvh::* )( int ) const+int btGImpactBvh_getNodeData(void *c,int p0) {+	::btGImpactBvh *o = (::btGImpactBvh*)c;+	int retVal = (int)o->getNodeData(p0);+	return retVal;+}+//method: getNodeBound void ( ::btGImpactBvh::* )( int,::btAABB & ) const+void btGImpactBvh_getNodeBound(void *c,int p0,void* p1) {+	::btGImpactBvh *o = (::btGImpactBvh*)c;+	::btAABB & tp1 = *(::btAABB *)p1;+	o->getNodeBound(p0,tp1);+}+//not supported method: boxQuery bool ( ::btGImpactBvh::* )( ::btAABB const &,::btAlignedObjectArray<int> & ) const++// ::btGImpactCollisionAlgorithm+//constructor: btGImpactCollisionAlgorithm  ( ::btGImpactCollisionAlgorithm::* )( ::btCollisionAlgorithmConstructionInfo const &,::btCollisionObject *,::btCollisionObject * ) +void* btGImpactCollisionAlgorithm_new(void* p0,void* p1,void* p2) {+	::btGImpactCollisionAlgorithm *o = 0;+	 void *mem = 0;+	::btCollisionAlgorithmConstructionInfo const & tp0 = *(::btCollisionAlgorithmConstructionInfo const *)p0;+	::btCollisionObject * tp1 = (::btCollisionObject *)p1;+	::btCollisionObject * tp2 = (::btCollisionObject *)p2;+	mem = btAlignedAlloc(sizeof(::btGImpactCollisionAlgorithm),16);+	o = new (mem)::btGImpactCollisionAlgorithm(tp0,tp1,tp2);+	return (void*)o;+}+void btGImpactCollisionAlgorithm_free(void *c) {+	::btGImpactCollisionAlgorithm *o = (::btGImpactCollisionAlgorithm*)c;+	delete o;+}+//method: getPart1 int ( ::btGImpactCollisionAlgorithm::* )(  ) +int btGImpactCollisionAlgorithm_getPart1(void *c) {+	::btGImpactCollisionAlgorithm *o = (::btGImpactCollisionAlgorithm*)c;+	int retVal = (int)o->getPart1();+	return retVal;+}+//method: getPart0 int ( ::btGImpactCollisionAlgorithm::* )(  ) +int btGImpactCollisionAlgorithm_getPart0(void *c) {+	::btGImpactCollisionAlgorithm *o = (::btGImpactCollisionAlgorithm*)c;+	int retVal = (int)o->getPart0();+	return retVal;+}+//method: gimpact_vs_shape void ( ::btGImpactCollisionAlgorithm::* )( ::btCollisionObject *,::btCollisionObject *,::btGImpactShapeInterface *,::btCollisionShape *,bool ) +void btGImpactCollisionAlgorithm_gimpact_vs_shape(void *c,void* p0,void* p1,void* p2,void* p3,int p4) {+	::btGImpactCollisionAlgorithm *o = (::btGImpactCollisionAlgorithm*)c;+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	::btCollisionObject * tp1 = (::btCollisionObject *)p1;+	::btGImpactShapeInterface * tp2 = (::btGImpactShapeInterface *)p2;+	::btCollisionShape * tp3 = (::btCollisionShape *)p3;+	o->gimpact_vs_shape(tp0,tp1,tp2,tp3,p4);+}+//method: getFace1 int ( ::btGImpactCollisionAlgorithm::* )(  ) +int btGImpactCollisionAlgorithm_getFace1(void *c) {+	::btGImpactCollisionAlgorithm *o = (::btGImpactCollisionAlgorithm*)c;+	int retVal = (int)o->getFace1();+	return retVal;+}+//method: gimpact_vs_concave void ( ::btGImpactCollisionAlgorithm::* )( ::btCollisionObject *,::btCollisionObject *,::btGImpactShapeInterface *,::btConcaveShape *,bool ) +void btGImpactCollisionAlgorithm_gimpact_vs_concave(void *c,void* p0,void* p1,void* p2,void* p3,int p4) {+	::btGImpactCollisionAlgorithm *o = (::btGImpactCollisionAlgorithm*)c;+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	::btCollisionObject * tp1 = (::btCollisionObject *)p1;+	::btGImpactShapeInterface * tp2 = (::btGImpactShapeInterface *)p2;+	::btConcaveShape * tp3 = (::btConcaveShape *)p3;+	o->gimpact_vs_concave(tp0,tp1,tp2,tp3,p4);+}+//method: gimpact_vs_compoundshape void ( ::btGImpactCollisionAlgorithm::* )( ::btCollisionObject *,::btCollisionObject *,::btGImpactShapeInterface *,::btCompoundShape *,bool ) +void btGImpactCollisionAlgorithm_gimpact_vs_compoundshape(void *c,void* p0,void* p1,void* p2,void* p3,int p4) {+	::btGImpactCollisionAlgorithm *o = (::btGImpactCollisionAlgorithm*)c;+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	::btCollisionObject * tp1 = (::btCollisionObject *)p1;+	::btGImpactShapeInterface * tp2 = (::btGImpactShapeInterface *)p2;+	::btCompoundShape * tp3 = (::btCompoundShape *)p3;+	o->gimpact_vs_compoundshape(tp0,tp1,tp2,tp3,p4);+}+//method: calculateTimeOfImpact ::btScalar ( ::btGImpactCollisionAlgorithm::* )( ::btCollisionObject *,::btCollisionObject *,::btDispatcherInfo const &,::btManifoldResult * ) +float btGImpactCollisionAlgorithm_calculateTimeOfImpact(void *c,void* p0,void* p1,void* p2,void* p3) {+	::btGImpactCollisionAlgorithm *o = (::btGImpactCollisionAlgorithm*)c;+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	::btCollisionObject * tp1 = (::btCollisionObject *)p1;+	::btDispatcherInfo const & tp2 = *(::btDispatcherInfo const *)p2;+	::btManifoldResult * tp3 = (::btManifoldResult *)p3;+	float retVal = (float)o->calculateTimeOfImpact(tp0,tp1,tp2,tp3);+	return retVal;+}+//method: processCollision void ( ::btGImpactCollisionAlgorithm::* )( ::btCollisionObject *,::btCollisionObject *,::btDispatcherInfo const &,::btManifoldResult * ) +void btGImpactCollisionAlgorithm_processCollision(void *c,void* p0,void* p1,void* p2,void* p3) {+	::btGImpactCollisionAlgorithm *o = (::btGImpactCollisionAlgorithm*)c;+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	::btCollisionObject * tp1 = (::btCollisionObject *)p1;+	::btDispatcherInfo const & tp2 = *(::btDispatcherInfo const *)p2;+	::btManifoldResult * tp3 = (::btManifoldResult *)p3;+	o->processCollision(tp0,tp1,tp2,tp3);+}+//method: setFace1 void ( ::btGImpactCollisionAlgorithm::* )( int ) +void btGImpactCollisionAlgorithm_setFace1(void *c,int p0) {+	::btGImpactCollisionAlgorithm *o = (::btGImpactCollisionAlgorithm*)c;+	o->setFace1(p0);+}+//method: gimpact_vs_gimpact void ( ::btGImpactCollisionAlgorithm::* )( ::btCollisionObject *,::btCollisionObject *,::btGImpactShapeInterface *,::btGImpactShapeInterface * ) +void btGImpactCollisionAlgorithm_gimpact_vs_gimpact(void *c,void* p0,void* p1,void* p2,void* p3) {+	::btGImpactCollisionAlgorithm *o = (::btGImpactCollisionAlgorithm*)c;+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	::btCollisionObject * tp1 = (::btCollisionObject *)p1;+	::btGImpactShapeInterface * tp2 = (::btGImpactShapeInterface *)p2;+	::btGImpactShapeInterface * tp3 = (::btGImpactShapeInterface *)p3;+	o->gimpact_vs_gimpact(tp0,tp1,tp2,tp3);+}+//not supported method: getAllContactManifolds void ( ::btGImpactCollisionAlgorithm::* )( ::btManifoldArray & ) +//method: setFace0 void ( ::btGImpactCollisionAlgorithm::* )( int ) +void btGImpactCollisionAlgorithm_setFace0(void *c,int p0) {+	::btGImpactCollisionAlgorithm *o = (::btGImpactCollisionAlgorithm*)c;+	o->setFace0(p0);+}+//method: setPart1 void ( ::btGImpactCollisionAlgorithm::* )( int ) +void btGImpactCollisionAlgorithm_setPart1(void *c,int p0) {+	::btGImpactCollisionAlgorithm *o = (::btGImpactCollisionAlgorithm*)c;+	o->setPart1(p0);+}+//method: setPart0 void ( ::btGImpactCollisionAlgorithm::* )( int ) +void btGImpactCollisionAlgorithm_setPart0(void *c,int p0) {+	::btGImpactCollisionAlgorithm *o = (::btGImpactCollisionAlgorithm*)c;+	o->setPart0(p0);+}+//method: registerAlgorithm void (*)( ::btCollisionDispatcher * )+void btGImpactCollisionAlgorithm_registerAlgorithm(void* p0) {+	::btCollisionDispatcher * tp0 = (::btCollisionDispatcher *)p0;+	::btGImpactCollisionAlgorithm::registerAlgorithm(tp0);+}+//method: getFace0 int ( ::btGImpactCollisionAlgorithm::* )(  ) +int btGImpactCollisionAlgorithm_getFace0(void *c) {+	::btGImpactCollisionAlgorithm *o = (::btGImpactCollisionAlgorithm*)c;+	int retVal = (int)o->getFace0();+	return retVal;+}++// ::btGImpactCompoundShape+//constructor: btGImpactCompoundShape  ( ::btGImpactCompoundShape::* )( bool ) +void* btGImpactCompoundShape_new(int p0) {+	::btGImpactCompoundShape *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btGImpactCompoundShape),16);+	o = new (mem)::btGImpactCompoundShape(p0);+	return (void*)o;+}+void btGImpactCompoundShape_free(void *c) {+	::btGImpactCompoundShape *o = (::btGImpactCompoundShape*)c;+	delete o;+}+//method: calculateLocalInertia void ( ::btGImpactCompoundShape::* )( ::btScalar,::btVector3 & ) const+void btGImpactCompoundShape_calculateLocalInertia(void *c,float p0,float* p1) {+	::btGImpactCompoundShape *o = (::btGImpactCompoundShape*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->calculateLocalInertia(p0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: addChildShape void ( ::btGImpactCompoundShape::* )( ::btTransform const &,::btCollisionShape * ) +void btGImpactCompoundShape_addChildShape(void *c,float* p0,void* p1) {+	::btGImpactCompoundShape *o = (::btGImpactCompoundShape*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	::btCollisionShape * tp1 = (::btCollisionShape *)p1;+	o->addChildShape(tp0,tp1);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+}+//method: addChildShape void ( ::btGImpactCompoundShape::* )( ::btTransform const &,::btCollisionShape * ) +void btGImpactCompoundShape_addChildShape0(void *c,float* p0,void* p1) {+	::btGImpactCompoundShape *o = (::btGImpactCompoundShape*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	::btCollisionShape * tp1 = (::btCollisionShape *)p1;+	o->addChildShape(tp0,tp1);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+}+//method: addChildShape void ( ::btGImpactCompoundShape::* )( ::btCollisionShape * ) +void btGImpactCompoundShape_addChildShape1(void *c,void* p0) {+	::btGImpactCompoundShape *o = (::btGImpactCompoundShape*)c;+	::btCollisionShape * tp0 = (::btCollisionShape *)p0;+	o->addChildShape(tp0);+}+//method: getCompoundPrimitiveManager ::btGImpactCompoundShape::CompoundPrimitiveManager * ( ::btGImpactCompoundShape::* )(  ) +void* btGImpactCompoundShape_getCompoundPrimitiveManager(void *c) {+	::btGImpactCompoundShape *o = (::btGImpactCompoundShape*)c;+	void* retVal = (void*) o->getCompoundPrimitiveManager();+	return retVal;+}+//method: setChildTransform void ( ::btGImpactCompoundShape::* )( int,::btTransform const & ) +void btGImpactCompoundShape_setChildTransform(void *c,int p0,float* p1) {+	::btGImpactCompoundShape *o = (::btGImpactCompoundShape*)c;+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	o->setChildTransform(p0,tp1);+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+}+//method: getChildTransform ::btTransform ( ::btGImpactCompoundShape::* )( int ) const+void btGImpactCompoundShape_getChildTransform(void *c,int p0,float* ret) {+	::btGImpactCompoundShape *o = (::btGImpactCompoundShape*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getChildTransform(p0);+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: getBulletTetrahedron void ( ::btGImpactCompoundShape::* )( int,::btTetrahedronShapeEx & ) const+void btGImpactCompoundShape_getBulletTetrahedron(void *c,int p0,void* p1) {+	::btGImpactCompoundShape *o = (::btGImpactCompoundShape*)c;+	::btTetrahedronShapeEx & tp1 = *(::btTetrahedronShapeEx *)p1;+	o->getBulletTetrahedron(p0,tp1);+}+//method: getName char const * ( ::btGImpactCompoundShape::* )(  ) const+char const * btGImpactCompoundShape_getName(void *c) {+	::btGImpactCompoundShape *o = (::btGImpactCompoundShape*)c;+	char const * retVal = (char const *)o->getName();+	return retVal;+}+//method: needsRetrieveTetrahedrons bool ( ::btGImpactCompoundShape::* )(  ) const+int btGImpactCompoundShape_needsRetrieveTetrahedrons(void *c) {+	::btGImpactCompoundShape *o = (::btGImpactCompoundShape*)c;+	int retVal = (int)o->needsRetrieveTetrahedrons();+	return retVal;+}+//method: getChildShape ::btCollisionShape * ( ::btGImpactCompoundShape::* )( int ) +void* btGImpactCompoundShape_getChildShape(void *c,int p0) {+	::btGImpactCompoundShape *o = (::btGImpactCompoundShape*)c;+	void* retVal = (void*) o->getChildShape(p0);+	return retVal;+}+//method: getChildShape ::btCollisionShape * ( ::btGImpactCompoundShape::* )( int ) +void* btGImpactCompoundShape_getChildShape0(void *c,int p0) {+	::btGImpactCompoundShape *o = (::btGImpactCompoundShape*)c;+	void* retVal = (void*) o->getChildShape(p0);+	return retVal;+}+//method: getChildShape ::btCollisionShape const * ( ::btGImpactCompoundShape::* )( int ) const+void* btGImpactCompoundShape_getChildShape1(void *c,int p0) {+	::btGImpactCompoundShape *o = (::btGImpactCompoundShape*)c;+	void* retVal = (void*) o->getChildShape(p0);+	return retVal;+}+//method: getBulletTriangle void ( ::btGImpactCompoundShape::* )( int,::btTriangleShapeEx & ) const+void btGImpactCompoundShape_getBulletTriangle(void *c,int p0,void* p1) {+	::btGImpactCompoundShape *o = (::btGImpactCompoundShape*)c;+	::btTriangleShapeEx & tp1 = *(::btTriangleShapeEx *)p1;+	o->getBulletTriangle(p0,tp1);+}+//method: needsRetrieveTriangles bool ( ::btGImpactCompoundShape::* )(  ) const+int btGImpactCompoundShape_needsRetrieveTriangles(void *c) {+	::btGImpactCompoundShape *o = (::btGImpactCompoundShape*)c;+	int retVal = (int)o->needsRetrieveTriangles();+	return retVal;+}+//method: childrenHasTransform bool ( ::btGImpactCompoundShape::* )(  ) const+int btGImpactCompoundShape_childrenHasTransform(void *c) {+	::btGImpactCompoundShape *o = (::btGImpactCompoundShape*)c;+	int retVal = (int)o->childrenHasTransform();+	return retVal;+}+//method: getNumChildShapes int ( ::btGImpactCompoundShape::* )(  ) const+int btGImpactCompoundShape_getNumChildShapes(void *c) {+	::btGImpactCompoundShape *o = (::btGImpactCompoundShape*)c;+	int retVal = (int)o->getNumChildShapes();+	return retVal;+}+//method: getPrimitiveManager ::btPrimitiveManagerBase const * ( ::btGImpactCompoundShape::* )(  ) const+void* btGImpactCompoundShape_getPrimitiveManager(void *c) {+	::btGImpactCompoundShape *o = (::btGImpactCompoundShape*)c;+	void* retVal = (void*) o->getPrimitiveManager();+	return retVal;+}+//method: getChildAabb void ( ::btGImpactCompoundShape::* )( int,::btTransform const &,::btVector3 &,::btVector3 & ) const+void btGImpactCompoundShape_getChildAabb(void *c,int p0,float* p1,float* p2,float* p3) {+	::btGImpactCompoundShape *o = (::btGImpactCompoundShape*)c;+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	o->getChildAabb(p0,tp1,tp2,tp3);+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+}+//not supported method: getGImpactShapeType ::eGIMPACT_SHAPE_TYPE ( ::btGImpactCompoundShape::* )(  ) const++// ::btGImpactMeshShape+//constructor: btGImpactMeshShape  ( ::btGImpactMeshShape::* )( ::btStridingMeshInterface * ) +void* btGImpactMeshShape_new(void* p0) {+	::btGImpactMeshShape *o = 0;+	 void *mem = 0;+	::btStridingMeshInterface * tp0 = (::btStridingMeshInterface *)p0;+	mem = btAlignedAlloc(sizeof(::btGImpactMeshShape),16);+	o = new (mem)::btGImpactMeshShape(tp0);+	return (void*)o;+}+void btGImpactMeshShape_free(void *c) {+	::btGImpactMeshShape *o = (::btGImpactMeshShape*)c;+	delete o;+}+//method: calculateLocalInertia void ( ::btGImpactMeshShape::* )( ::btScalar,::btVector3 & ) const+void btGImpactMeshShape_calculateLocalInertia(void *c,float p0,float* p1) {+	::btGImpactMeshShape *o = (::btGImpactMeshShape*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->calculateLocalInertia(p0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: setLocalScaling void ( ::btGImpactMeshShape::* )( ::btVector3 const & ) +void btGImpactMeshShape_setLocalScaling(void *c,float* p0) {+	::btGImpactMeshShape *o = (::btGImpactMeshShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setLocalScaling(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: setChildTransform void ( ::btGImpactMeshShape::* )( int,::btTransform const & ) +void btGImpactMeshShape_setChildTransform(void *c,int p0,float* p1) {+	::btGImpactMeshShape *o = (::btGImpactMeshShape*)c;+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	o->setChildTransform(p0,tp1);+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+}+//method: getMeshInterface ::btStridingMeshInterface * ( ::btGImpactMeshShape::* )(  ) +void* btGImpactMeshShape_getMeshInterface(void *c) {+	::btGImpactMeshShape *o = (::btGImpactMeshShape*)c;+	void* retVal = (void*) o->getMeshInterface();+	return retVal;+}+//method: getMeshInterface ::btStridingMeshInterface * ( ::btGImpactMeshShape::* )(  ) +void* btGImpactMeshShape_getMeshInterface0(void *c) {+	::btGImpactMeshShape *o = (::btGImpactMeshShape*)c;+	void* retVal = (void*) o->getMeshInterface();+	return retVal;+}+//method: getMeshInterface ::btStridingMeshInterface const * ( ::btGImpactMeshShape::* )(  ) const+void* btGImpactMeshShape_getMeshInterface1(void *c) {+	::btGImpactMeshShape *o = (::btGImpactMeshShape*)c;+	void* retVal = (void*) o->getMeshInterface();+	return retVal;+}+//method: getPrimitiveManager ::btPrimitiveManagerBase const * ( ::btGImpactMeshShape::* )(  ) const+void* btGImpactMeshShape_getPrimitiveManager(void *c) {+	::btGImpactMeshShape *o = (::btGImpactMeshShape*)c;+	void* retVal = (void*) o->getPrimitiveManager();+	return retVal;+}+//method: processAllTriangles void ( ::btGImpactMeshShape::* )( ::btTriangleCallback *,::btVector3 const &,::btVector3 const & ) const+void btGImpactMeshShape_processAllTriangles(void *c,void* p0,float* p1,float* p2) {+	::btGImpactMeshShape *o = (::btGImpactMeshShape*)c;+	::btTriangleCallback * tp0 = (::btTriangleCallback *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->processAllTriangles(tp0,tp1,tp2);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: getMeshPartCount int ( ::btGImpactMeshShape::* )(  ) const+int btGImpactMeshShape_getMeshPartCount(void *c) {+	::btGImpactMeshShape *o = (::btGImpactMeshShape*)c;+	int retVal = (int)o->getMeshPartCount();+	return retVal;+}+//method: calculateSerializeBufferSize int ( ::btGImpactMeshShape::* )(  ) const+int btGImpactMeshShape_calculateSerializeBufferSize(void *c) {+	::btGImpactMeshShape *o = (::btGImpactMeshShape*)c;+	int retVal = (int)o->calculateSerializeBufferSize();+	return retVal;+}+//method: rayTest void ( ::btGImpactMeshShape::* )( ::btVector3 const &,::btVector3 const &,::btCollisionWorld::RayResultCallback & ) const+void btGImpactMeshShape_rayTest(void *c,float* p0,float* p1,void* p2) {+	::btGImpactMeshShape *o = (::btGImpactMeshShape*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	::btCollisionWorld::RayResultCallback & tp2 = *(::btCollisionWorld::RayResultCallback *)p2;+	o->rayTest(tp0,tp1,tp2);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: getName char const * ( ::btGImpactMeshShape::* )(  ) const+char const * btGImpactMeshShape_getName(void *c) {+	::btGImpactMeshShape *o = (::btGImpactMeshShape*)c;+	char const * retVal = (char const *)o->getName();+	return retVal;+}+//method: getBulletTriangle void ( ::btGImpactMeshShape::* )( int,::btTriangleShapeEx & ) const+void btGImpactMeshShape_getBulletTriangle(void *c,int p0,void* p1) {+	::btGImpactMeshShape *o = (::btGImpactMeshShape*)c;+	::btTriangleShapeEx & tp1 = *(::btTriangleShapeEx *)p1;+	o->getBulletTriangle(p0,tp1);+}+//method: getMeshPart ::btGImpactMeshShapePart * ( ::btGImpactMeshShape::* )( int ) +void* btGImpactMeshShape_getMeshPart(void *c,int p0) {+	::btGImpactMeshShape *o = (::btGImpactMeshShape*)c;+	void* retVal = (void*) o->getMeshPart(p0);+	return retVal;+}+//method: getMeshPart ::btGImpactMeshShapePart * ( ::btGImpactMeshShape::* )( int ) +void* btGImpactMeshShape_getMeshPart0(void *c,int p0) {+	::btGImpactMeshShape *o = (::btGImpactMeshShape*)c;+	void* retVal = (void*) o->getMeshPart(p0);+	return retVal;+}+//method: getMeshPart ::btGImpactMeshShapePart const * ( ::btGImpactMeshShape::* )( int ) const+void* btGImpactMeshShape_getMeshPart1(void *c,int p0) {+	::btGImpactMeshShape *o = (::btGImpactMeshShape*)c;+	void* retVal = (void*) o->getMeshPart(p0);+	return retVal;+}+//method: needsRetrieveTriangles bool ( ::btGImpactMeshShape::* )(  ) const+int btGImpactMeshShape_needsRetrieveTriangles(void *c) {+	::btGImpactMeshShape *o = (::btGImpactMeshShape*)c;+	int retVal = (int)o->needsRetrieveTriangles();+	return retVal;+}+//method: childrenHasTransform bool ( ::btGImpactMeshShape::* )(  ) const+int btGImpactMeshShape_childrenHasTransform(void *c) {+	::btGImpactMeshShape *o = (::btGImpactMeshShape*)c;+	int retVal = (int)o->childrenHasTransform();+	return retVal;+}+//method: getChildShape ::btCollisionShape * ( ::btGImpactMeshShape::* )( int ) +void* btGImpactMeshShape_getChildShape(void *c,int p0) {+	::btGImpactMeshShape *o = (::btGImpactMeshShape*)c;+	void* retVal = (void*) o->getChildShape(p0);+	return retVal;+}+//method: getChildShape ::btCollisionShape * ( ::btGImpactMeshShape::* )( int ) +void* btGImpactMeshShape_getChildShape0(void *c,int p0) {+	::btGImpactMeshShape *o = (::btGImpactMeshShape*)c;+	void* retVal = (void*) o->getChildShape(p0);+	return retVal;+}+//method: getChildShape ::btCollisionShape const * ( ::btGImpactMeshShape::* )( int ) const+void* btGImpactMeshShape_getChildShape1(void *c,int p0) {+	::btGImpactMeshShape *o = (::btGImpactMeshShape*)c;+	void* retVal = (void*) o->getChildShape(p0);+	return retVal;+}+//not supported method: serialize char const * ( ::btGImpactMeshShape::* )( void *,::btSerializer * ) const+//method: getChildTransform ::btTransform ( ::btGImpactMeshShape::* )( int ) const+void btGImpactMeshShape_getChildTransform(void *c,int p0,float* ret) {+	::btGImpactMeshShape *o = (::btGImpactMeshShape*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getChildTransform(p0);+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: lockChildShapes void ( ::btGImpactMeshShape::* )(  ) const+void btGImpactMeshShape_lockChildShapes(void *c) {+	::btGImpactMeshShape *o = (::btGImpactMeshShape*)c;+	o->lockChildShapes();+}+//method: setMargin void ( ::btGImpactMeshShape::* )( ::btScalar ) +void btGImpactMeshShape_setMargin(void *c,float p0) {+	::btGImpactMeshShape *o = (::btGImpactMeshShape*)c;+	o->setMargin(p0);+}+//method: getNumChildShapes int ( ::btGImpactMeshShape::* )(  ) const+int btGImpactMeshShape_getNumChildShapes(void *c) {+	::btGImpactMeshShape *o = (::btGImpactMeshShape*)c;+	int retVal = (int)o->getNumChildShapes();+	return retVal;+}+//method: getChildAabb void ( ::btGImpactMeshShape::* )( int,::btTransform const &,::btVector3 &,::btVector3 & ) const+void btGImpactMeshShape_getChildAabb(void *c,int p0,float* p1,float* p2,float* p3) {+	::btGImpactMeshShape *o = (::btGImpactMeshShape*)c;+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	o->getChildAabb(p0,tp1,tp2,tp3);+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+}+//method: getBulletTetrahedron void ( ::btGImpactMeshShape::* )( int,::btTetrahedronShapeEx & ) const+void btGImpactMeshShape_getBulletTetrahedron(void *c,int p0,void* p1) {+	::btGImpactMeshShape *o = (::btGImpactMeshShape*)c;+	::btTetrahedronShapeEx & tp1 = *(::btTetrahedronShapeEx *)p1;+	o->getBulletTetrahedron(p0,tp1);+}+//method: needsRetrieveTetrahedrons bool ( ::btGImpactMeshShape::* )(  ) const+int btGImpactMeshShape_needsRetrieveTetrahedrons(void *c) {+	::btGImpactMeshShape *o = (::btGImpactMeshShape*)c;+	int retVal = (int)o->needsRetrieveTetrahedrons();+	return retVal;+}+//method: unlockChildShapes void ( ::btGImpactMeshShape::* )(  ) const+void btGImpactMeshShape_unlockChildShapes(void *c) {+	::btGImpactMeshShape *o = (::btGImpactMeshShape*)c;+	o->unlockChildShapes();+}+//method: postUpdate void ( ::btGImpactMeshShape::* )(  ) +void btGImpactMeshShape_postUpdate(void *c) {+	::btGImpactMeshShape *o = (::btGImpactMeshShape*)c;+	o->postUpdate();+}+//not supported method: getGImpactShapeType ::eGIMPACT_SHAPE_TYPE ( ::btGImpactMeshShape::* )(  ) const++// ::btGImpactMeshShapeData+//constructor: btGImpactMeshShapeData  ( ::btGImpactMeshShapeData::* )(  ) +void* btGImpactMeshShapeData_new() {+	::btGImpactMeshShapeData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btGImpactMeshShapeData),16);+	o = new (mem)::btGImpactMeshShapeData();+	return (void*)o;+}+void btGImpactMeshShapeData_free(void *c) {+	::btGImpactMeshShapeData *o = (::btGImpactMeshShapeData*)c;+	delete o;+}+//attribute: ::btCollisionShapeData btGImpactMeshShapeData->m_collisionShapeData+// attribute not supported: //attribute: ::btCollisionShapeData btGImpactMeshShapeData->m_collisionShapeData+//attribute: ::btStridingMeshInterfaceData btGImpactMeshShapeData->m_meshInterface+// attribute not supported: //attribute: ::btStridingMeshInterfaceData btGImpactMeshShapeData->m_meshInterface+//attribute: ::btVector3FloatData btGImpactMeshShapeData->m_localScaling+// attribute not supported: //attribute: ::btVector3FloatData btGImpactMeshShapeData->m_localScaling+//attribute: float btGImpactMeshShapeData->m_collisionMargin+void btGImpactMeshShapeData_m_collisionMargin_set(void *c,float a) {+	::btGImpactMeshShapeData *o = (::btGImpactMeshShapeData*)c;+	o->m_collisionMargin = a;+}+float btGImpactMeshShapeData_m_collisionMargin_get(void *c) {+	::btGImpactMeshShapeData *o = (::btGImpactMeshShapeData*)c;+	return (float)(o->m_collisionMargin);+}++//attribute: int btGImpactMeshShapeData->m_gimpactSubType+void btGImpactMeshShapeData_m_gimpactSubType_set(void *c,int a) {+	::btGImpactMeshShapeData *o = (::btGImpactMeshShapeData*)c;+	o->m_gimpactSubType = a;+}+int btGImpactMeshShapeData_m_gimpactSubType_get(void *c) {+	::btGImpactMeshShapeData *o = (::btGImpactMeshShapeData*)c;+	return (int)(o->m_gimpactSubType);+}+++// ::btGImpactMeshShapePart+//constructor: btGImpactMeshShapePart  ( ::btGImpactMeshShapePart::* )(  ) +void* btGImpactMeshShapePart_new0() {+	::btGImpactMeshShapePart *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btGImpactMeshShapePart),16);+	o = new (mem)::btGImpactMeshShapePart();+	return (void*)o;+}+//constructor: btGImpactMeshShapePart  ( ::btGImpactMeshShapePart::* )( ::btStridingMeshInterface *,int ) +void* btGImpactMeshShapePart_new1(void* p0,int p1) {+	::btGImpactMeshShapePart *o = 0;+	 void *mem = 0;+	::btStridingMeshInterface * tp0 = (::btStridingMeshInterface *)p0;+	mem = btAlignedAlloc(sizeof(::btGImpactMeshShapePart),16);+	o = new (mem)::btGImpactMeshShapePart(tp0,p1);+	return (void*)o;+}+void btGImpactMeshShapePart_free(void *c) {+	::btGImpactMeshShapePart *o = (::btGImpactMeshShapePart*)c;+	delete o;+}+//method: calculateLocalInertia void ( ::btGImpactMeshShapePart::* )( ::btScalar,::btVector3 & ) const+void btGImpactMeshShapePart_calculateLocalInertia(void *c,float p0,float* p1) {+	::btGImpactMeshShapePart *o = (::btGImpactMeshShapePart*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->calculateLocalInertia(p0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: setChildTransform void ( ::btGImpactMeshShapePart::* )( int,::btTransform const & ) +void btGImpactMeshShapePart_setChildTransform(void *c,int p0,float* p1) {+	::btGImpactMeshShapePart *o = (::btGImpactMeshShapePart*)c;+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	o->setChildTransform(p0,tp1);+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+}+//method: getLocalScaling ::btVector3 const & ( ::btGImpactMeshShapePart::* )(  ) const+void btGImpactMeshShapePart_getLocalScaling(void *c,float* ret) {+	::btGImpactMeshShapePart *o = (::btGImpactMeshShapePart*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getLocalScaling();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getVertex void ( ::btGImpactMeshShapePart::* )( int,::btVector3 & ) const+void btGImpactMeshShapePart_getVertex(void *c,int p0,float* p1) {+	::btGImpactMeshShapePart *o = (::btGImpactMeshShapePart*)c;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->getVertex(p0,tp1);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: processAllTriangles void ( ::btGImpactMeshShapePart::* )( ::btTriangleCallback *,::btVector3 const &,::btVector3 const & ) const+void btGImpactMeshShapePart_processAllTriangles(void *c,void* p0,float* p1,float* p2) {+	::btGImpactMeshShapePart *o = (::btGImpactMeshShapePart*)c;+	::btTriangleCallback * tp0 = (::btTriangleCallback *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->processAllTriangles(tp0,tp1,tp2);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: getName char const * ( ::btGImpactMeshShapePart::* )(  ) const+char const * btGImpactMeshShapePart_getName(void *c) {+	::btGImpactMeshShapePart *o = (::btGImpactMeshShapePart*)c;+	char const * retVal = (char const *)o->getName();+	return retVal;+}+//method: getBulletTriangle void ( ::btGImpactMeshShapePart::* )( int,::btTriangleShapeEx & ) const+void btGImpactMeshShapePart_getBulletTriangle(void *c,int p0,void* p1) {+	::btGImpactMeshShapePart *o = (::btGImpactMeshShapePart*)c;+	::btTriangleShapeEx & tp1 = *(::btTriangleShapeEx *)p1;+	o->getBulletTriangle(p0,tp1);+}+//method: setLocalScaling void ( ::btGImpactMeshShapePart::* )( ::btVector3 const & ) +void btGImpactMeshShapePart_setLocalScaling(void *c,float* p0) {+	::btGImpactMeshShapePart *o = (::btGImpactMeshShapePart*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setLocalScaling(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: getPart int ( ::btGImpactMeshShapePart::* )(  ) const+int btGImpactMeshShapePart_getPart(void *c) {+	::btGImpactMeshShapePart *o = (::btGImpactMeshShapePart*)c;+	int retVal = (int)o->getPart();+	return retVal;+}+//method: childrenHasTransform bool ( ::btGImpactMeshShapePart::* )(  ) const+int btGImpactMeshShapePart_childrenHasTransform(void *c) {+	::btGImpactMeshShapePart *o = (::btGImpactMeshShapePart*)c;+	int retVal = (int)o->childrenHasTransform();+	return retVal;+}+//method: needsRetrieveTriangles bool ( ::btGImpactMeshShapePart::* )(  ) const+int btGImpactMeshShapePart_needsRetrieveTriangles(void *c) {+	::btGImpactMeshShapePart *o = (::btGImpactMeshShapePart*)c;+	int retVal = (int)o->needsRetrieveTriangles();+	return retVal;+}+//method: getChildShape ::btCollisionShape * ( ::btGImpactMeshShapePart::* )( int ) +void* btGImpactMeshShapePart_getChildShape(void *c,int p0) {+	::btGImpactMeshShapePart *o = (::btGImpactMeshShapePart*)c;+	void* retVal = (void*) o->getChildShape(p0);+	return retVal;+}+//method: getChildShape ::btCollisionShape * ( ::btGImpactMeshShapePart::* )( int ) +void* btGImpactMeshShapePart_getChildShape0(void *c,int p0) {+	::btGImpactMeshShapePart *o = (::btGImpactMeshShapePart*)c;+	void* retVal = (void*) o->getChildShape(p0);+	return retVal;+}+//method: getChildShape ::btCollisionShape const * ( ::btGImpactMeshShapePart::* )( int ) const+void* btGImpactMeshShapePart_getChildShape1(void *c,int p0) {+	::btGImpactMeshShapePart *o = (::btGImpactMeshShapePart*)c;+	void* retVal = (void*) o->getChildShape(p0);+	return retVal;+}+//method: getChildTransform ::btTransform ( ::btGImpactMeshShapePart::* )( int ) const+void btGImpactMeshShapePart_getChildTransform(void *c,int p0,float* ret) {+	::btGImpactMeshShapePart *o = (::btGImpactMeshShapePart*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getChildTransform(p0);+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: lockChildShapes void ( ::btGImpactMeshShapePart::* )(  ) const+void btGImpactMeshShapePart_lockChildShapes(void *c) {+	::btGImpactMeshShapePart *o = (::btGImpactMeshShapePart*)c;+	o->lockChildShapes();+}+//method: getMargin ::btScalar ( ::btGImpactMeshShapePart::* )(  ) const+float btGImpactMeshShapePart_getMargin(void *c) {+	::btGImpactMeshShapePart *o = (::btGImpactMeshShapePart*)c;+	float retVal = (float)o->getMargin();+	return retVal;+}+//method: setMargin void ( ::btGImpactMeshShapePart::* )( ::btScalar ) +void btGImpactMeshShapePart_setMargin(void *c,float p0) {+	::btGImpactMeshShapePart *o = (::btGImpactMeshShapePart*)c;+	o->setMargin(p0);+}+//method: getPrimitiveManager ::btPrimitiveManagerBase const * ( ::btGImpactMeshShapePart::* )(  ) const+void* btGImpactMeshShapePart_getPrimitiveManager(void *c) {+	::btGImpactMeshShapePart *o = (::btGImpactMeshShapePart*)c;+	void* retVal = (void*) o->getPrimitiveManager();+	return retVal;+}+//method: getNumChildShapes int ( ::btGImpactMeshShapePart::* )(  ) const+int btGImpactMeshShapePart_getNumChildShapes(void *c) {+	::btGImpactMeshShapePart *o = (::btGImpactMeshShapePart*)c;+	int retVal = (int)o->getNumChildShapes();+	return retVal;+}+//method: getBulletTetrahedron void ( ::btGImpactMeshShapePart::* )( int,::btTetrahedronShapeEx & ) const+void btGImpactMeshShapePart_getBulletTetrahedron(void *c,int p0,void* p1) {+	::btGImpactMeshShapePart *o = (::btGImpactMeshShapePart*)c;+	::btTetrahedronShapeEx & tp1 = *(::btTetrahedronShapeEx *)p1;+	o->getBulletTetrahedron(p0,tp1);+}+//method: getTrimeshPrimitiveManager ::btGImpactMeshShapePart::TrimeshPrimitiveManager * ( ::btGImpactMeshShapePart::* )(  ) +void* btGImpactMeshShapePart_getTrimeshPrimitiveManager(void *c) {+	::btGImpactMeshShapePart *o = (::btGImpactMeshShapePart*)c;+	void* retVal = (void*) o->getTrimeshPrimitiveManager();+	return retVal;+}+//method: needsRetrieveTetrahedrons bool ( ::btGImpactMeshShapePart::* )(  ) const+int btGImpactMeshShapePart_needsRetrieveTetrahedrons(void *c) {+	::btGImpactMeshShapePart *o = (::btGImpactMeshShapePart*)c;+	int retVal = (int)o->needsRetrieveTetrahedrons();+	return retVal;+}+//method: unlockChildShapes void ( ::btGImpactMeshShapePart::* )(  ) const+void btGImpactMeshShapePart_unlockChildShapes(void *c) {+	::btGImpactMeshShapePart *o = (::btGImpactMeshShapePart*)c;+	o->unlockChildShapes();+}+//not supported method: getGImpactShapeType ::eGIMPACT_SHAPE_TYPE ( ::btGImpactMeshShapePart::* )(  ) const+//method: getVertexCount int ( ::btGImpactMeshShapePart::* )(  ) const+int btGImpactMeshShapePart_getVertexCount(void *c) {+	::btGImpactMeshShapePart *o = (::btGImpactMeshShapePart*)c;+	int retVal = (int)o->getVertexCount();+	return retVal;+}++// ::btGImpactQuantizedBvh+//constructor: btGImpactQuantizedBvh  ( ::btGImpactQuantizedBvh::* )(  ) +void* btGImpactQuantizedBvh_new0() {+	::btGImpactQuantizedBvh *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btGImpactQuantizedBvh),16);+	o = new (mem)::btGImpactQuantizedBvh();+	return (void*)o;+}+//constructor: btGImpactQuantizedBvh  ( ::btGImpactQuantizedBvh::* )( ::btPrimitiveManagerBase * ) +void* btGImpactQuantizedBvh_new1(void* p0) {+	::btGImpactQuantizedBvh *o = 0;+	 void *mem = 0;+	::btPrimitiveManagerBase * tp0 = (::btPrimitiveManagerBase *)p0;+	mem = btAlignedAlloc(sizeof(::btGImpactQuantizedBvh),16);+	o = new (mem)::btGImpactQuantizedBvh(tp0);+	return (void*)o;+}+void btGImpactQuantizedBvh_free(void *c) {+	::btGImpactQuantizedBvh *o = (::btGImpactQuantizedBvh*)c;+	delete o;+}+//method: getNodeCount int ( ::btGImpactQuantizedBvh::* )(  ) const+int btGImpactQuantizedBvh_getNodeCount(void *c) {+	::btGImpactQuantizedBvh *o = (::btGImpactQuantizedBvh*)c;+	int retVal = (int)o->getNodeCount();+	return retVal;+}+//method: find_collision void (*)( ::btGImpactQuantizedBvh *,::btTransform const &,::btGImpactQuantizedBvh *,::btTransform const &,::btPairSet & )+void btGImpactQuantizedBvh_find_collision(void* p0,float* p1,void* p2,float* p3,void* p4) {+	::btGImpactQuantizedBvh * tp0 = (::btGImpactQuantizedBvh *)p0;+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	::btGImpactQuantizedBvh * tp2 = (::btGImpactQuantizedBvh *)p2;+	btMatrix3x3 mtp3(p3[0],p3[1],p3[2],p3[3],p3[4],p3[5],p3[6],p3[7],p3[8]);+	btVector3 vtp3(p3[9],p3[10],p3[11]);+	btTransform tp3(mtp3,vtp3);+	::btPairSet & tp4 = *(::btPairSet *)p4;+	::btGImpactQuantizedBvh::find_collision(tp0,tp1,tp2,tp3,tp4);+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+	p3[0]=tp3.getBasis().getRow(0).m_floats[0];p3[1]=tp3.getBasis().getRow(0).m_floats[1];p3[2]=tp3.getBasis().getRow(0).m_floats[2];p3[3]=tp3.getBasis().getRow(1).m_floats[0];p3[4]=tp3.getBasis().getRow(1).m_floats[1];p3[5]=tp3.getBasis().getRow(1).m_floats[2];p3[6]=tp3.getBasis().getRow(2).m_floats[0];p3[7]=tp3.getBasis().getRow(2).m_floats[1];p3[8]=tp3.getBasis().getRow(2).m_floats[2];+	p3[9]=tp3.getOrigin().m_floats[0];p3[10]=tp3.getOrigin().m_floats[1];p3[11]=tp3.getOrigin().m_floats[2];+}+//method: getNodeTriangle void ( ::btGImpactQuantizedBvh::* )( int,::btPrimitiveTriangle & ) const+void btGImpactQuantizedBvh_getNodeTriangle(void *c,int p0,void* p1) {+	::btGImpactQuantizedBvh *o = (::btGImpactQuantizedBvh*)c;+	::btPrimitiveTriangle & tp1 = *(::btPrimitiveTriangle *)p1;+	o->getNodeTriangle(p0,tp1);+}+//method: hasHierarchy bool ( ::btGImpactQuantizedBvh::* )(  ) const+int btGImpactQuantizedBvh_hasHierarchy(void *c) {+	::btGImpactQuantizedBvh *o = (::btGImpactQuantizedBvh*)c;+	int retVal = (int)o->hasHierarchy();+	return retVal;+}+//not supported method: rayQuery bool ( ::btGImpactQuantizedBvh::* )( ::btVector3 const &,::btVector3 const &,::btAlignedObjectArray<int> & ) const+//method: getLeftNode int ( ::btGImpactQuantizedBvh::* )( int ) const+int btGImpactQuantizedBvh_getLeftNode(void *c,int p0) {+	::btGImpactQuantizedBvh *o = (::btGImpactQuantizedBvh*)c;+	int retVal = (int)o->getLeftNode(p0);+	return retVal;+}+//method: getRightNode int ( ::btGImpactQuantizedBvh::* )( int ) const+int btGImpactQuantizedBvh_getRightNode(void *c,int p0) {+	::btGImpactQuantizedBvh *o = (::btGImpactQuantizedBvh*)c;+	int retVal = (int)o->getRightNode(p0);+	return retVal;+}+//not supported method: boxQueryTrans bool ( ::btGImpactQuantizedBvh::* )( ::btAABB const &,::btTransform const &,::btAlignedObjectArray<int> & ) const+//method: update void ( ::btGImpactQuantizedBvh::* )(  ) +void btGImpactQuantizedBvh_update(void *c) {+	::btGImpactQuantizedBvh *o = (::btGImpactQuantizedBvh*)c;+	o->update();+}+//not supported method: getGlobalBox ::btAABB ( ::btGImpactQuantizedBvh::* )(  ) const+//method: isTrimesh bool ( ::btGImpactQuantizedBvh::* )(  ) const+int btGImpactQuantizedBvh_isTrimesh(void *c) {+	::btGImpactQuantizedBvh *o = (::btGImpactQuantizedBvh*)c;+	int retVal = (int)o->isTrimesh();+	return retVal;+}+//method: setNodeBound void ( ::btGImpactQuantizedBvh::* )( int,::btAABB const & ) +void btGImpactQuantizedBvh_setNodeBound(void *c,int p0,void* p1) {+	::btGImpactQuantizedBvh *o = (::btGImpactQuantizedBvh*)c;+	::btAABB const & tp1 = *(::btAABB const *)p1;+	o->setNodeBound(p0,tp1);+}+//method: setPrimitiveManager void ( ::btGImpactQuantizedBvh::* )( ::btPrimitiveManagerBase * ) +void btGImpactQuantizedBvh_setPrimitiveManager(void *c,void* p0) {+	::btGImpactQuantizedBvh *o = (::btGImpactQuantizedBvh*)c;+	::btPrimitiveManagerBase * tp0 = (::btPrimitiveManagerBase *)p0;+	o->setPrimitiveManager(tp0);+}+//method: getEscapeNodeIndex int ( ::btGImpactQuantizedBvh::* )( int ) const+int btGImpactQuantizedBvh_getEscapeNodeIndex(void *c,int p0) {+	::btGImpactQuantizedBvh *o = (::btGImpactQuantizedBvh*)c;+	int retVal = (int)o->getEscapeNodeIndex(p0);+	return retVal;+}+//method: isLeafNode bool ( ::btGImpactQuantizedBvh::* )( int ) const+int btGImpactQuantizedBvh_isLeafNode(void *c,int p0) {+	::btGImpactQuantizedBvh *o = (::btGImpactQuantizedBvh*)c;+	int retVal = (int)o->isLeafNode(p0);+	return retVal;+}+//method: getPrimitiveManager ::btPrimitiveManagerBase * ( ::btGImpactQuantizedBvh::* )(  ) const+void* btGImpactQuantizedBvh_getPrimitiveManager(void *c) {+	::btGImpactQuantizedBvh *o = (::btGImpactQuantizedBvh*)c;+	void* retVal = (void*) o->getPrimitiveManager();+	return retVal;+}+//method: buildSet void ( ::btGImpactQuantizedBvh::* )(  ) +void btGImpactQuantizedBvh_buildSet(void *c) {+	::btGImpactQuantizedBvh *o = (::btGImpactQuantizedBvh*)c;+	o->buildSet();+}+//method: get_node_pointer ::BT_QUANTIZED_BVH_NODE const * ( ::btGImpactQuantizedBvh::* )( int ) const+void* btGImpactQuantizedBvh_get_node_pointer(void *c,int p0) {+	::btGImpactQuantizedBvh *o = (::btGImpactQuantizedBvh*)c;+	void* retVal = (void*) o->get_node_pointer(p0);+	return retVal;+}+//method: getNodeData int ( ::btGImpactQuantizedBvh::* )( int ) const+int btGImpactQuantizedBvh_getNodeData(void *c,int p0) {+	::btGImpactQuantizedBvh *o = (::btGImpactQuantizedBvh*)c;+	int retVal = (int)o->getNodeData(p0);+	return retVal;+}+//method: getNodeBound void ( ::btGImpactQuantizedBvh::* )( int,::btAABB & ) const+void btGImpactQuantizedBvh_getNodeBound(void *c,int p0,void* p1) {+	::btGImpactQuantizedBvh *o = (::btGImpactQuantizedBvh*)c;+	::btAABB & tp1 = *(::btAABB *)p1;+	o->getNodeBound(p0,tp1);+}+//not supported method: boxQuery bool ( ::btGImpactQuantizedBvh::* )( ::btAABB const &,::btAlignedObjectArray<int> & ) const++// ::btGImpactShapeInterface+//method: getPrimitiveTriangle void ( ::btGImpactShapeInterface::* )( int,::btPrimitiveTriangle & ) const+void btGImpactShapeInterface_getPrimitiveTriangle(void *c,int p0,void* p1) {+	::btGImpactShapeInterface *o = (::btGImpactShapeInterface*)c;+	::btPrimitiveTriangle & tp1 = *(::btPrimitiveTriangle *)p1;+	o->getPrimitiveTriangle(p0,tp1);+}+//method: setChildTransform void ( ::btGImpactShapeInterface::* )( int,::btTransform const & ) +void btGImpactShapeInterface_setChildTransform(void *c,int p0,float* p1) {+	::btGImpactShapeInterface *o = (::btGImpactShapeInterface*)c;+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	o->setChildTransform(p0,tp1);+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+}+//method: getLocalScaling ::btVector3 const & ( ::btGImpactShapeInterface::* )(  ) const+void btGImpactShapeInterface_getLocalScaling(void *c,float* ret) {+	::btGImpactShapeInterface *o = (::btGImpactShapeInterface*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getLocalScaling();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getLocalBox ::btAABB const & ( ::btGImpactShapeInterface::* )(  ) +void* btGImpactShapeInterface_getLocalBox(void *c) {+	::btGImpactShapeInterface *o = (::btGImpactShapeInterface*)c;+	void* retVal = (void*) &(o->getLocalBox());+	return retVal;+}+//method: getPrimitiveManager ::btPrimitiveManagerBase const * ( ::btGImpactShapeInterface::* )(  ) const+void* btGImpactShapeInterface_getPrimitiveManager(void *c) {+	::btGImpactShapeInterface *o = (::btGImpactShapeInterface*)c;+	void* retVal = (void*) o->getPrimitiveManager();+	return retVal;+}+//method: processAllTriangles void ( ::btGImpactShapeInterface::* )( ::btTriangleCallback *,::btVector3 const &,::btVector3 const & ) const+void btGImpactShapeInterface_processAllTriangles(void *c,void* p0,float* p1,float* p2) {+	::btGImpactShapeInterface *o = (::btGImpactShapeInterface*)c;+	::btTriangleCallback * tp0 = (::btTriangleCallback *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->processAllTriangles(tp0,tp1,tp2);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: hasBoxSet bool ( ::btGImpactShapeInterface::* )(  ) const+int btGImpactShapeInterface_hasBoxSet(void *c) {+	::btGImpactShapeInterface *o = (::btGImpactShapeInterface*)c;+	int retVal = (int)o->hasBoxSet();+	return retVal;+}+//method: rayTest void ( ::btGImpactShapeInterface::* )( ::btVector3 const &,::btVector3 const &,::btCollisionWorld::RayResultCallback & ) const+void btGImpactShapeInterface_rayTest(void *c,float* p0,float* p1,void* p2) {+	::btGImpactShapeInterface *o = (::btGImpactShapeInterface*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	::btCollisionWorld::RayResultCallback & tp2 = *(::btCollisionWorld::RayResultCallback *)p2;+	o->rayTest(tp0,tp1,tp2);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: getBoxSet ::btGImpactBoxSet * ( ::btGImpactShapeInterface::* )(  ) +void* btGImpactShapeInterface_getBoxSet(void *c) {+	::btGImpactShapeInterface *o = (::btGImpactShapeInterface*)c;+	void* retVal = (void*) o->getBoxSet();+	return retVal;+}+//method: getBulletTriangle void ( ::btGImpactShapeInterface::* )( int,::btTriangleShapeEx & ) const+void btGImpactShapeInterface_getBulletTriangle(void *c,int p0,void* p1) {+	::btGImpactShapeInterface *o = (::btGImpactShapeInterface*)c;+	::btTriangleShapeEx & tp1 = *(::btTriangleShapeEx *)p1;+	o->getBulletTriangle(p0,tp1);+}+//method: setLocalScaling void ( ::btGImpactShapeInterface::* )( ::btVector3 const & ) +void btGImpactShapeInterface_setLocalScaling(void *c,float* p0) {+	::btGImpactShapeInterface *o = (::btGImpactShapeInterface*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setLocalScaling(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: needsRetrieveTriangles bool ( ::btGImpactShapeInterface::* )(  ) const+int btGImpactShapeInterface_needsRetrieveTriangles(void *c) {+	::btGImpactShapeInterface *o = (::btGImpactShapeInterface*)c;+	int retVal = (int)o->needsRetrieveTriangles();+	return retVal;+}+//method: childrenHasTransform bool ( ::btGImpactShapeInterface::* )(  ) const+int btGImpactShapeInterface_childrenHasTransform(void *c) {+	::btGImpactShapeInterface *o = (::btGImpactShapeInterface*)c;+	int retVal = (int)o->childrenHasTransform();+	return retVal;+}+//method: getAabb void ( ::btGImpactShapeInterface::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btGImpactShapeInterface_getAabb(void *c,float* p0,float* p1,float* p2) {+	::btGImpactShapeInterface *o = (::btGImpactShapeInterface*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->getAabb(tp0,tp1,tp2);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: getChildShape ::btCollisionShape * ( ::btGImpactShapeInterface::* )( int ) +void* btGImpactShapeInterface_getChildShape(void *c,int p0) {+	::btGImpactShapeInterface *o = (::btGImpactShapeInterface*)c;+	void* retVal = (void*) o->getChildShape(p0);+	return retVal;+}+//method: getChildShape ::btCollisionShape * ( ::btGImpactShapeInterface::* )( int ) +void* btGImpactShapeInterface_getChildShape0(void *c,int p0) {+	::btGImpactShapeInterface *o = (::btGImpactShapeInterface*)c;+	void* retVal = (void*) o->getChildShape(p0);+	return retVal;+}+//method: getChildShape ::btCollisionShape const * ( ::btGImpactShapeInterface::* )( int ) const+void* btGImpactShapeInterface_getChildShape1(void *c,int p0) {+	::btGImpactShapeInterface *o = (::btGImpactShapeInterface*)c;+	void* retVal = (void*) o->getChildShape(p0);+	return retVal;+}+//method: getChildTransform ::btTransform ( ::btGImpactShapeInterface::* )( int ) const+void btGImpactShapeInterface_getChildTransform(void *c,int p0,float* ret) {+	::btGImpactShapeInterface *o = (::btGImpactShapeInterface*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getChildTransform(p0);+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: lockChildShapes void ( ::btGImpactShapeInterface::* )(  ) const+void btGImpactShapeInterface_lockChildShapes(void *c) {+	::btGImpactShapeInterface *o = (::btGImpactShapeInterface*)c;+	o->lockChildShapes();+}+//method: setMargin void ( ::btGImpactShapeInterface::* )( ::btScalar ) +void btGImpactShapeInterface_setMargin(void *c,float p0) {+	::btGImpactShapeInterface *o = (::btGImpactShapeInterface*)c;+	o->setMargin(p0);+}+//method: getNumChildShapes int ( ::btGImpactShapeInterface::* )(  ) const+int btGImpactShapeInterface_getNumChildShapes(void *c) {+	::btGImpactShapeInterface *o = (::btGImpactShapeInterface*)c;+	int retVal = (int)o->getNumChildShapes();+	return retVal;+}+//method: getChildAabb void ( ::btGImpactShapeInterface::* )( int,::btTransform const &,::btVector3 &,::btVector3 & ) const+void btGImpactShapeInterface_getChildAabb(void *c,int p0,float* p1,float* p2,float* p3) {+	::btGImpactShapeInterface *o = (::btGImpactShapeInterface*)c;+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	o->getChildAabb(p0,tp1,tp2,tp3);+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+}+//method: getShapeType int ( ::btGImpactShapeInterface::* )(  ) const+int btGImpactShapeInterface_getShapeType(void *c) {+	::btGImpactShapeInterface *o = (::btGImpactShapeInterface*)c;+	int retVal = (int)o->getShapeType();+	return retVal;+}+//method: getBulletTetrahedron void ( ::btGImpactShapeInterface::* )( int,::btTetrahedronShapeEx & ) const+void btGImpactShapeInterface_getBulletTetrahedron(void *c,int p0,void* p1) {+	::btGImpactShapeInterface *o = (::btGImpactShapeInterface*)c;+	::btTetrahedronShapeEx & tp1 = *(::btTetrahedronShapeEx *)p1;+	o->getBulletTetrahedron(p0,tp1);+}+//method: needsRetrieveTetrahedrons bool ( ::btGImpactShapeInterface::* )(  ) const+int btGImpactShapeInterface_needsRetrieveTetrahedrons(void *c) {+	::btGImpactShapeInterface *o = (::btGImpactShapeInterface*)c;+	int retVal = (int)o->needsRetrieveTetrahedrons();+	return retVal;+}+//method: unlockChildShapes void ( ::btGImpactShapeInterface::* )(  ) const+void btGImpactShapeInterface_unlockChildShapes(void *c) {+	::btGImpactShapeInterface *o = (::btGImpactShapeInterface*)c;+	o->unlockChildShapes();+}+//method: postUpdate void ( ::btGImpactShapeInterface::* )(  ) +void btGImpactShapeInterface_postUpdate(void *c) {+	::btGImpactShapeInterface *o = (::btGImpactShapeInterface*)c;+	o->postUpdate();+}+//method: updateBound void ( ::btGImpactShapeInterface::* )(  ) +void btGImpactShapeInterface_updateBound(void *c) {+	::btGImpactShapeInterface *o = (::btGImpactShapeInterface*)c;+	o->updateBound();+}+//not supported method: getGImpactShapeType ::eGIMPACT_SHAPE_TYPE ( ::btGImpactShapeInterface::* )(  ) const++// ::btPairSet+//constructor: btPairSet  ( ::btPairSet::* )(  ) +void* btPairSet_new() {+	::btPairSet *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btPairSet),16);+	o = new (mem)::btPairSet();+	return (void*)o;+}+void btPairSet_free(void *c) {+	::btPairSet *o = (::btPairSet*)c;+	delete o;+}+//method: push_pair_inv void ( ::btPairSet::* )( int,int ) +void btPairSet_push_pair_inv(void *c,int p0,int p1) {+	::btPairSet *o = (::btPairSet*)c;+	o->push_pair_inv(p0,p1);+}+//method: push_pair void ( ::btPairSet::* )( int,int ) +void btPairSet_push_pair(void *c,int p0,int p1) {+	::btPairSet *o = (::btPairSet*)c;+	o->push_pair(p0,p1);+}++// ::btPrimitiveManagerBase+//method: get_primitive_box void ( ::btPrimitiveManagerBase::* )( int,::btAABB & ) const+void btPrimitiveManagerBase_get_primitive_box(void *c,int p0,void* p1) {+	::btPrimitiveManagerBase *o = (::btPrimitiveManagerBase*)c;+	::btAABB & tp1 = *(::btAABB *)p1;+	o->get_primitive_box(p0,tp1);+}+//method: get_primitive_triangle void ( ::btPrimitiveManagerBase::* )( int,::btPrimitiveTriangle & ) const+void btPrimitiveManagerBase_get_primitive_triangle(void *c,int p0,void* p1) {+	::btPrimitiveManagerBase *o = (::btPrimitiveManagerBase*)c;+	::btPrimitiveTriangle & tp1 = *(::btPrimitiveTriangle *)p1;+	o->get_primitive_triangle(p0,tp1);+}+//method: is_trimesh bool ( ::btPrimitiveManagerBase::* )(  ) const+int btPrimitiveManagerBase_is_trimesh(void *c) {+	::btPrimitiveManagerBase *o = (::btPrimitiveManagerBase*)c;+	int retVal = (int)o->is_trimesh();+	return retVal;+}+//method: get_primitive_count int ( ::btPrimitiveManagerBase::* )(  ) const+int btPrimitiveManagerBase_get_primitive_count(void *c) {+	::btPrimitiveManagerBase *o = (::btPrimitiveManagerBase*)c;+	int retVal = (int)o->get_primitive_count();+	return retVal;+}++// ::btPrimitiveTriangle+//constructor: btPrimitiveTriangle  ( ::btPrimitiveTriangle::* )(  ) +void* btPrimitiveTriangle_new() {+	::btPrimitiveTriangle *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btPrimitiveTriangle),16);+	o = new (mem)::btPrimitiveTriangle();+	return (void*)o;+}+void btPrimitiveTriangle_free(void *c) {+	::btPrimitiveTriangle *o = (::btPrimitiveTriangle*)c;+	delete o;+}+//not supported method: clip_triangle int ( ::btPrimitiveTriangle::* )( ::btPrimitiveTriangle &,::btVector3 * ) +//method: get_edge_plane void ( ::btPrimitiveTriangle::* )( int,::btVector4 & ) const+void btPrimitiveTriangle_get_edge_plane(void *c,int p0,float* p1) {+	::btPrimitiveTriangle *o = (::btPrimitiveTriangle*)c;+	btVector4 tp1(p1[0],p1[1],p1[2],p1[3]);+	o->get_edge_plane(p0,tp1);+	p1[0]=tp1.getX();p1[1]=tp1.getY();p1[2]=tp1.getZ();p1[3]=tp1.getW();+}+//method: overlap_test_conservative bool ( ::btPrimitiveTriangle::* )( ::btPrimitiveTriangle const & ) +int btPrimitiveTriangle_overlap_test_conservative(void *c,void* p0) {+	::btPrimitiveTriangle *o = (::btPrimitiveTriangle*)c;+	::btPrimitiveTriangle const & tp0 = *(::btPrimitiveTriangle const *)p0;+	int retVal = (int)o->overlap_test_conservative(tp0);+	return retVal;+}+//method: buildTriPlane void ( ::btPrimitiveTriangle::* )(  ) +void btPrimitiveTriangle_buildTriPlane(void *c) {+	::btPrimitiveTriangle *o = (::btPrimitiveTriangle*)c;+	o->buildTriPlane();+}+//method: applyTransform void ( ::btPrimitiveTriangle::* )( ::btTransform const & ) +void btPrimitiveTriangle_applyTransform(void *c,float* p0) {+	::btPrimitiveTriangle *o = (::btPrimitiveTriangle*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	o->applyTransform(tp0);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+}+//method: find_triangle_collision_clip_method bool ( ::btPrimitiveTriangle::* )( ::btPrimitiveTriangle &,::GIM_TRIANGLE_CONTACT & ) +int btPrimitiveTriangle_find_triangle_collision_clip_method(void *c,void* p0,void* p1) {+	::btPrimitiveTriangle *o = (::btPrimitiveTriangle*)c;+	::btPrimitiveTriangle & tp0 = *(::btPrimitiveTriangle *)p0;+	::GIM_TRIANGLE_CONTACT & tp1 = *(::GIM_TRIANGLE_CONTACT *)p1;+	int retVal = (int)o->find_triangle_collision_clip_method(tp0,tp1);+	return retVal;+}+//attribute: ::btScalar btPrimitiveTriangle->m_dummy+void btPrimitiveTriangle_m_dummy_set(void *c,float a) {+	::btPrimitiveTriangle *o = (::btPrimitiveTriangle*)c;+	o->m_dummy = a;+}+float btPrimitiveTriangle_m_dummy_get(void *c) {+	::btPrimitiveTriangle *o = (::btPrimitiveTriangle*)c;+	return (float)(o->m_dummy);+}++//attribute: ::btScalar btPrimitiveTriangle->m_margin+void btPrimitiveTriangle_m_margin_set(void *c,float a) {+	::btPrimitiveTriangle *o = (::btPrimitiveTriangle*)c;+	o->m_margin = a;+}+float btPrimitiveTriangle_m_margin_get(void *c) {+	::btPrimitiveTriangle *o = (::btPrimitiveTriangle*)c;+	return (float)(o->m_margin);+}++//attribute: ::btVector4 btPrimitiveTriangle->m_plane+void btPrimitiveTriangle_m_plane_set(void *c,float* a) {+	::btPrimitiveTriangle *o = (::btPrimitiveTriangle*)c;+	btVector4 ta(a[0],a[1],a[2],a[3]);+	o->m_plane = ta;+}+void btPrimitiveTriangle_m_plane_get(void *c,float* a) {+	::btPrimitiveTriangle *o = (::btPrimitiveTriangle*)c;+	a[0]=(o->m_plane).getX();a[1]=(o->m_plane).getY();a[2]=(o->m_plane).getZ();a[3]=(o->m_plane).getW();+}++//attribute: ::btVector3[3] btPrimitiveTriangle->m_vertices+// attribute not supported: //attribute: ::btVector3[3] btPrimitiveTriangle->m_vertices++// ::btQuantizedBvhTree+//constructor: btQuantizedBvhTree  ( ::btQuantizedBvhTree::* )(  ) +void* btQuantizedBvhTree_new() {+	::btQuantizedBvhTree *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btQuantizedBvhTree),16);+	o = new (mem)::btQuantizedBvhTree();+	return (void*)o;+}+void btQuantizedBvhTree_free(void *c) {+	::btQuantizedBvhTree *o = (::btQuantizedBvhTree*)c;+	delete o;+}+//method: getNodeCount int ( ::btQuantizedBvhTree::* )(  ) const+int btQuantizedBvhTree_getNodeCount(void *c) {+	::btQuantizedBvhTree *o = (::btQuantizedBvhTree*)c;+	int retVal = (int)o->getNodeCount();+	return retVal;+}+//method: build_tree void ( ::btQuantizedBvhTree::* )( ::GIM_BVH_DATA_ARRAY & ) +void btQuantizedBvhTree_build_tree(void *c,void* p0) {+	::btQuantizedBvhTree *o = (::btQuantizedBvhTree*)c;+	::GIM_BVH_DATA_ARRAY & tp0 = *(::GIM_BVH_DATA_ARRAY *)p0;+	o->build_tree(tp0);+}+//method: getLeftNode int ( ::btQuantizedBvhTree::* )( int ) const+int btQuantizedBvhTree_getLeftNode(void *c,int p0) {+	::btQuantizedBvhTree *o = (::btQuantizedBvhTree*)c;+	int retVal = (int)o->getLeftNode(p0);+	return retVal;+}+//method: setNodeBound void ( ::btQuantizedBvhTree::* )( int,::btAABB const & ) +void btQuantizedBvhTree_setNodeBound(void *c,int p0,void* p1) {+	::btQuantizedBvhTree *o = (::btQuantizedBvhTree*)c;+	::btAABB const & tp1 = *(::btAABB const *)p1;+	o->setNodeBound(p0,tp1);+}+//method: getNodeBound void ( ::btQuantizedBvhTree::* )( int,::btAABB & ) const+void btQuantizedBvhTree_getNodeBound(void *c,int p0,void* p1) {+	::btQuantizedBvhTree *o = (::btQuantizedBvhTree*)c;+	::btAABB & tp1 = *(::btAABB *)p1;+	o->getNodeBound(p0,tp1);+}+//method: getRightNode int ( ::btQuantizedBvhTree::* )( int ) const+int btQuantizedBvhTree_getRightNode(void *c,int p0) {+	::btQuantizedBvhTree *o = (::btQuantizedBvhTree*)c;+	int retVal = (int)o->getRightNode(p0);+	return retVal;+}+//method: clearNodes void ( ::btQuantizedBvhTree::* )(  ) +void btQuantizedBvhTree_clearNodes(void *c) {+	::btQuantizedBvhTree *o = (::btQuantizedBvhTree*)c;+	o->clearNodes();+}+//method: getEscapeNodeIndex int ( ::btQuantizedBvhTree::* )( int ) const+int btQuantizedBvhTree_getEscapeNodeIndex(void *c,int p0) {+	::btQuantizedBvhTree *o = (::btQuantizedBvhTree*)c;+	int retVal = (int)o->getEscapeNodeIndex(p0);+	return retVal;+}+//method: isLeafNode bool ( ::btQuantizedBvhTree::* )( int ) const+int btQuantizedBvhTree_isLeafNode(void *c,int p0) {+	::btQuantizedBvhTree *o = (::btQuantizedBvhTree*)c;+	int retVal = (int)o->isLeafNode(p0);+	return retVal;+}+//method: get_node_pointer ::BT_QUANTIZED_BVH_NODE const * ( ::btQuantizedBvhTree::* )( int ) const+void* btQuantizedBvhTree_get_node_pointer(void *c,int p0) {+	::btQuantizedBvhTree *o = (::btQuantizedBvhTree*)c;+	void* retVal = (void*) o->get_node_pointer(p0);+	return retVal;+}+//not supported method: testQuantizedBoxOverlapp bool ( ::btQuantizedBvhTree::* )( int,short unsigned int *,short unsigned int * ) const+//method: getNodeData int ( ::btQuantizedBvhTree::* )( int ) const+int btQuantizedBvhTree_getNodeData(void *c,int p0) {+	::btQuantizedBvhTree *o = (::btQuantizedBvhTree*)c;+	int retVal = (int)o->getNodeData(p0);+	return retVal;+}+//not supported method: quantizePoint void ( ::btQuantizedBvhTree::* )( short unsigned int *,::btVector3 const & ) const++// ::btTetrahedronShapeEx+//constructor: btTetrahedronShapeEx  ( ::btTetrahedronShapeEx::* )(  ) +void* btTetrahedronShapeEx_new() {+	::btTetrahedronShapeEx *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btTetrahedronShapeEx),16);+	o = new (mem)::btTetrahedronShapeEx();+	return (void*)o;+}+void btTetrahedronShapeEx_free(void *c) {+	::btTetrahedronShapeEx *o = (::btTetrahedronShapeEx*)c;+	delete o;+}+//method: setVertices void ( ::btTetrahedronShapeEx::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void btTetrahedronShapeEx_setVertices(void *c,float* p0,float* p1,float* p2,float* p3) {+	::btTetrahedronShapeEx *o = (::btTetrahedronShapeEx*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	o->setVertices(tp0,tp1,tp2,tp3);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+}++// ::btTriangleShapeEx+//constructor: btTriangleShapeEx  ( ::btTriangleShapeEx::* )(  ) +void* btTriangleShapeEx_new0() {+	::btTriangleShapeEx *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btTriangleShapeEx),16);+	o = new (mem)::btTriangleShapeEx();+	return (void*)o;+}+//constructor: btTriangleShapeEx  ( ::btTriangleShapeEx::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void* btTriangleShapeEx_new1(float* p0,float* p1,float* p2) {+	::btTriangleShapeEx *o = 0;+	 void *mem = 0;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	mem = btAlignedAlloc(sizeof(::btTriangleShapeEx),16);+	o = new (mem)::btTriangleShapeEx(tp0,tp1,tp2);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	return (void*)o;+}+void btTriangleShapeEx_free(void *c) {+	::btTriangleShapeEx *o = (::btTriangleShapeEx*)c;+	delete o;+}+//method: overlap_test_conservative bool ( ::btTriangleShapeEx::* )( ::btTriangleShapeEx const & ) +int btTriangleShapeEx_overlap_test_conservative(void *c,void* p0) {+	::btTriangleShapeEx *o = (::btTriangleShapeEx*)c;+	::btTriangleShapeEx const & tp0 = *(::btTriangleShapeEx const *)p0;+	int retVal = (int)o->overlap_test_conservative(tp0);+	return retVal;+}+//method: buildTriPlane void ( ::btTriangleShapeEx::* )( ::btVector4 & ) const+void btTriangleShapeEx_buildTriPlane(void *c,float* p0) {+	::btTriangleShapeEx *o = (::btTriangleShapeEx*)c;+	btVector4 tp0(p0[0],p0[1],p0[2],p0[3]);+	o->buildTriPlane(tp0);+	p0[0]=tp0.getX();p0[1]=tp0.getY();p0[2]=tp0.getZ();p0[3]=tp0.getW();+}+//method: applyTransform void ( ::btTriangleShapeEx::* )( ::btTransform const & ) +void btTriangleShapeEx_applyTransform(void *c,float* p0) {+	::btTriangleShapeEx *o = (::btTriangleShapeEx*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	o->applyTransform(tp0);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+}+//method: getAabb void ( ::btTriangleShapeEx::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btTriangleShapeEx_getAabb(void *c,float* p0,float* p1,float* p2) {+	::btTriangleShapeEx *o = (::btTriangleShapeEx*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->getAabb(tp0,tp1,tp2);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}++// ::btDbvt::IClone+//constructor: IClone  ( ::btDbvt::IClone::* )(  ) +void* btDbvt_IClone_new() {+	::btDbvt::IClone *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btDbvt::IClone),16);+	o = new (mem)::btDbvt::IClone();+	return (void*)o;+}+void btDbvt_IClone_free(void *c) {+	::btDbvt::IClone *o = (::btDbvt::IClone*)c;+	delete o;+}+//method: CloneLeaf void ( ::btDbvt::IClone::* )( ::btDbvtNode * ) +void btDbvt_IClone_CloneLeaf(void *c,void* p0) {+	::btDbvt::IClone *o = (::btDbvt::IClone*)c;+	::btDbvtNode * tp0 = (::btDbvtNode *)p0;+	o->CloneLeaf(tp0);+}++// ::btDbvt::ICollide+//constructor: ICollide  ( ::btDbvt::ICollide::* )(  ) +void* btDbvt_ICollide_new() {+	::btDbvt::ICollide *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btDbvt::ICollide),16);+	o = new (mem)::btDbvt::ICollide();+	return (void*)o;+}+void btDbvt_ICollide_free(void *c) {+	::btDbvt::ICollide *o = (::btDbvt::ICollide*)c;+	delete o;+}+//method: Process void ( ::btDbvt::ICollide::* )( ::btDbvtNode const *,::btDbvtNode const * ) +void btDbvt_ICollide_Process(void *c,void* p0,void* p1) {+	::btDbvt::ICollide *o = (::btDbvt::ICollide*)c;+	::btDbvtNode const * tp0 = (::btDbvtNode const *)p0;+	::btDbvtNode const * tp1 = (::btDbvtNode const *)p1;+	o->Process(tp0,tp1);+}+//method: Process void ( ::btDbvt::ICollide::* )( ::btDbvtNode const *,::btDbvtNode const * ) +void btDbvt_ICollide_Process0(void *c,void* p0,void* p1) {+	::btDbvt::ICollide *o = (::btDbvt::ICollide*)c;+	::btDbvtNode const * tp0 = (::btDbvtNode const *)p0;+	::btDbvtNode const * tp1 = (::btDbvtNode const *)p1;+	o->Process(tp0,tp1);+}+//method: Process void ( ::btDbvt::ICollide::* )( ::btDbvtNode const * ) +void btDbvt_ICollide_Process1(void *c,void* p0) {+	::btDbvt::ICollide *o = (::btDbvt::ICollide*)c;+	::btDbvtNode const * tp0 = (::btDbvtNode const *)p0;+	o->Process(tp0);+}+//method: Process void ( ::btDbvt::ICollide::* )( ::btDbvtNode const *,::btScalar ) +void btDbvt_ICollide_Process2(void *c,void* p0,float p1) {+	::btDbvt::ICollide *o = (::btDbvt::ICollide*)c;+	::btDbvtNode const * tp0 = (::btDbvtNode const *)p0;+	o->Process(tp0,p1);+}+//method: AllLeaves bool ( ::btDbvt::ICollide::* )( ::btDbvtNode const * ) +int btDbvt_ICollide_AllLeaves(void *c,void* p0) {+	::btDbvt::ICollide *o = (::btDbvt::ICollide*)c;+	::btDbvtNode const * tp0 = (::btDbvtNode const *)p0;+	int retVal = (int)o->AllLeaves(tp0);+	return retVal;+}+//method: Descent bool ( ::btDbvt::ICollide::* )( ::btDbvtNode const * ) +int btDbvt_ICollide_Descent(void *c,void* p0) {+	::btDbvt::ICollide *o = (::btDbvt::ICollide*)c;+	::btDbvtNode const * tp0 = (::btDbvtNode const *)p0;+	int retVal = (int)o->Descent(tp0);+	return retVal;+}++// ::btDbvt::IWriter+//method: WriteLeaf void ( ::btDbvt::IWriter::* )( ::btDbvtNode const *,int,int ) +void btDbvt_IWriter_WriteLeaf(void *c,void* p0,int p1,int p2) {+	::btDbvt::IWriter *o = (::btDbvt::IWriter*)c;+	::btDbvtNode const * tp0 = (::btDbvtNode const *)p0;+	o->WriteLeaf(tp0,p1,p2);+}+//method: WriteNode void ( ::btDbvt::IWriter::* )( ::btDbvtNode const *,int,int,int,int ) +void btDbvt_IWriter_WriteNode(void *c,void* p0,int p1,int p2,int p3,int p4) {+	::btDbvt::IWriter *o = (::btDbvt::IWriter*)c;+	::btDbvtNode const * tp0 = (::btDbvtNode const *)p0;+	o->WriteNode(tp0,p1,p2,p3,p4);+}+//method: Prepare void ( ::btDbvt::IWriter::* )( ::btDbvtNode const *,int ) +void btDbvt_IWriter_Prepare(void *c,void* p0,int p1) {+	::btDbvt::IWriter *o = (::btDbvt::IWriter*)c;+	::btDbvtNode const * tp0 = (::btDbvtNode const *)p0;+	o->Prepare(tp0,p1);+}++// ::bt32BitAxisSweep3+//constructor: bt32BitAxisSweep3  ( ::bt32BitAxisSweep3::* )( ::btVector3 const &,::btVector3 const &,unsigned int,::btOverlappingPairCache *,bool ) +void* bt32BitAxisSweep3_new(float* p0,float* p1,unsigned int p2,void* p3,int p4) {+	::bt32BitAxisSweep3 *o = 0;+	 void *mem = 0;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	::btOverlappingPairCache * tp3 = (::btOverlappingPairCache *)p3;+	mem = btAlignedAlloc(sizeof(::bt32BitAxisSweep3),16);+	o = new (mem)::bt32BitAxisSweep3(tp0,tp1,p2,tp3,p4);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	return (void*)o;+}+void bt32BitAxisSweep3_free(void *c) {+	::bt32BitAxisSweep3 *o = (::bt32BitAxisSweep3*)c;+	delete o;+}++// ::btAxisSweep3+//constructor: btAxisSweep3  ( ::btAxisSweep3::* )( ::btVector3 const &,::btVector3 const &,short unsigned int,::btOverlappingPairCache *,bool ) +void* btAxisSweep3_new(float* p0,float* p1,short unsigned int p2,void* p3,int p4) {+	::btAxisSweep3 *o = 0;+	 void *mem = 0;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	::btOverlappingPairCache * tp3 = (::btOverlappingPairCache *)p3;+	mem = btAlignedAlloc(sizeof(::btAxisSweep3),16);+	o = new (mem)::btAxisSweep3(tp0,tp1,p2,tp3,p4);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	return (void*)o;+}+void btAxisSweep3_free(void *c) {+	::btAxisSweep3 *o = (::btAxisSweep3*)c;+	delete o;+}++// ::btBroadphaseAabbCallback+//method: process bool ( ::btBroadphaseAabbCallback::* )( ::btBroadphaseProxy const * ) +int btBroadphaseAabbCallback_process(void *c,void* p0) {+	::btBroadphaseAabbCallback *o = (::btBroadphaseAabbCallback*)c;+	::btBroadphaseProxy const * tp0 = (::btBroadphaseProxy const *)p0;+	int retVal = (int)o->process(tp0);+	return retVal;+}++// ::btBroadphaseInterface+//method: rayTest void ( ::btBroadphaseInterface::* )( ::btVector3 const &,::btVector3 const &,::btBroadphaseRayCallback &,::btVector3 const &,::btVector3 const & ) +void btBroadphaseInterface_rayTest(void *c,float* p0,float* p1,void* p2,float* p3,float* p4) {+	::btBroadphaseInterface *o = (::btBroadphaseInterface*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	::btBroadphaseRayCallback & tp2 = *(::btBroadphaseRayCallback *)p2;+	btVector3 tp3(p3[0],p3[1],p3[2]);+	btVector3 tp4(p4[0],p4[1],p4[2]);+	o->rayTest(tp0,tp1,tp2,tp3,tp4);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+	p4[0]=tp4.m_floats[0];p4[1]=tp4.m_floats[1];p4[2]=tp4.m_floats[2];+}+//method: setAabb void ( ::btBroadphaseInterface::* )( ::btBroadphaseProxy *,::btVector3 const &,::btVector3 const &,::btDispatcher * ) +void btBroadphaseInterface_setAabb(void *c,void* p0,float* p1,float* p2,void* p3) {+	::btBroadphaseInterface *o = (::btBroadphaseInterface*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	::btDispatcher * tp3 = (::btDispatcher *)p3;+	o->setAabb(tp0,tp1,tp2,tp3);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: getBroadphaseAabb void ( ::btBroadphaseInterface::* )( ::btVector3 &,::btVector3 & ) const+void btBroadphaseInterface_getBroadphaseAabb(void *c,float* p0,float* p1) {+	::btBroadphaseInterface *o = (::btBroadphaseInterface*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->getBroadphaseAabb(tp0,tp1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: resetPool void ( ::btBroadphaseInterface::* )( ::btDispatcher * ) +void btBroadphaseInterface_resetPool(void *c,void* p0) {+	::btBroadphaseInterface *o = (::btBroadphaseInterface*)c;+	::btDispatcher * tp0 = (::btDispatcher *)p0;+	o->resetPool(tp0);+}+//method: calculateOverlappingPairs void ( ::btBroadphaseInterface::* )( ::btDispatcher * ) +void btBroadphaseInterface_calculateOverlappingPairs(void *c,void* p0) {+	::btBroadphaseInterface *o = (::btBroadphaseInterface*)c;+	::btDispatcher * tp0 = (::btDispatcher *)p0;+	o->calculateOverlappingPairs(tp0);+}+//method: printStats void ( ::btBroadphaseInterface::* )(  ) +void btBroadphaseInterface_printStats(void *c) {+	::btBroadphaseInterface *o = (::btBroadphaseInterface*)c;+	o->printStats();+}+//method: getAabb void ( ::btBroadphaseInterface::* )( ::btBroadphaseProxy *,::btVector3 &,::btVector3 & ) const+void btBroadphaseInterface_getAabb(void *c,void* p0,float* p1,float* p2) {+	::btBroadphaseInterface *o = (::btBroadphaseInterface*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->getAabb(tp0,tp1,tp2);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: aabbTest void ( ::btBroadphaseInterface::* )( ::btVector3 const &,::btVector3 const &,::btBroadphaseAabbCallback & ) +void btBroadphaseInterface_aabbTest(void *c,float* p0,float* p1,void* p2) {+	::btBroadphaseInterface *o = (::btBroadphaseInterface*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	::btBroadphaseAabbCallback & tp2 = *(::btBroadphaseAabbCallback *)p2;+	o->aabbTest(tp0,tp1,tp2);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//not supported method: createProxy ::btBroadphaseProxy * ( ::btBroadphaseInterface::* )( ::btVector3 const &,::btVector3 const &,int,void *,short int,short int,::btDispatcher *,void * ) +//method: getOverlappingPairCache ::btOverlappingPairCache * ( ::btBroadphaseInterface::* )(  ) +void* btBroadphaseInterface_getOverlappingPairCache(void *c) {+	::btBroadphaseInterface *o = (::btBroadphaseInterface*)c;+	void* retVal = (void*) o->getOverlappingPairCache();+	return retVal;+}+//method: getOverlappingPairCache ::btOverlappingPairCache * ( ::btBroadphaseInterface::* )(  ) +void* btBroadphaseInterface_getOverlappingPairCache0(void *c) {+	::btBroadphaseInterface *o = (::btBroadphaseInterface*)c;+	void* retVal = (void*) o->getOverlappingPairCache();+	return retVal;+}+//method: getOverlappingPairCache ::btOverlappingPairCache const * ( ::btBroadphaseInterface::* )(  ) const+void* btBroadphaseInterface_getOverlappingPairCache1(void *c) {+	::btBroadphaseInterface *o = (::btBroadphaseInterface*)c;+	void* retVal = (void*) o->getOverlappingPairCache();+	return retVal;+}+//method: destroyProxy void ( ::btBroadphaseInterface::* )( ::btBroadphaseProxy *,::btDispatcher * ) +void btBroadphaseInterface_destroyProxy(void *c,void* p0,void* p1) {+	::btBroadphaseInterface *o = (::btBroadphaseInterface*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	::btDispatcher * tp1 = (::btDispatcher *)p1;+	o->destroyProxy(tp0,tp1);+}++// ::btBroadphasePair+//constructor: btBroadphasePair  ( ::btBroadphasePair::* )(  ) +void* btBroadphasePair_new0() {+	::btBroadphasePair *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btBroadphasePair),16);+	o = new (mem)::btBroadphasePair();+	return (void*)o;+}+//constructor: btBroadphasePair  ( ::btBroadphasePair::* )( ::btBroadphaseProxy &,::btBroadphaseProxy & ) +void* btBroadphasePair_new1(void* p0,void* p1) {+	::btBroadphasePair *o = 0;+	 void *mem = 0;+	::btBroadphaseProxy & tp0 = *(::btBroadphaseProxy *)p0;+	::btBroadphaseProxy & tp1 = *(::btBroadphaseProxy *)p1;+	mem = btAlignedAlloc(sizeof(::btBroadphasePair),16);+	o = new (mem)::btBroadphasePair(tp0,tp1);+	return (void*)o;+}+void btBroadphasePair_free(void *c) {+	::btBroadphasePair *o = (::btBroadphasePair*)c;+	delete o;+}+//attribute: ::btBroadphaseProxy * btBroadphasePair->m_pProxy0+void btBroadphasePair_m_pProxy0_set(void *c,void* a) {+	::btBroadphasePair *o = (::btBroadphasePair*)c;+	::btBroadphaseProxy * ta = (::btBroadphaseProxy *)a;+	o->m_pProxy0 = ta;+}+// attriibute getter not supported: //attribute: ::btBroadphaseProxy * btBroadphasePair->m_pProxy0+//attribute: ::btBroadphaseProxy * btBroadphasePair->m_pProxy1+void btBroadphasePair_m_pProxy1_set(void *c,void* a) {+	::btBroadphasePair *o = (::btBroadphasePair*)c;+	::btBroadphaseProxy * ta = (::btBroadphaseProxy *)a;+	o->m_pProxy1 = ta;+}+// attriibute getter not supported: //attribute: ::btBroadphaseProxy * btBroadphasePair->m_pProxy1+//attribute: ::btCollisionAlgorithm * btBroadphasePair->m_algorithm+void btBroadphasePair_m_algorithm_set(void *c,void* a) {+	::btBroadphasePair *o = (::btBroadphasePair*)c;+	::btCollisionAlgorithm * ta = (::btCollisionAlgorithm *)a;+	o->m_algorithm = ta;+}+// attriibute getter not supported: //attribute: ::btCollisionAlgorithm * btBroadphasePair->m_algorithm+//attribute: ::btBroadphasePair btBroadphasePair->+// attribute not supported: //attribute: ::btBroadphasePair btBroadphasePair->++// ::btBroadphasePairSortPredicate+//constructor: btBroadphasePairSortPredicate  ( ::btBroadphasePairSortPredicate::* )(  ) +void* btBroadphasePairSortPredicate_new() {+	::btBroadphasePairSortPredicate *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btBroadphasePairSortPredicate),16);+	o = new (mem)::btBroadphasePairSortPredicate();+	return (void*)o;+}+void btBroadphasePairSortPredicate_free(void *c) {+	::btBroadphasePairSortPredicate *o = (::btBroadphasePairSortPredicate*)c;+	delete o;+}++// ::btBroadphaseProxy+//constructor: btBroadphaseProxy  ( ::btBroadphaseProxy::* )(  ) +void* btBroadphaseProxy_new0() {+	::btBroadphaseProxy *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btBroadphaseProxy),16);+	o = new (mem)::btBroadphaseProxy();+	return (void*)o;+}+//not supported constructor: btBroadphaseProxy  ( ::btBroadphaseProxy::* )( ::btVector3 const &,::btVector3 const &,void *,short int,short int,void * ) +void btBroadphaseProxy_free(void *c) {+	::btBroadphaseProxy *o = (::btBroadphaseProxy*)c;+	delete o;+}+//method: isConvex bool (*)( int )+int btBroadphaseProxy_isConvex(int p0) {+	int retVal = (int)::btBroadphaseProxy::isConvex(p0);+	return retVal;+}+//method: isInfinite bool (*)( int )+int btBroadphaseProxy_isInfinite(int p0) {+	int retVal = (int)::btBroadphaseProxy::isInfinite(p0);+	return retVal;+}+//method: getUid int ( ::btBroadphaseProxy::* )(  ) const+int btBroadphaseProxy_getUid(void *c) {+	::btBroadphaseProxy *o = (::btBroadphaseProxy*)c;+	int retVal = (int)o->getUid();+	return retVal;+}+//method: isConcave bool (*)( int )+int btBroadphaseProxy_isConcave(int p0) {+	int retVal = (int)::btBroadphaseProxy::isConcave(p0);+	return retVal;+}+//method: isNonMoving bool (*)( int )+int btBroadphaseProxy_isNonMoving(int p0) {+	int retVal = (int)::btBroadphaseProxy::isNonMoving(p0);+	return retVal;+}+//method: isCompound bool (*)( int )+int btBroadphaseProxy_isCompound(int p0) {+	int retVal = (int)::btBroadphaseProxy::isCompound(p0);+	return retVal;+}+//method: isPolyhedral bool (*)( int )+int btBroadphaseProxy_isPolyhedral(int p0) {+	int retVal = (int)::btBroadphaseProxy::isPolyhedral(p0);+	return retVal;+}+//method: isConvex2d bool (*)( int )+int btBroadphaseProxy_isConvex2d(int p0) {+	int retVal = (int)::btBroadphaseProxy::isConvex2d(p0);+	return retVal;+}+//method: isSoftBody bool (*)( int )+int btBroadphaseProxy_isSoftBody(int p0) {+	int retVal = (int)::btBroadphaseProxy::isSoftBody(p0);+	return retVal;+}+//attribute: ::btVector3 btBroadphaseProxy->m_aabbMax+void btBroadphaseProxy_m_aabbMax_set(void *c,float* a) {+	::btBroadphaseProxy *o = (::btBroadphaseProxy*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_aabbMax = ta;+}+void btBroadphaseProxy_m_aabbMax_get(void *c,float* a) {+	::btBroadphaseProxy *o = (::btBroadphaseProxy*)c;+	a[0]=(o->m_aabbMax).m_floats[0];a[1]=(o->m_aabbMax).m_floats[1];a[2]=(o->m_aabbMax).m_floats[2];+}++//attribute: ::btVector3 btBroadphaseProxy->m_aabbMin+void btBroadphaseProxy_m_aabbMin_set(void *c,float* a) {+	::btBroadphaseProxy *o = (::btBroadphaseProxy*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_aabbMin = ta;+}+void btBroadphaseProxy_m_aabbMin_get(void *c,float* a) {+	::btBroadphaseProxy *o = (::btBroadphaseProxy*)c;+	a[0]=(o->m_aabbMin).m_floats[0];a[1]=(o->m_aabbMin).m_floats[1];a[2]=(o->m_aabbMin).m_floats[2];+}++//attribute: void * btBroadphaseProxy->m_clientObject+// attribute not supported: //attribute: void * btBroadphaseProxy->m_clientObject+//attribute: short int btBroadphaseProxy->m_collisionFilterGroup+void btBroadphaseProxy_m_collisionFilterGroup_set(void *c,short int a) {+	::btBroadphaseProxy *o = (::btBroadphaseProxy*)c;+	o->m_collisionFilterGroup = a;+}+short int btBroadphaseProxy_m_collisionFilterGroup_get(void *c) {+	::btBroadphaseProxy *o = (::btBroadphaseProxy*)c;+	return (short int)(o->m_collisionFilterGroup);+}++//attribute: short int btBroadphaseProxy->m_collisionFilterMask+void btBroadphaseProxy_m_collisionFilterMask_set(void *c,short int a) {+	::btBroadphaseProxy *o = (::btBroadphaseProxy*)c;+	o->m_collisionFilterMask = a;+}+short int btBroadphaseProxy_m_collisionFilterMask_get(void *c) {+	::btBroadphaseProxy *o = (::btBroadphaseProxy*)c;+	return (short int)(o->m_collisionFilterMask);+}++//attribute: void * btBroadphaseProxy->m_multiSapParentProxy+// attribute not supported: //attribute: void * btBroadphaseProxy->m_multiSapParentProxy+//attribute: int btBroadphaseProxy->m_uniqueId+void btBroadphaseProxy_m_uniqueId_set(void *c,int a) {+	::btBroadphaseProxy *o = (::btBroadphaseProxy*)c;+	o->m_uniqueId = a;+}+int btBroadphaseProxy_m_uniqueId_get(void *c) {+	::btBroadphaseProxy *o = (::btBroadphaseProxy*)c;+	return (int)(o->m_uniqueId);+}+++// ::btBroadphaseRayCallback+//attribute: ::btScalar btBroadphaseRayCallback->m_lambda_max+void btBroadphaseRayCallback_m_lambda_max_set(void *c,float a) {+	::btBroadphaseRayCallback *o = (::btBroadphaseRayCallback*)c;+	o->m_lambda_max = a;+}+float btBroadphaseRayCallback_m_lambda_max_get(void *c) {+	::btBroadphaseRayCallback *o = (::btBroadphaseRayCallback*)c;+	return (float)(o->m_lambda_max);+}++//attribute: ::btVector3 btBroadphaseRayCallback->m_rayDirectionInverse+void btBroadphaseRayCallback_m_rayDirectionInverse_set(void *c,float* a) {+	::btBroadphaseRayCallback *o = (::btBroadphaseRayCallback*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_rayDirectionInverse = ta;+}+void btBroadphaseRayCallback_m_rayDirectionInverse_get(void *c,float* a) {+	::btBroadphaseRayCallback *o = (::btBroadphaseRayCallback*)c;+	a[0]=(o->m_rayDirectionInverse).m_floats[0];a[1]=(o->m_rayDirectionInverse).m_floats[1];a[2]=(o->m_rayDirectionInverse).m_floats[2];+}++//attribute: unsigned int[3] btBroadphaseRayCallback->m_signs+// attribute not supported: //attribute: unsigned int[3] btBroadphaseRayCallback->m_signs++// ::btBvhSubtreeInfo+//constructor: btBvhSubtreeInfo  ( ::btBvhSubtreeInfo::* )(  ) +void* btBvhSubtreeInfo_new() {+	::btBvhSubtreeInfo *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btBvhSubtreeInfo),16);+	o = new (mem)::btBvhSubtreeInfo();+	return (void*)o;+}+void btBvhSubtreeInfo_free(void *c) {+	::btBvhSubtreeInfo *o = (::btBvhSubtreeInfo*)c;+	delete o;+}+//method: setAabbFromQuantizeNode void ( ::btBvhSubtreeInfo::* )( ::btQuantizedBvhNode const & ) +void btBvhSubtreeInfo_setAabbFromQuantizeNode(void *c,void* p0) {+	::btBvhSubtreeInfo *o = (::btBvhSubtreeInfo*)c;+	::btQuantizedBvhNode const & tp0 = *(::btQuantizedBvhNode const *)p0;+	o->setAabbFromQuantizeNode(tp0);+}+//attribute: short unsigned int[3] btBvhSubtreeInfo->m_quantizedAabbMin+// attribute not supported: //attribute: short unsigned int[3] btBvhSubtreeInfo->m_quantizedAabbMin+//attribute: short unsigned int[3] btBvhSubtreeInfo->m_quantizedAabbMax+// attribute not supported: //attribute: short unsigned int[3] btBvhSubtreeInfo->m_quantizedAabbMax+//attribute: int btBvhSubtreeInfo->m_rootNodeIndex+void btBvhSubtreeInfo_m_rootNodeIndex_set(void *c,int a) {+	::btBvhSubtreeInfo *o = (::btBvhSubtreeInfo*)c;+	o->m_rootNodeIndex = a;+}+int btBvhSubtreeInfo_m_rootNodeIndex_get(void *c) {+	::btBvhSubtreeInfo *o = (::btBvhSubtreeInfo*)c;+	return (int)(o->m_rootNodeIndex);+}++//attribute: int btBvhSubtreeInfo->m_subtreeSize+void btBvhSubtreeInfo_m_subtreeSize_set(void *c,int a) {+	::btBvhSubtreeInfo *o = (::btBvhSubtreeInfo*)c;+	o->m_subtreeSize = a;+}+int btBvhSubtreeInfo_m_subtreeSize_get(void *c) {+	::btBvhSubtreeInfo *o = (::btBvhSubtreeInfo*)c;+	return (int)(o->m_subtreeSize);+}++//attribute: int[3] btBvhSubtreeInfo->m_padding+// attribute not supported: //attribute: int[3] btBvhSubtreeInfo->m_padding++// ::btBvhSubtreeInfoData+//constructor: btBvhSubtreeInfoData  ( ::btBvhSubtreeInfoData::* )(  ) +void* btBvhSubtreeInfoData_new() {+	::btBvhSubtreeInfoData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btBvhSubtreeInfoData),16);+	o = new (mem)::btBvhSubtreeInfoData();+	return (void*)o;+}+void btBvhSubtreeInfoData_free(void *c) {+	::btBvhSubtreeInfoData *o = (::btBvhSubtreeInfoData*)c;+	delete o;+}+//attribute: int btBvhSubtreeInfoData->m_rootNodeIndex+void btBvhSubtreeInfoData_m_rootNodeIndex_set(void *c,int a) {+	::btBvhSubtreeInfoData *o = (::btBvhSubtreeInfoData*)c;+	o->m_rootNodeIndex = a;+}+int btBvhSubtreeInfoData_m_rootNodeIndex_get(void *c) {+	::btBvhSubtreeInfoData *o = (::btBvhSubtreeInfoData*)c;+	return (int)(o->m_rootNodeIndex);+}++//attribute: int btBvhSubtreeInfoData->m_subtreeSize+void btBvhSubtreeInfoData_m_subtreeSize_set(void *c,int a) {+	::btBvhSubtreeInfoData *o = (::btBvhSubtreeInfoData*)c;+	o->m_subtreeSize = a;+}+int btBvhSubtreeInfoData_m_subtreeSize_get(void *c) {+	::btBvhSubtreeInfoData *o = (::btBvhSubtreeInfoData*)c;+	return (int)(o->m_subtreeSize);+}++//attribute: short unsigned int[3] btBvhSubtreeInfoData->m_quantizedAabbMin+// attribute not supported: //attribute: short unsigned int[3] btBvhSubtreeInfoData->m_quantizedAabbMin+//attribute: short unsigned int[3] btBvhSubtreeInfoData->m_quantizedAabbMax+// attribute not supported: //attribute: short unsigned int[3] btBvhSubtreeInfoData->m_quantizedAabbMax++// ::btCollisionAlgorithm+//not supported method: getAllContactManifolds void ( ::btCollisionAlgorithm::* )( ::btManifoldArray & ) +//method: calculateTimeOfImpact ::btScalar ( ::btCollisionAlgorithm::* )( ::btCollisionObject *,::btCollisionObject *,::btDispatcherInfo const &,::btManifoldResult * ) +float btCollisionAlgorithm_calculateTimeOfImpact(void *c,void* p0,void* p1,void* p2,void* p3) {+	::btCollisionAlgorithm *o = (::btCollisionAlgorithm*)c;+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	::btCollisionObject * tp1 = (::btCollisionObject *)p1;+	::btDispatcherInfo const & tp2 = *(::btDispatcherInfo const *)p2;+	::btManifoldResult * tp3 = (::btManifoldResult *)p3;+	float retVal = (float)o->calculateTimeOfImpact(tp0,tp1,tp2,tp3);+	return retVal;+}+//method: processCollision void ( ::btCollisionAlgorithm::* )( ::btCollisionObject *,::btCollisionObject *,::btDispatcherInfo const &,::btManifoldResult * ) +void btCollisionAlgorithm_processCollision(void *c,void* p0,void* p1,void* p2,void* p3) {+	::btCollisionAlgorithm *o = (::btCollisionAlgorithm*)c;+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	::btCollisionObject * tp1 = (::btCollisionObject *)p1;+	::btDispatcherInfo const & tp2 = *(::btDispatcherInfo const *)p2;+	::btManifoldResult * tp3 = (::btManifoldResult *)p3;+	o->processCollision(tp0,tp1,tp2,tp3);+}++// ::btCollisionAlgorithmConstructionInfo+//constructor: btCollisionAlgorithmConstructionInfo  ( ::btCollisionAlgorithmConstructionInfo::* )(  ) +void* btCollisionAlgorithmConstructionInfo_new0() {+	::btCollisionAlgorithmConstructionInfo *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btCollisionAlgorithmConstructionInfo),16);+	o = new (mem)::btCollisionAlgorithmConstructionInfo();+	return (void*)o;+}+//constructor: btCollisionAlgorithmConstructionInfo  ( ::btCollisionAlgorithmConstructionInfo::* )( ::btDispatcher *,int ) +void* btCollisionAlgorithmConstructionInfo_new1(void* p0,int p1) {+	::btCollisionAlgorithmConstructionInfo *o = 0;+	 void *mem = 0;+	::btDispatcher * tp0 = (::btDispatcher *)p0;+	mem = btAlignedAlloc(sizeof(::btCollisionAlgorithmConstructionInfo),16);+	o = new (mem)::btCollisionAlgorithmConstructionInfo(tp0,p1);+	return (void*)o;+}+void btCollisionAlgorithmConstructionInfo_free(void *c) {+	::btCollisionAlgorithmConstructionInfo *o = (::btCollisionAlgorithmConstructionInfo*)c;+	delete o;+}+//attribute: ::btDispatcher * btCollisionAlgorithmConstructionInfo->m_dispatcher1+void btCollisionAlgorithmConstructionInfo_m_dispatcher1_set(void *c,void* a) {+	::btCollisionAlgorithmConstructionInfo *o = (::btCollisionAlgorithmConstructionInfo*)c;+	::btDispatcher * ta = (::btDispatcher *)a;+	o->m_dispatcher1 = ta;+}+// attriibute getter not supported: //attribute: ::btDispatcher * btCollisionAlgorithmConstructionInfo->m_dispatcher1+//attribute: ::btPersistentManifold * btCollisionAlgorithmConstructionInfo->m_manifold+void btCollisionAlgorithmConstructionInfo_m_manifold_set(void *c,void* a) {+	::btCollisionAlgorithmConstructionInfo *o = (::btCollisionAlgorithmConstructionInfo*)c;+	::btPersistentManifold * ta = (::btPersistentManifold *)a;+	o->m_manifold = ta;+}+// attriibute getter not supported: //attribute: ::btPersistentManifold * btCollisionAlgorithmConstructionInfo->m_manifold++// ::btDbvt+//constructor: btDbvt  ( ::btDbvt::* )(  ) +void* btDbvt_new() {+	::btDbvt *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btDbvt),16);+	o = new (mem)::btDbvt();+	return (void*)o;+}+void btDbvt_free(void *c) {+	::btDbvt *o = (::btDbvt*)c;+	delete o;+}+//not supported method: nearest int (*)( int const *,::btDbvt::sStkNPS const *,::btScalar,int,int )+//method: enumLeaves void (*)( ::btDbvtNode const *,::btDbvt::ICollide & )+void btDbvt_enumLeaves(void* p0,void* p1) {+	::btDbvtNode const * tp0 = (::btDbvtNode const *)p0;+	::btDbvt::ICollide & tp1 = *(::btDbvt::ICollide *)p1;+	::btDbvt::enumLeaves(tp0,tp1);+}+//method: optimizeIncremental void ( ::btDbvt::* )( int ) +void btDbvt_optimizeIncremental(void *c,int p0) {+	::btDbvt *o = (::btDbvt*)c;+	o->optimizeIncremental(p0);+}+//method: rayTest void (*)( ::btDbvtNode const *,::btVector3 const &,::btVector3 const &,::btDbvt::ICollide & )+void btDbvt_rayTest(void* p0,float* p1,float* p2,void* p3) {+	::btDbvtNode const * tp0 = (::btDbvtNode const *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	::btDbvt::ICollide & tp3 = *(::btDbvt::ICollide *)p3;+	::btDbvt::rayTest(tp0,tp1,tp2,tp3);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: optimizeTopDown void ( ::btDbvt::* )( int ) +void btDbvt_optimizeTopDown(void *c,int p0) {+	::btDbvt *o = (::btDbvt*)c;+	o->optimizeTopDown(p0);+}+//method: enumNodes void (*)( ::btDbvtNode const *,::btDbvt::ICollide & )+void btDbvt_enumNodes(void* p0,void* p1) {+	::btDbvtNode const * tp0 = (::btDbvtNode const *)p0;+	::btDbvt::ICollide & tp1 = *(::btDbvt::ICollide *)p1;+	::btDbvt::enumNodes(tp0,tp1);+}+//method: write void ( ::btDbvt::* )( ::btDbvt::IWriter * ) const+void btDbvt_write(void *c,void* p0) {+	::btDbvt *o = (::btDbvt*)c;+	::btDbvt::IWriter * tp0 = (::btDbvt::IWriter *)p0;+	o->write(tp0);+}+//not supported method: allocate int (*)( ::btAlignedObjectArray<int> &,::btAlignedObjectArray<btDbvt::sStkNPS> &,::btDbvt::sStkNPS const & )+//method: empty bool ( ::btDbvt::* )(  ) const+int btDbvt_empty(void *c) {+	::btDbvt *o = (::btDbvt*)c;+	int retVal = (int)o->empty();+	return retVal;+}+//method: collideTV void ( ::btDbvt::* )( ::btDbvtNode const *,::btDbvtVolume const &,::btDbvt::ICollide & ) +void btDbvt_collideTV(void *c,void* p0,void* p1,void* p2) {+	::btDbvt *o = (::btDbvt*)c;+	::btDbvtNode const * tp0 = (::btDbvtNode const *)p0;+	::btDbvtVolume const & tp1 = *(::btDbvtAabbMm const *)p1;+	::btDbvt::ICollide & tp2 = *(::btDbvt::ICollide *)p2;+	o->collideTV(tp0,tp1,tp2);+}+//method: collideTU void (*)( ::btDbvtNode const *,::btDbvt::ICollide & )+void btDbvt_collideTU(void* p0,void* p1) {+	::btDbvtNode const * tp0 = (::btDbvtNode const *)p0;+	::btDbvt::ICollide & tp1 = *(::btDbvt::ICollide *)p1;+	::btDbvt::collideTU(tp0,tp1);+}+//method: collideTT void ( ::btDbvt::* )( ::btDbvtNode const *,::btDbvtNode const *,::btDbvt::ICollide & ) +void btDbvt_collideTT(void *c,void* p0,void* p1,void* p2) {+	::btDbvt *o = (::btDbvt*)c;+	::btDbvtNode const * tp0 = (::btDbvtNode const *)p0;+	::btDbvtNode const * tp1 = (::btDbvtNode const *)p1;+	::btDbvt::ICollide & tp2 = *(::btDbvt::ICollide *)p2;+	o->collideTT(tp0,tp1,tp2);+}+//method: collideTTpersistentStack void ( ::btDbvt::* )( ::btDbvtNode const *,::btDbvtNode const *,::btDbvt::ICollide & ) +void btDbvt_collideTTpersistentStack(void *c,void* p0,void* p1,void* p2) {+	::btDbvt *o = (::btDbvt*)c;+	::btDbvtNode const * tp0 = (::btDbvtNode const *)p0;+	::btDbvtNode const * tp1 = (::btDbvtNode const *)p1;+	::btDbvt::ICollide & tp2 = *(::btDbvt::ICollide *)p2;+	o->collideTTpersistentStack(tp0,tp1,tp2);+}+//method: clone void ( ::btDbvt::* )( ::btDbvt &,::btDbvt::IClone * ) const+void btDbvt_clone(void *c,void* p0,void* p1) {+	::btDbvt *o = (::btDbvt*)c;+	::btDbvt & tp0 = *(::btDbvt *)p0;+	::btDbvt::IClone * tp1 = (::btDbvt::IClone *)p1;+	o->clone(tp0,tp1);+}+//method: benchmark void (*)(  )+void btDbvt_benchmark() {+	::btDbvt::benchmark();+}+//method: update void ( ::btDbvt::* )( ::btDbvtNode *,int ) +void btDbvt_update(void *c,void* p0,int p1) {+	::btDbvt *o = (::btDbvt*)c;+	::btDbvtNode * tp0 = (::btDbvtNode *)p0;+	o->update(tp0,p1);+}+//method: update void ( ::btDbvt::* )( ::btDbvtNode *,int ) +void btDbvt_update0(void *c,void* p0,int p1) {+	::btDbvt *o = (::btDbvt*)c;+	::btDbvtNode * tp0 = (::btDbvtNode *)p0;+	o->update(tp0,p1);+}+//method: update void ( ::btDbvt::* )( ::btDbvtNode *,::btDbvtVolume & ) +void btDbvt_update1(void *c,void* p0,void* p1) {+	::btDbvt *o = (::btDbvt*)c;+	::btDbvtNode * tp0 = (::btDbvtNode *)p0;+	::btDbvtVolume & tp1 = *(::btDbvtAabbMm *)p1;+	o->update(tp0,tp1);+}+//method: update bool ( ::btDbvt::* )( ::btDbvtNode *,::btDbvtVolume &,::btVector3 const &,::btScalar ) +int btDbvt_update2(void *c,void* p0,void* p1,float* p2,float p3) {+	::btDbvt *o = (::btDbvt*)c;+	::btDbvtNode * tp0 = (::btDbvtNode *)p0;+	::btDbvtVolume & tp1 = *(::btDbvtAabbMm *)p1;+	btVector3 tp2(p2[0],p2[1],p2[2]);+	int retVal = (int)o->update(tp0,tp1,tp2,p3);+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	return retVal;+}+//method: update bool ( ::btDbvt::* )( ::btDbvtNode *,::btDbvtVolume &,::btVector3 const & ) +int btDbvt_update3(void *c,void* p0,void* p1,float* p2) {+	::btDbvt *o = (::btDbvt*)c;+	::btDbvtNode * tp0 = (::btDbvtNode *)p0;+	::btDbvtVolume & tp1 = *(::btDbvtAabbMm *)p1;+	btVector3 tp2(p2[0],p2[1],p2[2]);+	int retVal = (int)o->update(tp0,tp1,tp2);+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	return retVal;+}+//method: update bool ( ::btDbvt::* )( ::btDbvtNode *,::btDbvtVolume &,::btScalar ) +int btDbvt_update4(void *c,void* p0,void* p1,float p2) {+	::btDbvt *o = (::btDbvt*)c;+	::btDbvtNode * tp0 = (::btDbvtNode *)p0;+	::btDbvtVolume & tp1 = *(::btDbvtAabbMm *)p1;+	int retVal = (int)o->update(tp0,tp1,p2);+	return retVal;+}+//method: countLeaves int (*)( ::btDbvtNode const * )+int btDbvt_countLeaves(void* p0) {+	::btDbvtNode const * tp0 = (::btDbvtNode const *)p0;+	int retVal = (int)::btDbvt::countLeaves(tp0);+	return retVal;+}+//not supported method: collideOCL void (*)( ::btDbvtNode const *,::btVector3 const *,::btScalar const *,::btVector3 const &,int,::btDbvt::ICollide &,bool )+//not supported method: insert ::btDbvtNode * ( ::btDbvt::* )( ::btDbvtVolume const &,void * ) +//not supported method: collideKDOP void (*)( ::btDbvtNode const *,::btVector3 const *,::btScalar const *,int,::btDbvt::ICollide & )+//not supported method: extractLeaves void (*)( ::btDbvtNode const *,::btAlignedObjectArray<btDbvtNode const*> & )+//method: remove void ( ::btDbvt::* )( ::btDbvtNode * ) +void btDbvt_remove(void *c,void* p0) {+	::btDbvt *o = (::btDbvt*)c;+	::btDbvtNode * tp0 = (::btDbvtNode *)p0;+	o->remove(tp0);+}+//not supported method: rayTestInternal void ( ::btDbvt::* )( ::btDbvtNode const *,::btVector3 const &,::btVector3 const &,::btVector3 const &,unsigned int *,::btScalar,::btVector3 const &,::btVector3 const &,::btDbvt::ICollide & ) const+//method: maxdepth int (*)( ::btDbvtNode const * )+int btDbvt_maxdepth(void* p0) {+	::btDbvtNode const * tp0 = (::btDbvtNode const *)p0;+	int retVal = (int)::btDbvt::maxdepth(tp0);+	return retVal;+}+//method: clear void ( ::btDbvt::* )(  ) +void btDbvt_clear(void *c) {+	::btDbvt *o = (::btDbvt*)c;+	o->clear();+}+//method: optimizeBottomUp void ( ::btDbvt::* )(  ) +void btDbvt_optimizeBottomUp(void *c) {+	::btDbvt *o = (::btDbvt*)c;+	o->optimizeBottomUp();+}+//attribute: ::btDbvtNode * btDbvt->m_free+void btDbvt_m_free_set(void *c,void* a) {+	::btDbvt *o = (::btDbvt*)c;+	::btDbvtNode * ta = (::btDbvtNode *)a;+	o->m_free = ta;+}+// attriibute getter not supported: //attribute: ::btDbvtNode * btDbvt->m_free+//attribute: int btDbvt->m_leaves+void btDbvt_m_leaves_set(void *c,int a) {+	::btDbvt *o = (::btDbvt*)c;+	o->m_leaves = a;+}+int btDbvt_m_leaves_get(void *c) {+	::btDbvt *o = (::btDbvt*)c;+	return (int)(o->m_leaves);+}++//attribute: int btDbvt->m_lkhd+void btDbvt_m_lkhd_set(void *c,int a) {+	::btDbvt *o = (::btDbvt*)c;+	o->m_lkhd = a;+}+int btDbvt_m_lkhd_get(void *c) {+	::btDbvt *o = (::btDbvt*)c;+	return (int)(o->m_lkhd);+}++//attribute: unsigned int btDbvt->m_opath+void btDbvt_m_opath_set(void *c,unsigned int a) {+	::btDbvt *o = (::btDbvt*)c;+	o->m_opath = a;+}+unsigned int btDbvt_m_opath_get(void *c) {+	::btDbvt *o = (::btDbvt*)c;+	return (unsigned int)(o->m_opath);+}++//attribute: ::btDbvtNode * btDbvt->m_root+void btDbvt_m_root_set(void *c,void* a) {+	::btDbvt *o = (::btDbvt*)c;+	::btDbvtNode * ta = (::btDbvtNode *)a;+	o->m_root = ta;+}+// attriibute getter not supported: //attribute: ::btDbvtNode * btDbvt->m_root+//attribute: ::btAlignedObjectArray<btDbvt::sStkNN> btDbvt->m_stkStack+// attribute not supported: //attribute: ::btAlignedObjectArray<btDbvt::sStkNN> btDbvt->m_stkStack++// ::btDbvtAabbMm+//constructor: btDbvtAabbMm  ( ::btDbvtAabbMm::* )(  ) +void* btDbvtAabbMm_new() {+	::btDbvtAabbMm *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btDbvtAabbMm),16);+	o = new (mem)::btDbvtAabbMm();+	return (void*)o;+}+void btDbvtAabbMm_free(void *c) {+	::btDbvtAabbMm *o = (::btDbvtAabbMm*)c;+	delete o;+}+//method: SignedExpand void ( ::btDbvtAabbMm::* )( ::btVector3 const & ) +void btDbvtAabbMm_SignedExpand(void *c,float* p0) {+	::btDbvtAabbMm *o = (::btDbvtAabbMm*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->SignedExpand(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: Extents ::btVector3 ( ::btDbvtAabbMm::* )(  ) const+void btDbvtAabbMm_Extents(void *c,float* ret) {+	::btDbvtAabbMm *o = (::btDbvtAabbMm*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->Extents();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: Center ::btVector3 ( ::btDbvtAabbMm::* )(  ) const+void btDbvtAabbMm_Center(void *c,float* ret) {+	::btDbvtAabbMm *o = (::btDbvtAabbMm*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->Center();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: Lengths ::btVector3 ( ::btDbvtAabbMm::* )(  ) const+void btDbvtAabbMm_Lengths(void *c,float* ret) {+	::btDbvtAabbMm *o = (::btDbvtAabbMm*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->Lengths();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: Maxs ::btVector3 const & ( ::btDbvtAabbMm::* )(  ) const+void btDbvtAabbMm_Maxs(void *c,float* ret) {+	::btDbvtAabbMm *o = (::btDbvtAabbMm*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->Maxs();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//not supported method: FromCE ::btDbvtAabbMm (*)( ::btVector3 const &,::btVector3 const & )+//not supported method: FromMM ::btDbvtAabbMm (*)( ::btVector3 const &,::btVector3 const & )+//method: ProjectMinimum ::btScalar ( ::btDbvtAabbMm::* )( ::btVector3 const &,unsigned int ) const+float btDbvtAabbMm_ProjectMinimum(void *c,float* p0,unsigned int p1) {+	::btDbvtAabbMm *o = (::btDbvtAabbMm*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	float retVal = (float)o->ProjectMinimum(tp0,p1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	return retVal;+}+//method: Classify int ( ::btDbvtAabbMm::* )( ::btVector3 const &,::btScalar,int ) const+int btDbvtAabbMm_Classify(void *c,float* p0,float p1,int p2) {+	::btDbvtAabbMm *o = (::btDbvtAabbMm*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	int retVal = (int)o->Classify(tp0,p1,p2);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	return retVal;+}+//method: Contain bool ( ::btDbvtAabbMm::* )( ::btDbvtAabbMm const & ) const+int btDbvtAabbMm_Contain(void *c,void* p0) {+	::btDbvtAabbMm *o = (::btDbvtAabbMm*)c;+	::btDbvtAabbMm const & tp0 = *(::btDbvtAabbMm const *)p0;+	int retVal = (int)o->Contain(tp0);+	return retVal;+}+//method: Mins ::btVector3 const & ( ::btDbvtAabbMm::* )(  ) const+void btDbvtAabbMm_Mins(void *c,float* ret) {+	::btDbvtAabbMm *o = (::btDbvtAabbMm*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->Mins();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//not supported method: FromCR ::btDbvtAabbMm (*)( ::btVector3 const &,::btScalar )+//method: Expand void ( ::btDbvtAabbMm::* )( ::btVector3 const & ) +void btDbvtAabbMm_Expand(void *c,float* p0) {+	::btDbvtAabbMm *o = (::btDbvtAabbMm*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->Expand(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//not supported method: FromPoints ::btDbvtAabbMm (*)( ::btVector3 const *,int )+//not supported method: FromPoints ::btDbvtAabbMm (*)( ::btVector3 const *,int )+//not supported method: FromPoints ::btDbvtAabbMm (*)( ::btVector3 const * *,int )++// ::btDbvtBroadphase+//constructor: btDbvtBroadphase  ( ::btDbvtBroadphase::* )( ::btOverlappingPairCache * ) +void* btDbvtBroadphase_new(void* p0) {+	::btDbvtBroadphase *o = 0;+	 void *mem = 0;+	::btOverlappingPairCache * tp0 = (::btOverlappingPairCache *)p0;+	mem = btAlignedAlloc(sizeof(::btDbvtBroadphase),16);+	o = new (mem)::btDbvtBroadphase(tp0);+	return (void*)o;+}+void btDbvtBroadphase_free(void *c) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	delete o;+}+//method: rayTest void ( ::btDbvtBroadphase::* )( ::btVector3 const &,::btVector3 const &,::btBroadphaseRayCallback &,::btVector3 const &,::btVector3 const & ) +void btDbvtBroadphase_rayTest(void *c,float* p0,float* p1,void* p2,float* p3,float* p4) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	::btBroadphaseRayCallback & tp2 = *(::btBroadphaseRayCallback *)p2;+	btVector3 tp3(p3[0],p3[1],p3[2]);+	btVector3 tp4(p4[0],p4[1],p4[2]);+	o->rayTest(tp0,tp1,tp2,tp3,tp4);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+	p4[0]=tp4.m_floats[0];p4[1]=tp4.m_floats[1];p4[2]=tp4.m_floats[2];+}+//method: performDeferredRemoval void ( ::btDbvtBroadphase::* )( ::btDispatcher * ) +void btDbvtBroadphase_performDeferredRemoval(void *c,void* p0) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	::btDispatcher * tp0 = (::btDispatcher *)p0;+	o->performDeferredRemoval(tp0);+}+//method: setAabb void ( ::btDbvtBroadphase::* )( ::btBroadphaseProxy *,::btVector3 const &,::btVector3 const &,::btDispatcher * ) +void btDbvtBroadphase_setAabb(void *c,void* p0,float* p1,float* p2,void* p3) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	::btDispatcher * tp3 = (::btDispatcher *)p3;+	o->setAabb(tp0,tp1,tp2,tp3);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: getOverlappingPairCache ::btOverlappingPairCache * ( ::btDbvtBroadphase::* )(  ) +void* btDbvtBroadphase_getOverlappingPairCache(void *c) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	void* retVal = (void*) o->getOverlappingPairCache();+	return retVal;+}+//method: getOverlappingPairCache ::btOverlappingPairCache * ( ::btDbvtBroadphase::* )(  ) +void* btDbvtBroadphase_getOverlappingPairCache0(void *c) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	void* retVal = (void*) o->getOverlappingPairCache();+	return retVal;+}+//method: getOverlappingPairCache ::btOverlappingPairCache const * ( ::btDbvtBroadphase::* )(  ) const+void* btDbvtBroadphase_getOverlappingPairCache1(void *c) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	void* retVal = (void*) o->getOverlappingPairCache();+	return retVal;+}+//method: setVelocityPrediction void ( ::btDbvtBroadphase::* )( ::btScalar ) +void btDbvtBroadphase_setVelocityPrediction(void *c,float p0) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	o->setVelocityPrediction(p0);+}+//method: benchmark void (*)( ::btBroadphaseInterface * )+void btDbvtBroadphase_benchmark(void* p0) {+	::btBroadphaseInterface * tp0 = (::btBroadphaseInterface *)p0;+	::btDbvtBroadphase::benchmark(tp0);+}+//method: collide void ( ::btDbvtBroadphase::* )( ::btDispatcher * ) +void btDbvtBroadphase_collide(void *c,void* p0) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	::btDispatcher * tp0 = (::btDispatcher *)p0;+	o->collide(tp0);+}+//method: resetPool void ( ::btDbvtBroadphase::* )( ::btDispatcher * ) +void btDbvtBroadphase_resetPool(void *c,void* p0) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	::btDispatcher * tp0 = (::btDispatcher *)p0;+	o->resetPool(tp0);+}+//method: getVelocityPrediction ::btScalar ( ::btDbvtBroadphase::* )(  ) const+float btDbvtBroadphase_getVelocityPrediction(void *c) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	float retVal = (float)o->getVelocityPrediction();+	return retVal;+}+//method: calculateOverlappingPairs void ( ::btDbvtBroadphase::* )( ::btDispatcher * ) +void btDbvtBroadphase_calculateOverlappingPairs(void *c,void* p0) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	::btDispatcher * tp0 = (::btDispatcher *)p0;+	o->calculateOverlappingPairs(tp0);+}+//method: setAabbForceUpdate void ( ::btDbvtBroadphase::* )( ::btBroadphaseProxy *,::btVector3 const &,::btVector3 const &,::btDispatcher * ) +void btDbvtBroadphase_setAabbForceUpdate(void *c,void* p0,float* p1,float* p2,void* p3) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	::btDispatcher * tp3 = (::btDispatcher *)p3;+	o->setAabbForceUpdate(tp0,tp1,tp2,tp3);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: getBroadphaseAabb void ( ::btDbvtBroadphase::* )( ::btVector3 &,::btVector3 & ) const+void btDbvtBroadphase_getBroadphaseAabb(void *c,float* p0,float* p1) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->getBroadphaseAabb(tp0,tp1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: printStats void ( ::btDbvtBroadphase::* )(  ) +void btDbvtBroadphase_printStats(void *c) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	o->printStats();+}+//method: getAabb void ( ::btDbvtBroadphase::* )( ::btBroadphaseProxy *,::btVector3 &,::btVector3 & ) const+void btDbvtBroadphase_getAabb(void *c,void* p0,float* p1,float* p2) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->getAabb(tp0,tp1,tp2);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: aabbTest void ( ::btDbvtBroadphase::* )( ::btVector3 const &,::btVector3 const &,::btBroadphaseAabbCallback & ) +void btDbvtBroadphase_aabbTest(void *c,float* p0,float* p1,void* p2) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	::btBroadphaseAabbCallback & tp2 = *(::btBroadphaseAabbCallback *)p2;+	o->aabbTest(tp0,tp1,tp2);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//not supported method: createProxy ::btBroadphaseProxy * ( ::btDbvtBroadphase::* )( ::btVector3 const &,::btVector3 const &,int,void *,short int,short int,::btDispatcher *,void * ) +//method: optimize void ( ::btDbvtBroadphase::* )(  ) +void btDbvtBroadphase_optimize(void *c) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	o->optimize();+}+//method: destroyProxy void ( ::btDbvtBroadphase::* )( ::btBroadphaseProxy *,::btDispatcher * ) +void btDbvtBroadphase_destroyProxy(void *c,void* p0,void* p1) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	::btDispatcher * tp1 = (::btDispatcher *)p1;+	o->destroyProxy(tp0,tp1);+}+//attribute: ::btDbvt[2] btDbvtBroadphase->m_sets+// attribute not supported: //attribute: ::btDbvt[2] btDbvtBroadphase->m_sets+//attribute: ::btDbvtProxy *[3] btDbvtBroadphase->m_stageRoots+// attribute not supported: //attribute: ::btDbvtProxy *[3] btDbvtBroadphase->m_stageRoots+//attribute: ::btOverlappingPairCache * btDbvtBroadphase->m_paircache+void btDbvtBroadphase_m_paircache_set(void *c,void* a) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	::btOverlappingPairCache * ta = (::btOverlappingPairCache *)a;+	o->m_paircache = ta;+}+// attriibute getter not supported: //attribute: ::btOverlappingPairCache * btDbvtBroadphase->m_paircache+//attribute: ::btScalar btDbvtBroadphase->m_prediction+void btDbvtBroadphase_m_prediction_set(void *c,float a) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	o->m_prediction = a;+}+float btDbvtBroadphase_m_prediction_get(void *c) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	return (float)(o->m_prediction);+}++//attribute: int btDbvtBroadphase->m_stageCurrent+void btDbvtBroadphase_m_stageCurrent_set(void *c,int a) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	o->m_stageCurrent = a;+}+int btDbvtBroadphase_m_stageCurrent_get(void *c) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	return (int)(o->m_stageCurrent);+}++//attribute: int btDbvtBroadphase->m_fupdates+void btDbvtBroadphase_m_fupdates_set(void *c,int a) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	o->m_fupdates = a;+}+int btDbvtBroadphase_m_fupdates_get(void *c) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	return (int)(o->m_fupdates);+}++//attribute: int btDbvtBroadphase->m_dupdates+void btDbvtBroadphase_m_dupdates_set(void *c,int a) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	o->m_dupdates = a;+}+int btDbvtBroadphase_m_dupdates_get(void *c) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	return (int)(o->m_dupdates);+}++//attribute: int btDbvtBroadphase->m_cupdates+void btDbvtBroadphase_m_cupdates_set(void *c,int a) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	o->m_cupdates = a;+}+int btDbvtBroadphase_m_cupdates_get(void *c) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	return (int)(o->m_cupdates);+}++//attribute: int btDbvtBroadphase->m_newpairs+void btDbvtBroadphase_m_newpairs_set(void *c,int a) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	o->m_newpairs = a;+}+int btDbvtBroadphase_m_newpairs_get(void *c) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	return (int)(o->m_newpairs);+}++//attribute: int btDbvtBroadphase->m_fixedleft+void btDbvtBroadphase_m_fixedleft_set(void *c,int a) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	o->m_fixedleft = a;+}+int btDbvtBroadphase_m_fixedleft_get(void *c) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	return (int)(o->m_fixedleft);+}++//attribute: unsigned int btDbvtBroadphase->m_updates_call+void btDbvtBroadphase_m_updates_call_set(void *c,unsigned int a) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	o->m_updates_call = a;+}+unsigned int btDbvtBroadphase_m_updates_call_get(void *c) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	return (unsigned int)(o->m_updates_call);+}++//attribute: unsigned int btDbvtBroadphase->m_updates_done+void btDbvtBroadphase_m_updates_done_set(void *c,unsigned int a) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	o->m_updates_done = a;+}+unsigned int btDbvtBroadphase_m_updates_done_get(void *c) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	return (unsigned int)(o->m_updates_done);+}++//attribute: ::btScalar btDbvtBroadphase->m_updates_ratio+void btDbvtBroadphase_m_updates_ratio_set(void *c,float a) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	o->m_updates_ratio = a;+}+float btDbvtBroadphase_m_updates_ratio_get(void *c) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	return (float)(o->m_updates_ratio);+}++//attribute: int btDbvtBroadphase->m_pid+void btDbvtBroadphase_m_pid_set(void *c,int a) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	o->m_pid = a;+}+int btDbvtBroadphase_m_pid_get(void *c) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	return (int)(o->m_pid);+}++//attribute: int btDbvtBroadphase->m_cid+void btDbvtBroadphase_m_cid_set(void *c,int a) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	o->m_cid = a;+}+int btDbvtBroadphase_m_cid_get(void *c) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	return (int)(o->m_cid);+}++//attribute: int btDbvtBroadphase->m_gid+void btDbvtBroadphase_m_gid_set(void *c,int a) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	o->m_gid = a;+}+int btDbvtBroadphase_m_gid_get(void *c) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	return (int)(o->m_gid);+}++//attribute: bool btDbvtBroadphase->m_releasepaircache+void btDbvtBroadphase_m_releasepaircache_set(void *c,int a) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	o->m_releasepaircache = a;+}+int btDbvtBroadphase_m_releasepaircache_get(void *c) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	return (int)(o->m_releasepaircache);+}++//attribute: bool btDbvtBroadphase->m_deferedcollide+void btDbvtBroadphase_m_deferedcollide_set(void *c,int a) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	o->m_deferedcollide = a;+}+int btDbvtBroadphase_m_deferedcollide_get(void *c) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	return (int)(o->m_deferedcollide);+}++//attribute: bool btDbvtBroadphase->m_needcleanup+void btDbvtBroadphase_m_needcleanup_set(void *c,int a) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	o->m_needcleanup = a;+}+int btDbvtBroadphase_m_needcleanup_get(void *c) {+	::btDbvtBroadphase *o = (::btDbvtBroadphase*)c;+	return (int)(o->m_needcleanup);+}+++// ::btDbvtNode+//constructor: btDbvtNode  ( ::btDbvtNode::* )(  ) +void* btDbvtNode_new() {+	::btDbvtNode *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btDbvtNode),16);+	o = new (mem)::btDbvtNode();+	return (void*)o;+}+void btDbvtNode_free(void *c) {+	::btDbvtNode *o = (::btDbvtNode*)c;+	delete o;+}+//method: isinternal bool ( ::btDbvtNode::* )(  ) const+int btDbvtNode_isinternal(void *c) {+	::btDbvtNode *o = (::btDbvtNode*)c;+	int retVal = (int)o->isinternal();+	return retVal;+}+//method: isleaf bool ( ::btDbvtNode::* )(  ) const+int btDbvtNode_isleaf(void *c) {+	::btDbvtNode *o = (::btDbvtNode*)c;+	int retVal = (int)o->isleaf();+	return retVal;+}+//attribute: ::btDbvtNode btDbvtNode->+// attribute not supported: //attribute: ::btDbvtNode btDbvtNode->+//attribute: ::btDbvtNode * btDbvtNode->parent+void btDbvtNode_parent_set(void *c,void* a) {+	::btDbvtNode *o = (::btDbvtNode*)c;+	::btDbvtNode * ta = (::btDbvtNode *)a;+	o->parent = ta;+}+// attriibute getter not supported: //attribute: ::btDbvtNode * btDbvtNode->parent+//attribute: ::btDbvtVolume btDbvtNode->volume+// attribute not supported: //attribute: ::btDbvtVolume btDbvtNode->volume++// ::btDbvtProxy+//not supported constructor: btDbvtProxy  ( ::btDbvtProxy::* )( ::btVector3 const &,::btVector3 const &,void *,short int,short int ) +void btDbvtProxy_free(void *c) {+	::btDbvtProxy *o = (::btDbvtProxy*)c;+	delete o;+}+//attribute: ::btDbvtNode * btDbvtProxy->leaf+void btDbvtProxy_leaf_set(void *c,void* a) {+	::btDbvtProxy *o = (::btDbvtProxy*)c;+	::btDbvtNode * ta = (::btDbvtNode *)a;+	o->leaf = ta;+}+// attriibute getter not supported: //attribute: ::btDbvtNode * btDbvtProxy->leaf+//attribute: ::btDbvtProxy *[2] btDbvtProxy->links+// attribute not supported: //attribute: ::btDbvtProxy *[2] btDbvtProxy->links+//attribute: int btDbvtProxy->stage+void btDbvtProxy_stage_set(void *c,int a) {+	::btDbvtProxy *o = (::btDbvtProxy*)c;+	o->stage = a;+}+int btDbvtProxy_stage_get(void *c) {+	::btDbvtProxy *o = (::btDbvtProxy*)c;+	return (int)(o->stage);+}+++// ::btDispatcher+//not supported method: allocateCollisionAlgorithm void * ( ::btDispatcher::* )( int ) +//method: releaseManifold void ( ::btDispatcher::* )( ::btPersistentManifold * ) +void btDispatcher_releaseManifold(void *c,void* p0) {+	::btDispatcher *o = (::btDispatcher*)c;+	::btPersistentManifold * tp0 = (::btPersistentManifold *)p0;+	o->releaseManifold(tp0);+}+//method: getNumManifolds int ( ::btDispatcher::* )(  ) const+int btDispatcher_getNumManifolds(void *c) {+	::btDispatcher *o = (::btDispatcher*)c;+	int retVal = (int)o->getNumManifolds();+	return retVal;+}+//method: clearManifold void ( ::btDispatcher::* )( ::btPersistentManifold * ) +void btDispatcher_clearManifold(void *c,void* p0) {+	::btDispatcher *o = (::btDispatcher*)c;+	::btPersistentManifold * tp0 = (::btPersistentManifold *)p0;+	o->clearManifold(tp0);+}+//not supported method: freeCollisionAlgorithm void ( ::btDispatcher::* )( void * ) +//not supported method: getInternalManifoldPointer ::btPersistentManifold * * ( ::btDispatcher::* )(  ) +//method: findAlgorithm ::btCollisionAlgorithm * ( ::btDispatcher::* )( ::btCollisionObject *,::btCollisionObject *,::btPersistentManifold * ) +void* btDispatcher_findAlgorithm(void *c,void* p0,void* p1,void* p2) {+	::btDispatcher *o = (::btDispatcher*)c;+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	::btCollisionObject * tp1 = (::btCollisionObject *)p1;+	::btPersistentManifold * tp2 = (::btPersistentManifold *)p2;+	void* retVal = (void*) o->findAlgorithm(tp0,tp1,tp2);+	return retVal;+}+//method: needsResponse bool ( ::btDispatcher::* )( ::btCollisionObject *,::btCollisionObject * ) +int btDispatcher_needsResponse(void *c,void* p0,void* p1) {+	::btDispatcher *o = (::btDispatcher*)c;+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	::btCollisionObject * tp1 = (::btCollisionObject *)p1;+	int retVal = (int)o->needsResponse(tp0,tp1);+	return retVal;+}+//not supported method: getNewManifold ::btPersistentManifold * ( ::btDispatcher::* )( void *,void * ) +//method: dispatchAllCollisionPairs void ( ::btDispatcher::* )( ::btOverlappingPairCache *,::btDispatcherInfo const &,::btDispatcher * ) +void btDispatcher_dispatchAllCollisionPairs(void *c,void* p0,void* p1,void* p2) {+	::btDispatcher *o = (::btDispatcher*)c;+	::btOverlappingPairCache * tp0 = (::btOverlappingPairCache *)p0;+	::btDispatcherInfo const & tp1 = *(::btDispatcherInfo const *)p1;+	::btDispatcher * tp2 = (::btDispatcher *)p2;+	o->dispatchAllCollisionPairs(tp0,tp1,tp2);+}+//not supported method: getInternalManifoldPool ::btPoolAllocator * ( ::btDispatcher::* )(  ) +//not supported method: getInternalManifoldPool ::btPoolAllocator * ( ::btDispatcher::* )(  ) +//not supported method: getInternalManifoldPool ::btPoolAllocator const * ( ::btDispatcher::* )(  ) const+//method: needsCollision bool ( ::btDispatcher::* )( ::btCollisionObject *,::btCollisionObject * ) +int btDispatcher_needsCollision(void *c,void* p0,void* p1) {+	::btDispatcher *o = (::btDispatcher*)c;+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	::btCollisionObject * tp1 = (::btCollisionObject *)p1;+	int retVal = (int)o->needsCollision(tp0,tp1);+	return retVal;+}+//method: getManifoldByIndexInternal ::btPersistentManifold * ( ::btDispatcher::* )( int ) +void* btDispatcher_getManifoldByIndexInternal(void *c,int p0) {+	::btDispatcher *o = (::btDispatcher*)c;+	void* retVal = (void*) o->getManifoldByIndexInternal(p0);+	return retVal;+}++// ::btDispatcherInfo+//constructor: btDispatcherInfo  ( ::btDispatcherInfo::* )(  ) +void* btDispatcherInfo_new() {+	::btDispatcherInfo *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btDispatcherInfo),16);+	o = new (mem)::btDispatcherInfo();+	return (void*)o;+}+void btDispatcherInfo_free(void *c) {+	::btDispatcherInfo *o = (::btDispatcherInfo*)c;+	delete o;+}+//attribute: ::btScalar btDispatcherInfo->m_allowedCcdPenetration+void btDispatcherInfo_m_allowedCcdPenetration_set(void *c,float a) {+	::btDispatcherInfo *o = (::btDispatcherInfo*)c;+	o->m_allowedCcdPenetration = a;+}+float btDispatcherInfo_m_allowedCcdPenetration_get(void *c) {+	::btDispatcherInfo *o = (::btDispatcherInfo*)c;+	return (float)(o->m_allowedCcdPenetration);+}++//attribute: ::btScalar btDispatcherInfo->m_convexConservativeDistanceThreshold+void btDispatcherInfo_m_convexConservativeDistanceThreshold_set(void *c,float a) {+	::btDispatcherInfo *o = (::btDispatcherInfo*)c;+	o->m_convexConservativeDistanceThreshold = a;+}+float btDispatcherInfo_m_convexConservativeDistanceThreshold_get(void *c) {+	::btDispatcherInfo *o = (::btDispatcherInfo*)c;+	return (float)(o->m_convexConservativeDistanceThreshold);+}++//attribute: ::btIDebugDraw * btDispatcherInfo->m_debugDraw+void btDispatcherInfo_m_debugDraw_set(void *c,void* a) {+	::btDispatcherInfo *o = (::btDispatcherInfo*)c;+	::btIDebugDraw * ta = (::btIDebugDraw *)a;+	o->m_debugDraw = ta;+}+// attriibute getter not supported: //attribute: ::btIDebugDraw * btDispatcherInfo->m_debugDraw+//attribute: int btDispatcherInfo->m_dispatchFunc+void btDispatcherInfo_m_dispatchFunc_set(void *c,int a) {+	::btDispatcherInfo *o = (::btDispatcherInfo*)c;+	o->m_dispatchFunc = a;+}+int btDispatcherInfo_m_dispatchFunc_get(void *c) {+	::btDispatcherInfo *o = (::btDispatcherInfo*)c;+	return (int)(o->m_dispatchFunc);+}++//attribute: bool btDispatcherInfo->m_enableSPU+void btDispatcherInfo_m_enableSPU_set(void *c,int a) {+	::btDispatcherInfo *o = (::btDispatcherInfo*)c;+	o->m_enableSPU = a;+}+int btDispatcherInfo_m_enableSPU_get(void *c) {+	::btDispatcherInfo *o = (::btDispatcherInfo*)c;+	return (int)(o->m_enableSPU);+}++//attribute: bool btDispatcherInfo->m_enableSatConvex+void btDispatcherInfo_m_enableSatConvex_set(void *c,int a) {+	::btDispatcherInfo *o = (::btDispatcherInfo*)c;+	o->m_enableSatConvex = a;+}+int btDispatcherInfo_m_enableSatConvex_get(void *c) {+	::btDispatcherInfo *o = (::btDispatcherInfo*)c;+	return (int)(o->m_enableSatConvex);+}++//attribute: ::btStackAlloc * btDispatcherInfo->m_stackAllocator+void btDispatcherInfo_m_stackAllocator_set(void *c,void* a) {+	::btDispatcherInfo *o = (::btDispatcherInfo*)c;+	::btStackAlloc * ta = (::btStackAlloc *)a;+	o->m_stackAllocator = ta;+}+// attriibute getter not supported: //attribute: ::btStackAlloc * btDispatcherInfo->m_stackAllocator+//attribute: int btDispatcherInfo->m_stepCount+void btDispatcherInfo_m_stepCount_set(void *c,int a) {+	::btDispatcherInfo *o = (::btDispatcherInfo*)c;+	o->m_stepCount = a;+}+int btDispatcherInfo_m_stepCount_get(void *c) {+	::btDispatcherInfo *o = (::btDispatcherInfo*)c;+	return (int)(o->m_stepCount);+}++//attribute: ::btScalar btDispatcherInfo->m_timeOfImpact+void btDispatcherInfo_m_timeOfImpact_set(void *c,float a) {+	::btDispatcherInfo *o = (::btDispatcherInfo*)c;+	o->m_timeOfImpact = a;+}+float btDispatcherInfo_m_timeOfImpact_get(void *c) {+	::btDispatcherInfo *o = (::btDispatcherInfo*)c;+	return (float)(o->m_timeOfImpact);+}++//attribute: ::btScalar btDispatcherInfo->m_timeStep+void btDispatcherInfo_m_timeStep_set(void *c,float a) {+	::btDispatcherInfo *o = (::btDispatcherInfo*)c;+	o->m_timeStep = a;+}+float btDispatcherInfo_m_timeStep_get(void *c) {+	::btDispatcherInfo *o = (::btDispatcherInfo*)c;+	return (float)(o->m_timeStep);+}++//attribute: bool btDispatcherInfo->m_useContinuous+void btDispatcherInfo_m_useContinuous_set(void *c,int a) {+	::btDispatcherInfo *o = (::btDispatcherInfo*)c;+	o->m_useContinuous = a;+}+int btDispatcherInfo_m_useContinuous_get(void *c) {+	::btDispatcherInfo *o = (::btDispatcherInfo*)c;+	return (int)(o->m_useContinuous);+}++//attribute: bool btDispatcherInfo->m_useConvexConservativeDistanceUtil+void btDispatcherInfo_m_useConvexConservativeDistanceUtil_set(void *c,int a) {+	::btDispatcherInfo *o = (::btDispatcherInfo*)c;+	o->m_useConvexConservativeDistanceUtil = a;+}+int btDispatcherInfo_m_useConvexConservativeDistanceUtil_get(void *c) {+	::btDispatcherInfo *o = (::btDispatcherInfo*)c;+	return (int)(o->m_useConvexConservativeDistanceUtil);+}++//attribute: bool btDispatcherInfo->m_useEpa+void btDispatcherInfo_m_useEpa_set(void *c,int a) {+	::btDispatcherInfo *o = (::btDispatcherInfo*)c;+	o->m_useEpa = a;+}+int btDispatcherInfo_m_useEpa_get(void *c) {+	::btDispatcherInfo *o = (::btDispatcherInfo*)c;+	return (int)(o->m_useEpa);+}+++// ::btHashedOverlappingPairCache+//constructor: btHashedOverlappingPairCache  ( ::btHashedOverlappingPairCache::* )(  ) +void* btHashedOverlappingPairCache_new() {+	::btHashedOverlappingPairCache *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btHashedOverlappingPairCache),16);+	o = new (mem)::btHashedOverlappingPairCache();+	return (void*)o;+}+void btHashedOverlappingPairCache_free(void *c) {+	::btHashedOverlappingPairCache *o = (::btHashedOverlappingPairCache*)c;+	delete o;+}+//method: getOverlapFilterCallback ::btOverlapFilterCallback * ( ::btHashedOverlappingPairCache::* )(  ) +void* btHashedOverlappingPairCache_getOverlapFilterCallback(void *c) {+	::btHashedOverlappingPairCache *o = (::btHashedOverlappingPairCache*)c;+	void* retVal = (void*) o->getOverlapFilterCallback();+	return retVal;+}+//method: addOverlappingPair ::btBroadphasePair * ( ::btHashedOverlappingPairCache::* )( ::btBroadphaseProxy *,::btBroadphaseProxy * ) +void* btHashedOverlappingPairCache_addOverlappingPair(void *c,void* p0,void* p1) {+	::btHashedOverlappingPairCache *o = (::btHashedOverlappingPairCache*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	::btBroadphaseProxy * tp1 = (::btBroadphaseProxy *)p1;+	void* retVal = (void*) o->addOverlappingPair(tp0,tp1);+	return retVal;+}+//method: removeOverlappingPairsContainingProxy void ( ::btHashedOverlappingPairCache::* )( ::btBroadphaseProxy *,::btDispatcher * ) +void btHashedOverlappingPairCache_removeOverlappingPairsContainingProxy(void *c,void* p0,void* p1) {+	::btHashedOverlappingPairCache *o = (::btHashedOverlappingPairCache*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	::btDispatcher * tp1 = (::btDispatcher *)p1;+	o->removeOverlappingPairsContainingProxy(tp0,tp1);+}+//method: needsBroadphaseCollision bool ( ::btHashedOverlappingPairCache::* )( ::btBroadphaseProxy *,::btBroadphaseProxy * ) const+int btHashedOverlappingPairCache_needsBroadphaseCollision(void *c,void* p0,void* p1) {+	::btHashedOverlappingPairCache *o = (::btHashedOverlappingPairCache*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	::btBroadphaseProxy * tp1 = (::btBroadphaseProxy *)p1;+	int retVal = (int)o->needsBroadphaseCollision(tp0,tp1);+	return retVal;+}+//not supported method: getOverlappingPairArray ::btBroadphasePairArray & ( ::btHashedOverlappingPairCache::* )(  ) +//not supported method: getOverlappingPairArray ::btBroadphasePairArray & ( ::btHashedOverlappingPairCache::* )(  ) +//not supported method: getOverlappingPairArray ::btBroadphasePairArray const & ( ::btHashedOverlappingPairCache::* )(  ) const+//method: findPair ::btBroadphasePair * ( ::btHashedOverlappingPairCache::* )( ::btBroadphaseProxy *,::btBroadphaseProxy * ) +void* btHashedOverlappingPairCache_findPair(void *c,void* p0,void* p1) {+	::btHashedOverlappingPairCache *o = (::btHashedOverlappingPairCache*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	::btBroadphaseProxy * tp1 = (::btBroadphaseProxy *)p1;+	void* retVal = (void*) o->findPair(tp0,tp1);+	return retVal;+}+//method: cleanProxyFromPairs void ( ::btHashedOverlappingPairCache::* )( ::btBroadphaseProxy *,::btDispatcher * ) +void btHashedOverlappingPairCache_cleanProxyFromPairs(void *c,void* p0,void* p1) {+	::btHashedOverlappingPairCache *o = (::btHashedOverlappingPairCache*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	::btDispatcher * tp1 = (::btDispatcher *)p1;+	o->cleanProxyFromPairs(tp0,tp1);+}+//method: cleanOverlappingPair void ( ::btHashedOverlappingPairCache::* )( ::btBroadphasePair &,::btDispatcher * ) +void btHashedOverlappingPairCache_cleanOverlappingPair(void *c,void* p0,void* p1) {+	::btHashedOverlappingPairCache *o = (::btHashedOverlappingPairCache*)c;+	::btBroadphasePair & tp0 = *(::btBroadphasePair *)p0;+	::btDispatcher * tp1 = (::btDispatcher *)p1;+	o->cleanOverlappingPair(tp0,tp1);+}+//method: getNumOverlappingPairs int ( ::btHashedOverlappingPairCache::* )(  ) const+int btHashedOverlappingPairCache_getNumOverlappingPairs(void *c) {+	::btHashedOverlappingPairCache *o = (::btHashedOverlappingPairCache*)c;+	int retVal = (int)o->getNumOverlappingPairs();+	return retVal;+}+//not supported method: removeOverlappingPair void * ( ::btHashedOverlappingPairCache::* )( ::btBroadphaseProxy *,::btBroadphaseProxy *,::btDispatcher * ) +//method: GetCount int ( ::btHashedOverlappingPairCache::* )(  ) const+int btHashedOverlappingPairCache_GetCount(void *c) {+	::btHashedOverlappingPairCache *o = (::btHashedOverlappingPairCache*)c;+	int retVal = (int)o->GetCount();+	return retVal;+}+//method: processAllOverlappingPairs void ( ::btHashedOverlappingPairCache::* )( ::btOverlapCallback *,::btDispatcher * ) +void btHashedOverlappingPairCache_processAllOverlappingPairs(void *c,void* p0,void* p1) {+	::btHashedOverlappingPairCache *o = (::btHashedOverlappingPairCache*)c;+	::btOverlapCallback * tp0 = (::btOverlapCallback *)p0;+	::btDispatcher * tp1 = (::btDispatcher *)p1;+	o->processAllOverlappingPairs(tp0,tp1);+}+//method: getOverlappingPairArrayPtr ::btBroadphasePair * ( ::btHashedOverlappingPairCache::* )(  ) +void* btHashedOverlappingPairCache_getOverlappingPairArrayPtr(void *c) {+	::btHashedOverlappingPairCache *o = (::btHashedOverlappingPairCache*)c;+	void* retVal = (void*) o->getOverlappingPairArrayPtr();+	return retVal;+}+//method: getOverlappingPairArrayPtr ::btBroadphasePair * ( ::btHashedOverlappingPairCache::* )(  ) +void* btHashedOverlappingPairCache_getOverlappingPairArrayPtr0(void *c) {+	::btHashedOverlappingPairCache *o = (::btHashedOverlappingPairCache*)c;+	void* retVal = (void*) o->getOverlappingPairArrayPtr();+	return retVal;+}+//method: getOverlappingPairArrayPtr ::btBroadphasePair const * ( ::btHashedOverlappingPairCache::* )(  ) const+void* btHashedOverlappingPairCache_getOverlappingPairArrayPtr1(void *c) {+	::btHashedOverlappingPairCache *o = (::btHashedOverlappingPairCache*)c;+	void* retVal = (void*) o->getOverlappingPairArrayPtr();+	return retVal;+}+//method: setOverlapFilterCallback void ( ::btHashedOverlappingPairCache::* )( ::btOverlapFilterCallback * ) +void btHashedOverlappingPairCache_setOverlapFilterCallback(void *c,void* p0) {+	::btHashedOverlappingPairCache *o = (::btHashedOverlappingPairCache*)c;+	::btOverlapFilterCallback * tp0 = (::btOverlapFilterCallback *)p0;+	o->setOverlapFilterCallback(tp0);+}++// ::btMultiSapBroadphase+//method: addToChildBroadphase void ( ::btMultiSapBroadphase::* )( ::btMultiSapBroadphase::btMultiSapProxy *,::btBroadphaseProxy *,::btBroadphaseInterface * ) +void btMultiSapBroadphase_addToChildBroadphase(void *c,void* p0,void* p1,void* p2) {+	::btMultiSapBroadphase *o = (::btMultiSapBroadphase*)c;+	::btMultiSapBroadphase::btMultiSapProxy * tp0 = (::btMultiSapBroadphase::btMultiSapProxy *)p0;+	::btBroadphaseProxy * tp1 = (::btBroadphaseProxy *)p1;+	::btBroadphaseInterface * tp2 = (::btBroadphaseInterface *)p2;+	o->addToChildBroadphase(tp0,tp1,tp2);+}+//method: rayTest void ( ::btMultiSapBroadphase::* )( ::btVector3 const &,::btVector3 const &,::btBroadphaseRayCallback &,::btVector3 const &,::btVector3 const & ) +void btMultiSapBroadphase_rayTest(void *c,float* p0,float* p1,void* p2,float* p3,float* p4) {+	::btMultiSapBroadphase *o = (::btMultiSapBroadphase*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	::btBroadphaseRayCallback & tp2 = *(::btBroadphaseRayCallback *)p2;+	btVector3 tp3(p3[0],p3[1],p3[2]);+	btVector3 tp4(p4[0],p4[1],p4[2]);+	o->rayTest(tp0,tp1,tp2,tp3,tp4);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+	p4[0]=tp4.m_floats[0];p4[1]=tp4.m_floats[1];p4[2]=tp4.m_floats[2];+}+//method: setAabb void ( ::btMultiSapBroadphase::* )( ::btBroadphaseProxy *,::btVector3 const &,::btVector3 const &,::btDispatcher * ) +void btMultiSapBroadphase_setAabb(void *c,void* p0,float* p1,float* p2,void* p3) {+	::btMultiSapBroadphase *o = (::btMultiSapBroadphase*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	::btDispatcher * tp3 = (::btDispatcher *)p3;+	o->setAabb(tp0,tp1,tp2,tp3);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: getOverlappingPairCache ::btOverlappingPairCache * ( ::btMultiSapBroadphase::* )(  ) +void* btMultiSapBroadphase_getOverlappingPairCache(void *c) {+	::btMultiSapBroadphase *o = (::btMultiSapBroadphase*)c;+	void* retVal = (void*) o->getOverlappingPairCache();+	return retVal;+}+//method: getOverlappingPairCache ::btOverlappingPairCache * ( ::btMultiSapBroadphase::* )(  ) +void* btMultiSapBroadphase_getOverlappingPairCache0(void *c) {+	::btMultiSapBroadphase *o = (::btMultiSapBroadphase*)c;+	void* retVal = (void*) o->getOverlappingPairCache();+	return retVal;+}+//method: getOverlappingPairCache ::btOverlappingPairCache const * ( ::btMultiSapBroadphase::* )(  ) const+void* btMultiSapBroadphase_getOverlappingPairCache1(void *c) {+	::btMultiSapBroadphase *o = (::btMultiSapBroadphase*)c;+	void* retVal = (void*) o->getOverlappingPairCache();+	return retVal;+}+//not supported method: quicksort void ( ::btMultiSapBroadphase::* )( ::btBroadphasePairArray &,int,int ) +//method: buildTree void ( ::btMultiSapBroadphase::* )( ::btVector3 const &,::btVector3 const & ) +void btMultiSapBroadphase_buildTree(void *c,float* p0,float* p1) {+	::btMultiSapBroadphase *o = (::btMultiSapBroadphase*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->buildTree(tp0,tp1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: resetPool void ( ::btMultiSapBroadphase::* )( ::btDispatcher * ) +void btMultiSapBroadphase_resetPool(void *c,void* p0) {+	::btMultiSapBroadphase *o = (::btMultiSapBroadphase*)c;+	::btDispatcher * tp0 = (::btDispatcher *)p0;+	o->resetPool(tp0);+}+//method: calculateOverlappingPairs void ( ::btMultiSapBroadphase::* )( ::btDispatcher * ) +void btMultiSapBroadphase_calculateOverlappingPairs(void *c,void* p0) {+	::btMultiSapBroadphase *o = (::btMultiSapBroadphase*)c;+	::btDispatcher * tp0 = (::btDispatcher *)p0;+	o->calculateOverlappingPairs(tp0);+}+//method: testAabbOverlap bool ( ::btMultiSapBroadphase::* )( ::btBroadphaseProxy *,::btBroadphaseProxy * ) +int btMultiSapBroadphase_testAabbOverlap(void *c,void* p0,void* p1) {+	::btMultiSapBroadphase *o = (::btMultiSapBroadphase*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	::btBroadphaseProxy * tp1 = (::btBroadphaseProxy *)p1;+	int retVal = (int)o->testAabbOverlap(tp0,tp1);+	return retVal;+}+//method: getAabb void ( ::btMultiSapBroadphase::* )( ::btBroadphaseProxy *,::btVector3 &,::btVector3 & ) const+void btMultiSapBroadphase_getAabb(void *c,void* p0,float* p1,float* p2) {+	::btMultiSapBroadphase *o = (::btMultiSapBroadphase*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->getAabb(tp0,tp1,tp2);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//not supported method: getBroadphaseArray ::btSapBroadphaseArray & ( ::btMultiSapBroadphase::* )(  ) +//not supported method: getBroadphaseArray ::btSapBroadphaseArray & ( ::btMultiSapBroadphase::* )(  ) +//not supported method: getBroadphaseArray ::btSapBroadphaseArray const & ( ::btMultiSapBroadphase::* )(  ) const+//not supported method: createProxy ::btBroadphaseProxy * ( ::btMultiSapBroadphase::* )( ::btVector3 const &,::btVector3 const &,int,void *,short int,short int,::btDispatcher *,void * ) +//method: printStats void ( ::btMultiSapBroadphase::* )(  ) +void btMultiSapBroadphase_printStats(void *c) {+	::btMultiSapBroadphase *o = (::btMultiSapBroadphase*)c;+	o->printStats();+}+//method: getBroadphaseAabb void ( ::btMultiSapBroadphase::* )( ::btVector3 &,::btVector3 & ) const+void btMultiSapBroadphase_getBroadphaseAabb(void *c,float* p0,float* p1) {+	::btMultiSapBroadphase *o = (::btMultiSapBroadphase*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->getBroadphaseAabb(tp0,tp1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: destroyProxy void ( ::btMultiSapBroadphase::* )( ::btBroadphaseProxy *,::btDispatcher * ) +void btMultiSapBroadphase_destroyProxy(void *c,void* p0,void* p1) {+	::btMultiSapBroadphase *o = (::btMultiSapBroadphase*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	::btDispatcher * tp1 = (::btDispatcher *)p1;+	o->destroyProxy(tp0,tp1);+}++// ::btMultiSapBroadphase::btMultiSapProxy+//not supported constructor: btMultiSapProxy  ( ::btMultiSapBroadphase::btMultiSapProxy::* )( ::btVector3 const &,::btVector3 const &,int,void *,short int,short int ) +void btMultiSapBroadphase_btMultiSapProxy_free(void *c) {+	::btMultiSapBroadphase::btMultiSapProxy *o = (::btMultiSapBroadphase::btMultiSapProxy*)c;+	delete o;+}+//attribute: ::btVector3 btMultiSapBroadphase_btMultiSapProxy->m_aabbMax+void btMultiSapBroadphase_btMultiSapProxy_m_aabbMax_set(void *c,float* a) {+	::btMultiSapBroadphase::btMultiSapProxy *o = (::btMultiSapBroadphase::btMultiSapProxy*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_aabbMax = ta;+}+void btMultiSapBroadphase_btMultiSapProxy_m_aabbMax_get(void *c,float* a) {+	::btMultiSapBroadphase::btMultiSapProxy *o = (::btMultiSapBroadphase::btMultiSapProxy*)c;+	a[0]=(o->m_aabbMax).m_floats[0];a[1]=(o->m_aabbMax).m_floats[1];a[2]=(o->m_aabbMax).m_floats[2];+}++//attribute: ::btVector3 btMultiSapBroadphase_btMultiSapProxy->m_aabbMin+void btMultiSapBroadphase_btMultiSapProxy_m_aabbMin_set(void *c,float* a) {+	::btMultiSapBroadphase::btMultiSapProxy *o = (::btMultiSapBroadphase::btMultiSapProxy*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_aabbMin = ta;+}+void btMultiSapBroadphase_btMultiSapProxy_m_aabbMin_get(void *c,float* a) {+	::btMultiSapBroadphase::btMultiSapProxy *o = (::btMultiSapBroadphase::btMultiSapProxy*)c;+	a[0]=(o->m_aabbMin).m_floats[0];a[1]=(o->m_aabbMin).m_floats[1];a[2]=(o->m_aabbMin).m_floats[2];+}++//attribute: ::btAlignedObjectArray<btMultiSapBroadphase::btBridgeProxy*> btMultiSapBroadphase_btMultiSapProxy->m_bridgeProxies+// attribute not supported: //attribute: ::btAlignedObjectArray<btMultiSapBroadphase::btBridgeProxy*> btMultiSapBroadphase_btMultiSapProxy->m_bridgeProxies+//attribute: int btMultiSapBroadphase_btMultiSapProxy->m_shapeType+void btMultiSapBroadphase_btMultiSapProxy_m_shapeType_set(void *c,int a) {+	::btMultiSapBroadphase::btMultiSapProxy *o = (::btMultiSapBroadphase::btMultiSapProxy*)c;+	o->m_shapeType = a;+}+int btMultiSapBroadphase_btMultiSapProxy_m_shapeType_get(void *c) {+	::btMultiSapBroadphase::btMultiSapProxy *o = (::btMultiSapBroadphase::btMultiSapProxy*)c;+	return (int)(o->m_shapeType);+}+++// ::btNodeOverlapCallback+//method: processNode void ( ::btNodeOverlapCallback::* )( int,int ) +void btNodeOverlapCallback_processNode(void *c,int p0,int p1) {+	::btNodeOverlapCallback *o = (::btNodeOverlapCallback*)c;+	o->processNode(p0,p1);+}++// ::btNullPairCache+//constructor: btNullPairCache  ( ::btNullPairCache::* )(  ) +void* btNullPairCache_new() {+	::btNullPairCache *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btNullPairCache),16);+	o = new (mem)::btNullPairCache();+	return (void*)o;+}+void btNullPairCache_free(void *c) {+	::btNullPairCache *o = (::btNullPairCache*)c;+	delete o;+}+//method: sortOverlappingPairs void ( ::btNullPairCache::* )( ::btDispatcher * ) +void btNullPairCache_sortOverlappingPairs(void *c,void* p0) {+	::btNullPairCache *o = (::btNullPairCache*)c;+	::btDispatcher * tp0 = (::btDispatcher *)p0;+	o->sortOverlappingPairs(tp0);+}+//method: setInternalGhostPairCallback void ( ::btNullPairCache::* )( ::btOverlappingPairCallback * ) +void btNullPairCache_setInternalGhostPairCallback(void *c,void* p0) {+	::btNullPairCache *o = (::btNullPairCache*)c;+	::btOverlappingPairCallback * tp0 = (::btOverlappingPairCallback *)p0;+	o->setInternalGhostPairCallback(tp0);+}+//method: addOverlappingPair ::btBroadphasePair * ( ::btNullPairCache::* )( ::btBroadphaseProxy *,::btBroadphaseProxy * ) +void* btNullPairCache_addOverlappingPair(void *c,void* p0,void* p1) {+	::btNullPairCache *o = (::btNullPairCache*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	::btBroadphaseProxy * tp1 = (::btBroadphaseProxy *)p1;+	void* retVal = (void*) o->addOverlappingPair(tp0,tp1);+	return retVal;+}+//method: removeOverlappingPairsContainingProxy void ( ::btNullPairCache::* )( ::btBroadphaseProxy *,::btDispatcher * ) +void btNullPairCache_removeOverlappingPairsContainingProxy(void *c,void* p0,void* p1) {+	::btNullPairCache *o = (::btNullPairCache*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	::btDispatcher * tp1 = (::btDispatcher *)p1;+	o->removeOverlappingPairsContainingProxy(tp0,tp1);+}+//method: hasDeferredRemoval bool ( ::btNullPairCache::* )(  ) +int btNullPairCache_hasDeferredRemoval(void *c) {+	::btNullPairCache *o = (::btNullPairCache*)c;+	int retVal = (int)o->hasDeferredRemoval();+	return retVal;+}+//not supported method: getOverlappingPairArray ::btBroadphasePairArray & ( ::btNullPairCache::* )(  ) +//method: findPair ::btBroadphasePair * ( ::btNullPairCache::* )( ::btBroadphaseProxy *,::btBroadphaseProxy * ) +void* btNullPairCache_findPair(void *c,void* p0,void* p1) {+	::btNullPairCache *o = (::btNullPairCache*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	::btBroadphaseProxy * tp1 = (::btBroadphaseProxy *)p1;+	void* retVal = (void*) o->findPair(tp0,tp1);+	return retVal;+}+//method: cleanProxyFromPairs void ( ::btNullPairCache::* )( ::btBroadphaseProxy *,::btDispatcher * ) +void btNullPairCache_cleanProxyFromPairs(void *c,void* p0,void* p1) {+	::btNullPairCache *o = (::btNullPairCache*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	::btDispatcher * tp1 = (::btDispatcher *)p1;+	o->cleanProxyFromPairs(tp0,tp1);+}+//method: cleanOverlappingPair void ( ::btNullPairCache::* )( ::btBroadphasePair &,::btDispatcher * ) +void btNullPairCache_cleanOverlappingPair(void *c,void* p0,void* p1) {+	::btNullPairCache *o = (::btNullPairCache*)c;+	::btBroadphasePair & tp0 = *(::btBroadphasePair *)p0;+	::btDispatcher * tp1 = (::btDispatcher *)p1;+	o->cleanOverlappingPair(tp0,tp1);+}+//method: getNumOverlappingPairs int ( ::btNullPairCache::* )(  ) const+int btNullPairCache_getNumOverlappingPairs(void *c) {+	::btNullPairCache *o = (::btNullPairCache*)c;+	int retVal = (int)o->getNumOverlappingPairs();+	return retVal;+}+//not supported method: removeOverlappingPair void * ( ::btNullPairCache::* )( ::btBroadphaseProxy *,::btBroadphaseProxy *,::btDispatcher * ) +//method: setOverlapFilterCallback void ( ::btNullPairCache::* )( ::btOverlapFilterCallback * ) +void btNullPairCache_setOverlapFilterCallback(void *c,void* p0) {+	::btNullPairCache *o = (::btNullPairCache*)c;+	::btOverlapFilterCallback * tp0 = (::btOverlapFilterCallback *)p0;+	o->setOverlapFilterCallback(tp0);+}+//method: getOverlappingPairArrayPtr ::btBroadphasePair * ( ::btNullPairCache::* )(  ) +void* btNullPairCache_getOverlappingPairArrayPtr(void *c) {+	::btNullPairCache *o = (::btNullPairCache*)c;+	void* retVal = (void*) o->getOverlappingPairArrayPtr();+	return retVal;+}+//method: getOverlappingPairArrayPtr ::btBroadphasePair * ( ::btNullPairCache::* )(  ) +void* btNullPairCache_getOverlappingPairArrayPtr0(void *c) {+	::btNullPairCache *o = (::btNullPairCache*)c;+	void* retVal = (void*) o->getOverlappingPairArrayPtr();+	return retVal;+}+//method: getOverlappingPairArrayPtr ::btBroadphasePair const * ( ::btNullPairCache::* )(  ) const+void* btNullPairCache_getOverlappingPairArrayPtr1(void *c) {+	::btNullPairCache *o = (::btNullPairCache*)c;+	void* retVal = (void*) o->getOverlappingPairArrayPtr();+	return retVal;+}+//method: processAllOverlappingPairs void ( ::btNullPairCache::* )( ::btOverlapCallback *,::btDispatcher * ) +void btNullPairCache_processAllOverlappingPairs(void *c,void* p0,void* p1) {+	::btNullPairCache *o = (::btNullPairCache*)c;+	::btOverlapCallback * tp0 = (::btOverlapCallback *)p0;+	::btDispatcher * tp1 = (::btDispatcher *)p1;+	o->processAllOverlappingPairs(tp0,tp1);+}++// ::btOptimizedBvhNode+//constructor: btOptimizedBvhNode  ( ::btOptimizedBvhNode::* )(  ) +void* btOptimizedBvhNode_new() {+	::btOptimizedBvhNode *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btOptimizedBvhNode),16);+	o = new (mem)::btOptimizedBvhNode();+	return (void*)o;+}+void btOptimizedBvhNode_free(void *c) {+	::btOptimizedBvhNode *o = (::btOptimizedBvhNode*)c;+	delete o;+}+//attribute: ::btVector3 btOptimizedBvhNode->m_aabbMinOrg+void btOptimizedBvhNode_m_aabbMinOrg_set(void *c,float* a) {+	::btOptimizedBvhNode *o = (::btOptimizedBvhNode*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_aabbMinOrg = ta;+}+void btOptimizedBvhNode_m_aabbMinOrg_get(void *c,float* a) {+	::btOptimizedBvhNode *o = (::btOptimizedBvhNode*)c;+	a[0]=(o->m_aabbMinOrg).m_floats[0];a[1]=(o->m_aabbMinOrg).m_floats[1];a[2]=(o->m_aabbMinOrg).m_floats[2];+}++//attribute: ::btVector3 btOptimizedBvhNode->m_aabbMaxOrg+void btOptimizedBvhNode_m_aabbMaxOrg_set(void *c,float* a) {+	::btOptimizedBvhNode *o = (::btOptimizedBvhNode*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_aabbMaxOrg = ta;+}+void btOptimizedBvhNode_m_aabbMaxOrg_get(void *c,float* a) {+	::btOptimizedBvhNode *o = (::btOptimizedBvhNode*)c;+	a[0]=(o->m_aabbMaxOrg).m_floats[0];a[1]=(o->m_aabbMaxOrg).m_floats[1];a[2]=(o->m_aabbMaxOrg).m_floats[2];+}++//attribute: int btOptimizedBvhNode->m_escapeIndex+void btOptimizedBvhNode_m_escapeIndex_set(void *c,int a) {+	::btOptimizedBvhNode *o = (::btOptimizedBvhNode*)c;+	o->m_escapeIndex = a;+}+int btOptimizedBvhNode_m_escapeIndex_get(void *c) {+	::btOptimizedBvhNode *o = (::btOptimizedBvhNode*)c;+	return (int)(o->m_escapeIndex);+}++//attribute: int btOptimizedBvhNode->m_subPart+void btOptimizedBvhNode_m_subPart_set(void *c,int a) {+	::btOptimizedBvhNode *o = (::btOptimizedBvhNode*)c;+	o->m_subPart = a;+}+int btOptimizedBvhNode_m_subPart_get(void *c) {+	::btOptimizedBvhNode *o = (::btOptimizedBvhNode*)c;+	return (int)(o->m_subPart);+}++//attribute: int btOptimizedBvhNode->m_triangleIndex+void btOptimizedBvhNode_m_triangleIndex_set(void *c,int a) {+	::btOptimizedBvhNode *o = (::btOptimizedBvhNode*)c;+	o->m_triangleIndex = a;+}+int btOptimizedBvhNode_m_triangleIndex_get(void *c) {+	::btOptimizedBvhNode *o = (::btOptimizedBvhNode*)c;+	return (int)(o->m_triangleIndex);+}++//attribute: int[5] btOptimizedBvhNode->m_padding+// attribute not supported: //attribute: int[5] btOptimizedBvhNode->m_padding++// ::btOptimizedBvhNodeDoubleData+//constructor: btOptimizedBvhNodeDoubleData  ( ::btOptimizedBvhNodeDoubleData::* )(  ) +void* btOptimizedBvhNodeDoubleData_new() {+	::btOptimizedBvhNodeDoubleData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btOptimizedBvhNodeDoubleData),16);+	o = new (mem)::btOptimizedBvhNodeDoubleData();+	return (void*)o;+}+void btOptimizedBvhNodeDoubleData_free(void *c) {+	::btOptimizedBvhNodeDoubleData *o = (::btOptimizedBvhNodeDoubleData*)c;+	delete o;+}+//attribute: ::btVector3DoubleData btOptimizedBvhNodeDoubleData->m_aabbMinOrg+// attribute not supported: //attribute: ::btVector3DoubleData btOptimizedBvhNodeDoubleData->m_aabbMinOrg+//attribute: ::btVector3DoubleData btOptimizedBvhNodeDoubleData->m_aabbMaxOrg+// attribute not supported: //attribute: ::btVector3DoubleData btOptimizedBvhNodeDoubleData->m_aabbMaxOrg+//attribute: int btOptimizedBvhNodeDoubleData->m_escapeIndex+void btOptimizedBvhNodeDoubleData_m_escapeIndex_set(void *c,int a) {+	::btOptimizedBvhNodeDoubleData *o = (::btOptimizedBvhNodeDoubleData*)c;+	o->m_escapeIndex = a;+}+int btOptimizedBvhNodeDoubleData_m_escapeIndex_get(void *c) {+	::btOptimizedBvhNodeDoubleData *o = (::btOptimizedBvhNodeDoubleData*)c;+	return (int)(o->m_escapeIndex);+}++//attribute: int btOptimizedBvhNodeDoubleData->m_subPart+void btOptimizedBvhNodeDoubleData_m_subPart_set(void *c,int a) {+	::btOptimizedBvhNodeDoubleData *o = (::btOptimizedBvhNodeDoubleData*)c;+	o->m_subPart = a;+}+int btOptimizedBvhNodeDoubleData_m_subPart_get(void *c) {+	::btOptimizedBvhNodeDoubleData *o = (::btOptimizedBvhNodeDoubleData*)c;+	return (int)(o->m_subPart);+}++//attribute: int btOptimizedBvhNodeDoubleData->m_triangleIndex+void btOptimizedBvhNodeDoubleData_m_triangleIndex_set(void *c,int a) {+	::btOptimizedBvhNodeDoubleData *o = (::btOptimizedBvhNodeDoubleData*)c;+	o->m_triangleIndex = a;+}+int btOptimizedBvhNodeDoubleData_m_triangleIndex_get(void *c) {+	::btOptimizedBvhNodeDoubleData *o = (::btOptimizedBvhNodeDoubleData*)c;+	return (int)(o->m_triangleIndex);+}++//attribute: char[4] btOptimizedBvhNodeDoubleData->m_pad+// attribute not supported: //attribute: char[4] btOptimizedBvhNodeDoubleData->m_pad++// ::btOptimizedBvhNodeFloatData+//constructor: btOptimizedBvhNodeFloatData  ( ::btOptimizedBvhNodeFloatData::* )(  ) +void* btOptimizedBvhNodeFloatData_new() {+	::btOptimizedBvhNodeFloatData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btOptimizedBvhNodeFloatData),16);+	o = new (mem)::btOptimizedBvhNodeFloatData();+	return (void*)o;+}+void btOptimizedBvhNodeFloatData_free(void *c) {+	::btOptimizedBvhNodeFloatData *o = (::btOptimizedBvhNodeFloatData*)c;+	delete o;+}+//attribute: ::btVector3FloatData btOptimizedBvhNodeFloatData->m_aabbMinOrg+// attribute not supported: //attribute: ::btVector3FloatData btOptimizedBvhNodeFloatData->m_aabbMinOrg+//attribute: ::btVector3FloatData btOptimizedBvhNodeFloatData->m_aabbMaxOrg+// attribute not supported: //attribute: ::btVector3FloatData btOptimizedBvhNodeFloatData->m_aabbMaxOrg+//attribute: int btOptimizedBvhNodeFloatData->m_escapeIndex+void btOptimizedBvhNodeFloatData_m_escapeIndex_set(void *c,int a) {+	::btOptimizedBvhNodeFloatData *o = (::btOptimizedBvhNodeFloatData*)c;+	o->m_escapeIndex = a;+}+int btOptimizedBvhNodeFloatData_m_escapeIndex_get(void *c) {+	::btOptimizedBvhNodeFloatData *o = (::btOptimizedBvhNodeFloatData*)c;+	return (int)(o->m_escapeIndex);+}++//attribute: int btOptimizedBvhNodeFloatData->m_subPart+void btOptimizedBvhNodeFloatData_m_subPart_set(void *c,int a) {+	::btOptimizedBvhNodeFloatData *o = (::btOptimizedBvhNodeFloatData*)c;+	o->m_subPart = a;+}+int btOptimizedBvhNodeFloatData_m_subPart_get(void *c) {+	::btOptimizedBvhNodeFloatData *o = (::btOptimizedBvhNodeFloatData*)c;+	return (int)(o->m_subPart);+}++//attribute: int btOptimizedBvhNodeFloatData->m_triangleIndex+void btOptimizedBvhNodeFloatData_m_triangleIndex_set(void *c,int a) {+	::btOptimizedBvhNodeFloatData *o = (::btOptimizedBvhNodeFloatData*)c;+	o->m_triangleIndex = a;+}+int btOptimizedBvhNodeFloatData_m_triangleIndex_get(void *c) {+	::btOptimizedBvhNodeFloatData *o = (::btOptimizedBvhNodeFloatData*)c;+	return (int)(o->m_triangleIndex);+}++//attribute: char[4] btOptimizedBvhNodeFloatData->m_pad+// attribute not supported: //attribute: char[4] btOptimizedBvhNodeFloatData->m_pad++// ::btOverlapCallback+//method: processOverlap bool ( ::btOverlapCallback::* )( ::btBroadphasePair & ) +int btOverlapCallback_processOverlap(void *c,void* p0) {+	::btOverlapCallback *o = (::btOverlapCallback*)c;+	::btBroadphasePair & tp0 = *(::btBroadphasePair *)p0;+	int retVal = (int)o->processOverlap(tp0);+	return retVal;+}++// ::btOverlapFilterCallback+//method: needBroadphaseCollision bool ( ::btOverlapFilterCallback::* )( ::btBroadphaseProxy *,::btBroadphaseProxy * ) const+int btOverlapFilterCallback_needBroadphaseCollision(void *c,void* p0,void* p1) {+	::btOverlapFilterCallback *o = (::btOverlapFilterCallback*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	::btBroadphaseProxy * tp1 = (::btBroadphaseProxy *)p1;+	int retVal = (int)o->needBroadphaseCollision(tp0,tp1);+	return retVal;+}++// ::btOverlappingPairCache+//method: sortOverlappingPairs void ( ::btOverlappingPairCache::* )( ::btDispatcher * ) +void btOverlappingPairCache_sortOverlappingPairs(void *c,void* p0) {+	::btOverlappingPairCache *o = (::btOverlappingPairCache*)c;+	::btDispatcher * tp0 = (::btDispatcher *)p0;+	o->sortOverlappingPairs(tp0);+}+//method: setInternalGhostPairCallback void ( ::btOverlappingPairCache::* )( ::btOverlappingPairCallback * ) +void btOverlappingPairCache_setInternalGhostPairCallback(void *c,void* p0) {+	::btOverlappingPairCache *o = (::btOverlappingPairCache*)c;+	::btOverlappingPairCallback * tp0 = (::btOverlappingPairCallback *)p0;+	o->setInternalGhostPairCallback(tp0);+}+//method: setOverlapFilterCallback void ( ::btOverlappingPairCache::* )( ::btOverlapFilterCallback * ) +void btOverlappingPairCache_setOverlapFilterCallback(void *c,void* p0) {+	::btOverlappingPairCache *o = (::btOverlappingPairCache*)c;+	::btOverlapFilterCallback * tp0 = (::btOverlapFilterCallback *)p0;+	o->setOverlapFilterCallback(tp0);+}+//not supported method: getOverlappingPairArray ::btBroadphasePairArray & ( ::btOverlappingPairCache::* )(  ) +//method: findPair ::btBroadphasePair * ( ::btOverlappingPairCache::* )( ::btBroadphaseProxy *,::btBroadphaseProxy * ) +void* btOverlappingPairCache_findPair(void *c,void* p0,void* p1) {+	::btOverlappingPairCache *o = (::btOverlappingPairCache*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	::btBroadphaseProxy * tp1 = (::btBroadphaseProxy *)p1;+	void* retVal = (void*) o->findPair(tp0,tp1);+	return retVal;+}+//method: cleanProxyFromPairs void ( ::btOverlappingPairCache::* )( ::btBroadphaseProxy *,::btDispatcher * ) +void btOverlappingPairCache_cleanProxyFromPairs(void *c,void* p0,void* p1) {+	::btOverlappingPairCache *o = (::btOverlappingPairCache*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	::btDispatcher * tp1 = (::btDispatcher *)p1;+	o->cleanProxyFromPairs(tp0,tp1);+}+//method: cleanOverlappingPair void ( ::btOverlappingPairCache::* )( ::btBroadphasePair &,::btDispatcher * ) +void btOverlappingPairCache_cleanOverlappingPair(void *c,void* p0,void* p1) {+	::btOverlappingPairCache *o = (::btOverlappingPairCache*)c;+	::btBroadphasePair & tp0 = *(::btBroadphasePair *)p0;+	::btDispatcher * tp1 = (::btDispatcher *)p1;+	o->cleanOverlappingPair(tp0,tp1);+}+//method: getNumOverlappingPairs int ( ::btOverlappingPairCache::* )(  ) const+int btOverlappingPairCache_getNumOverlappingPairs(void *c) {+	::btOverlappingPairCache *o = (::btOverlappingPairCache*)c;+	int retVal = (int)o->getNumOverlappingPairs();+	return retVal;+}+//method: processAllOverlappingPairs void ( ::btOverlappingPairCache::* )( ::btOverlapCallback *,::btDispatcher * ) +void btOverlappingPairCache_processAllOverlappingPairs(void *c,void* p0,void* p1) {+	::btOverlappingPairCache *o = (::btOverlappingPairCache*)c;+	::btOverlapCallback * tp0 = (::btOverlapCallback *)p0;+	::btDispatcher * tp1 = (::btDispatcher *)p1;+	o->processAllOverlappingPairs(tp0,tp1);+}+//method: getOverlappingPairArrayPtr ::btBroadphasePair * ( ::btOverlappingPairCache::* )(  ) +void* btOverlappingPairCache_getOverlappingPairArrayPtr(void *c) {+	::btOverlappingPairCache *o = (::btOverlappingPairCache*)c;+	void* retVal = (void*) o->getOverlappingPairArrayPtr();+	return retVal;+}+//method: getOverlappingPairArrayPtr ::btBroadphasePair * ( ::btOverlappingPairCache::* )(  ) +void* btOverlappingPairCache_getOverlappingPairArrayPtr0(void *c) {+	::btOverlappingPairCache *o = (::btOverlappingPairCache*)c;+	void* retVal = (void*) o->getOverlappingPairArrayPtr();+	return retVal;+}+//method: getOverlappingPairArrayPtr ::btBroadphasePair const * ( ::btOverlappingPairCache::* )(  ) const+void* btOverlappingPairCache_getOverlappingPairArrayPtr1(void *c) {+	::btOverlappingPairCache *o = (::btOverlappingPairCache*)c;+	void* retVal = (void*) o->getOverlappingPairArrayPtr();+	return retVal;+}+//method: hasDeferredRemoval bool ( ::btOverlappingPairCache::* )(  ) +int btOverlappingPairCache_hasDeferredRemoval(void *c) {+	::btOverlappingPairCache *o = (::btOverlappingPairCache*)c;+	int retVal = (int)o->hasDeferredRemoval();+	return retVal;+}++// ::btOverlappingPairCallback+//method: addOverlappingPair ::btBroadphasePair * ( ::btOverlappingPairCallback::* )( ::btBroadphaseProxy *,::btBroadphaseProxy * ) +void* btOverlappingPairCallback_addOverlappingPair(void *c,void* p0,void* p1) {+	::btOverlappingPairCallback *o = (::btOverlappingPairCallback*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	::btBroadphaseProxy * tp1 = (::btBroadphaseProxy *)p1;+	void* retVal = (void*) o->addOverlappingPair(tp0,tp1);+	return retVal;+}+//not supported method: removeOverlappingPair void * ( ::btOverlappingPairCallback::* )( ::btBroadphaseProxy *,::btBroadphaseProxy *,::btDispatcher * ) +//method: removeOverlappingPairsContainingProxy void ( ::btOverlappingPairCallback::* )( ::btBroadphaseProxy *,::btDispatcher * ) +void btOverlappingPairCallback_removeOverlappingPairsContainingProxy(void *c,void* p0,void* p1) {+	::btOverlappingPairCallback *o = (::btOverlappingPairCallback*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	::btDispatcher * tp1 = (::btDispatcher *)p1;+	o->removeOverlappingPairsContainingProxy(tp0,tp1);+}++// ::btQuantizedBvh+//constructor: btQuantizedBvh  ( ::btQuantizedBvh::* )(  ) +void* btQuantizedBvh_new() {+	::btQuantizedBvh *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btQuantizedBvh),16);+	o = new (mem)::btQuantizedBvh();+	return (void*)o;+}+void btQuantizedBvh_free(void *c) {+	::btQuantizedBvh *o = (::btQuantizedBvh*)c;+	delete o;+}+//method: getAlignmentSerializationPadding unsigned int (*)(  )+unsigned int btQuantizedBvh_getAlignmentSerializationPadding() {+	unsigned int retVal = (unsigned int)::btQuantizedBvh::getAlignmentSerializationPadding();+	return retVal;+}+//not supported method: getQuantizedNodeArray ::QuantizedNodeArray & ( ::btQuantizedBvh::* )(  ) +//not supported method: setTraversalMode void ( ::btQuantizedBvh::* )( ::btQuantizedBvh::btTraversalMode ) +//method: buildInternal void ( ::btQuantizedBvh::* )(  ) +void btQuantizedBvh_buildInternal(void *c) {+	::btQuantizedBvh *o = (::btQuantizedBvh*)c;+	o->buildInternal();+}+//not supported method: quantize void ( ::btQuantizedBvh::* )( short unsigned int *,::btVector3 const &,int ) const+//method: deSerializeFloat void ( ::btQuantizedBvh::* )( ::btQuantizedBvhFloatData & ) +void btQuantizedBvh_deSerializeFloat(void *c,void* p0) {+	::btQuantizedBvh *o = (::btQuantizedBvh*)c;+	::btQuantizedBvhFloatData & tp0 = *(::btQuantizedBvhFloatData *)p0;+	o->deSerializeFloat(tp0);+}+//method: isQuantized bool ( ::btQuantizedBvh::* )(  ) +int btQuantizedBvh_isQuantized(void *c) {+	::btQuantizedBvh *o = (::btQuantizedBvh*)c;+	int retVal = (int)o->isQuantized();+	return retVal;+}+//not supported method: getSubtreeInfoArray ::BvhSubtreeInfoArray & ( ::btQuantizedBvh::* )(  ) +//not supported method: quantizeWithClamp void ( ::btQuantizedBvh::* )( short unsigned int *,::btVector3 const &,int ) const+//not supported method: unQuantize ::btVector3 ( ::btQuantizedBvh::* )( short unsigned int const * ) const+//not supported method: getLeafNodeArray ::QuantizedNodeArray & ( ::btQuantizedBvh::* )(  ) +//method: setQuantizationValues void ( ::btQuantizedBvh::* )( ::btVector3 const &,::btVector3 const &,::btScalar ) +void btQuantizedBvh_setQuantizationValues(void *c,float* p0,float* p1,float p2) {+	::btQuantizedBvh *o = (::btQuantizedBvh*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->setQuantizationValues(tp0,tp1,p2);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: reportAabbOverlappingNodex void ( ::btQuantizedBvh::* )( ::btNodeOverlapCallback *,::btVector3 const &,::btVector3 const & ) const+void btQuantizedBvh_reportAabbOverlappingNodex(void *c,void* p0,float* p1,float* p2) {+	::btQuantizedBvh *o = (::btQuantizedBvh*)c;+	::btNodeOverlapCallback * tp0 = (::btNodeOverlapCallback *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->reportAabbOverlappingNodex(tp0,tp1,tp2);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: reportBoxCastOverlappingNodex void ( ::btQuantizedBvh::* )( ::btNodeOverlapCallback *,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const & ) const+void btQuantizedBvh_reportBoxCastOverlappingNodex(void *c,void* p0,float* p1,float* p2,float* p3,float* p4) {+	::btQuantizedBvh *o = (::btQuantizedBvh*)c;+	::btNodeOverlapCallback * tp0 = (::btNodeOverlapCallback *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	btVector3 tp4(p4[0],p4[1],p4[2]);+	o->reportBoxCastOverlappingNodex(tp0,tp1,tp2,tp3,tp4);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+	p4[0]=tp4.m_floats[0];p4[1]=tp4.m_floats[1];p4[2]=tp4.m_floats[2];+}+//method: calculateSerializeBufferSize unsigned int ( ::btQuantizedBvh::* )(  ) const+unsigned int btQuantizedBvh_calculateSerializeBufferSize(void *c) {+	::btQuantizedBvh *o = (::btQuantizedBvh*)c;+	unsigned int retVal = (unsigned int)o->calculateSerializeBufferSize();+	return retVal;+}+//method: reportRayOverlappingNodex void ( ::btQuantizedBvh::* )( ::btNodeOverlapCallback *,::btVector3 const &,::btVector3 const & ) const+void btQuantizedBvh_reportRayOverlappingNodex(void *c,void* p0,float* p1,float* p2) {+	::btQuantizedBvh *o = (::btQuantizedBvh*)c;+	::btNodeOverlapCallback * tp0 = (::btNodeOverlapCallback *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->reportRayOverlappingNodex(tp0,tp1,tp2);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//not supported method: serialize bool ( ::btQuantizedBvh::* )( void *,unsigned int,bool ) const+//not supported method: serialize bool ( ::btQuantizedBvh::* )( void *,unsigned int,bool ) const+//not supported method: serialize char const * ( ::btQuantizedBvh::* )( void *,::btSerializer * ) const+//method: deSerializeDouble void ( ::btQuantizedBvh::* )( ::btQuantizedBvhDoubleData & ) +void btQuantizedBvh_deSerializeDouble(void *c,void* p0) {+	::btQuantizedBvh *o = (::btQuantizedBvh*)c;+	::btQuantizedBvhDoubleData & tp0 = *(::btQuantizedBvhDoubleData *)p0;+	o->deSerializeDouble(tp0);+}+//method: calculateSerializeBufferSizeNew int ( ::btQuantizedBvh::* )(  ) const+int btQuantizedBvh_calculateSerializeBufferSizeNew(void *c) {+	::btQuantizedBvh *o = (::btQuantizedBvh*)c;+	int retVal = (int)o->calculateSerializeBufferSizeNew();+	return retVal;+}+//not supported method: deSerializeInPlace ::btQuantizedBvh * (*)( void *,unsigned int,bool )++// ::btQuantizedBvhDoubleData+//constructor: btQuantizedBvhDoubleData  ( ::btQuantizedBvhDoubleData::* )(  ) +void* btQuantizedBvhDoubleData_new() {+	::btQuantizedBvhDoubleData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btQuantizedBvhDoubleData),16);+	o = new (mem)::btQuantizedBvhDoubleData();+	return (void*)o;+}+void btQuantizedBvhDoubleData_free(void *c) {+	::btQuantizedBvhDoubleData *o = (::btQuantizedBvhDoubleData*)c;+	delete o;+}+//attribute: ::btVector3DoubleData btQuantizedBvhDoubleData->m_bvhAabbMax+// attribute not supported: //attribute: ::btVector3DoubleData btQuantizedBvhDoubleData->m_bvhAabbMax+//attribute: ::btVector3DoubleData btQuantizedBvhDoubleData->m_bvhAabbMin+// attribute not supported: //attribute: ::btVector3DoubleData btQuantizedBvhDoubleData->m_bvhAabbMin+//attribute: ::btVector3DoubleData btQuantizedBvhDoubleData->m_bvhQuantization+// attribute not supported: //attribute: ::btVector3DoubleData btQuantizedBvhDoubleData->m_bvhQuantization+//attribute: ::btOptimizedBvhNodeDoubleData * btQuantizedBvhDoubleData->m_contiguousNodesPtr+void btQuantizedBvhDoubleData_m_contiguousNodesPtr_set(void *c,void* a) {+	::btQuantizedBvhDoubleData *o = (::btQuantizedBvhDoubleData*)c;+	::btOptimizedBvhNodeDoubleData * ta = (::btOptimizedBvhNodeDoubleData *)a;+	o->m_contiguousNodesPtr = ta;+}+// attriibute getter not supported: //attribute: ::btOptimizedBvhNodeDoubleData * btQuantizedBvhDoubleData->m_contiguousNodesPtr+//attribute: int btQuantizedBvhDoubleData->m_curNodeIndex+void btQuantizedBvhDoubleData_m_curNodeIndex_set(void *c,int a) {+	::btQuantizedBvhDoubleData *o = (::btQuantizedBvhDoubleData*)c;+	o->m_curNodeIndex = a;+}+int btQuantizedBvhDoubleData_m_curNodeIndex_get(void *c) {+	::btQuantizedBvhDoubleData *o = (::btQuantizedBvhDoubleData*)c;+	return (int)(o->m_curNodeIndex);+}++//attribute: int btQuantizedBvhDoubleData->m_numContiguousLeafNodes+void btQuantizedBvhDoubleData_m_numContiguousLeafNodes_set(void *c,int a) {+	::btQuantizedBvhDoubleData *o = (::btQuantizedBvhDoubleData*)c;+	o->m_numContiguousLeafNodes = a;+}+int btQuantizedBvhDoubleData_m_numContiguousLeafNodes_get(void *c) {+	::btQuantizedBvhDoubleData *o = (::btQuantizedBvhDoubleData*)c;+	return (int)(o->m_numContiguousLeafNodes);+}++//attribute: int btQuantizedBvhDoubleData->m_numQuantizedContiguousNodes+void btQuantizedBvhDoubleData_m_numQuantizedContiguousNodes_set(void *c,int a) {+	::btQuantizedBvhDoubleData *o = (::btQuantizedBvhDoubleData*)c;+	o->m_numQuantizedContiguousNodes = a;+}+int btQuantizedBvhDoubleData_m_numQuantizedContiguousNodes_get(void *c) {+	::btQuantizedBvhDoubleData *o = (::btQuantizedBvhDoubleData*)c;+	return (int)(o->m_numQuantizedContiguousNodes);+}++//attribute: int btQuantizedBvhDoubleData->m_numSubtreeHeaders+void btQuantizedBvhDoubleData_m_numSubtreeHeaders_set(void *c,int a) {+	::btQuantizedBvhDoubleData *o = (::btQuantizedBvhDoubleData*)c;+	o->m_numSubtreeHeaders = a;+}+int btQuantizedBvhDoubleData_m_numSubtreeHeaders_get(void *c) {+	::btQuantizedBvhDoubleData *o = (::btQuantizedBvhDoubleData*)c;+	return (int)(o->m_numSubtreeHeaders);+}++//attribute: ::btQuantizedBvhNodeData * btQuantizedBvhDoubleData->m_quantizedContiguousNodesPtr+void btQuantizedBvhDoubleData_m_quantizedContiguousNodesPtr_set(void *c,void* a) {+	::btQuantizedBvhDoubleData *o = (::btQuantizedBvhDoubleData*)c;+	::btQuantizedBvhNodeData * ta = (::btQuantizedBvhNodeData *)a;+	o->m_quantizedContiguousNodesPtr = ta;+}+// attriibute getter not supported: //attribute: ::btQuantizedBvhNodeData * btQuantizedBvhDoubleData->m_quantizedContiguousNodesPtr+//attribute: ::btBvhSubtreeInfoData * btQuantizedBvhDoubleData->m_subTreeInfoPtr+void btQuantizedBvhDoubleData_m_subTreeInfoPtr_set(void *c,void* a) {+	::btQuantizedBvhDoubleData *o = (::btQuantizedBvhDoubleData*)c;+	::btBvhSubtreeInfoData * ta = (::btBvhSubtreeInfoData *)a;+	o->m_subTreeInfoPtr = ta;+}+// attriibute getter not supported: //attribute: ::btBvhSubtreeInfoData * btQuantizedBvhDoubleData->m_subTreeInfoPtr+//attribute: int btQuantizedBvhDoubleData->m_traversalMode+void btQuantizedBvhDoubleData_m_traversalMode_set(void *c,int a) {+	::btQuantizedBvhDoubleData *o = (::btQuantizedBvhDoubleData*)c;+	o->m_traversalMode = a;+}+int btQuantizedBvhDoubleData_m_traversalMode_get(void *c) {+	::btQuantizedBvhDoubleData *o = (::btQuantizedBvhDoubleData*)c;+	return (int)(o->m_traversalMode);+}++//attribute: int btQuantizedBvhDoubleData->m_useQuantization+void btQuantizedBvhDoubleData_m_useQuantization_set(void *c,int a) {+	::btQuantizedBvhDoubleData *o = (::btQuantizedBvhDoubleData*)c;+	o->m_useQuantization = a;+}+int btQuantizedBvhDoubleData_m_useQuantization_get(void *c) {+	::btQuantizedBvhDoubleData *o = (::btQuantizedBvhDoubleData*)c;+	return (int)(o->m_useQuantization);+}+++// ::btQuantizedBvhFloatData+//constructor: btQuantizedBvhFloatData  ( ::btQuantizedBvhFloatData::* )(  ) +void* btQuantizedBvhFloatData_new() {+	::btQuantizedBvhFloatData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btQuantizedBvhFloatData),16);+	o = new (mem)::btQuantizedBvhFloatData();+	return (void*)o;+}+void btQuantizedBvhFloatData_free(void *c) {+	::btQuantizedBvhFloatData *o = (::btQuantizedBvhFloatData*)c;+	delete o;+}+//attribute: ::btVector3FloatData btQuantizedBvhFloatData->m_bvhAabbMax+// attribute not supported: //attribute: ::btVector3FloatData btQuantizedBvhFloatData->m_bvhAabbMax+//attribute: ::btVector3FloatData btQuantizedBvhFloatData->m_bvhAabbMin+// attribute not supported: //attribute: ::btVector3FloatData btQuantizedBvhFloatData->m_bvhAabbMin+//attribute: ::btVector3FloatData btQuantizedBvhFloatData->m_bvhQuantization+// attribute not supported: //attribute: ::btVector3FloatData btQuantizedBvhFloatData->m_bvhQuantization+//attribute: ::btOptimizedBvhNodeFloatData * btQuantizedBvhFloatData->m_contiguousNodesPtr+void btQuantizedBvhFloatData_m_contiguousNodesPtr_set(void *c,void* a) {+	::btQuantizedBvhFloatData *o = (::btQuantizedBvhFloatData*)c;+	::btOptimizedBvhNodeFloatData * ta = (::btOptimizedBvhNodeFloatData *)a;+	o->m_contiguousNodesPtr = ta;+}+// attriibute getter not supported: //attribute: ::btOptimizedBvhNodeFloatData * btQuantizedBvhFloatData->m_contiguousNodesPtr+//attribute: int btQuantizedBvhFloatData->m_curNodeIndex+void btQuantizedBvhFloatData_m_curNodeIndex_set(void *c,int a) {+	::btQuantizedBvhFloatData *o = (::btQuantizedBvhFloatData*)c;+	o->m_curNodeIndex = a;+}+int btQuantizedBvhFloatData_m_curNodeIndex_get(void *c) {+	::btQuantizedBvhFloatData *o = (::btQuantizedBvhFloatData*)c;+	return (int)(o->m_curNodeIndex);+}++//attribute: int btQuantizedBvhFloatData->m_numContiguousLeafNodes+void btQuantizedBvhFloatData_m_numContiguousLeafNodes_set(void *c,int a) {+	::btQuantizedBvhFloatData *o = (::btQuantizedBvhFloatData*)c;+	o->m_numContiguousLeafNodes = a;+}+int btQuantizedBvhFloatData_m_numContiguousLeafNodes_get(void *c) {+	::btQuantizedBvhFloatData *o = (::btQuantizedBvhFloatData*)c;+	return (int)(o->m_numContiguousLeafNodes);+}++//attribute: int btQuantizedBvhFloatData->m_numQuantizedContiguousNodes+void btQuantizedBvhFloatData_m_numQuantizedContiguousNodes_set(void *c,int a) {+	::btQuantizedBvhFloatData *o = (::btQuantizedBvhFloatData*)c;+	o->m_numQuantizedContiguousNodes = a;+}+int btQuantizedBvhFloatData_m_numQuantizedContiguousNodes_get(void *c) {+	::btQuantizedBvhFloatData *o = (::btQuantizedBvhFloatData*)c;+	return (int)(o->m_numQuantizedContiguousNodes);+}++//attribute: int btQuantizedBvhFloatData->m_numSubtreeHeaders+void btQuantizedBvhFloatData_m_numSubtreeHeaders_set(void *c,int a) {+	::btQuantizedBvhFloatData *o = (::btQuantizedBvhFloatData*)c;+	o->m_numSubtreeHeaders = a;+}+int btQuantizedBvhFloatData_m_numSubtreeHeaders_get(void *c) {+	::btQuantizedBvhFloatData *o = (::btQuantizedBvhFloatData*)c;+	return (int)(o->m_numSubtreeHeaders);+}++//attribute: ::btQuantizedBvhNodeData * btQuantizedBvhFloatData->m_quantizedContiguousNodesPtr+void btQuantizedBvhFloatData_m_quantizedContiguousNodesPtr_set(void *c,void* a) {+	::btQuantizedBvhFloatData *o = (::btQuantizedBvhFloatData*)c;+	::btQuantizedBvhNodeData * ta = (::btQuantizedBvhNodeData *)a;+	o->m_quantizedContiguousNodesPtr = ta;+}+// attriibute getter not supported: //attribute: ::btQuantizedBvhNodeData * btQuantizedBvhFloatData->m_quantizedContiguousNodesPtr+//attribute: ::btBvhSubtreeInfoData * btQuantizedBvhFloatData->m_subTreeInfoPtr+void btQuantizedBvhFloatData_m_subTreeInfoPtr_set(void *c,void* a) {+	::btQuantizedBvhFloatData *o = (::btQuantizedBvhFloatData*)c;+	::btBvhSubtreeInfoData * ta = (::btBvhSubtreeInfoData *)a;+	o->m_subTreeInfoPtr = ta;+}+// attriibute getter not supported: //attribute: ::btBvhSubtreeInfoData * btQuantizedBvhFloatData->m_subTreeInfoPtr+//attribute: int btQuantizedBvhFloatData->m_traversalMode+void btQuantizedBvhFloatData_m_traversalMode_set(void *c,int a) {+	::btQuantizedBvhFloatData *o = (::btQuantizedBvhFloatData*)c;+	o->m_traversalMode = a;+}+int btQuantizedBvhFloatData_m_traversalMode_get(void *c) {+	::btQuantizedBvhFloatData *o = (::btQuantizedBvhFloatData*)c;+	return (int)(o->m_traversalMode);+}++//attribute: int btQuantizedBvhFloatData->m_useQuantization+void btQuantizedBvhFloatData_m_useQuantization_set(void *c,int a) {+	::btQuantizedBvhFloatData *o = (::btQuantizedBvhFloatData*)c;+	o->m_useQuantization = a;+}+int btQuantizedBvhFloatData_m_useQuantization_get(void *c) {+	::btQuantizedBvhFloatData *o = (::btQuantizedBvhFloatData*)c;+	return (int)(o->m_useQuantization);+}+++// ::btQuantizedBvhNode+//constructor: btQuantizedBvhNode  ( ::btQuantizedBvhNode::* )(  ) +void* btQuantizedBvhNode_new() {+	::btQuantizedBvhNode *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btQuantizedBvhNode),16);+	o = new (mem)::btQuantizedBvhNode();+	return (void*)o;+}+void btQuantizedBvhNode_free(void *c) {+	::btQuantizedBvhNode *o = (::btQuantizedBvhNode*)c;+	delete o;+}+//method: getEscapeIndex int ( ::btQuantizedBvhNode::* )(  ) const+int btQuantizedBvhNode_getEscapeIndex(void *c) {+	::btQuantizedBvhNode *o = (::btQuantizedBvhNode*)c;+	int retVal = (int)o->getEscapeIndex();+	return retVal;+}+//method: getTriangleIndex int ( ::btQuantizedBvhNode::* )(  ) const+int btQuantizedBvhNode_getTriangleIndex(void *c) {+	::btQuantizedBvhNode *o = (::btQuantizedBvhNode*)c;+	int retVal = (int)o->getTriangleIndex();+	return retVal;+}+//method: getPartId int ( ::btQuantizedBvhNode::* )(  ) const+int btQuantizedBvhNode_getPartId(void *c) {+	::btQuantizedBvhNode *o = (::btQuantizedBvhNode*)c;+	int retVal = (int)o->getPartId();+	return retVal;+}+//method: isLeafNode bool ( ::btQuantizedBvhNode::* )(  ) const+int btQuantizedBvhNode_isLeafNode(void *c) {+	::btQuantizedBvhNode *o = (::btQuantizedBvhNode*)c;+	int retVal = (int)o->isLeafNode();+	return retVal;+}+//attribute: int btQuantizedBvhNode->m_escapeIndexOrTriangleIndex+void btQuantizedBvhNode_m_escapeIndexOrTriangleIndex_set(void *c,int a) {+	::btQuantizedBvhNode *o = (::btQuantizedBvhNode*)c;+	o->m_escapeIndexOrTriangleIndex = a;+}+int btQuantizedBvhNode_m_escapeIndexOrTriangleIndex_get(void *c) {+	::btQuantizedBvhNode *o = (::btQuantizedBvhNode*)c;+	return (int)(o->m_escapeIndexOrTriangleIndex);+}++//attribute: short unsigned int[3] btQuantizedBvhNode->m_quantizedAabbMax+// attribute not supported: //attribute: short unsigned int[3] btQuantizedBvhNode->m_quantizedAabbMax+//attribute: short unsigned int[3] btQuantizedBvhNode->m_quantizedAabbMin+// attribute not supported: //attribute: short unsigned int[3] btQuantizedBvhNode->m_quantizedAabbMin++// ::btQuantizedBvhNodeData+//constructor: btQuantizedBvhNodeData  ( ::btQuantizedBvhNodeData::* )(  ) +void* btQuantizedBvhNodeData_new() {+	::btQuantizedBvhNodeData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btQuantizedBvhNodeData),16);+	o = new (mem)::btQuantizedBvhNodeData();+	return (void*)o;+}+void btQuantizedBvhNodeData_free(void *c) {+	::btQuantizedBvhNodeData *o = (::btQuantizedBvhNodeData*)c;+	delete o;+}+//attribute: int btQuantizedBvhNodeData->m_escapeIndexOrTriangleIndex+void btQuantizedBvhNodeData_m_escapeIndexOrTriangleIndex_set(void *c,int a) {+	::btQuantizedBvhNodeData *o = (::btQuantizedBvhNodeData*)c;+	o->m_escapeIndexOrTriangleIndex = a;+}+int btQuantizedBvhNodeData_m_escapeIndexOrTriangleIndex_get(void *c) {+	::btQuantizedBvhNodeData *o = (::btQuantizedBvhNodeData*)c;+	return (int)(o->m_escapeIndexOrTriangleIndex);+}++//attribute: short unsigned int[3] btQuantizedBvhNodeData->m_quantizedAabbMax+// attribute not supported: //attribute: short unsigned int[3] btQuantizedBvhNodeData->m_quantizedAabbMax+//attribute: short unsigned int[3] btQuantizedBvhNodeData->m_quantizedAabbMin+// attribute not supported: //attribute: short unsigned int[3] btQuantizedBvhNodeData->m_quantizedAabbMin++// ::btSimpleBroadphase+//constructor: btSimpleBroadphase  ( ::btSimpleBroadphase::* )( int,::btOverlappingPairCache * ) +void* btSimpleBroadphase_new(int p0,void* p1) {+	::btSimpleBroadphase *o = 0;+	 void *mem = 0;+	::btOverlappingPairCache * tp1 = (::btOverlappingPairCache *)p1;+	mem = btAlignedAlloc(sizeof(::btSimpleBroadphase),16);+	o = new (mem)::btSimpleBroadphase(p0,tp1);+	return (void*)o;+}+void btSimpleBroadphase_free(void *c) {+	::btSimpleBroadphase *o = (::btSimpleBroadphase*)c;+	delete o;+}+//method: rayTest void ( ::btSimpleBroadphase::* )( ::btVector3 const &,::btVector3 const &,::btBroadphaseRayCallback &,::btVector3 const &,::btVector3 const & ) +void btSimpleBroadphase_rayTest(void *c,float* p0,float* p1,void* p2,float* p3,float* p4) {+	::btSimpleBroadphase *o = (::btSimpleBroadphase*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	::btBroadphaseRayCallback & tp2 = *(::btBroadphaseRayCallback *)p2;+	btVector3 tp3(p3[0],p3[1],p3[2]);+	btVector3 tp4(p4[0],p4[1],p4[2]);+	o->rayTest(tp0,tp1,tp2,tp3,tp4);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+	p4[0]=tp4.m_floats[0];p4[1]=tp4.m_floats[1];p4[2]=tp4.m_floats[2];+}+//method: setAabb void ( ::btSimpleBroadphase::* )( ::btBroadphaseProxy *,::btVector3 const &,::btVector3 const &,::btDispatcher * ) +void btSimpleBroadphase_setAabb(void *c,void* p0,float* p1,float* p2,void* p3) {+	::btSimpleBroadphase *o = (::btSimpleBroadphase*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	::btDispatcher * tp3 = (::btDispatcher *)p3;+	o->setAabb(tp0,tp1,tp2,tp3);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: getOverlappingPairCache ::btOverlappingPairCache * ( ::btSimpleBroadphase::* )(  ) +void* btSimpleBroadphase_getOverlappingPairCache(void *c) {+	::btSimpleBroadphase *o = (::btSimpleBroadphase*)c;+	void* retVal = (void*) o->getOverlappingPairCache();+	return retVal;+}+//method: getOverlappingPairCache ::btOverlappingPairCache * ( ::btSimpleBroadphase::* )(  ) +void* btSimpleBroadphase_getOverlappingPairCache0(void *c) {+	::btSimpleBroadphase *o = (::btSimpleBroadphase*)c;+	void* retVal = (void*) o->getOverlappingPairCache();+	return retVal;+}+//method: getOverlappingPairCache ::btOverlappingPairCache const * ( ::btSimpleBroadphase::* )(  ) const+void* btSimpleBroadphase_getOverlappingPairCache1(void *c) {+	::btSimpleBroadphase *o = (::btSimpleBroadphase*)c;+	void* retVal = (void*) o->getOverlappingPairCache();+	return retVal;+}+//method: calculateOverlappingPairs void ( ::btSimpleBroadphase::* )( ::btDispatcher * ) +void btSimpleBroadphase_calculateOverlappingPairs(void *c,void* p0) {+	::btSimpleBroadphase *o = (::btSimpleBroadphase*)c;+	::btDispatcher * tp0 = (::btDispatcher *)p0;+	o->calculateOverlappingPairs(tp0);+}+//method: testAabbOverlap bool ( ::btSimpleBroadphase::* )( ::btBroadphaseProxy *,::btBroadphaseProxy * ) +int btSimpleBroadphase_testAabbOverlap(void *c,void* p0,void* p1) {+	::btSimpleBroadphase *o = (::btSimpleBroadphase*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	::btBroadphaseProxy * tp1 = (::btBroadphaseProxy *)p1;+	int retVal = (int)o->testAabbOverlap(tp0,tp1);+	return retVal;+}+//method: getAabb void ( ::btSimpleBroadphase::* )( ::btBroadphaseProxy *,::btVector3 &,::btVector3 & ) const+void btSimpleBroadphase_getAabb(void *c,void* p0,float* p1,float* p2) {+	::btSimpleBroadphase *o = (::btSimpleBroadphase*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->getAabb(tp0,tp1,tp2);+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: aabbTest void ( ::btSimpleBroadphase::* )( ::btVector3 const &,::btVector3 const &,::btBroadphaseAabbCallback & ) +void btSimpleBroadphase_aabbTest(void *c,float* p0,float* p1,void* p2) {+	::btSimpleBroadphase *o = (::btSimpleBroadphase*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	::btBroadphaseAabbCallback & tp2 = *(::btBroadphaseAabbCallback *)p2;+	o->aabbTest(tp0,tp1,tp2);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//not supported method: createProxy ::btBroadphaseProxy * ( ::btSimpleBroadphase::* )( ::btVector3 const &,::btVector3 const &,int,void *,short int,short int,::btDispatcher *,void * ) +//method: printStats void ( ::btSimpleBroadphase::* )(  ) +void btSimpleBroadphase_printStats(void *c) {+	::btSimpleBroadphase *o = (::btSimpleBroadphase*)c;+	o->printStats();+}+//method: aabbOverlap bool (*)( ::btSimpleBroadphaseProxy *,::btSimpleBroadphaseProxy * )+int btSimpleBroadphase_aabbOverlap(void* p0,void* p1) {+	::btSimpleBroadphaseProxy * tp0 = (::btSimpleBroadphaseProxy *)p0;+	::btSimpleBroadphaseProxy * tp1 = (::btSimpleBroadphaseProxy *)p1;+	int retVal = (int)::btSimpleBroadphase::aabbOverlap(tp0,tp1);+	return retVal;+}+//method: getBroadphaseAabb void ( ::btSimpleBroadphase::* )( ::btVector3 &,::btVector3 & ) const+void btSimpleBroadphase_getBroadphaseAabb(void *c,float* p0,float* p1) {+	::btSimpleBroadphase *o = (::btSimpleBroadphase*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->getBroadphaseAabb(tp0,tp1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: destroyProxy void ( ::btSimpleBroadphase::* )( ::btBroadphaseProxy *,::btDispatcher * ) +void btSimpleBroadphase_destroyProxy(void *c,void* p0,void* p1) {+	::btSimpleBroadphase *o = (::btSimpleBroadphase*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	::btDispatcher * tp1 = (::btDispatcher *)p1;+	o->destroyProxy(tp0,tp1);+}++// ::btSimpleBroadphaseProxy+//constructor: btSimpleBroadphaseProxy  ( ::btSimpleBroadphaseProxy::* )(  ) +void* btSimpleBroadphaseProxy_new0() {+	::btSimpleBroadphaseProxy *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSimpleBroadphaseProxy),16);+	o = new (mem)::btSimpleBroadphaseProxy();+	return (void*)o;+}+//not supported constructor: btSimpleBroadphaseProxy  ( ::btSimpleBroadphaseProxy::* )( ::btVector3 const &,::btVector3 const &,int,void *,short int,short int,void * ) +void btSimpleBroadphaseProxy_free(void *c) {+	::btSimpleBroadphaseProxy *o = (::btSimpleBroadphaseProxy*)c;+	delete o;+}+//method: GetNextFree int ( ::btSimpleBroadphaseProxy::* )(  ) const+int btSimpleBroadphaseProxy_GetNextFree(void *c) {+	::btSimpleBroadphaseProxy *o = (::btSimpleBroadphaseProxy*)c;+	int retVal = (int)o->GetNextFree();+	return retVal;+}+//method: SetNextFree void ( ::btSimpleBroadphaseProxy::* )( int ) +void btSimpleBroadphaseProxy_SetNextFree(void *c,int p0) {+	::btSimpleBroadphaseProxy *o = (::btSimpleBroadphaseProxy*)c;+	o->SetNextFree(p0);+}+//attribute: int btSimpleBroadphaseProxy->m_nextFree+void btSimpleBroadphaseProxy_m_nextFree_set(void *c,int a) {+	::btSimpleBroadphaseProxy *o = (::btSimpleBroadphaseProxy*)c;+	o->m_nextFree = a;+}+int btSimpleBroadphaseProxy_m_nextFree_get(void *c) {+	::btSimpleBroadphaseProxy *o = (::btSimpleBroadphaseProxy*)c;+	return (int)(o->m_nextFree);+}+++// ::btSortedOverlappingPairCache+//constructor: btSortedOverlappingPairCache  ( ::btSortedOverlappingPairCache::* )(  ) +void* btSortedOverlappingPairCache_new() {+	::btSortedOverlappingPairCache *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSortedOverlappingPairCache),16);+	o = new (mem)::btSortedOverlappingPairCache();+	return (void*)o;+}+void btSortedOverlappingPairCache_free(void *c) {+	::btSortedOverlappingPairCache *o = (::btSortedOverlappingPairCache*)c;+	delete o;+}+//method: sortOverlappingPairs void ( ::btSortedOverlappingPairCache::* )( ::btDispatcher * ) +void btSortedOverlappingPairCache_sortOverlappingPairs(void *c,void* p0) {+	::btSortedOverlappingPairCache *o = (::btSortedOverlappingPairCache*)c;+	::btDispatcher * tp0 = (::btDispatcher *)p0;+	o->sortOverlappingPairs(tp0);+}+//method: setInternalGhostPairCallback void ( ::btSortedOverlappingPairCache::* )( ::btOverlappingPairCallback * ) +void btSortedOverlappingPairCache_setInternalGhostPairCallback(void *c,void* p0) {+	::btSortedOverlappingPairCache *o = (::btSortedOverlappingPairCache*)c;+	::btOverlappingPairCallback * tp0 = (::btOverlappingPairCallback *)p0;+	o->setInternalGhostPairCallback(tp0);+}+//method: getOverlapFilterCallback ::btOverlapFilterCallback * ( ::btSortedOverlappingPairCache::* )(  ) +void* btSortedOverlappingPairCache_getOverlapFilterCallback(void *c) {+	::btSortedOverlappingPairCache *o = (::btSortedOverlappingPairCache*)c;+	void* retVal = (void*) o->getOverlapFilterCallback();+	return retVal;+}+//method: addOverlappingPair ::btBroadphasePair * ( ::btSortedOverlappingPairCache::* )( ::btBroadphaseProxy *,::btBroadphaseProxy * ) +void* btSortedOverlappingPairCache_addOverlappingPair(void *c,void* p0,void* p1) {+	::btSortedOverlappingPairCache *o = (::btSortedOverlappingPairCache*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	::btBroadphaseProxy * tp1 = (::btBroadphaseProxy *)p1;+	void* retVal = (void*) o->addOverlappingPair(tp0,tp1);+	return retVal;+}+//method: removeOverlappingPairsContainingProxy void ( ::btSortedOverlappingPairCache::* )( ::btBroadphaseProxy *,::btDispatcher * ) +void btSortedOverlappingPairCache_removeOverlappingPairsContainingProxy(void *c,void* p0,void* p1) {+	::btSortedOverlappingPairCache *o = (::btSortedOverlappingPairCache*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	::btDispatcher * tp1 = (::btDispatcher *)p1;+	o->removeOverlappingPairsContainingProxy(tp0,tp1);+}+//method: needsBroadphaseCollision bool ( ::btSortedOverlappingPairCache::* )( ::btBroadphaseProxy *,::btBroadphaseProxy * ) const+int btSortedOverlappingPairCache_needsBroadphaseCollision(void *c,void* p0,void* p1) {+	::btSortedOverlappingPairCache *o = (::btSortedOverlappingPairCache*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	::btBroadphaseProxy * tp1 = (::btBroadphaseProxy *)p1;+	int retVal = (int)o->needsBroadphaseCollision(tp0,tp1);+	return retVal;+}+//method: hasDeferredRemoval bool ( ::btSortedOverlappingPairCache::* )(  ) +int btSortedOverlappingPairCache_hasDeferredRemoval(void *c) {+	::btSortedOverlappingPairCache *o = (::btSortedOverlappingPairCache*)c;+	int retVal = (int)o->hasDeferredRemoval();+	return retVal;+}+//not supported method: getOverlappingPairArray ::btBroadphasePairArray & ( ::btSortedOverlappingPairCache::* )(  ) +//not supported method: getOverlappingPairArray ::btBroadphasePairArray & ( ::btSortedOverlappingPairCache::* )(  ) +//not supported method: getOverlappingPairArray ::btBroadphasePairArray const & ( ::btSortedOverlappingPairCache::* )(  ) const+//method: findPair ::btBroadphasePair * ( ::btSortedOverlappingPairCache::* )( ::btBroadphaseProxy *,::btBroadphaseProxy * ) +void* btSortedOverlappingPairCache_findPair(void *c,void* p0,void* p1) {+	::btSortedOverlappingPairCache *o = (::btSortedOverlappingPairCache*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	::btBroadphaseProxy * tp1 = (::btBroadphaseProxy *)p1;+	void* retVal = (void*) o->findPair(tp0,tp1);+	return retVal;+}+//method: cleanProxyFromPairs void ( ::btSortedOverlappingPairCache::* )( ::btBroadphaseProxy *,::btDispatcher * ) +void btSortedOverlappingPairCache_cleanProxyFromPairs(void *c,void* p0,void* p1) {+	::btSortedOverlappingPairCache *o = (::btSortedOverlappingPairCache*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	::btDispatcher * tp1 = (::btDispatcher *)p1;+	o->cleanProxyFromPairs(tp0,tp1);+}+//method: cleanOverlappingPair void ( ::btSortedOverlappingPairCache::* )( ::btBroadphasePair &,::btDispatcher * ) +void btSortedOverlappingPairCache_cleanOverlappingPair(void *c,void* p0,void* p1) {+	::btSortedOverlappingPairCache *o = (::btSortedOverlappingPairCache*)c;+	::btBroadphasePair & tp0 = *(::btBroadphasePair *)p0;+	::btDispatcher * tp1 = (::btDispatcher *)p1;+	o->cleanOverlappingPair(tp0,tp1);+}+//method: getNumOverlappingPairs int ( ::btSortedOverlappingPairCache::* )(  ) const+int btSortedOverlappingPairCache_getNumOverlappingPairs(void *c) {+	::btSortedOverlappingPairCache *o = (::btSortedOverlappingPairCache*)c;+	int retVal = (int)o->getNumOverlappingPairs();+	return retVal;+}+//not supported method: removeOverlappingPair void * ( ::btSortedOverlappingPairCache::* )( ::btBroadphaseProxy *,::btBroadphaseProxy *,::btDispatcher * ) +//method: processAllOverlappingPairs void ( ::btSortedOverlappingPairCache::* )( ::btOverlapCallback *,::btDispatcher * ) +void btSortedOverlappingPairCache_processAllOverlappingPairs(void *c,void* p0,void* p1) {+	::btSortedOverlappingPairCache *o = (::btSortedOverlappingPairCache*)c;+	::btOverlapCallback * tp0 = (::btOverlapCallback *)p0;+	::btDispatcher * tp1 = (::btDispatcher *)p1;+	o->processAllOverlappingPairs(tp0,tp1);+}+//method: getOverlappingPairArrayPtr ::btBroadphasePair * ( ::btSortedOverlappingPairCache::* )(  ) +void* btSortedOverlappingPairCache_getOverlappingPairArrayPtr(void *c) {+	::btSortedOverlappingPairCache *o = (::btSortedOverlappingPairCache*)c;+	void* retVal = (void*) o->getOverlappingPairArrayPtr();+	return retVal;+}+//method: getOverlappingPairArrayPtr ::btBroadphasePair * ( ::btSortedOverlappingPairCache::* )(  ) +void* btSortedOverlappingPairCache_getOverlappingPairArrayPtr0(void *c) {+	::btSortedOverlappingPairCache *o = (::btSortedOverlappingPairCache*)c;+	void* retVal = (void*) o->getOverlappingPairArrayPtr();+	return retVal;+}+//method: getOverlappingPairArrayPtr ::btBroadphasePair const * ( ::btSortedOverlappingPairCache::* )(  ) const+void* btSortedOverlappingPairCache_getOverlappingPairArrayPtr1(void *c) {+	::btSortedOverlappingPairCache *o = (::btSortedOverlappingPairCache*)c;+	void* retVal = (void*) o->getOverlappingPairArrayPtr();+	return retVal;+}+//method: setOverlapFilterCallback void ( ::btSortedOverlappingPairCache::* )( ::btOverlapFilterCallback * ) +void btSortedOverlappingPairCache_setOverlapFilterCallback(void *c,void* p0) {+	::btSortedOverlappingPairCache *o = (::btSortedOverlappingPairCache*)c;+	::btOverlapFilterCallback * tp0 = (::btOverlapFilterCallback *)p0;+	o->setOverlapFilterCallback(tp0);+}++// ::btDbvt::sStkCLN+//constructor: sStkCLN  ( ::btDbvt::sStkCLN::* )( ::btDbvtNode const *,::btDbvtNode * ) +void* btDbvt_sStkCLN_new(void* p0,void* p1) {+	::btDbvt::sStkCLN *o = 0;+	 void *mem = 0;+	::btDbvtNode const * tp0 = (::btDbvtNode const *)p0;+	::btDbvtNode * tp1 = (::btDbvtNode *)p1;+	mem = btAlignedAlloc(sizeof(::btDbvt::sStkCLN),16);+	o = new (mem)::btDbvt::sStkCLN(tp0,tp1);+	return (void*)o;+}+void btDbvt_sStkCLN_free(void *c) {+	::btDbvt::sStkCLN *o = (::btDbvt::sStkCLN*)c;+	delete o;+}+//attribute: ::btDbvtNode const * btDbvt_sStkCLN->node+void btDbvt_sStkCLN_node_set(void *c,void* a) {+	::btDbvt::sStkCLN *o = (::btDbvt::sStkCLN*)c;+	::btDbvtNode const * ta = (::btDbvtNode const *)a;+	o->node = ta;+}+// attriibute getter not supported: //attribute: ::btDbvtNode const * btDbvt_sStkCLN->node+//attribute: ::btDbvtNode * btDbvt_sStkCLN->parent+void btDbvt_sStkCLN_parent_set(void *c,void* a) {+	::btDbvt::sStkCLN *o = (::btDbvt::sStkCLN*)c;+	::btDbvtNode * ta = (::btDbvtNode *)a;+	o->parent = ta;+}+// attriibute getter not supported: //attribute: ::btDbvtNode * btDbvt_sStkCLN->parent++// ::btDbvt::sStkNN+//constructor: sStkNN  ( ::btDbvt::sStkNN::* )(  ) +void* btDbvt_sStkNN_new0() {+	::btDbvt::sStkNN *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btDbvt::sStkNN),16);+	o = new (mem)::btDbvt::sStkNN();+	return (void*)o;+}+//constructor: sStkNN  ( ::btDbvt::sStkNN::* )( ::btDbvtNode const *,::btDbvtNode const * ) +void* btDbvt_sStkNN_new1(void* p0,void* p1) {+	::btDbvt::sStkNN *o = 0;+	 void *mem = 0;+	::btDbvtNode const * tp0 = (::btDbvtNode const *)p0;+	::btDbvtNode const * tp1 = (::btDbvtNode const *)p1;+	mem = btAlignedAlloc(sizeof(::btDbvt::sStkNN),16);+	o = new (mem)::btDbvt::sStkNN(tp0,tp1);+	return (void*)o;+}+void btDbvt_sStkNN_free(void *c) {+	::btDbvt::sStkNN *o = (::btDbvt::sStkNN*)c;+	delete o;+}+//attribute: ::btDbvtNode const * btDbvt_sStkNN->a+void btDbvt_sStkNN_a_set(void *c,void* a) {+	::btDbvt::sStkNN *o = (::btDbvt::sStkNN*)c;+	::btDbvtNode const * ta = (::btDbvtNode const *)a;+	o->a = ta;+}+// attriibute getter not supported: //attribute: ::btDbvtNode const * btDbvt_sStkNN->a+//attribute: ::btDbvtNode const * btDbvt_sStkNN->b+void btDbvt_sStkNN_b_set(void *c,void* a) {+	::btDbvt::sStkNN *o = (::btDbvt::sStkNN*)c;+	::btDbvtNode const * ta = (::btDbvtNode const *)a;+	o->b = ta;+}+// attriibute getter not supported: //attribute: ::btDbvtNode const * btDbvt_sStkNN->b++// ::btDbvt::sStkNP+//constructor: sStkNP  ( ::btDbvt::sStkNP::* )( ::btDbvtNode const *,unsigned int ) +void* btDbvt_sStkNP_new(void* p0,unsigned int p1) {+	::btDbvt::sStkNP *o = 0;+	 void *mem = 0;+	::btDbvtNode const * tp0 = (::btDbvtNode const *)p0;+	mem = btAlignedAlloc(sizeof(::btDbvt::sStkNP),16);+	o = new (mem)::btDbvt::sStkNP(tp0,p1);+	return (void*)o;+}+void btDbvt_sStkNP_free(void *c) {+	::btDbvt::sStkNP *o = (::btDbvt::sStkNP*)c;+	delete o;+}+//attribute: int btDbvt_sStkNP->mask+void btDbvt_sStkNP_mask_set(void *c,int a) {+	::btDbvt::sStkNP *o = (::btDbvt::sStkNP*)c;+	o->mask = a;+}+int btDbvt_sStkNP_mask_get(void *c) {+	::btDbvt::sStkNP *o = (::btDbvt::sStkNP*)c;+	return (int)(o->mask);+}++//attribute: ::btDbvtNode const * btDbvt_sStkNP->node+void btDbvt_sStkNP_node_set(void *c,void* a) {+	::btDbvt::sStkNP *o = (::btDbvt::sStkNP*)c;+	::btDbvtNode const * ta = (::btDbvtNode const *)a;+	o->node = ta;+}+// attriibute getter not supported: //attribute: ::btDbvtNode const * btDbvt_sStkNP->node++// ::btDbvt::sStkNPS+//constructor: sStkNPS  ( ::btDbvt::sStkNPS::* )(  ) +void* btDbvt_sStkNPS_new0() {+	::btDbvt::sStkNPS *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btDbvt::sStkNPS),16);+	o = new (mem)::btDbvt::sStkNPS();+	return (void*)o;+}+//constructor: sStkNPS  ( ::btDbvt::sStkNPS::* )( ::btDbvtNode const *,unsigned int,::btScalar ) +void* btDbvt_sStkNPS_new1(void* p0,unsigned int p1,float p2) {+	::btDbvt::sStkNPS *o = 0;+	 void *mem = 0;+	::btDbvtNode const * tp0 = (::btDbvtNode const *)p0;+	mem = btAlignedAlloc(sizeof(::btDbvt::sStkNPS),16);+	o = new (mem)::btDbvt::sStkNPS(tp0,p1,p2);+	return (void*)o;+}+void btDbvt_sStkNPS_free(void *c) {+	::btDbvt::sStkNPS *o = (::btDbvt::sStkNPS*)c;+	delete o;+}+//attribute: int btDbvt_sStkNPS->mask+void btDbvt_sStkNPS_mask_set(void *c,int a) {+	::btDbvt::sStkNPS *o = (::btDbvt::sStkNPS*)c;+	o->mask = a;+}+int btDbvt_sStkNPS_mask_get(void *c) {+	::btDbvt::sStkNPS *o = (::btDbvt::sStkNPS*)c;+	return (int)(o->mask);+}++//attribute: ::btDbvtNode const * btDbvt_sStkNPS->node+void btDbvt_sStkNPS_node_set(void *c,void* a) {+	::btDbvt::sStkNPS *o = (::btDbvt::sStkNPS*)c;+	::btDbvtNode const * ta = (::btDbvtNode const *)a;+	o->node = ta;+}+// attriibute getter not supported: //attribute: ::btDbvtNode const * btDbvt_sStkNPS->node+//attribute: ::btScalar btDbvt_sStkNPS->value+void btDbvt_sStkNPS_value_set(void *c,float a) {+	::btDbvt::sStkNPS *o = (::btDbvt::sStkNPS*)c;+	o->value = a;+}+float btDbvt_sStkNPS_value_get(void *c) {+	::btDbvt::sStkNPS *o = (::btDbvt::sStkNPS*)c;+	return (float)(o->value);+}+++// ::btDiscreteCollisionDetectorInterface::ClosestPointInput+//constructor: ClosestPointInput  ( ::btDiscreteCollisionDetectorInterface::ClosestPointInput::* )(  ) +void* btDiscreteCollisionDetectorInterface_ClosestPointInput_new() {+	::btDiscreteCollisionDetectorInterface::ClosestPointInput *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btDiscreteCollisionDetectorInterface::ClosestPointInput),16);+	o = new (mem)::btDiscreteCollisionDetectorInterface::ClosestPointInput();+	return (void*)o;+}+void btDiscreteCollisionDetectorInterface_ClosestPointInput_free(void *c) {+	::btDiscreteCollisionDetectorInterface::ClosestPointInput *o = (::btDiscreteCollisionDetectorInterface::ClosestPointInput*)c;+	delete o;+}+//attribute: ::btTransform btDiscreteCollisionDetectorInterface_ClosestPointInput->m_transformA+void btDiscreteCollisionDetectorInterface_ClosestPointInput_m_transformA_set(void *c,float* a) {+	::btDiscreteCollisionDetectorInterface::ClosestPointInput *o = (::btDiscreteCollisionDetectorInterface::ClosestPointInput*)c;+	btMatrix3x3 mta(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]);+	btVector3 vta(a[9],a[10],a[11]);+	btTransform ta(mta,vta);+	o->m_transformA = ta;+}+void btDiscreteCollisionDetectorInterface_ClosestPointInput_m_transformA_get(void *c,float* a) {+	::btDiscreteCollisionDetectorInterface::ClosestPointInput *o = (::btDiscreteCollisionDetectorInterface::ClosestPointInput*)c;+	a[0]=(o->m_transformA).getBasis().getRow(0).m_floats[0];a[1]=(o->m_transformA).getBasis().getRow(0).m_floats[1];a[2]=(o->m_transformA).getBasis().getRow(0).m_floats[2];a[3]=(o->m_transformA).getBasis().getRow(1).m_floats[0];a[4]=(o->m_transformA).getBasis().getRow(1).m_floats[1];a[5]=(o->m_transformA).getBasis().getRow(1).m_floats[2];a[6]=(o->m_transformA).getBasis().getRow(2).m_floats[0];a[7]=(o->m_transformA).getBasis().getRow(2).m_floats[1];a[8]=(o->m_transformA).getBasis().getRow(2).m_floats[2];+	a[9]=(o->m_transformA).getOrigin().m_floats[0];a[10]=(o->m_transformA).getOrigin().m_floats[1];a[11]=(o->m_transformA).getOrigin().m_floats[2];+}++//attribute: ::btTransform btDiscreteCollisionDetectorInterface_ClosestPointInput->m_transformB+void btDiscreteCollisionDetectorInterface_ClosestPointInput_m_transformB_set(void *c,float* a) {+	::btDiscreteCollisionDetectorInterface::ClosestPointInput *o = (::btDiscreteCollisionDetectorInterface::ClosestPointInput*)c;+	btMatrix3x3 mta(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]);+	btVector3 vta(a[9],a[10],a[11]);+	btTransform ta(mta,vta);+	o->m_transformB = ta;+}+void btDiscreteCollisionDetectorInterface_ClosestPointInput_m_transformB_get(void *c,float* a) {+	::btDiscreteCollisionDetectorInterface::ClosestPointInput *o = (::btDiscreteCollisionDetectorInterface::ClosestPointInput*)c;+	a[0]=(o->m_transformB).getBasis().getRow(0).m_floats[0];a[1]=(o->m_transformB).getBasis().getRow(0).m_floats[1];a[2]=(o->m_transformB).getBasis().getRow(0).m_floats[2];a[3]=(o->m_transformB).getBasis().getRow(1).m_floats[0];a[4]=(o->m_transformB).getBasis().getRow(1).m_floats[1];a[5]=(o->m_transformB).getBasis().getRow(1).m_floats[2];a[6]=(o->m_transformB).getBasis().getRow(2).m_floats[0];a[7]=(o->m_transformB).getBasis().getRow(2).m_floats[1];a[8]=(o->m_transformB).getBasis().getRow(2).m_floats[2];+	a[9]=(o->m_transformB).getOrigin().m_floats[0];a[10]=(o->m_transformB).getOrigin().m_floats[1];a[11]=(o->m_transformB).getOrigin().m_floats[2];+}++//attribute: ::btScalar btDiscreteCollisionDetectorInterface_ClosestPointInput->m_maximumDistanceSquared+void btDiscreteCollisionDetectorInterface_ClosestPointInput_m_maximumDistanceSquared_set(void *c,float a) {+	::btDiscreteCollisionDetectorInterface::ClosestPointInput *o = (::btDiscreteCollisionDetectorInterface::ClosestPointInput*)c;+	o->m_maximumDistanceSquared = a;+}+float btDiscreteCollisionDetectorInterface_ClosestPointInput_m_maximumDistanceSquared_get(void *c) {+	::btDiscreteCollisionDetectorInterface::ClosestPointInput *o = (::btDiscreteCollisionDetectorInterface::ClosestPointInput*)c;+	return (float)(o->m_maximumDistanceSquared);+}++//attribute: ::btStackAlloc * btDiscreteCollisionDetectorInterface_ClosestPointInput->m_stackAlloc+void btDiscreteCollisionDetectorInterface_ClosestPointInput_m_stackAlloc_set(void *c,void* a) {+	::btDiscreteCollisionDetectorInterface::ClosestPointInput *o = (::btDiscreteCollisionDetectorInterface::ClosestPointInput*)c;+	::btStackAlloc * ta = (::btStackAlloc *)a;+	o->m_stackAlloc = ta;+}+// attriibute getter not supported: //attribute: ::btStackAlloc * btDiscreteCollisionDetectorInterface_ClosestPointInput->m_stackAlloc++// ::btDiscreteCollisionDetectorInterface::Result+//method: setShapeIdentifiersB void ( ::btDiscreteCollisionDetectorInterface::Result::* )( int,int ) +void btDiscreteCollisionDetectorInterface_Result_setShapeIdentifiersB(void *c,int p0,int p1) {+	::btDiscreteCollisionDetectorInterface::Result *o = (::btDiscreteCollisionDetectorInterface::Result*)c;+	o->setShapeIdentifiersB(p0,p1);+}+//method: setShapeIdentifiersA void ( ::btDiscreteCollisionDetectorInterface::Result::* )( int,int ) +void btDiscreteCollisionDetectorInterface_Result_setShapeIdentifiersA(void *c,int p0,int p1) {+	::btDiscreteCollisionDetectorInterface::Result *o = (::btDiscreteCollisionDetectorInterface::Result*)c;+	o->setShapeIdentifiersA(p0,p1);+}+//method: addContactPoint void ( ::btDiscreteCollisionDetectorInterface::Result::* )( ::btVector3 const &,::btVector3 const &,::btScalar ) +void btDiscreteCollisionDetectorInterface_Result_addContactPoint(void *c,float* p0,float* p1,float p2) {+	::btDiscreteCollisionDetectorInterface::Result *o = (::btDiscreteCollisionDetectorInterface::Result*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->addContactPoint(tp0,tp1,p2);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}++// ::btConstraintRow+//constructor: btConstraintRow  ( ::btConstraintRow::* )(  ) +void* btConstraintRow_new() {+	::btConstraintRow *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btConstraintRow),16);+	o = new (mem)::btConstraintRow();+	return (void*)o;+}+void btConstraintRow_free(void *c) {+	::btConstraintRow *o = (::btConstraintRow*)c;+	delete o;+}+//attribute: ::btScalar[3] btConstraintRow->m_normal+// attribute not supported: //attribute: ::btScalar[3] btConstraintRow->m_normal+//attribute: ::btScalar btConstraintRow->m_rhs+void btConstraintRow_m_rhs_set(void *c,float a) {+	::btConstraintRow *o = (::btConstraintRow*)c;+	o->m_rhs = a;+}+float btConstraintRow_m_rhs_get(void *c) {+	::btConstraintRow *o = (::btConstraintRow*)c;+	return (float)(o->m_rhs);+}++//attribute: ::btScalar btConstraintRow->m_jacDiagInv+void btConstraintRow_m_jacDiagInv_set(void *c,float a) {+	::btConstraintRow *o = (::btConstraintRow*)c;+	o->m_jacDiagInv = a;+}+float btConstraintRow_m_jacDiagInv_get(void *c) {+	::btConstraintRow *o = (::btConstraintRow*)c;+	return (float)(o->m_jacDiagInv);+}++//attribute: ::btScalar btConstraintRow->m_lowerLimit+void btConstraintRow_m_lowerLimit_set(void *c,float a) {+	::btConstraintRow *o = (::btConstraintRow*)c;+	o->m_lowerLimit = a;+}+float btConstraintRow_m_lowerLimit_get(void *c) {+	::btConstraintRow *o = (::btConstraintRow*)c;+	return (float)(o->m_lowerLimit);+}++//attribute: ::btScalar btConstraintRow->m_upperLimit+void btConstraintRow_m_upperLimit_set(void *c,float a) {+	::btConstraintRow *o = (::btConstraintRow*)c;+	o->m_upperLimit = a;+}+float btConstraintRow_m_upperLimit_get(void *c) {+	::btConstraintRow *o = (::btConstraintRow*)c;+	return (float)(o->m_upperLimit);+}++//attribute: ::btScalar btConstraintRow->m_accumImpulse+void btConstraintRow_m_accumImpulse_set(void *c,float a) {+	::btConstraintRow *o = (::btConstraintRow*)c;+	o->m_accumImpulse = a;+}+float btConstraintRow_m_accumImpulse_get(void *c) {+	::btConstraintRow *o = (::btConstraintRow*)c;+	return (float)(o->m_accumImpulse);+}+++// ::btDiscreteCollisionDetectorInterface+//method: getClosestPoints void ( ::btDiscreteCollisionDetectorInterface::* )( ::btDiscreteCollisionDetectorInterface::ClosestPointInput const &,::btDiscreteCollisionDetectorInterface::Result &,::btIDebugDraw *,bool ) +void btDiscreteCollisionDetectorInterface_getClosestPoints(void *c,void* p0,void* p1,void* p2,int p3) {+	::btDiscreteCollisionDetectorInterface *o = (::btDiscreteCollisionDetectorInterface*)c;+	::btDiscreteCollisionDetectorInterface::ClosestPointInput const & tp0 = *(::btDiscreteCollisionDetectorInterface::ClosestPointInput const *)p0;+	::btDiscreteCollisionDetectorInterface::Result & tp1 = *(::btDiscreteCollisionDetectorInterface::Result *)p1;+	::btIDebugDraw * tp2 = (::btIDebugDraw *)p2;+	o->getClosestPoints(tp0,tp1,tp2,p3);+}++// ::btGjkEpaSolver2+//constructor: btGjkEpaSolver2  ( ::btGjkEpaSolver2::* )(  ) +void* btGjkEpaSolver2_new() {+	::btGjkEpaSolver2 *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btGjkEpaSolver2),16);+	o = new (mem)::btGjkEpaSolver2();+	return (void*)o;+}+void btGjkEpaSolver2_free(void *c) {+	::btGjkEpaSolver2 *o = (::btGjkEpaSolver2*)c;+	delete o;+}+//method: StackSizeRequirement int (*)(  )+int btGjkEpaSolver2_StackSizeRequirement() {+	int retVal = (int)::btGjkEpaSolver2::StackSizeRequirement();+	return retVal;+}+//method: Distance bool (*)( ::btConvexShape const *,::btTransform const &,::btConvexShape const *,::btTransform const &,::btVector3 const &,::btGjkEpaSolver2::sResults & )+int btGjkEpaSolver2_Distance(void* p0,float* p1,void* p2,float* p3,float* p4,void* p5) {+	::btConvexShape const * tp0 = (::btConvexShape const *)p0;+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	::btConvexShape const * tp2 = (::btConvexShape const *)p2;+	btMatrix3x3 mtp3(p3[0],p3[1],p3[2],p3[3],p3[4],p3[5],p3[6],p3[7],p3[8]);+	btVector3 vtp3(p3[9],p3[10],p3[11]);+	btTransform tp3(mtp3,vtp3);+	btVector3 tp4(p4[0],p4[1],p4[2]);+	::btGjkEpaSolver2::sResults & tp5 = *(::btGjkEpaSolver2::sResults *)p5;+	int retVal = (int)::btGjkEpaSolver2::Distance(tp0,tp1,tp2,tp3,tp4,tp5);+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+	p3[0]=tp3.getBasis().getRow(0).m_floats[0];p3[1]=tp3.getBasis().getRow(0).m_floats[1];p3[2]=tp3.getBasis().getRow(0).m_floats[2];p3[3]=tp3.getBasis().getRow(1).m_floats[0];p3[4]=tp3.getBasis().getRow(1).m_floats[1];p3[5]=tp3.getBasis().getRow(1).m_floats[2];p3[6]=tp3.getBasis().getRow(2).m_floats[0];p3[7]=tp3.getBasis().getRow(2).m_floats[1];p3[8]=tp3.getBasis().getRow(2).m_floats[2];+	p3[9]=tp3.getOrigin().m_floats[0];p3[10]=tp3.getOrigin().m_floats[1];p3[11]=tp3.getOrigin().m_floats[2];+	p4[0]=tp4.m_floats[0];p4[1]=tp4.m_floats[1];p4[2]=tp4.m_floats[2];+	return retVal;+}+//method: Penetration bool (*)( ::btConvexShape const *,::btTransform const &,::btConvexShape const *,::btTransform const &,::btVector3 const &,::btGjkEpaSolver2::sResults &,bool )+int btGjkEpaSolver2_Penetration(void* p0,float* p1,void* p2,float* p3,float* p4,void* p5,int p6) {+	::btConvexShape const * tp0 = (::btConvexShape const *)p0;+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	::btConvexShape const * tp2 = (::btConvexShape const *)p2;+	btMatrix3x3 mtp3(p3[0],p3[1],p3[2],p3[3],p3[4],p3[5],p3[6],p3[7],p3[8]);+	btVector3 vtp3(p3[9],p3[10],p3[11]);+	btTransform tp3(mtp3,vtp3);+	btVector3 tp4(p4[0],p4[1],p4[2]);+	::btGjkEpaSolver2::sResults & tp5 = *(::btGjkEpaSolver2::sResults *)p5;+	int retVal = (int)::btGjkEpaSolver2::Penetration(tp0,tp1,tp2,tp3,tp4,tp5,p6);+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+	p3[0]=tp3.getBasis().getRow(0).m_floats[0];p3[1]=tp3.getBasis().getRow(0).m_floats[1];p3[2]=tp3.getBasis().getRow(0).m_floats[2];p3[3]=tp3.getBasis().getRow(1).m_floats[0];p3[4]=tp3.getBasis().getRow(1).m_floats[1];p3[5]=tp3.getBasis().getRow(1).m_floats[2];p3[6]=tp3.getBasis().getRow(2).m_floats[0];p3[7]=tp3.getBasis().getRow(2).m_floats[1];p3[8]=tp3.getBasis().getRow(2).m_floats[2];+	p3[9]=tp3.getOrigin().m_floats[0];p3[10]=tp3.getOrigin().m_floats[1];p3[11]=tp3.getOrigin().m_floats[2];+	p4[0]=tp4.m_floats[0];p4[1]=tp4.m_floats[1];p4[2]=tp4.m_floats[2];+	return retVal;+}+//method: SignedDistance ::btScalar (*)( ::btVector3 const &,::btScalar,::btConvexShape const *,::btTransform const &,::btGjkEpaSolver2::sResults & )+float btGjkEpaSolver2_SignedDistance(float* p0,float p1,void* p2,float* p3,void* p4) {+	btVector3 tp0(p0[0],p0[1],p0[2]);+	::btConvexShape const * tp2 = (::btConvexShape const *)p2;+	btMatrix3x3 mtp3(p3[0],p3[1],p3[2],p3[3],p3[4],p3[5],p3[6],p3[7],p3[8]);+	btVector3 vtp3(p3[9],p3[10],p3[11]);+	btTransform tp3(mtp3,vtp3);+	::btGjkEpaSolver2::sResults & tp4 = *(::btGjkEpaSolver2::sResults *)p4;+	float retVal = (float)::btGjkEpaSolver2::SignedDistance(tp0,p1,tp2,tp3,tp4);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p3[0]=tp3.getBasis().getRow(0).m_floats[0];p3[1]=tp3.getBasis().getRow(0).m_floats[1];p3[2]=tp3.getBasis().getRow(0).m_floats[2];p3[3]=tp3.getBasis().getRow(1).m_floats[0];p3[4]=tp3.getBasis().getRow(1).m_floats[1];p3[5]=tp3.getBasis().getRow(1).m_floats[2];p3[6]=tp3.getBasis().getRow(2).m_floats[0];p3[7]=tp3.getBasis().getRow(2).m_floats[1];p3[8]=tp3.getBasis().getRow(2).m_floats[2];+	p3[9]=tp3.getOrigin().m_floats[0];p3[10]=tp3.getOrigin().m_floats[1];p3[11]=tp3.getOrigin().m_floats[2];+	return retVal;+}+//method: SignedDistance ::btScalar (*)( ::btVector3 const &,::btScalar,::btConvexShape const *,::btTransform const &,::btGjkEpaSolver2::sResults & )+float btGjkEpaSolver2_SignedDistance0(float* p0,float p1,void* p2,float* p3,void* p4) {+	btVector3 tp0(p0[0],p0[1],p0[2]);+	::btConvexShape const * tp2 = (::btConvexShape const *)p2;+	btMatrix3x3 mtp3(p3[0],p3[1],p3[2],p3[3],p3[4],p3[5],p3[6],p3[7],p3[8]);+	btVector3 vtp3(p3[9],p3[10],p3[11]);+	btTransform tp3(mtp3,vtp3);+	::btGjkEpaSolver2::sResults & tp4 = *(::btGjkEpaSolver2::sResults *)p4;+	float retVal = (float)::btGjkEpaSolver2::SignedDistance(tp0,p1,tp2,tp3,tp4);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p3[0]=tp3.getBasis().getRow(0).m_floats[0];p3[1]=tp3.getBasis().getRow(0).m_floats[1];p3[2]=tp3.getBasis().getRow(0).m_floats[2];p3[3]=tp3.getBasis().getRow(1).m_floats[0];p3[4]=tp3.getBasis().getRow(1).m_floats[1];p3[5]=tp3.getBasis().getRow(1).m_floats[2];p3[6]=tp3.getBasis().getRow(2).m_floats[0];p3[7]=tp3.getBasis().getRow(2).m_floats[1];p3[8]=tp3.getBasis().getRow(2).m_floats[2];+	p3[9]=tp3.getOrigin().m_floats[0];p3[10]=tp3.getOrigin().m_floats[1];p3[11]=tp3.getOrigin().m_floats[2];+	return retVal;+}+//method: SignedDistance bool (*)( ::btConvexShape const *,::btTransform const &,::btConvexShape const *,::btTransform const &,::btVector3 const &,::btGjkEpaSolver2::sResults & )+int btGjkEpaSolver2_SignedDistance1(void* p0,float* p1,void* p2,float* p3,float* p4,void* p5) {+	::btConvexShape const * tp0 = (::btConvexShape const *)p0;+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	::btConvexShape const * tp2 = (::btConvexShape const *)p2;+	btMatrix3x3 mtp3(p3[0],p3[1],p3[2],p3[3],p3[4],p3[5],p3[6],p3[7],p3[8]);+	btVector3 vtp3(p3[9],p3[10],p3[11]);+	btTransform tp3(mtp3,vtp3);+	btVector3 tp4(p4[0],p4[1],p4[2]);+	::btGjkEpaSolver2::sResults & tp5 = *(::btGjkEpaSolver2::sResults *)p5;+	int retVal = (int)::btGjkEpaSolver2::SignedDistance(tp0,tp1,tp2,tp3,tp4,tp5);+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+	p3[0]=tp3.getBasis().getRow(0).m_floats[0];p3[1]=tp3.getBasis().getRow(0).m_floats[1];p3[2]=tp3.getBasis().getRow(0).m_floats[2];p3[3]=tp3.getBasis().getRow(1).m_floats[0];p3[4]=tp3.getBasis().getRow(1).m_floats[1];p3[5]=tp3.getBasis().getRow(1).m_floats[2];p3[6]=tp3.getBasis().getRow(2).m_floats[0];p3[7]=tp3.getBasis().getRow(2).m_floats[1];p3[8]=tp3.getBasis().getRow(2).m_floats[2];+	p3[9]=tp3.getOrigin().m_floats[0];p3[10]=tp3.getOrigin().m_floats[1];p3[11]=tp3.getOrigin().m_floats[2];+	p4[0]=tp4.m_floats[0];p4[1]=tp4.m_floats[1];p4[2]=tp4.m_floats[2];+	return retVal;+}++// ::btGjkPairDetector+//not supported constructor: btGjkPairDetector  ( ::btGjkPairDetector::* )( ::btConvexShape const *,::btConvexShape const *,::btVoronoiSimplexSolver *,::btConvexPenetrationDepthSolver * ) +//not supported constructor: btGjkPairDetector  ( ::btGjkPairDetector::* )( ::btConvexShape const *,::btConvexShape const *,int,int,::btScalar,::btScalar,::btVoronoiSimplexSolver *,::btConvexPenetrationDepthSolver * ) +void btGjkPairDetector_free(void *c) {+	::btGjkPairDetector *o = (::btGjkPairDetector*)c;+	delete o;+}+//method: setCachedSeperatingAxis void ( ::btGjkPairDetector::* )( ::btVector3 const & ) +void btGjkPairDetector_setCachedSeperatingAxis(void *c,float* p0) {+	::btGjkPairDetector *o = (::btGjkPairDetector*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setCachedSeperatingAxis(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: getCachedSeparatingAxis ::btVector3 const & ( ::btGjkPairDetector::* )(  ) const+void btGjkPairDetector_getCachedSeparatingAxis(void *c,float* ret) {+	::btGjkPairDetector *o = (::btGjkPairDetector*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getCachedSeparatingAxis();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//not supported method: setPenetrationDepthSolver void ( ::btGjkPairDetector::* )( ::btConvexPenetrationDepthSolver * ) +//method: getClosestPoints void ( ::btGjkPairDetector::* )( ::btDiscreteCollisionDetectorInterface::ClosestPointInput const &,::btDiscreteCollisionDetectorInterface::Result &,::btIDebugDraw *,bool ) +void btGjkPairDetector_getClosestPoints(void *c,void* p0,void* p1,void* p2,int p3) {+	::btGjkPairDetector *o = (::btGjkPairDetector*)c;+	::btDiscreteCollisionDetectorInterface::ClosestPointInput const & tp0 = *(::btDiscreteCollisionDetectorInterface::ClosestPointInput const *)p0;+	::btDiscreteCollisionDetectorInterface::Result & tp1 = *(::btDiscreteCollisionDetectorInterface::Result *)p1;+	::btIDebugDraw * tp2 = (::btIDebugDraw *)p2;+	o->getClosestPoints(tp0,tp1,tp2,p3);+}+//method: setMinkowskiA void ( ::btGjkPairDetector::* )( ::btConvexShape * ) +void btGjkPairDetector_setMinkowskiA(void *c,void* p0) {+	::btGjkPairDetector *o = (::btGjkPairDetector*)c;+	::btConvexShape * tp0 = (::btConvexShape *)p0;+	o->setMinkowskiA(tp0);+}+//method: setMinkowskiB void ( ::btGjkPairDetector::* )( ::btConvexShape * ) +void btGjkPairDetector_setMinkowskiB(void *c,void* p0) {+	::btGjkPairDetector *o = (::btGjkPairDetector*)c;+	::btConvexShape * tp0 = (::btConvexShape *)p0;+	o->setMinkowskiB(tp0);+}+//method: setIgnoreMargin void ( ::btGjkPairDetector::* )( bool ) +void btGjkPairDetector_setIgnoreMargin(void *c,int p0) {+	::btGjkPairDetector *o = (::btGjkPairDetector*)c;+	o->setIgnoreMargin(p0);+}+//method: getClosestPointsNonVirtual void ( ::btGjkPairDetector::* )( ::btDiscreteCollisionDetectorInterface::ClosestPointInput const &,::btDiscreteCollisionDetectorInterface::Result &,::btIDebugDraw * ) +void btGjkPairDetector_getClosestPointsNonVirtual(void *c,void* p0,void* p1,void* p2) {+	::btGjkPairDetector *o = (::btGjkPairDetector*)c;+	::btDiscreteCollisionDetectorInterface::ClosestPointInput const & tp0 = *(::btDiscreteCollisionDetectorInterface::ClosestPointInput const *)p0;+	::btDiscreteCollisionDetectorInterface::Result & tp1 = *(::btDiscreteCollisionDetectorInterface::Result *)p1;+	::btIDebugDraw * tp2 = (::btIDebugDraw *)p2;+	o->getClosestPointsNonVirtual(tp0,tp1,tp2);+}+//method: getCachedSeparatingDistance ::btScalar ( ::btGjkPairDetector::* )(  ) const+float btGjkPairDetector_getCachedSeparatingDistance(void *c) {+	::btGjkPairDetector *o = (::btGjkPairDetector*)c;+	float retVal = (float)o->getCachedSeparatingDistance();+	return retVal;+}+//attribute: int btGjkPairDetector->m_lastUsedMethod+void btGjkPairDetector_m_lastUsedMethod_set(void *c,int a) {+	::btGjkPairDetector *o = (::btGjkPairDetector*)c;+	o->m_lastUsedMethod = a;+}+int btGjkPairDetector_m_lastUsedMethod_get(void *c) {+	::btGjkPairDetector *o = (::btGjkPairDetector*)c;+	return (int)(o->m_lastUsedMethod);+}++//attribute: int btGjkPairDetector->m_curIter+void btGjkPairDetector_m_curIter_set(void *c,int a) {+	::btGjkPairDetector *o = (::btGjkPairDetector*)c;+	o->m_curIter = a;+}+int btGjkPairDetector_m_curIter_get(void *c) {+	::btGjkPairDetector *o = (::btGjkPairDetector*)c;+	return (int)(o->m_curIter);+}++//attribute: int btGjkPairDetector->m_degenerateSimplex+void btGjkPairDetector_m_degenerateSimplex_set(void *c,int a) {+	::btGjkPairDetector *o = (::btGjkPairDetector*)c;+	o->m_degenerateSimplex = a;+}+int btGjkPairDetector_m_degenerateSimplex_get(void *c) {+	::btGjkPairDetector *o = (::btGjkPairDetector*)c;+	return (int)(o->m_degenerateSimplex);+}++//attribute: int btGjkPairDetector->m_catchDegeneracies+void btGjkPairDetector_m_catchDegeneracies_set(void *c,int a) {+	::btGjkPairDetector *o = (::btGjkPairDetector*)c;+	o->m_catchDegeneracies = a;+}+int btGjkPairDetector_m_catchDegeneracies_get(void *c) {+	::btGjkPairDetector *o = (::btGjkPairDetector*)c;+	return (int)(o->m_catchDegeneracies);+}+++// ::btManifoldPoint+//constructor: btManifoldPoint  ( ::btManifoldPoint::* )(  ) +void* btManifoldPoint_new0() {+	::btManifoldPoint *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btManifoldPoint),16);+	o = new (mem)::btManifoldPoint();+	return (void*)o;+}+//constructor: btManifoldPoint  ( ::btManifoldPoint::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btScalar ) +void* btManifoldPoint_new1(float* p0,float* p1,float* p2,float p3) {+	::btManifoldPoint *o = 0;+	 void *mem = 0;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	mem = btAlignedAlloc(sizeof(::btManifoldPoint),16);+	o = new (mem)::btManifoldPoint(tp0,tp1,tp2,p3);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	return (void*)o;+}+void btManifoldPoint_free(void *c) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	delete o;+}+//method: setDistance void ( ::btManifoldPoint::* )( ::btScalar ) +void btManifoldPoint_setDistance(void *c,float p0) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	o->setDistance(p0);+}+//method: getLifeTime int ( ::btManifoldPoint::* )(  ) const+int btManifoldPoint_getLifeTime(void *c) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	int retVal = (int)o->getLifeTime();+	return retVal;+}+//method: getDistance ::btScalar ( ::btManifoldPoint::* )(  ) const+float btManifoldPoint_getDistance(void *c) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	float retVal = (float)o->getDistance();+	return retVal;+}+//method: getAppliedImpulse ::btScalar ( ::btManifoldPoint::* )(  ) const+float btManifoldPoint_getAppliedImpulse(void *c) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	float retVal = (float)o->getAppliedImpulse();+	return retVal;+}+//method: getPositionWorldOnB ::btVector3 const & ( ::btManifoldPoint::* )(  ) const+void btManifoldPoint_getPositionWorldOnB(void *c,float* ret) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getPositionWorldOnB();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getPositionWorldOnA ::btVector3 const & ( ::btManifoldPoint::* )(  ) const+void btManifoldPoint_getPositionWorldOnA(void *c,float* ret) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getPositionWorldOnA();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//attribute: ::btVector3 btManifoldPoint->m_localPointA+void btManifoldPoint_m_localPointA_set(void *c,float* a) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_localPointA = ta;+}+void btManifoldPoint_m_localPointA_get(void *c,float* a) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	a[0]=(o->m_localPointA).m_floats[0];a[1]=(o->m_localPointA).m_floats[1];a[2]=(o->m_localPointA).m_floats[2];+}++//attribute: ::btVector3 btManifoldPoint->m_localPointB+void btManifoldPoint_m_localPointB_set(void *c,float* a) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_localPointB = ta;+}+void btManifoldPoint_m_localPointB_get(void *c,float* a) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	a[0]=(o->m_localPointB).m_floats[0];a[1]=(o->m_localPointB).m_floats[1];a[2]=(o->m_localPointB).m_floats[2];+}++//attribute: ::btVector3 btManifoldPoint->m_positionWorldOnB+void btManifoldPoint_m_positionWorldOnB_set(void *c,float* a) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_positionWorldOnB = ta;+}+void btManifoldPoint_m_positionWorldOnB_get(void *c,float* a) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	a[0]=(o->m_positionWorldOnB).m_floats[0];a[1]=(o->m_positionWorldOnB).m_floats[1];a[2]=(o->m_positionWorldOnB).m_floats[2];+}++//attribute: ::btVector3 btManifoldPoint->m_positionWorldOnA+void btManifoldPoint_m_positionWorldOnA_set(void *c,float* a) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_positionWorldOnA = ta;+}+void btManifoldPoint_m_positionWorldOnA_get(void *c,float* a) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	a[0]=(o->m_positionWorldOnA).m_floats[0];a[1]=(o->m_positionWorldOnA).m_floats[1];a[2]=(o->m_positionWorldOnA).m_floats[2];+}++//attribute: ::btVector3 btManifoldPoint->m_normalWorldOnB+void btManifoldPoint_m_normalWorldOnB_set(void *c,float* a) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_normalWorldOnB = ta;+}+void btManifoldPoint_m_normalWorldOnB_get(void *c,float* a) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	a[0]=(o->m_normalWorldOnB).m_floats[0];a[1]=(o->m_normalWorldOnB).m_floats[1];a[2]=(o->m_normalWorldOnB).m_floats[2];+}++//attribute: ::btScalar btManifoldPoint->m_distance1+void btManifoldPoint_m_distance1_set(void *c,float a) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	o->m_distance1 = a;+}+float btManifoldPoint_m_distance1_get(void *c) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	return (float)(o->m_distance1);+}++//attribute: ::btScalar btManifoldPoint->m_combinedFriction+void btManifoldPoint_m_combinedFriction_set(void *c,float a) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	o->m_combinedFriction = a;+}+float btManifoldPoint_m_combinedFriction_get(void *c) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	return (float)(o->m_combinedFriction);+}++//attribute: ::btScalar btManifoldPoint->m_combinedRestitution+void btManifoldPoint_m_combinedRestitution_set(void *c,float a) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	o->m_combinedRestitution = a;+}+float btManifoldPoint_m_combinedRestitution_get(void *c) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	return (float)(o->m_combinedRestitution);+}++//attribute: int btManifoldPoint->m_partId0+void btManifoldPoint_m_partId0_set(void *c,int a) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	o->m_partId0 = a;+}+int btManifoldPoint_m_partId0_get(void *c) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	return (int)(o->m_partId0);+}++//attribute: int btManifoldPoint->m_partId1+void btManifoldPoint_m_partId1_set(void *c,int a) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	o->m_partId1 = a;+}+int btManifoldPoint_m_partId1_get(void *c) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	return (int)(o->m_partId1);+}++//attribute: int btManifoldPoint->m_index0+void btManifoldPoint_m_index0_set(void *c,int a) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	o->m_index0 = a;+}+int btManifoldPoint_m_index0_get(void *c) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	return (int)(o->m_index0);+}++//attribute: int btManifoldPoint->m_index1+void btManifoldPoint_m_index1_set(void *c,int a) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	o->m_index1 = a;+}+int btManifoldPoint_m_index1_get(void *c) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	return (int)(o->m_index1);+}++//attribute: void * btManifoldPoint->m_userPersistentData+// attribute not supported: //attribute: void * btManifoldPoint->m_userPersistentData+//attribute: ::btScalar btManifoldPoint->m_appliedImpulse+void btManifoldPoint_m_appliedImpulse_set(void *c,float a) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	o->m_appliedImpulse = a;+}+float btManifoldPoint_m_appliedImpulse_get(void *c) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	return (float)(o->m_appliedImpulse);+}++//attribute: bool btManifoldPoint->m_lateralFrictionInitialized+void btManifoldPoint_m_lateralFrictionInitialized_set(void *c,int a) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	o->m_lateralFrictionInitialized = a;+}+int btManifoldPoint_m_lateralFrictionInitialized_get(void *c) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	return (int)(o->m_lateralFrictionInitialized);+}++//attribute: ::btScalar btManifoldPoint->m_appliedImpulseLateral1+void btManifoldPoint_m_appliedImpulseLateral1_set(void *c,float a) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	o->m_appliedImpulseLateral1 = a;+}+float btManifoldPoint_m_appliedImpulseLateral1_get(void *c) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	return (float)(o->m_appliedImpulseLateral1);+}++//attribute: ::btScalar btManifoldPoint->m_appliedImpulseLateral2+void btManifoldPoint_m_appliedImpulseLateral2_set(void *c,float a) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	o->m_appliedImpulseLateral2 = a;+}+float btManifoldPoint_m_appliedImpulseLateral2_get(void *c) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	return (float)(o->m_appliedImpulseLateral2);+}++//attribute: ::btScalar btManifoldPoint->m_contactMotion1+void btManifoldPoint_m_contactMotion1_set(void *c,float a) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	o->m_contactMotion1 = a;+}+float btManifoldPoint_m_contactMotion1_get(void *c) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	return (float)(o->m_contactMotion1);+}++//attribute: ::btScalar btManifoldPoint->m_contactMotion2+void btManifoldPoint_m_contactMotion2_set(void *c,float a) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	o->m_contactMotion2 = a;+}+float btManifoldPoint_m_contactMotion2_get(void *c) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	return (float)(o->m_contactMotion2);+}++//attribute: ::btScalar btManifoldPoint->m_contactCFM1+void btManifoldPoint_m_contactCFM1_set(void *c,float a) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	o->m_contactCFM1 = a;+}+float btManifoldPoint_m_contactCFM1_get(void *c) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	return (float)(o->m_contactCFM1);+}++//attribute: ::btScalar btManifoldPoint->m_contactCFM2+void btManifoldPoint_m_contactCFM2_set(void *c,float a) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	o->m_contactCFM2 = a;+}+float btManifoldPoint_m_contactCFM2_get(void *c) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	return (float)(o->m_contactCFM2);+}++//attribute: int btManifoldPoint->m_lifeTime+void btManifoldPoint_m_lifeTime_set(void *c,int a) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	o->m_lifeTime = a;+}+int btManifoldPoint_m_lifeTime_get(void *c) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	return (int)(o->m_lifeTime);+}++//attribute: ::btVector3 btManifoldPoint->m_lateralFrictionDir1+void btManifoldPoint_m_lateralFrictionDir1_set(void *c,float* a) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_lateralFrictionDir1 = ta;+}+void btManifoldPoint_m_lateralFrictionDir1_get(void *c,float* a) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	a[0]=(o->m_lateralFrictionDir1).m_floats[0];a[1]=(o->m_lateralFrictionDir1).m_floats[1];a[2]=(o->m_lateralFrictionDir1).m_floats[2];+}++//attribute: ::btVector3 btManifoldPoint->m_lateralFrictionDir2+void btManifoldPoint_m_lateralFrictionDir2_set(void *c,float* a) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_lateralFrictionDir2 = ta;+}+void btManifoldPoint_m_lateralFrictionDir2_get(void *c,float* a) {+	::btManifoldPoint *o = (::btManifoldPoint*)c;+	a[0]=(o->m_lateralFrictionDir2).m_floats[0];a[1]=(o->m_lateralFrictionDir2).m_floats[1];a[2]=(o->m_lateralFrictionDir2).m_floats[2];+}++//attribute: ::btConstraintRow[3] btManifoldPoint->mConstraintRow+// attribute not supported: //attribute: ::btConstraintRow[3] btManifoldPoint->mConstraintRow++// ::btPersistentManifold+//constructor: btPersistentManifold  ( ::btPersistentManifold::* )(  ) +void* btPersistentManifold_new0() {+	::btPersistentManifold *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btPersistentManifold),16);+	o = new (mem)::btPersistentManifold();+	return (void*)o;+}+//not supported constructor: btPersistentManifold  ( ::btPersistentManifold::* )( void *,void *,int,::btScalar,::btScalar ) +void btPersistentManifold_free(void *c) {+	::btPersistentManifold *o = (::btPersistentManifold*)c;+	delete o;+}+//not supported method: setBodies void ( ::btPersistentManifold::* )( void *,void * ) +//method: replaceContactPoint void ( ::btPersistentManifold::* )( ::btManifoldPoint const &,int ) +void btPersistentManifold_replaceContactPoint(void *c,void* p0,int p1) {+	::btPersistentManifold *o = (::btPersistentManifold*)c;+	::btManifoldPoint const & tp0 = *(::btManifoldPoint const *)p0;+	o->replaceContactPoint(tp0,p1);+}+//method: clearUserCache void ( ::btPersistentManifold::* )( ::btManifoldPoint & ) +void btPersistentManifold_clearUserCache(void *c,void* p0) {+	::btPersistentManifold *o = (::btPersistentManifold*)c;+	::btManifoldPoint & tp0 = *(::btManifoldPoint *)p0;+	o->clearUserCache(tp0);+}+//not supported method: getBody1 void * ( ::btPersistentManifold::* )(  ) +//not supported method: getBody1 void * ( ::btPersistentManifold::* )(  ) +//not supported method: getBody1 void const * ( ::btPersistentManifold::* )(  ) const+//method: getContactProcessingThreshold ::btScalar ( ::btPersistentManifold::* )(  ) const+float btPersistentManifold_getContactProcessingThreshold(void *c) {+	::btPersistentManifold *o = (::btPersistentManifold*)c;+	float retVal = (float)o->getContactProcessingThreshold();+	return retVal;+}+//method: clearManifold void ( ::btPersistentManifold::* )(  ) +void btPersistentManifold_clearManifold(void *c) {+	::btPersistentManifold *o = (::btPersistentManifold*)c;+	o->clearManifold();+}+//method: getNumContacts int ( ::btPersistentManifold::* )(  ) const+int btPersistentManifold_getNumContacts(void *c) {+	::btPersistentManifold *o = (::btPersistentManifold*)c;+	int retVal = (int)o->getNumContacts();+	return retVal;+}+//not supported method: getBody0 void * ( ::btPersistentManifold::* )(  ) +//not supported method: getBody0 void * ( ::btPersistentManifold::* )(  ) +//not supported method: getBody0 void const * ( ::btPersistentManifold::* )(  ) const+//method: addManifoldPoint int ( ::btPersistentManifold::* )( ::btManifoldPoint const & ) +int btPersistentManifold_addManifoldPoint(void *c,void* p0) {+	::btPersistentManifold *o = (::btPersistentManifold*)c;+	::btManifoldPoint const & tp0 = *(::btManifoldPoint const *)p0;+	int retVal = (int)o->addManifoldPoint(tp0);+	return retVal;+}+//method: getCacheEntry int ( ::btPersistentManifold::* )( ::btManifoldPoint const & ) const+int btPersistentManifold_getCacheEntry(void *c,void* p0) {+	::btPersistentManifold *o = (::btPersistentManifold*)c;+	::btManifoldPoint const & tp0 = *(::btManifoldPoint const *)p0;+	int retVal = (int)o->getCacheEntry(tp0);+	return retVal;+}+//method: validContactDistance bool ( ::btPersistentManifold::* )( ::btManifoldPoint const & ) const+int btPersistentManifold_validContactDistance(void *c,void* p0) {+	::btPersistentManifold *o = (::btPersistentManifold*)c;+	::btManifoldPoint const & tp0 = *(::btManifoldPoint const *)p0;+	int retVal = (int)o->validContactDistance(tp0);+	return retVal;+}+//method: removeContactPoint void ( ::btPersistentManifold::* )( int ) +void btPersistentManifold_removeContactPoint(void *c,int p0) {+	::btPersistentManifold *o = (::btPersistentManifold*)c;+	o->removeContactPoint(p0);+}+//method: getContactPoint ::btManifoldPoint const & ( ::btPersistentManifold::* )( int ) const+void* btPersistentManifold_getContactPoint(void *c,int p0) {+	::btPersistentManifold *o = (::btPersistentManifold*)c;+	void* retVal = (void*) &(o->getContactPoint(p0));+	return retVal;+}+//method: getContactPoint ::btManifoldPoint const & ( ::btPersistentManifold::* )( int ) const+void* btPersistentManifold_getContactPoint0(void *c,int p0) {+	::btPersistentManifold *o = (::btPersistentManifold*)c;+	void* retVal = (void*) &(o->getContactPoint(p0));+	return retVal;+}+//method: getContactPoint ::btManifoldPoint & ( ::btPersistentManifold::* )( int ) +void* btPersistentManifold_getContactPoint1(void *c,int p0) {+	::btPersistentManifold *o = (::btPersistentManifold*)c;+	void* retVal = (void*) &(o->getContactPoint(p0));+	return retVal;+}+//method: refreshContactPoints void ( ::btPersistentManifold::* )( ::btTransform const &,::btTransform const & ) +void btPersistentManifold_refreshContactPoints(void *c,float* p0,float* p1) {+	::btPersistentManifold *o = (::btPersistentManifold*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	o->refreshContactPoints(tp0,tp1);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+}+//method: getContactBreakingThreshold ::btScalar ( ::btPersistentManifold::* )(  ) const+float btPersistentManifold_getContactBreakingThreshold(void *c) {+	::btPersistentManifold *o = (::btPersistentManifold*)c;+	float retVal = (float)o->getContactBreakingThreshold();+	return retVal;+}+//attribute: int btPersistentManifold->m_companionIdA+void btPersistentManifold_m_companionIdA_set(void *c,int a) {+	::btPersistentManifold *o = (::btPersistentManifold*)c;+	o->m_companionIdA = a;+}+int btPersistentManifold_m_companionIdA_get(void *c) {+	::btPersistentManifold *o = (::btPersistentManifold*)c;+	return (int)(o->m_companionIdA);+}++//attribute: int btPersistentManifold->m_companionIdB+void btPersistentManifold_m_companionIdB_set(void *c,int a) {+	::btPersistentManifold *o = (::btPersistentManifold*)c;+	o->m_companionIdB = a;+}+int btPersistentManifold_m_companionIdB_get(void *c) {+	::btPersistentManifold *o = (::btPersistentManifold*)c;+	return (int)(o->m_companionIdB);+}++//attribute: int btPersistentManifold->m_index1a+void btPersistentManifold_m_index1a_set(void *c,int a) {+	::btPersistentManifold *o = (::btPersistentManifold*)c;+	o->m_index1a = a;+}+int btPersistentManifold_m_index1a_get(void *c) {+	::btPersistentManifold *o = (::btPersistentManifold*)c;+	return (int)(o->m_index1a);+}+++// ::btStorageResult+//method: addContactPoint void ( ::btStorageResult::* )( ::btVector3 const &,::btVector3 const &,::btScalar ) +void btStorageResult_addContactPoint(void *c,float* p0,float* p1,float p2) {+	::btStorageResult *o = (::btStorageResult*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->addContactPoint(tp0,tp1,p2);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//attribute: ::btVector3 btStorageResult->m_normalOnSurfaceB+void btStorageResult_m_normalOnSurfaceB_set(void *c,float* a) {+	::btStorageResult *o = (::btStorageResult*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_normalOnSurfaceB = ta;+}+void btStorageResult_m_normalOnSurfaceB_get(void *c,float* a) {+	::btStorageResult *o = (::btStorageResult*)c;+	a[0]=(o->m_normalOnSurfaceB).m_floats[0];a[1]=(o->m_normalOnSurfaceB).m_floats[1];a[2]=(o->m_normalOnSurfaceB).m_floats[2];+}++//attribute: ::btVector3 btStorageResult->m_closestPointInB+void btStorageResult_m_closestPointInB_set(void *c,float* a) {+	::btStorageResult *o = (::btStorageResult*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_closestPointInB = ta;+}+void btStorageResult_m_closestPointInB_get(void *c,float* a) {+	::btStorageResult *o = (::btStorageResult*)c;+	a[0]=(o->m_closestPointInB).m_floats[0];a[1]=(o->m_closestPointInB).m_floats[1];a[2]=(o->m_closestPointInB).m_floats[2];+}++//attribute: ::btScalar btStorageResult->m_distance+void btStorageResult_m_distance_set(void *c,float a) {+	::btStorageResult *o = (::btStorageResult*)c;+	o->m_distance = a;+}+float btStorageResult_m_distance_get(void *c) {+	::btStorageResult *o = (::btStorageResult*)c;+	return (float)(o->m_distance);+}+++// ::btSubSimplexClosestResult+//constructor: btSubSimplexClosestResult  ( ::btSubSimplexClosestResult::* )(  ) +void* btSubSimplexClosestResult_new() {+	::btSubSimplexClosestResult *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSubSimplexClosestResult),16);+	o = new (mem)::btSubSimplexClosestResult();+	return (void*)o;+}+void btSubSimplexClosestResult_free(void *c) {+	::btSubSimplexClosestResult *o = (::btSubSimplexClosestResult*)c;+	delete o;+}+//method: reset void ( ::btSubSimplexClosestResult::* )(  ) +void btSubSimplexClosestResult_reset(void *c) {+	::btSubSimplexClosestResult *o = (::btSubSimplexClosestResult*)c;+	o->reset();+}+//method: isValid bool ( ::btSubSimplexClosestResult::* )(  ) +int btSubSimplexClosestResult_isValid(void *c) {+	::btSubSimplexClosestResult *o = (::btSubSimplexClosestResult*)c;+	int retVal = (int)o->isValid();+	return retVal;+}+//method: setBarycentricCoordinates void ( ::btSubSimplexClosestResult::* )( ::btScalar,::btScalar,::btScalar,::btScalar ) +void btSubSimplexClosestResult_setBarycentricCoordinates(void *c,float p0,float p1,float p2,float p3) {+	::btSubSimplexClosestResult *o = (::btSubSimplexClosestResult*)c;+	o->setBarycentricCoordinates(p0,p1,p2,p3);+}+//attribute: ::btVector3 btSubSimplexClosestResult->m_closestPointOnSimplex+void btSubSimplexClosestResult_m_closestPointOnSimplex_set(void *c,float* a) {+	::btSubSimplexClosestResult *o = (::btSubSimplexClosestResult*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_closestPointOnSimplex = ta;+}+void btSubSimplexClosestResult_m_closestPointOnSimplex_get(void *c,float* a) {+	::btSubSimplexClosestResult *o = (::btSubSimplexClosestResult*)c;+	a[0]=(o->m_closestPointOnSimplex).m_floats[0];a[1]=(o->m_closestPointOnSimplex).m_floats[1];a[2]=(o->m_closestPointOnSimplex).m_floats[2];+}++//attribute: ::btUsageBitfield btSubSimplexClosestResult->m_usedVertices+// attribute not supported: //attribute: ::btUsageBitfield btSubSimplexClosestResult->m_usedVertices+//attribute: ::btScalar[4] btSubSimplexClosestResult->m_barycentricCoords+// attribute not supported: //attribute: ::btScalar[4] btSubSimplexClosestResult->m_barycentricCoords+//attribute: bool btSubSimplexClosestResult->m_degenerate+void btSubSimplexClosestResult_m_degenerate_set(void *c,int a) {+	::btSubSimplexClosestResult *o = (::btSubSimplexClosestResult*)c;+	o->m_degenerate = a;+}+int btSubSimplexClosestResult_m_degenerate_get(void *c) {+	::btSubSimplexClosestResult *o = (::btSubSimplexClosestResult*)c;+	return (int)(o->m_degenerate);+}+++// ::btUsageBitfield+//constructor: btUsageBitfield  ( ::btUsageBitfield::* )(  ) +void* btUsageBitfield_new() {+	::btUsageBitfield *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btUsageBitfield),16);+	o = new (mem)::btUsageBitfield();+	return (void*)o;+}+void btUsageBitfield_free(void *c) {+	::btUsageBitfield *o = (::btUsageBitfield*)c;+	delete o;+}+//method: reset void ( ::btUsageBitfield::* )(  ) +void btUsageBitfield_reset(void *c) {+	::btUsageBitfield *o = (::btUsageBitfield*)c;+	o->reset();+}+//attribute: short unsigned int btUsageBitfield->unused1+void btUsageBitfield_unused1_set(void *c,short unsigned int a) {+	::btUsageBitfield *o = (::btUsageBitfield*)c;+	o->unused1 = a;+}+short unsigned int btUsageBitfield_unused1_get(void *c) {+	::btUsageBitfield *o = (::btUsageBitfield*)c;+	return (short unsigned int)(o->unused1);+}++//attribute: short unsigned int btUsageBitfield->unused2+void btUsageBitfield_unused2_set(void *c,short unsigned int a) {+	::btUsageBitfield *o = (::btUsageBitfield*)c;+	o->unused2 = a;+}+short unsigned int btUsageBitfield_unused2_get(void *c) {+	::btUsageBitfield *o = (::btUsageBitfield*)c;+	return (short unsigned int)(o->unused2);+}++//attribute: short unsigned int btUsageBitfield->unused3+void btUsageBitfield_unused3_set(void *c,short unsigned int a) {+	::btUsageBitfield *o = (::btUsageBitfield*)c;+	o->unused3 = a;+}+short unsigned int btUsageBitfield_unused3_get(void *c) {+	::btUsageBitfield *o = (::btUsageBitfield*)c;+	return (short unsigned int)(o->unused3);+}++//attribute: short unsigned int btUsageBitfield->unused4+void btUsageBitfield_unused4_set(void *c,short unsigned int a) {+	::btUsageBitfield *o = (::btUsageBitfield*)c;+	o->unused4 = a;+}+short unsigned int btUsageBitfield_unused4_get(void *c) {+	::btUsageBitfield *o = (::btUsageBitfield*)c;+	return (short unsigned int)(o->unused4);+}++//attribute: short unsigned int btUsageBitfield->usedVertexA+void btUsageBitfield_usedVertexA_set(void *c,short unsigned int a) {+	::btUsageBitfield *o = (::btUsageBitfield*)c;+	o->usedVertexA = a;+}+short unsigned int btUsageBitfield_usedVertexA_get(void *c) {+	::btUsageBitfield *o = (::btUsageBitfield*)c;+	return (short unsigned int)(o->usedVertexA);+}++//attribute: short unsigned int btUsageBitfield->usedVertexB+void btUsageBitfield_usedVertexB_set(void *c,short unsigned int a) {+	::btUsageBitfield *o = (::btUsageBitfield*)c;+	o->usedVertexB = a;+}+short unsigned int btUsageBitfield_usedVertexB_get(void *c) {+	::btUsageBitfield *o = (::btUsageBitfield*)c;+	return (short unsigned int)(o->usedVertexB);+}++//attribute: short unsigned int btUsageBitfield->usedVertexC+void btUsageBitfield_usedVertexC_set(void *c,short unsigned int a) {+	::btUsageBitfield *o = (::btUsageBitfield*)c;+	o->usedVertexC = a;+}+short unsigned int btUsageBitfield_usedVertexC_get(void *c) {+	::btUsageBitfield *o = (::btUsageBitfield*)c;+	return (short unsigned int)(o->usedVertexC);+}++//attribute: short unsigned int btUsageBitfield->usedVertexD+void btUsageBitfield_usedVertexD_set(void *c,short unsigned int a) {+	::btUsageBitfield *o = (::btUsageBitfield*)c;+	o->usedVertexD = a;+}+short unsigned int btUsageBitfield_usedVertexD_get(void *c) {+	::btUsageBitfield *o = (::btUsageBitfield*)c;+	return (short unsigned int)(o->usedVertexD);+}+++// ::btVoronoiSimplexSolver+//constructor: btVoronoiSimplexSolver  ( ::btVoronoiSimplexSolver::* )(  ) +void* btVoronoiSimplexSolver_new() {+	::btVoronoiSimplexSolver *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btVoronoiSimplexSolver),16);+	o = new (mem)::btVoronoiSimplexSolver();+	return (void*)o;+}+void btVoronoiSimplexSolver_free(void *c) {+	::btVoronoiSimplexSolver *o = (::btVoronoiSimplexSolver*)c;+	delete o;+}+//method: reset void ( ::btVoronoiSimplexSolver::* )(  ) +void btVoronoiSimplexSolver_reset(void *c) {+	::btVoronoiSimplexSolver *o = (::btVoronoiSimplexSolver*)c;+	o->reset();+}+//method: updateClosestVectorAndPoints bool ( ::btVoronoiSimplexSolver::* )(  ) +int btVoronoiSimplexSolver_updateClosestVectorAndPoints(void *c) {+	::btVoronoiSimplexSolver *o = (::btVoronoiSimplexSolver*)c;+	int retVal = (int)o->updateClosestVectorAndPoints();+	return retVal;+}+//method: setEqualVertexThreshold void ( ::btVoronoiSimplexSolver::* )( ::btScalar ) +void btVoronoiSimplexSolver_setEqualVertexThreshold(void *c,float p0) {+	::btVoronoiSimplexSolver *o = (::btVoronoiSimplexSolver*)c;+	o->setEqualVertexThreshold(p0);+}+//method: inSimplex bool ( ::btVoronoiSimplexSolver::* )( ::btVector3 const & ) +int btVoronoiSimplexSolver_inSimplex(void *c,float* p0) {+	::btVoronoiSimplexSolver *o = (::btVoronoiSimplexSolver*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	int retVal = (int)o->inSimplex(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	return retVal;+}+//method: closest bool ( ::btVoronoiSimplexSolver::* )( ::btVector3 & ) +int btVoronoiSimplexSolver_closest(void *c,float* p0) {+	::btVoronoiSimplexSolver *o = (::btVoronoiSimplexSolver*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	int retVal = (int)o->closest(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	return retVal;+}+//method: closestPtPointTetrahedron bool ( ::btVoronoiSimplexSolver::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btSubSimplexClosestResult & ) +int btVoronoiSimplexSolver_closestPtPointTetrahedron(void *c,float* p0,float* p1,float* p2,float* p3,float* p4,void* p5) {+	::btVoronoiSimplexSolver *o = (::btVoronoiSimplexSolver*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	btVector3 tp4(p4[0],p4[1],p4[2]);+	::btSubSimplexClosestResult & tp5 = *(::btSubSimplexClosestResult *)p5;+	int retVal = (int)o->closestPtPointTetrahedron(tp0,tp1,tp2,tp3,tp4,tp5);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+	p4[0]=tp4.m_floats[0];p4[1]=tp4.m_floats[1];p4[2]=tp4.m_floats[2];+	return retVal;+}+//method: closestPtPointTriangle bool ( ::btVoronoiSimplexSolver::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btSubSimplexClosestResult & ) +int btVoronoiSimplexSolver_closestPtPointTriangle(void *c,float* p0,float* p1,float* p2,float* p3,void* p4) {+	::btVoronoiSimplexSolver *o = (::btVoronoiSimplexSolver*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	::btSubSimplexClosestResult & tp4 = *(::btSubSimplexClosestResult *)p4;+	int retVal = (int)o->closestPtPointTriangle(tp0,tp1,tp2,tp3,tp4);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+	return retVal;+}+//method: pointOutsideOfPlane int ( ::btVoronoiSimplexSolver::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const & ) +int btVoronoiSimplexSolver_pointOutsideOfPlane(void *c,float* p0,float* p1,float* p2,float* p3,float* p4) {+	::btVoronoiSimplexSolver *o = (::btVoronoiSimplexSolver*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	btVector3 tp4(p4[0],p4[1],p4[2]);+	int retVal = (int)o->pointOutsideOfPlane(tp0,tp1,tp2,tp3,tp4);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+	p4[0]=tp4.m_floats[0];p4[1]=tp4.m_floats[1];p4[2]=tp4.m_floats[2];+	return retVal;+}+//method: emptySimplex bool ( ::btVoronoiSimplexSolver::* )(  ) const+int btVoronoiSimplexSolver_emptySimplex(void *c) {+	::btVoronoiSimplexSolver *o = (::btVoronoiSimplexSolver*)c;+	int retVal = (int)o->emptySimplex();+	return retVal;+}+//not supported method: getSimplex int ( ::btVoronoiSimplexSolver::* )( ::btVector3 *,::btVector3 *,::btVector3 * ) const+//method: maxVertex ::btScalar ( ::btVoronoiSimplexSolver::* )(  ) +float btVoronoiSimplexSolver_maxVertex(void *c) {+	::btVoronoiSimplexSolver *o = (::btVoronoiSimplexSolver*)c;+	float retVal = (float)o->maxVertex();+	return retVal;+}+//method: addVertex void ( ::btVoronoiSimplexSolver::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void btVoronoiSimplexSolver_addVertex(void *c,float* p0,float* p1,float* p2) {+	::btVoronoiSimplexSolver *o = (::btVoronoiSimplexSolver*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->addVertex(tp0,tp1,tp2);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: reduceVertices void ( ::btVoronoiSimplexSolver::* )( ::btUsageBitfield const & ) +void btVoronoiSimplexSolver_reduceVertices(void *c,void* p0) {+	::btVoronoiSimplexSolver *o = (::btVoronoiSimplexSolver*)c;+	::btUsageBitfield const & tp0 = *(::btUsageBitfield const *)p0;+	o->reduceVertices(tp0);+}+//method: backup_closest void ( ::btVoronoiSimplexSolver::* )( ::btVector3 & ) +void btVoronoiSimplexSolver_backup_closest(void *c,float* p0) {+	::btVoronoiSimplexSolver *o = (::btVoronoiSimplexSolver*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->backup_closest(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: removeVertex void ( ::btVoronoiSimplexSolver::* )( int ) +void btVoronoiSimplexSolver_removeVertex(void *c,int p0) {+	::btVoronoiSimplexSolver *o = (::btVoronoiSimplexSolver*)c;+	o->removeVertex(p0);+}+//method: getEqualVertexThreshold ::btScalar ( ::btVoronoiSimplexSolver::* )(  ) const+float btVoronoiSimplexSolver_getEqualVertexThreshold(void *c) {+	::btVoronoiSimplexSolver *o = (::btVoronoiSimplexSolver*)c;+	float retVal = (float)o->getEqualVertexThreshold();+	return retVal;+}+//method: compute_points void ( ::btVoronoiSimplexSolver::* )( ::btVector3 &,::btVector3 & ) +void btVoronoiSimplexSolver_compute_points(void *c,float* p0,float* p1) {+	::btVoronoiSimplexSolver *o = (::btVoronoiSimplexSolver*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->compute_points(tp0,tp1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: fullSimplex bool ( ::btVoronoiSimplexSolver::* )(  ) const+int btVoronoiSimplexSolver_fullSimplex(void *c) {+	::btVoronoiSimplexSolver *o = (::btVoronoiSimplexSolver*)c;+	int retVal = (int)o->fullSimplex();+	return retVal;+}+//method: numVertices int ( ::btVoronoiSimplexSolver::* )(  ) const+int btVoronoiSimplexSolver_numVertices(void *c) {+	::btVoronoiSimplexSolver *o = (::btVoronoiSimplexSolver*)c;+	int retVal = (int)o->numVertices();+	return retVal;+}+//attribute: ::btSubSimplexClosestResult btVoronoiSimplexSolver->m_cachedBC+// attribute not supported: //attribute: ::btSubSimplexClosestResult btVoronoiSimplexSolver->m_cachedBC+//attribute: ::btVector3 btVoronoiSimplexSolver->m_cachedP1+void btVoronoiSimplexSolver_m_cachedP1_set(void *c,float* a) {+	::btVoronoiSimplexSolver *o = (::btVoronoiSimplexSolver*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_cachedP1 = ta;+}+void btVoronoiSimplexSolver_m_cachedP1_get(void *c,float* a) {+	::btVoronoiSimplexSolver *o = (::btVoronoiSimplexSolver*)c;+	a[0]=(o->m_cachedP1).m_floats[0];a[1]=(o->m_cachedP1).m_floats[1];a[2]=(o->m_cachedP1).m_floats[2];+}++//attribute: ::btVector3 btVoronoiSimplexSolver->m_cachedP2+void btVoronoiSimplexSolver_m_cachedP2_set(void *c,float* a) {+	::btVoronoiSimplexSolver *o = (::btVoronoiSimplexSolver*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_cachedP2 = ta;+}+void btVoronoiSimplexSolver_m_cachedP2_get(void *c,float* a) {+	::btVoronoiSimplexSolver *o = (::btVoronoiSimplexSolver*)c;+	a[0]=(o->m_cachedP2).m_floats[0];a[1]=(o->m_cachedP2).m_floats[1];a[2]=(o->m_cachedP2).m_floats[2];+}++//attribute: ::btVector3 btVoronoiSimplexSolver->m_cachedV+void btVoronoiSimplexSolver_m_cachedV_set(void *c,float* a) {+	::btVoronoiSimplexSolver *o = (::btVoronoiSimplexSolver*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_cachedV = ta;+}+void btVoronoiSimplexSolver_m_cachedV_get(void *c,float* a) {+	::btVoronoiSimplexSolver *o = (::btVoronoiSimplexSolver*)c;+	a[0]=(o->m_cachedV).m_floats[0];a[1]=(o->m_cachedV).m_floats[1];a[2]=(o->m_cachedV).m_floats[2];+}++//attribute: bool btVoronoiSimplexSolver->m_cachedValidClosest+void btVoronoiSimplexSolver_m_cachedValidClosest_set(void *c,int a) {+	::btVoronoiSimplexSolver *o = (::btVoronoiSimplexSolver*)c;+	o->m_cachedValidClosest = a;+}+int btVoronoiSimplexSolver_m_cachedValidClosest_get(void *c) {+	::btVoronoiSimplexSolver *o = (::btVoronoiSimplexSolver*)c;+	return (int)(o->m_cachedValidClosest);+}++//attribute: ::btScalar btVoronoiSimplexSolver->m_equalVertexThreshold+void btVoronoiSimplexSolver_m_equalVertexThreshold_set(void *c,float a) {+	::btVoronoiSimplexSolver *o = (::btVoronoiSimplexSolver*)c;+	o->m_equalVertexThreshold = a;+}+float btVoronoiSimplexSolver_m_equalVertexThreshold_get(void *c) {+	::btVoronoiSimplexSolver *o = (::btVoronoiSimplexSolver*)c;+	return (float)(o->m_equalVertexThreshold);+}++//attribute: ::btVector3 btVoronoiSimplexSolver->m_lastW+void btVoronoiSimplexSolver_m_lastW_set(void *c,float* a) {+	::btVoronoiSimplexSolver *o = (::btVoronoiSimplexSolver*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_lastW = ta;+}+void btVoronoiSimplexSolver_m_lastW_get(void *c,float* a) {+	::btVoronoiSimplexSolver *o = (::btVoronoiSimplexSolver*)c;+	a[0]=(o->m_lastW).m_floats[0];a[1]=(o->m_lastW).m_floats[1];a[2]=(o->m_lastW).m_floats[2];+}++//attribute: bool btVoronoiSimplexSolver->m_needsUpdate+void btVoronoiSimplexSolver_m_needsUpdate_set(void *c,int a) {+	::btVoronoiSimplexSolver *o = (::btVoronoiSimplexSolver*)c;+	o->m_needsUpdate = a;+}+int btVoronoiSimplexSolver_m_needsUpdate_get(void *c) {+	::btVoronoiSimplexSolver *o = (::btVoronoiSimplexSolver*)c;+	return (int)(o->m_needsUpdate);+}++//attribute: int btVoronoiSimplexSolver->m_numVertices+void btVoronoiSimplexSolver_m_numVertices_set(void *c,int a) {+	::btVoronoiSimplexSolver *o = (::btVoronoiSimplexSolver*)c;+	o->m_numVertices = a;+}+int btVoronoiSimplexSolver_m_numVertices_get(void *c) {+	::btVoronoiSimplexSolver *o = (::btVoronoiSimplexSolver*)c;+	return (int)(o->m_numVertices);+}++//attribute: ::btVector3[5] btVoronoiSimplexSolver->m_simplexPointsP+// attribute not supported: //attribute: ::btVector3[5] btVoronoiSimplexSolver->m_simplexPointsP+//attribute: ::btVector3[5] btVoronoiSimplexSolver->m_simplexPointsQ+// attribute not supported: //attribute: ::btVector3[5] btVoronoiSimplexSolver->m_simplexPointsQ+//attribute: ::btVector3[5] btVoronoiSimplexSolver->m_simplexVectorW+// attribute not supported: //attribute: ::btVector3[5] btVoronoiSimplexSolver->m_simplexVectorW++// ::btGjkEpaSolver2::sResults+//constructor: sResults  ( ::btGjkEpaSolver2::sResults::* )(  ) +void* btGjkEpaSolver2_sResults_new() {+	::btGjkEpaSolver2::sResults *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btGjkEpaSolver2::sResults),16);+	o = new (mem)::btGjkEpaSolver2::sResults();+	return (void*)o;+}+void btGjkEpaSolver2_sResults_free(void *c) {+	::btGjkEpaSolver2::sResults *o = (::btGjkEpaSolver2::sResults*)c;+	delete o;+}+//attribute: ::btScalar btGjkEpaSolver2_sResults->distance+void btGjkEpaSolver2_sResults_distance_set(void *c,float a) {+	::btGjkEpaSolver2::sResults *o = (::btGjkEpaSolver2::sResults*)c;+	o->distance = a;+}+float btGjkEpaSolver2_sResults_distance_get(void *c) {+	::btGjkEpaSolver2::sResults *o = (::btGjkEpaSolver2::sResults*)c;+	return (float)(o->distance);+}++//attribute: ::btVector3 btGjkEpaSolver2_sResults->normal+void btGjkEpaSolver2_sResults_normal_set(void *c,float* a) {+	::btGjkEpaSolver2::sResults *o = (::btGjkEpaSolver2::sResults*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->normal = ta;+}+void btGjkEpaSolver2_sResults_normal_get(void *c,float* a) {+	::btGjkEpaSolver2::sResults *o = (::btGjkEpaSolver2::sResults*)c;+	a[0]=(o->normal).m_floats[0];a[1]=(o->normal).m_floats[1];a[2]=(o->normal).m_floats[2];+}++//attribute: ::btGjkEpaSolver2::sResults::eStatus btGjkEpaSolver2_sResults->status+// attribute not supported: //attribute: ::btGjkEpaSolver2::sResults::eStatus btGjkEpaSolver2_sResults->status+//attribute: ::btVector3[2] btGjkEpaSolver2_sResults->witnesses+// attribute not supported: //attribute: ::btVector3[2] btGjkEpaSolver2_sResults->witnesses++// ::btCollisionWorld::AllHitsRayResultCallback+//constructor: AllHitsRayResultCallback  ( ::btCollisionWorld::AllHitsRayResultCallback::* )( ::btVector3 const &,::btVector3 const & ) +void* btCollisionWorld_AllHitsRayResultCallback_new(float* p0,float* p1) {+	::btCollisionWorld::AllHitsRayResultCallback *o = 0;+	 void *mem = 0;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	mem = btAlignedAlloc(sizeof(::btCollisionWorld::AllHitsRayResultCallback),16);+	o = new (mem)::btCollisionWorld::AllHitsRayResultCallback(tp0,tp1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	return (void*)o;+}+void btCollisionWorld_AllHitsRayResultCallback_free(void *c) {+	::btCollisionWorld::AllHitsRayResultCallback *o = (::btCollisionWorld::AllHitsRayResultCallback*)c;+	delete o;+}+//method: addSingleResult ::btScalar ( ::btCollisionWorld::AllHitsRayResultCallback::* )( ::btCollisionWorld::LocalRayResult &,bool ) +float btCollisionWorld_AllHitsRayResultCallback_addSingleResult(void *c,void* p0,int p1) {+	::btCollisionWorld::AllHitsRayResultCallback *o = (::btCollisionWorld::AllHitsRayResultCallback*)c;+	::btCollisionWorld::LocalRayResult & tp0 = *(::btCollisionWorld::LocalRayResult *)p0;+	float retVal = (float)o->addSingleResult(tp0,p1);+	return retVal;+}+//attribute: ::btAlignedObjectArray<btCollisionObject*> btCollisionWorld_AllHitsRayResultCallback->m_collisionObjects+// attribute not supported: //attribute: ::btAlignedObjectArray<btCollisionObject*> btCollisionWorld_AllHitsRayResultCallback->m_collisionObjects+//attribute: ::btAlignedObjectArray<float> btCollisionWorld_AllHitsRayResultCallback->m_hitFractions+// attribute not supported: //attribute: ::btAlignedObjectArray<float> btCollisionWorld_AllHitsRayResultCallback->m_hitFractions+//attribute: ::btAlignedObjectArray<btVector3> btCollisionWorld_AllHitsRayResultCallback->m_hitNormalWorld+// attribute not supported: //attribute: ::btAlignedObjectArray<btVector3> btCollisionWorld_AllHitsRayResultCallback->m_hitNormalWorld+//attribute: ::btAlignedObjectArray<btVector3> btCollisionWorld_AllHitsRayResultCallback->m_hitPointWorld+// attribute not supported: //attribute: ::btAlignedObjectArray<btVector3> btCollisionWorld_AllHitsRayResultCallback->m_hitPointWorld+//attribute: ::btVector3 btCollisionWorld_AllHitsRayResultCallback->m_rayFromWorld+void btCollisionWorld_AllHitsRayResultCallback_m_rayFromWorld_set(void *c,float* a) {+	::btCollisionWorld::AllHitsRayResultCallback *o = (::btCollisionWorld::AllHitsRayResultCallback*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_rayFromWorld = ta;+}+void btCollisionWorld_AllHitsRayResultCallback_m_rayFromWorld_get(void *c,float* a) {+	::btCollisionWorld::AllHitsRayResultCallback *o = (::btCollisionWorld::AllHitsRayResultCallback*)c;+	a[0]=(o->m_rayFromWorld).m_floats[0];a[1]=(o->m_rayFromWorld).m_floats[1];a[2]=(o->m_rayFromWorld).m_floats[2];+}++//attribute: ::btVector3 btCollisionWorld_AllHitsRayResultCallback->m_rayToWorld+void btCollisionWorld_AllHitsRayResultCallback_m_rayToWorld_set(void *c,float* a) {+	::btCollisionWorld::AllHitsRayResultCallback *o = (::btCollisionWorld::AllHitsRayResultCallback*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_rayToWorld = ta;+}+void btCollisionWorld_AllHitsRayResultCallback_m_rayToWorld_get(void *c,float* a) {+	::btCollisionWorld::AllHitsRayResultCallback *o = (::btCollisionWorld::AllHitsRayResultCallback*)c;+	a[0]=(o->m_rayToWorld).m_floats[0];a[1]=(o->m_rayToWorld).m_floats[1];a[2]=(o->m_rayToWorld).m_floats[2];+}+++// ::btCollisionWorld::ClosestConvexResultCallback+//constructor: ClosestConvexResultCallback  ( ::btCollisionWorld::ClosestConvexResultCallback::* )( ::btVector3 const &,::btVector3 const & ) +void* btCollisionWorld_ClosestConvexResultCallback_new(float* p0,float* p1) {+	::btCollisionWorld::ClosestConvexResultCallback *o = 0;+	 void *mem = 0;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	mem = btAlignedAlloc(sizeof(::btCollisionWorld::ClosestConvexResultCallback),16);+	o = new (mem)::btCollisionWorld::ClosestConvexResultCallback(tp0,tp1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	return (void*)o;+}+void btCollisionWorld_ClosestConvexResultCallback_free(void *c) {+	::btCollisionWorld::ClosestConvexResultCallback *o = (::btCollisionWorld::ClosestConvexResultCallback*)c;+	delete o;+}+//method: addSingleResult ::btScalar ( ::btCollisionWorld::ClosestConvexResultCallback::* )( ::btCollisionWorld::LocalConvexResult &,bool ) +float btCollisionWorld_ClosestConvexResultCallback_addSingleResult(void *c,void* p0,int p1) {+	::btCollisionWorld::ClosestConvexResultCallback *o = (::btCollisionWorld::ClosestConvexResultCallback*)c;+	::btCollisionWorld::LocalConvexResult & tp0 = *(::btCollisionWorld::LocalConvexResult *)p0;+	float retVal = (float)o->addSingleResult(tp0,p1);+	return retVal;+}+//attribute: ::btVector3 btCollisionWorld_ClosestConvexResultCallback->m_convexFromWorld+void btCollisionWorld_ClosestConvexResultCallback_m_convexFromWorld_set(void *c,float* a) {+	::btCollisionWorld::ClosestConvexResultCallback *o = (::btCollisionWorld::ClosestConvexResultCallback*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_convexFromWorld = ta;+}+void btCollisionWorld_ClosestConvexResultCallback_m_convexFromWorld_get(void *c,float* a) {+	::btCollisionWorld::ClosestConvexResultCallback *o = (::btCollisionWorld::ClosestConvexResultCallback*)c;+	a[0]=(o->m_convexFromWorld).m_floats[0];a[1]=(o->m_convexFromWorld).m_floats[1];a[2]=(o->m_convexFromWorld).m_floats[2];+}++//attribute: ::btVector3 btCollisionWorld_ClosestConvexResultCallback->m_convexToWorld+void btCollisionWorld_ClosestConvexResultCallback_m_convexToWorld_set(void *c,float* a) {+	::btCollisionWorld::ClosestConvexResultCallback *o = (::btCollisionWorld::ClosestConvexResultCallback*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_convexToWorld = ta;+}+void btCollisionWorld_ClosestConvexResultCallback_m_convexToWorld_get(void *c,float* a) {+	::btCollisionWorld::ClosestConvexResultCallback *o = (::btCollisionWorld::ClosestConvexResultCallback*)c;+	a[0]=(o->m_convexToWorld).m_floats[0];a[1]=(o->m_convexToWorld).m_floats[1];a[2]=(o->m_convexToWorld).m_floats[2];+}++//attribute: ::btCollisionObject * btCollisionWorld_ClosestConvexResultCallback->m_hitCollisionObject+void btCollisionWorld_ClosestConvexResultCallback_m_hitCollisionObject_set(void *c,void* a) {+	::btCollisionWorld::ClosestConvexResultCallback *o = (::btCollisionWorld::ClosestConvexResultCallback*)c;+	::btCollisionObject * ta = (::btCollisionObject *)a;+	o->m_hitCollisionObject = ta;+}+// attriibute getter not supported: //attribute: ::btCollisionObject * btCollisionWorld_ClosestConvexResultCallback->m_hitCollisionObject+//attribute: ::btVector3 btCollisionWorld_ClosestConvexResultCallback->m_hitNormalWorld+void btCollisionWorld_ClosestConvexResultCallback_m_hitNormalWorld_set(void *c,float* a) {+	::btCollisionWorld::ClosestConvexResultCallback *o = (::btCollisionWorld::ClosestConvexResultCallback*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_hitNormalWorld = ta;+}+void btCollisionWorld_ClosestConvexResultCallback_m_hitNormalWorld_get(void *c,float* a) {+	::btCollisionWorld::ClosestConvexResultCallback *o = (::btCollisionWorld::ClosestConvexResultCallback*)c;+	a[0]=(o->m_hitNormalWorld).m_floats[0];a[1]=(o->m_hitNormalWorld).m_floats[1];a[2]=(o->m_hitNormalWorld).m_floats[2];+}++//attribute: ::btVector3 btCollisionWorld_ClosestConvexResultCallback->m_hitPointWorld+void btCollisionWorld_ClosestConvexResultCallback_m_hitPointWorld_set(void *c,float* a) {+	::btCollisionWorld::ClosestConvexResultCallback *o = (::btCollisionWorld::ClosestConvexResultCallback*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_hitPointWorld = ta;+}+void btCollisionWorld_ClosestConvexResultCallback_m_hitPointWorld_get(void *c,float* a) {+	::btCollisionWorld::ClosestConvexResultCallback *o = (::btCollisionWorld::ClosestConvexResultCallback*)c;+	a[0]=(o->m_hitPointWorld).m_floats[0];a[1]=(o->m_hitPointWorld).m_floats[1];a[2]=(o->m_hitPointWorld).m_floats[2];+}+++// ::btCollisionWorld::ClosestRayResultCallback+//constructor: ClosestRayResultCallback  ( ::btCollisionWorld::ClosestRayResultCallback::* )( ::btVector3 const &,::btVector3 const & ) +void* btCollisionWorld_ClosestRayResultCallback_new(float* p0,float* p1) {+	::btCollisionWorld::ClosestRayResultCallback *o = 0;+	 void *mem = 0;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	mem = btAlignedAlloc(sizeof(::btCollisionWorld::ClosestRayResultCallback),16);+	o = new (mem)::btCollisionWorld::ClosestRayResultCallback(tp0,tp1);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+	return (void*)o;+}+void btCollisionWorld_ClosestRayResultCallback_free(void *c) {+	::btCollisionWorld::ClosestRayResultCallback *o = (::btCollisionWorld::ClosestRayResultCallback*)c;+	delete o;+}+//method: addSingleResult ::btScalar ( ::btCollisionWorld::ClosestRayResultCallback::* )( ::btCollisionWorld::LocalRayResult &,bool ) +float btCollisionWorld_ClosestRayResultCallback_addSingleResult(void *c,void* p0,int p1) {+	::btCollisionWorld::ClosestRayResultCallback *o = (::btCollisionWorld::ClosestRayResultCallback*)c;+	::btCollisionWorld::LocalRayResult & tp0 = *(::btCollisionWorld::LocalRayResult *)p0;+	float retVal = (float)o->addSingleResult(tp0,p1);+	return retVal;+}+//attribute: ::btVector3 btCollisionWorld_ClosestRayResultCallback->m_hitNormalWorld+void btCollisionWorld_ClosestRayResultCallback_m_hitNormalWorld_set(void *c,float* a) {+	::btCollisionWorld::ClosestRayResultCallback *o = (::btCollisionWorld::ClosestRayResultCallback*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_hitNormalWorld = ta;+}+void btCollisionWorld_ClosestRayResultCallback_m_hitNormalWorld_get(void *c,float* a) {+	::btCollisionWorld::ClosestRayResultCallback *o = (::btCollisionWorld::ClosestRayResultCallback*)c;+	a[0]=(o->m_hitNormalWorld).m_floats[0];a[1]=(o->m_hitNormalWorld).m_floats[1];a[2]=(o->m_hitNormalWorld).m_floats[2];+}++//attribute: ::btVector3 btCollisionWorld_ClosestRayResultCallback->m_hitPointWorld+void btCollisionWorld_ClosestRayResultCallback_m_hitPointWorld_set(void *c,float* a) {+	::btCollisionWorld::ClosestRayResultCallback *o = (::btCollisionWorld::ClosestRayResultCallback*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_hitPointWorld = ta;+}+void btCollisionWorld_ClosestRayResultCallback_m_hitPointWorld_get(void *c,float* a) {+	::btCollisionWorld::ClosestRayResultCallback *o = (::btCollisionWorld::ClosestRayResultCallback*)c;+	a[0]=(o->m_hitPointWorld).m_floats[0];a[1]=(o->m_hitPointWorld).m_floats[1];a[2]=(o->m_hitPointWorld).m_floats[2];+}++//attribute: ::btVector3 btCollisionWorld_ClosestRayResultCallback->m_rayFromWorld+void btCollisionWorld_ClosestRayResultCallback_m_rayFromWorld_set(void *c,float* a) {+	::btCollisionWorld::ClosestRayResultCallback *o = (::btCollisionWorld::ClosestRayResultCallback*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_rayFromWorld = ta;+}+void btCollisionWorld_ClosestRayResultCallback_m_rayFromWorld_get(void *c,float* a) {+	::btCollisionWorld::ClosestRayResultCallback *o = (::btCollisionWorld::ClosestRayResultCallback*)c;+	a[0]=(o->m_rayFromWorld).m_floats[0];a[1]=(o->m_rayFromWorld).m_floats[1];a[2]=(o->m_rayFromWorld).m_floats[2];+}++//attribute: ::btVector3 btCollisionWorld_ClosestRayResultCallback->m_rayToWorld+void btCollisionWorld_ClosestRayResultCallback_m_rayToWorld_set(void *c,float* a) {+	::btCollisionWorld::ClosestRayResultCallback *o = (::btCollisionWorld::ClosestRayResultCallback*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_rayToWorld = ta;+}+void btCollisionWorld_ClosestRayResultCallback_m_rayToWorld_get(void *c,float* a) {+	::btCollisionWorld::ClosestRayResultCallback *o = (::btCollisionWorld::ClosestRayResultCallback*)c;+	a[0]=(o->m_rayToWorld).m_floats[0];a[1]=(o->m_rayToWorld).m_floats[1];a[2]=(o->m_rayToWorld).m_floats[2];+}+++// ::btCollisionWorld::ContactResultCallback+//method: addSingleResult ::btScalar ( ::btCollisionWorld::ContactResultCallback::* )( ::btManifoldPoint &,::btCollisionObject const *,int,int,::btCollisionObject const *,int,int ) +float btCollisionWorld_ContactResultCallback_addSingleResult(void *c,void* p0,void* p1,int p2,int p3,void* p4,int p5,int p6) {+	::btCollisionWorld::ContactResultCallback *o = (::btCollisionWorld::ContactResultCallback*)c;+	::btManifoldPoint & tp0 = *(::btManifoldPoint *)p0;+	::btCollisionObject const * tp1 = (::btCollisionObject const *)p1;+	::btCollisionObject const * tp4 = (::btCollisionObject const *)p4;+	float retVal = (float)o->addSingleResult(tp0,tp1,p2,p3,tp4,p5,p6);+	return retVal;+}+//method: needsCollision bool ( ::btCollisionWorld::ContactResultCallback::* )( ::btBroadphaseProxy * ) const+int btCollisionWorld_ContactResultCallback_needsCollision(void *c,void* p0) {+	::btCollisionWorld::ContactResultCallback *o = (::btCollisionWorld::ContactResultCallback*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	int retVal = (int)o->needsCollision(tp0);+	return retVal;+}+//attribute: short int btCollisionWorld_ContactResultCallback->m_collisionFilterGroup+void btCollisionWorld_ContactResultCallback_m_collisionFilterGroup_set(void *c,short int a) {+	::btCollisionWorld::ContactResultCallback *o = (::btCollisionWorld::ContactResultCallback*)c;+	o->m_collisionFilterGroup = a;+}+short int btCollisionWorld_ContactResultCallback_m_collisionFilterGroup_get(void *c) {+	::btCollisionWorld::ContactResultCallback *o = (::btCollisionWorld::ContactResultCallback*)c;+	return (short int)(o->m_collisionFilterGroup);+}++//attribute: short int btCollisionWorld_ContactResultCallback->m_collisionFilterMask+void btCollisionWorld_ContactResultCallback_m_collisionFilterMask_set(void *c,short int a) {+	::btCollisionWorld::ContactResultCallback *o = (::btCollisionWorld::ContactResultCallback*)c;+	o->m_collisionFilterMask = a;+}+short int btCollisionWorld_ContactResultCallback_m_collisionFilterMask_get(void *c) {+	::btCollisionWorld::ContactResultCallback *o = (::btCollisionWorld::ContactResultCallback*)c;+	return (short int)(o->m_collisionFilterMask);+}+++// ::btCollisionWorld::ConvexResultCallback+//method: addSingleResult ::btScalar ( ::btCollisionWorld::ConvexResultCallback::* )( ::btCollisionWorld::LocalConvexResult &,bool ) +float btCollisionWorld_ConvexResultCallback_addSingleResult(void *c,void* p0,int p1) {+	::btCollisionWorld::ConvexResultCallback *o = (::btCollisionWorld::ConvexResultCallback*)c;+	::btCollisionWorld::LocalConvexResult & tp0 = *(::btCollisionWorld::LocalConvexResult *)p0;+	float retVal = (float)o->addSingleResult(tp0,p1);+	return retVal;+}+//method: needsCollision bool ( ::btCollisionWorld::ConvexResultCallback::* )( ::btBroadphaseProxy * ) const+int btCollisionWorld_ConvexResultCallback_needsCollision(void *c,void* p0) {+	::btCollisionWorld::ConvexResultCallback *o = (::btCollisionWorld::ConvexResultCallback*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	int retVal = (int)o->needsCollision(tp0);+	return retVal;+}+//method: hasHit bool ( ::btCollisionWorld::ConvexResultCallback::* )(  ) const+int btCollisionWorld_ConvexResultCallback_hasHit(void *c) {+	::btCollisionWorld::ConvexResultCallback *o = (::btCollisionWorld::ConvexResultCallback*)c;+	int retVal = (int)o->hasHit();+	return retVal;+}+//attribute: ::btScalar btCollisionWorld_ConvexResultCallback->m_closestHitFraction+void btCollisionWorld_ConvexResultCallback_m_closestHitFraction_set(void *c,float a) {+	::btCollisionWorld::ConvexResultCallback *o = (::btCollisionWorld::ConvexResultCallback*)c;+	o->m_closestHitFraction = a;+}+float btCollisionWorld_ConvexResultCallback_m_closestHitFraction_get(void *c) {+	::btCollisionWorld::ConvexResultCallback *o = (::btCollisionWorld::ConvexResultCallback*)c;+	return (float)(o->m_closestHitFraction);+}++//attribute: short int btCollisionWorld_ConvexResultCallback->m_collisionFilterGroup+void btCollisionWorld_ConvexResultCallback_m_collisionFilterGroup_set(void *c,short int a) {+	::btCollisionWorld::ConvexResultCallback *o = (::btCollisionWorld::ConvexResultCallback*)c;+	o->m_collisionFilterGroup = a;+}+short int btCollisionWorld_ConvexResultCallback_m_collisionFilterGroup_get(void *c) {+	::btCollisionWorld::ConvexResultCallback *o = (::btCollisionWorld::ConvexResultCallback*)c;+	return (short int)(o->m_collisionFilterGroup);+}++//attribute: short int btCollisionWorld_ConvexResultCallback->m_collisionFilterMask+void btCollisionWorld_ConvexResultCallback_m_collisionFilterMask_set(void *c,short int a) {+	::btCollisionWorld::ConvexResultCallback *o = (::btCollisionWorld::ConvexResultCallback*)c;+	o->m_collisionFilterMask = a;+}+short int btCollisionWorld_ConvexResultCallback_m_collisionFilterMask_get(void *c) {+	::btCollisionWorld::ConvexResultCallback *o = (::btCollisionWorld::ConvexResultCallback*)c;+	return (short int)(o->m_collisionFilterMask);+}+++// ::btSphereSphereCollisionAlgorithm::CreateFunc+//constructor: CreateFunc  ( ::btSphereSphereCollisionAlgorithm::CreateFunc::* )(  ) +void* btSphereSphereCollisionAlgorithm_CreateFunc_new() {+	::btSphereSphereCollisionAlgorithm::CreateFunc *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btSphereSphereCollisionAlgorithm::CreateFunc),16);+	o = new (mem)::btSphereSphereCollisionAlgorithm::CreateFunc();+	return (void*)o;+}+void btSphereSphereCollisionAlgorithm_CreateFunc_free(void *c) {+	::btSphereSphereCollisionAlgorithm::CreateFunc *o = (::btSphereSphereCollisionAlgorithm::CreateFunc*)c;+	delete o;+}+//method: CreateCollisionAlgorithm ::btCollisionAlgorithm * ( ::btSphereSphereCollisionAlgorithm::CreateFunc::* )( ::btCollisionAlgorithmConstructionInfo &,::btCollisionObject *,::btCollisionObject * ) +void* btSphereSphereCollisionAlgorithm_CreateFunc_CreateCollisionAlgorithm(void *c,void* p0,void* p1,void* p2) {+	::btSphereSphereCollisionAlgorithm::CreateFunc *o = (::btSphereSphereCollisionAlgorithm::CreateFunc*)c;+	::btCollisionAlgorithmConstructionInfo & tp0 = *(::btCollisionAlgorithmConstructionInfo *)p0;+	::btCollisionObject * tp1 = (::btCollisionObject *)p1;+	::btCollisionObject * tp2 = (::btCollisionObject *)p2;+	void* retVal = (void*) o->CreateCollisionAlgorithm(tp0,tp1,tp2);+	return retVal;+}++// ::btConvexConvexAlgorithm::CreateFunc+//not supported constructor: CreateFunc  ( ::btConvexConvexAlgorithm::CreateFunc::* )( ::btVoronoiSimplexSolver *,::btConvexPenetrationDepthSolver * ) +void btConvexConvexAlgorithm_CreateFunc_free(void *c) {+	::btConvexConvexAlgorithm::CreateFunc *o = (::btConvexConvexAlgorithm::CreateFunc*)c;+	delete o;+}+//method: CreateCollisionAlgorithm ::btCollisionAlgorithm * ( ::btConvexConvexAlgorithm::CreateFunc::* )( ::btCollisionAlgorithmConstructionInfo &,::btCollisionObject *,::btCollisionObject * ) +void* btConvexConvexAlgorithm_CreateFunc_CreateCollisionAlgorithm(void *c,void* p0,void* p1,void* p2) {+	::btConvexConvexAlgorithm::CreateFunc *o = (::btConvexConvexAlgorithm::CreateFunc*)c;+	::btCollisionAlgorithmConstructionInfo & tp0 = *(::btCollisionAlgorithmConstructionInfo *)p0;+	::btCollisionObject * tp1 = (::btCollisionObject *)p1;+	::btCollisionObject * tp2 = (::btCollisionObject *)p2;+	void* retVal = (void*) o->CreateCollisionAlgorithm(tp0,tp1,tp2);+	return retVal;+}+//attribute: ::btConvexPenetrationDepthSolver * btConvexConvexAlgorithm_CreateFunc->m_pdSolver+// attribute not supported: //attribute: ::btConvexPenetrationDepthSolver * btConvexConvexAlgorithm_CreateFunc->m_pdSolver+//attribute: ::btVoronoiSimplexSolver * btConvexConvexAlgorithm_CreateFunc->m_simplexSolver+void btConvexConvexAlgorithm_CreateFunc_m_simplexSolver_set(void *c,void* a) {+	::btConvexConvexAlgorithm::CreateFunc *o = (::btConvexConvexAlgorithm::CreateFunc*)c;+	::btVoronoiSimplexSolver * ta = (::btVoronoiSimplexSolver *)a;+	o->m_simplexSolver = ta;+}+// attriibute getter not supported: //attribute: ::btVoronoiSimplexSolver * btConvexConvexAlgorithm_CreateFunc->m_simplexSolver+//attribute: int btConvexConvexAlgorithm_CreateFunc->m_numPerturbationIterations+void btConvexConvexAlgorithm_CreateFunc_m_numPerturbationIterations_set(void *c,int a) {+	::btConvexConvexAlgorithm::CreateFunc *o = (::btConvexConvexAlgorithm::CreateFunc*)c;+	o->m_numPerturbationIterations = a;+}+int btConvexConvexAlgorithm_CreateFunc_m_numPerturbationIterations_get(void *c) {+	::btConvexConvexAlgorithm::CreateFunc *o = (::btConvexConvexAlgorithm::CreateFunc*)c;+	return (int)(o->m_numPerturbationIterations);+}++//attribute: int btConvexConvexAlgorithm_CreateFunc->m_minimumPointsPerturbationThreshold+void btConvexConvexAlgorithm_CreateFunc_m_minimumPointsPerturbationThreshold_set(void *c,int a) {+	::btConvexConvexAlgorithm::CreateFunc *o = (::btConvexConvexAlgorithm::CreateFunc*)c;+	o->m_minimumPointsPerturbationThreshold = a;+}+int btConvexConvexAlgorithm_CreateFunc_m_minimumPointsPerturbationThreshold_get(void *c) {+	::btConvexConvexAlgorithm::CreateFunc *o = (::btConvexConvexAlgorithm::CreateFunc*)c;+	return (int)(o->m_minimumPointsPerturbationThreshold);+}+++// ::btCollisionWorld::LocalConvexResult+//constructor: LocalConvexResult  ( ::btCollisionWorld::LocalConvexResult::* )( ::btCollisionObject *,::btCollisionWorld::LocalShapeInfo *,::btVector3 const &,::btVector3 const &,::btScalar ) +void* btCollisionWorld_LocalConvexResult_new(void* p0,void* p1,float* p2,float* p3,float p4) {+	::btCollisionWorld::LocalConvexResult *o = 0;+	 void *mem = 0;+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	::btCollisionWorld::LocalShapeInfo * tp1 = (::btCollisionWorld::LocalShapeInfo *)p1;+	btVector3 tp2(p2[0],p2[1],p2[2]);+	btVector3 tp3(p3[0],p3[1],p3[2]);+	mem = btAlignedAlloc(sizeof(::btCollisionWorld::LocalConvexResult),16);+	o = new (mem)::btCollisionWorld::LocalConvexResult(tp0,tp1,tp2,tp3,p4);+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	p3[0]=tp3.m_floats[0];p3[1]=tp3.m_floats[1];p3[2]=tp3.m_floats[2];+	return (void*)o;+}+void btCollisionWorld_LocalConvexResult_free(void *c) {+	::btCollisionWorld::LocalConvexResult *o = (::btCollisionWorld::LocalConvexResult*)c;+	delete o;+}+//attribute: ::btCollisionObject * btCollisionWorld_LocalConvexResult->m_hitCollisionObject+void btCollisionWorld_LocalConvexResult_m_hitCollisionObject_set(void *c,void* a) {+	::btCollisionWorld::LocalConvexResult *o = (::btCollisionWorld::LocalConvexResult*)c;+	::btCollisionObject * ta = (::btCollisionObject *)a;+	o->m_hitCollisionObject = ta;+}+// attriibute getter not supported: //attribute: ::btCollisionObject * btCollisionWorld_LocalConvexResult->m_hitCollisionObject+//attribute: ::btScalar btCollisionWorld_LocalConvexResult->m_hitFraction+void btCollisionWorld_LocalConvexResult_m_hitFraction_set(void *c,float a) {+	::btCollisionWorld::LocalConvexResult *o = (::btCollisionWorld::LocalConvexResult*)c;+	o->m_hitFraction = a;+}+float btCollisionWorld_LocalConvexResult_m_hitFraction_get(void *c) {+	::btCollisionWorld::LocalConvexResult *o = (::btCollisionWorld::LocalConvexResult*)c;+	return (float)(o->m_hitFraction);+}++//attribute: ::btVector3 btCollisionWorld_LocalConvexResult->m_hitNormalLocal+void btCollisionWorld_LocalConvexResult_m_hitNormalLocal_set(void *c,float* a) {+	::btCollisionWorld::LocalConvexResult *o = (::btCollisionWorld::LocalConvexResult*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_hitNormalLocal = ta;+}+void btCollisionWorld_LocalConvexResult_m_hitNormalLocal_get(void *c,float* a) {+	::btCollisionWorld::LocalConvexResult *o = (::btCollisionWorld::LocalConvexResult*)c;+	a[0]=(o->m_hitNormalLocal).m_floats[0];a[1]=(o->m_hitNormalLocal).m_floats[1];a[2]=(o->m_hitNormalLocal).m_floats[2];+}++//attribute: ::btVector3 btCollisionWorld_LocalConvexResult->m_hitPointLocal+void btCollisionWorld_LocalConvexResult_m_hitPointLocal_set(void *c,float* a) {+	::btCollisionWorld::LocalConvexResult *o = (::btCollisionWorld::LocalConvexResult*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_hitPointLocal = ta;+}+void btCollisionWorld_LocalConvexResult_m_hitPointLocal_get(void *c,float* a) {+	::btCollisionWorld::LocalConvexResult *o = (::btCollisionWorld::LocalConvexResult*)c;+	a[0]=(o->m_hitPointLocal).m_floats[0];a[1]=(o->m_hitPointLocal).m_floats[1];a[2]=(o->m_hitPointLocal).m_floats[2];+}++//attribute: ::btCollisionWorld::LocalShapeInfo * btCollisionWorld_LocalConvexResult->m_localShapeInfo+void btCollisionWorld_LocalConvexResult_m_localShapeInfo_set(void *c,void* a) {+	::btCollisionWorld::LocalConvexResult *o = (::btCollisionWorld::LocalConvexResult*)c;+	::btCollisionWorld::LocalShapeInfo * ta = (::btCollisionWorld::LocalShapeInfo *)a;+	o->m_localShapeInfo = ta;+}+// attriibute getter not supported: //attribute: ::btCollisionWorld::LocalShapeInfo * btCollisionWorld_LocalConvexResult->m_localShapeInfo++// ::btCollisionWorld::LocalRayResult+//constructor: LocalRayResult  ( ::btCollisionWorld::LocalRayResult::* )( ::btCollisionObject *,::btCollisionWorld::LocalShapeInfo *,::btVector3 const &,::btScalar ) +void* btCollisionWorld_LocalRayResult_new(void* p0,void* p1,float* p2,float p3) {+	::btCollisionWorld::LocalRayResult *o = 0;+	 void *mem = 0;+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	::btCollisionWorld::LocalShapeInfo * tp1 = (::btCollisionWorld::LocalShapeInfo *)p1;+	btVector3 tp2(p2[0],p2[1],p2[2]);+	mem = btAlignedAlloc(sizeof(::btCollisionWorld::LocalRayResult),16);+	o = new (mem)::btCollisionWorld::LocalRayResult(tp0,tp1,tp2,p3);+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+	return (void*)o;+}+void btCollisionWorld_LocalRayResult_free(void *c) {+	::btCollisionWorld::LocalRayResult *o = (::btCollisionWorld::LocalRayResult*)c;+	delete o;+}+//attribute: ::btCollisionObject * btCollisionWorld_LocalRayResult->m_collisionObject+void btCollisionWorld_LocalRayResult_m_collisionObject_set(void *c,void* a) {+	::btCollisionWorld::LocalRayResult *o = (::btCollisionWorld::LocalRayResult*)c;+	::btCollisionObject * ta = (::btCollisionObject *)a;+	o->m_collisionObject = ta;+}+// attriibute getter not supported: //attribute: ::btCollisionObject * btCollisionWorld_LocalRayResult->m_collisionObject+//attribute: ::btScalar btCollisionWorld_LocalRayResult->m_hitFraction+void btCollisionWorld_LocalRayResult_m_hitFraction_set(void *c,float a) {+	::btCollisionWorld::LocalRayResult *o = (::btCollisionWorld::LocalRayResult*)c;+	o->m_hitFraction = a;+}+float btCollisionWorld_LocalRayResult_m_hitFraction_get(void *c) {+	::btCollisionWorld::LocalRayResult *o = (::btCollisionWorld::LocalRayResult*)c;+	return (float)(o->m_hitFraction);+}++//attribute: ::btVector3 btCollisionWorld_LocalRayResult->m_hitNormalLocal+void btCollisionWorld_LocalRayResult_m_hitNormalLocal_set(void *c,float* a) {+	::btCollisionWorld::LocalRayResult *o = (::btCollisionWorld::LocalRayResult*)c;+	btVector3 ta(a[0],a[1],a[2]);+	o->m_hitNormalLocal = ta;+}+void btCollisionWorld_LocalRayResult_m_hitNormalLocal_get(void *c,float* a) {+	::btCollisionWorld::LocalRayResult *o = (::btCollisionWorld::LocalRayResult*)c;+	a[0]=(o->m_hitNormalLocal).m_floats[0];a[1]=(o->m_hitNormalLocal).m_floats[1];a[2]=(o->m_hitNormalLocal).m_floats[2];+}++//attribute: ::btCollisionWorld::LocalShapeInfo * btCollisionWorld_LocalRayResult->m_localShapeInfo+void btCollisionWorld_LocalRayResult_m_localShapeInfo_set(void *c,void* a) {+	::btCollisionWorld::LocalRayResult *o = (::btCollisionWorld::LocalRayResult*)c;+	::btCollisionWorld::LocalShapeInfo * ta = (::btCollisionWorld::LocalShapeInfo *)a;+	o->m_localShapeInfo = ta;+}+// attriibute getter not supported: //attribute: ::btCollisionWorld::LocalShapeInfo * btCollisionWorld_LocalRayResult->m_localShapeInfo++// ::btCollisionWorld::LocalShapeInfo+//constructor: LocalShapeInfo  ( ::btCollisionWorld::LocalShapeInfo::* )(  ) +void* btCollisionWorld_LocalShapeInfo_new() {+	::btCollisionWorld::LocalShapeInfo *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btCollisionWorld::LocalShapeInfo),16);+	o = new (mem)::btCollisionWorld::LocalShapeInfo();+	return (void*)o;+}+void btCollisionWorld_LocalShapeInfo_free(void *c) {+	::btCollisionWorld::LocalShapeInfo *o = (::btCollisionWorld::LocalShapeInfo*)c;+	delete o;+}+//attribute: int btCollisionWorld_LocalShapeInfo->m_shapePart+void btCollisionWorld_LocalShapeInfo_m_shapePart_set(void *c,int a) {+	::btCollisionWorld::LocalShapeInfo *o = (::btCollisionWorld::LocalShapeInfo*)c;+	o->m_shapePart = a;+}+int btCollisionWorld_LocalShapeInfo_m_shapePart_get(void *c) {+	::btCollisionWorld::LocalShapeInfo *o = (::btCollisionWorld::LocalShapeInfo*)c;+	return (int)(o->m_shapePart);+}++//attribute: int btCollisionWorld_LocalShapeInfo->m_triangleIndex+void btCollisionWorld_LocalShapeInfo_m_triangleIndex_set(void *c,int a) {+	::btCollisionWorld::LocalShapeInfo *o = (::btCollisionWorld::LocalShapeInfo*)c;+	o->m_triangleIndex = a;+}+int btCollisionWorld_LocalShapeInfo_m_triangleIndex_get(void *c) {+	::btCollisionWorld::LocalShapeInfo *o = (::btCollisionWorld::LocalShapeInfo*)c;+	return (int)(o->m_triangleIndex);+}+++// ::btCollisionWorld::RayResultCallback+//method: addSingleResult ::btScalar ( ::btCollisionWorld::RayResultCallback::* )( ::btCollisionWorld::LocalRayResult &,bool ) +float btCollisionWorld_RayResultCallback_addSingleResult(void *c,void* p0,int p1) {+	::btCollisionWorld::RayResultCallback *o = (::btCollisionWorld::RayResultCallback*)c;+	::btCollisionWorld::LocalRayResult & tp0 = *(::btCollisionWorld::LocalRayResult *)p0;+	float retVal = (float)o->addSingleResult(tp0,p1);+	return retVal;+}+//method: needsCollision bool ( ::btCollisionWorld::RayResultCallback::* )( ::btBroadphaseProxy * ) const+int btCollisionWorld_RayResultCallback_needsCollision(void *c,void* p0) {+	::btCollisionWorld::RayResultCallback *o = (::btCollisionWorld::RayResultCallback*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	int retVal = (int)o->needsCollision(tp0);+	return retVal;+}+//method: hasHit bool ( ::btCollisionWorld::RayResultCallback::* )(  ) const+int btCollisionWorld_RayResultCallback_hasHit(void *c) {+	::btCollisionWorld::RayResultCallback *o = (::btCollisionWorld::RayResultCallback*)c;+	int retVal = (int)o->hasHit();+	return retVal;+}+//attribute: ::btScalar btCollisionWorld_RayResultCallback->m_closestHitFraction+void btCollisionWorld_RayResultCallback_m_closestHitFraction_set(void *c,float a) {+	::btCollisionWorld::RayResultCallback *o = (::btCollisionWorld::RayResultCallback*)c;+	o->m_closestHitFraction = a;+}+float btCollisionWorld_RayResultCallback_m_closestHitFraction_get(void *c) {+	::btCollisionWorld::RayResultCallback *o = (::btCollisionWorld::RayResultCallback*)c;+	return (float)(o->m_closestHitFraction);+}++//attribute: short int btCollisionWorld_RayResultCallback->m_collisionFilterGroup+void btCollisionWorld_RayResultCallback_m_collisionFilterGroup_set(void *c,short int a) {+	::btCollisionWorld::RayResultCallback *o = (::btCollisionWorld::RayResultCallback*)c;+	o->m_collisionFilterGroup = a;+}+short int btCollisionWorld_RayResultCallback_m_collisionFilterGroup_get(void *c) {+	::btCollisionWorld::RayResultCallback *o = (::btCollisionWorld::RayResultCallback*)c;+	return (short int)(o->m_collisionFilterGroup);+}++//attribute: short int btCollisionWorld_RayResultCallback->m_collisionFilterMask+void btCollisionWorld_RayResultCallback_m_collisionFilterMask_set(void *c,short int a) {+	::btCollisionWorld::RayResultCallback *o = (::btCollisionWorld::RayResultCallback*)c;+	o->m_collisionFilterMask = a;+}+short int btCollisionWorld_RayResultCallback_m_collisionFilterMask_get(void *c) {+	::btCollisionWorld::RayResultCallback *o = (::btCollisionWorld::RayResultCallback*)c;+	return (short int)(o->m_collisionFilterMask);+}++//attribute: ::btCollisionObject * btCollisionWorld_RayResultCallback->m_collisionObject+void btCollisionWorld_RayResultCallback_m_collisionObject_set(void *c,void* a) {+	::btCollisionWorld::RayResultCallback *o = (::btCollisionWorld::RayResultCallback*)c;+	::btCollisionObject * ta = (::btCollisionObject *)a;+	o->m_collisionObject = ta;+}+// attriibute getter not supported: //attribute: ::btCollisionObject * btCollisionWorld_RayResultCallback->m_collisionObject+//attribute: unsigned int btCollisionWorld_RayResultCallback->m_flags+void btCollisionWorld_RayResultCallback_m_flags_set(void *c,unsigned int a) {+	::btCollisionWorld::RayResultCallback *o = (::btCollisionWorld::RayResultCallback*)c;+	o->m_flags = a;+}+unsigned int btCollisionWorld_RayResultCallback_m_flags_get(void *c) {+	::btCollisionWorld::RayResultCallback *o = (::btCollisionWorld::RayResultCallback*)c;+	return (unsigned int)(o->m_flags);+}+++// ::btActivatingCollisionAlgorithm++// ::btCollisionAlgorithmCreateFunc+//constructor: btCollisionAlgorithmCreateFunc  ( ::btCollisionAlgorithmCreateFunc::* )(  ) +void* btCollisionAlgorithmCreateFunc_new() {+	::btCollisionAlgorithmCreateFunc *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btCollisionAlgorithmCreateFunc),16);+	o = new (mem)::btCollisionAlgorithmCreateFunc();+	return (void*)o;+}+void btCollisionAlgorithmCreateFunc_free(void *c) {+	::btCollisionAlgorithmCreateFunc *o = (::btCollisionAlgorithmCreateFunc*)c;+	delete o;+}+//method: CreateCollisionAlgorithm ::btCollisionAlgorithm * ( ::btCollisionAlgorithmCreateFunc::* )( ::btCollisionAlgorithmConstructionInfo &,::btCollisionObject *,::btCollisionObject * ) +void* btCollisionAlgorithmCreateFunc_CreateCollisionAlgorithm(void *c,void* p0,void* p1,void* p2) {+	::btCollisionAlgorithmCreateFunc *o = (::btCollisionAlgorithmCreateFunc*)c;+	::btCollisionAlgorithmConstructionInfo & tp0 = *(::btCollisionAlgorithmConstructionInfo *)p0;+	::btCollisionObject * tp1 = (::btCollisionObject *)p1;+	::btCollisionObject * tp2 = (::btCollisionObject *)p2;+	void* retVal = (void*) o->CreateCollisionAlgorithm(tp0,tp1,tp2);+	return retVal;+}+//attribute: bool btCollisionAlgorithmCreateFunc->m_swapped+void btCollisionAlgorithmCreateFunc_m_swapped_set(void *c,int a) {+	::btCollisionAlgorithmCreateFunc *o = (::btCollisionAlgorithmCreateFunc*)c;+	o->m_swapped = a;+}+int btCollisionAlgorithmCreateFunc_m_swapped_get(void *c) {+	::btCollisionAlgorithmCreateFunc *o = (::btCollisionAlgorithmCreateFunc*)c;+	return (int)(o->m_swapped);+}+++// ::btCollisionConfiguration+//not supported method: getPersistentManifoldPool ::btPoolAllocator * ( ::btCollisionConfiguration::* )(  ) +//method: getStackAllocator ::btStackAlloc * ( ::btCollisionConfiguration::* )(  ) +void* btCollisionConfiguration_getStackAllocator(void *c) {+	::btCollisionConfiguration *o = (::btCollisionConfiguration*)c;+	void* retVal = (void*) o->getStackAllocator();+	return retVal;+}+//not supported method: getCollisionAlgorithmPool ::btPoolAllocator * ( ::btCollisionConfiguration::* )(  ) +//method: getCollisionAlgorithmCreateFunc ::btCollisionAlgorithmCreateFunc * ( ::btCollisionConfiguration::* )( int,int ) +void* btCollisionConfiguration_getCollisionAlgorithmCreateFunc(void *c,int p0,int p1) {+	::btCollisionConfiguration *o = (::btCollisionConfiguration*)c;+	void* retVal = (void*) o->getCollisionAlgorithmCreateFunc(p0,p1);+	return retVal;+}++// ::btCollisionDispatcher+//constructor: btCollisionDispatcher  ( ::btCollisionDispatcher::* )( ::btCollisionConfiguration * ) +void* btCollisionDispatcher_new(void* p0) {+	::btCollisionDispatcher *o = 0;+	 void *mem = 0;+	::btCollisionConfiguration * tp0 = (::btCollisionConfiguration *)p0;+	mem = btAlignedAlloc(sizeof(::btCollisionDispatcher),16);+	o = new (mem)::btCollisionDispatcher(tp0);+	return (void*)o;+}+void btCollisionDispatcher_free(void *c) {+	::btCollisionDispatcher *o = (::btCollisionDispatcher*)c;+	delete o;+}+//not supported method: allocateCollisionAlgorithm void * ( ::btCollisionDispatcher::* )( int ) +//method: getDispatcherFlags int ( ::btCollisionDispatcher::* )(  ) const+int btCollisionDispatcher_getDispatcherFlags(void *c) {+	::btCollisionDispatcher *o = (::btCollisionDispatcher*)c;+	int retVal = (int)o->getDispatcherFlags();+	return retVal;+}+//method: getCollisionConfiguration ::btCollisionConfiguration * ( ::btCollisionDispatcher::* )(  ) +void* btCollisionDispatcher_getCollisionConfiguration(void *c) {+	::btCollisionDispatcher *o = (::btCollisionDispatcher*)c;+	void* retVal = (void*) o->getCollisionConfiguration();+	return retVal;+}+//method: getCollisionConfiguration ::btCollisionConfiguration * ( ::btCollisionDispatcher::* )(  ) +void* btCollisionDispatcher_getCollisionConfiguration0(void *c) {+	::btCollisionDispatcher *o = (::btCollisionDispatcher*)c;+	void* retVal = (void*) o->getCollisionConfiguration();+	return retVal;+}+//method: getCollisionConfiguration ::btCollisionConfiguration const * ( ::btCollisionDispatcher::* )(  ) const+void* btCollisionDispatcher_getCollisionConfiguration1(void *c) {+	::btCollisionDispatcher *o = (::btCollisionDispatcher*)c;+	void* retVal = (void*) o->getCollisionConfiguration();+	return retVal;+}+//method: setDispatcherFlags void ( ::btCollisionDispatcher::* )( int ) +void btCollisionDispatcher_setDispatcherFlags(void *c,int p0) {+	::btCollisionDispatcher *o = (::btCollisionDispatcher*)c;+	o->setDispatcherFlags(p0);+}+//method: releaseManifold void ( ::btCollisionDispatcher::* )( ::btPersistentManifold * ) +void btCollisionDispatcher_releaseManifold(void *c,void* p0) {+	::btCollisionDispatcher *o = (::btCollisionDispatcher*)c;+	::btPersistentManifold * tp0 = (::btPersistentManifold *)p0;+	o->releaseManifold(tp0);+}+//method: setCollisionConfiguration void ( ::btCollisionDispatcher::* )( ::btCollisionConfiguration * ) +void btCollisionDispatcher_setCollisionConfiguration(void *c,void* p0) {+	::btCollisionDispatcher *o = (::btCollisionDispatcher*)c;+	::btCollisionConfiguration * tp0 = (::btCollisionConfiguration *)p0;+	o->setCollisionConfiguration(tp0);+}+//method: getNumManifolds int ( ::btCollisionDispatcher::* )(  ) const+int btCollisionDispatcher_getNumManifolds(void *c) {+	::btCollisionDispatcher *o = (::btCollisionDispatcher*)c;+	int retVal = (int)o->getNumManifolds();+	return retVal;+}+//method: clearManifold void ( ::btCollisionDispatcher::* )( ::btPersistentManifold * ) +void btCollisionDispatcher_clearManifold(void *c,void* p0) {+	::btCollisionDispatcher *o = (::btCollisionDispatcher*)c;+	::btPersistentManifold * tp0 = (::btPersistentManifold *)p0;+	o->clearManifold(tp0);+}+//not supported method: freeCollisionAlgorithm void ( ::btCollisionDispatcher::* )( void * ) +//not supported method: getInternalManifoldPointer ::btPersistentManifold * * ( ::btCollisionDispatcher::* )(  ) +//method: registerCollisionCreateFunc void ( ::btCollisionDispatcher::* )( int,int,::btCollisionAlgorithmCreateFunc * ) +void btCollisionDispatcher_registerCollisionCreateFunc(void *c,int p0,int p1,void* p2) {+	::btCollisionDispatcher *o = (::btCollisionDispatcher*)c;+	::btCollisionAlgorithmCreateFunc * tp2 = (::btCollisionAlgorithmCreateFunc *)p2;+	o->registerCollisionCreateFunc(p0,p1,tp2);+}+//method: defaultNearCallback void (*)( ::btBroadphasePair &,::btCollisionDispatcher &,::btDispatcherInfo const & )+void btCollisionDispatcher_defaultNearCallback(void* p0,void* p1,void* p2) {+	::btBroadphasePair & tp0 = *(::btBroadphasePair *)p0;+	::btCollisionDispatcher & tp1 = *(::btCollisionDispatcher *)p1;+	::btDispatcherInfo const & tp2 = *(::btDispatcherInfo const *)p2;+	::btCollisionDispatcher::defaultNearCallback(tp0,tp1,tp2);+}+//not supported method: getNearCallback ::btNearCallback ( ::btCollisionDispatcher::* )(  ) const+//method: findAlgorithm ::btCollisionAlgorithm * ( ::btCollisionDispatcher::* )( ::btCollisionObject *,::btCollisionObject *,::btPersistentManifold * ) +void* btCollisionDispatcher_findAlgorithm(void *c,void* p0,void* p1,void* p2) {+	::btCollisionDispatcher *o = (::btCollisionDispatcher*)c;+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	::btCollisionObject * tp1 = (::btCollisionObject *)p1;+	::btPersistentManifold * tp2 = (::btPersistentManifold *)p2;+	void* retVal = (void*) o->findAlgorithm(tp0,tp1,tp2);+	return retVal;+}+//method: needsResponse bool ( ::btCollisionDispatcher::* )( ::btCollisionObject *,::btCollisionObject * ) +int btCollisionDispatcher_needsResponse(void *c,void* p0,void* p1) {+	::btCollisionDispatcher *o = (::btCollisionDispatcher*)c;+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	::btCollisionObject * tp1 = (::btCollisionObject *)p1;+	int retVal = (int)o->needsResponse(tp0,tp1);+	return retVal;+}+//not supported method: getNewManifold ::btPersistentManifold * ( ::btCollisionDispatcher::* )( void *,void * ) +//method: dispatchAllCollisionPairs void ( ::btCollisionDispatcher::* )( ::btOverlappingPairCache *,::btDispatcherInfo const &,::btDispatcher * ) +void btCollisionDispatcher_dispatchAllCollisionPairs(void *c,void* p0,void* p1,void* p2) {+	::btCollisionDispatcher *o = (::btCollisionDispatcher*)c;+	::btOverlappingPairCache * tp0 = (::btOverlappingPairCache *)p0;+	::btDispatcherInfo const & tp1 = *(::btDispatcherInfo const *)p1;+	::btDispatcher * tp2 = (::btDispatcher *)p2;+	o->dispatchAllCollisionPairs(tp0,tp1,tp2);+}+//not supported method: getInternalManifoldPool ::btPoolAllocator * ( ::btCollisionDispatcher::* )(  ) +//not supported method: getInternalManifoldPool ::btPoolAllocator * ( ::btCollisionDispatcher::* )(  ) +//not supported method: getInternalManifoldPool ::btPoolAllocator const * ( ::btCollisionDispatcher::* )(  ) const+//method: needsCollision bool ( ::btCollisionDispatcher::* )( ::btCollisionObject *,::btCollisionObject * ) +int btCollisionDispatcher_needsCollision(void *c,void* p0,void* p1) {+	::btCollisionDispatcher *o = (::btCollisionDispatcher*)c;+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	::btCollisionObject * tp1 = (::btCollisionObject *)p1;+	int retVal = (int)o->needsCollision(tp0,tp1);+	return retVal;+}+//method: getManifoldByIndexInternal ::btPersistentManifold * ( ::btCollisionDispatcher::* )( int ) +void* btCollisionDispatcher_getManifoldByIndexInternal(void *c,int p0) {+	::btCollisionDispatcher *o = (::btCollisionDispatcher*)c;+	void* retVal = (void*) o->getManifoldByIndexInternal(p0);+	return retVal;+}+//method: getManifoldByIndexInternal ::btPersistentManifold * ( ::btCollisionDispatcher::* )( int ) +void* btCollisionDispatcher_getManifoldByIndexInternal0(void *c,int p0) {+	::btCollisionDispatcher *o = (::btCollisionDispatcher*)c;+	void* retVal = (void*) o->getManifoldByIndexInternal(p0);+	return retVal;+}+//method: getManifoldByIndexInternal ::btPersistentManifold const * ( ::btCollisionDispatcher::* )( int ) const+void* btCollisionDispatcher_getManifoldByIndexInternal1(void *c,int p0) {+	::btCollisionDispatcher *o = (::btCollisionDispatcher*)c;+	void* retVal = (void*) o->getManifoldByIndexInternal(p0);+	return retVal;+}+//not supported method: setNearCallback void ( ::btCollisionDispatcher::* )( ::btNearCallback ) ++// ::btCollisionObject+//constructor: btCollisionObject  ( ::btCollisionObject::* )(  ) +void* btCollisionObject_new() {+	::btCollisionObject *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btCollisionObject),16);+	o = new (mem)::btCollisionObject();+	return (void*)o;+}+void btCollisionObject_free(void *c) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	delete o;+}+//method: getCcdSquareMotionThreshold ::btScalar ( ::btCollisionObject::* )(  ) const+float btCollisionObject_getCcdSquareMotionThreshold(void *c) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	float retVal = (float)o->getCcdSquareMotionThreshold();+	return retVal;+}+//method: activate void ( ::btCollisionObject::* )( bool ) +void btCollisionObject_activate(void *c,int p0) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	o->activate(p0);+}+//method: setInterpolationLinearVelocity void ( ::btCollisionObject::* )( ::btVector3 const & ) +void btCollisionObject_setInterpolationLinearVelocity(void *c,float* p0) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setInterpolationLinearVelocity(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: getFriction ::btScalar ( ::btCollisionObject::* )(  ) const+float btCollisionObject_getFriction(void *c) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	float retVal = (float)o->getFriction();+	return retVal;+}+//method: setCompanionId void ( ::btCollisionObject::* )( int ) +void btCollisionObject_setCompanionId(void *c,int p0) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	o->setCompanionId(p0);+}+//method: setInterpolationAngularVelocity void ( ::btCollisionObject::* )( ::btVector3 const & ) +void btCollisionObject_setInterpolationAngularVelocity(void *c,float* p0) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setInterpolationAngularVelocity(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//not supported method: serialize char const * ( ::btCollisionObject::* )( void *,::btSerializer * ) const+//method: setWorldTransform void ( ::btCollisionObject::* )( ::btTransform const & ) +void btCollisionObject_setWorldTransform(void *c,float* p0) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	o->setWorldTransform(tp0);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+}+//method: getCompanionId int ( ::btCollisionObject::* )(  ) const+int btCollisionObject_getCompanionId(void *c) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	int retVal = (int)o->getCompanionId();+	return retVal;+}+//not supported method: internalSetExtensionPointer void ( ::btCollisionObject::* )( void * ) +//method: setContactProcessingThreshold void ( ::btCollisionObject::* )( ::btScalar ) +void btCollisionObject_setContactProcessingThreshold(void *c,float p0) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	o->setContactProcessingThreshold(p0);+}+//method: setInterpolationWorldTransform void ( ::btCollisionObject::* )( ::btTransform const & ) +void btCollisionObject_setInterpolationWorldTransform(void *c,float* p0) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	o->setInterpolationWorldTransform(tp0);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+}+//method: getInterpolationLinearVelocity ::btVector3 const & ( ::btCollisionObject::* )(  ) const+void btCollisionObject_getInterpolationLinearVelocity(void *c,float* ret) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getInterpolationLinearVelocity();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: mergesSimulationIslands bool ( ::btCollisionObject::* )(  ) const+int btCollisionObject_mergesSimulationIslands(void *c) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	int retVal = (int)o->mergesSimulationIslands();+	return retVal;+}+//method: setCollisionShape void ( ::btCollisionObject::* )( ::btCollisionShape * ) +void btCollisionObject_setCollisionShape(void *c,void* p0) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	::btCollisionShape * tp0 = (::btCollisionShape *)p0;+	o->setCollisionShape(tp0);+}+//method: setCcdMotionThreshold void ( ::btCollisionObject::* )( ::btScalar ) +void btCollisionObject_setCcdMotionThreshold(void *c,float p0) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	o->setCcdMotionThreshold(p0);+}+//method: getIslandTag int ( ::btCollisionObject::* )(  ) const+int btCollisionObject_getIslandTag(void *c) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	int retVal = (int)o->getIslandTag();+	return retVal;+}+//method: calculateSerializeBufferSize int ( ::btCollisionObject::* )(  ) const+int btCollisionObject_calculateSerializeBufferSize(void *c) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	int retVal = (int)o->calculateSerializeBufferSize();+	return retVal;+}+//method: getCcdMotionThreshold ::btScalar ( ::btCollisionObject::* )(  ) const+float btCollisionObject_getCcdMotionThreshold(void *c) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	float retVal = (float)o->getCcdMotionThreshold();+	return retVal;+}+//not supported method: setUserPointer void ( ::btCollisionObject::* )( void * ) +//method: checkCollideWith bool ( ::btCollisionObject::* )( ::btCollisionObject * ) +int btCollisionObject_checkCollideWith(void *c,void* p0) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	int retVal = (int)o->checkCollideWith(tp0);+	return retVal;+}+//method: getAnisotropicFriction ::btVector3 const & ( ::btCollisionObject::* )(  ) const+void btCollisionObject_getAnisotropicFriction(void *c,float* ret) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getAnisotropicFriction();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: getInterpolationAngularVelocity ::btVector3 const & ( ::btCollisionObject::* )(  ) const+void btCollisionObject_getInterpolationAngularVelocity(void *c,float* ret) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	btVector3 tret(ret[0],ret[1],ret[2]);+	tret = o->getInterpolationAngularVelocity();+	ret[0]=tret.m_floats[0];ret[1]=tret.m_floats[1];ret[2]=tret.m_floats[2];+}+//method: forceActivationState void ( ::btCollisionObject::* )( int ) +void btCollisionObject_forceActivationState(void *c,int p0) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	o->forceActivationState(p0);+}+//method: isStaticObject bool ( ::btCollisionObject::* )(  ) const+int btCollisionObject_isStaticObject(void *c) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	int retVal = (int)o->isStaticObject();+	return retVal;+}+//method: setFriction void ( ::btCollisionObject::* )( ::btScalar ) +void btCollisionObject_setFriction(void *c,float p0) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	o->setFriction(p0);+}+//method: getInterpolationWorldTransform ::btTransform const & ( ::btCollisionObject::* )(  ) const+void btCollisionObject_getInterpolationWorldTransform(void *c,float* ret) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getInterpolationWorldTransform();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: getInterpolationWorldTransform ::btTransform const & ( ::btCollisionObject::* )(  ) const+void btCollisionObject_getInterpolationWorldTransform0(void *c,float* ret) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getInterpolationWorldTransform();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: getInterpolationWorldTransform ::btTransform & ( ::btCollisionObject::* )(  ) +void btCollisionObject_getInterpolationWorldTransform1(void *c,float* ret) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getInterpolationWorldTransform();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: setIslandTag void ( ::btCollisionObject::* )( int ) +void btCollisionObject_setIslandTag(void *c,int p0) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	o->setIslandTag(p0);+}+//method: setHitFraction void ( ::btCollisionObject::* )( ::btScalar ) +void btCollisionObject_setHitFraction(void *c,float p0) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	o->setHitFraction(p0);+}+//method: serializeSingleObject void ( ::btCollisionObject::* )( ::btSerializer * ) const+void btCollisionObject_serializeSingleObject(void *c,void* p0) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	::btSerializer * tp0 = (::btSerializer *)p0;+	o->serializeSingleObject(tp0);+}+//method: getCollisionFlags int ( ::btCollisionObject::* )(  ) const+int btCollisionObject_getCollisionFlags(void *c) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	int retVal = (int)o->getCollisionFlags();+	return retVal;+}+//method: getDeactivationTime ::btScalar ( ::btCollisionObject::* )(  ) const+float btCollisionObject_getDeactivationTime(void *c) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	float retVal = (float)o->getDeactivationTime();+	return retVal;+}+//method: getCollisionShape ::btCollisionShape const * ( ::btCollisionObject::* )(  ) const+void* btCollisionObject_getCollisionShape(void *c) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	void* retVal = (void*) o->getCollisionShape();+	return retVal;+}+//method: getCollisionShape ::btCollisionShape const * ( ::btCollisionObject::* )(  ) const+void* btCollisionObject_getCollisionShape0(void *c) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	void* retVal = (void*) o->getCollisionShape();+	return retVal;+}+//method: getCollisionShape ::btCollisionShape * ( ::btCollisionObject::* )(  ) +void* btCollisionObject_getCollisionShape1(void *c) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	void* retVal = (void*) o->getCollisionShape();+	return retVal;+}+//method: setAnisotropicFriction void ( ::btCollisionObject::* )( ::btVector3 const & ) +void btCollisionObject_setAnisotropicFriction(void *c,float* p0) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	o->setAnisotropicFriction(tp0);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+}+//method: getBroadphaseHandle ::btBroadphaseProxy * ( ::btCollisionObject::* )(  ) +void* btCollisionObject_getBroadphaseHandle(void *c) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	void* retVal = (void*) o->getBroadphaseHandle();+	return retVal;+}+//method: getBroadphaseHandle ::btBroadphaseProxy * ( ::btCollisionObject::* )(  ) +void* btCollisionObject_getBroadphaseHandle0(void *c) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	void* retVal = (void*) o->getBroadphaseHandle();+	return retVal;+}+//method: getBroadphaseHandle ::btBroadphaseProxy const * ( ::btCollisionObject::* )(  ) const+void* btCollisionObject_getBroadphaseHandle1(void *c) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	void* retVal = (void*) o->getBroadphaseHandle();+	return retVal;+}+//not supported method: getUserPointer void * ( ::btCollisionObject::* )(  ) const+//method: setCcdSweptSphereRadius void ( ::btCollisionObject::* )( ::btScalar ) +void btCollisionObject_setCcdSweptSphereRadius(void *c,float p0) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	o->setCcdSweptSphereRadius(p0);+}+//method: getWorldTransform ::btTransform & ( ::btCollisionObject::* )(  ) +void btCollisionObject_getWorldTransform(void *c,float* ret) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getWorldTransform();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: getWorldTransform ::btTransform & ( ::btCollisionObject::* )(  ) +void btCollisionObject_getWorldTransform0(void *c,float* ret) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getWorldTransform();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: getWorldTransform ::btTransform const & ( ::btCollisionObject::* )(  ) const+void btCollisionObject_getWorldTransform1(void *c,float* ret) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	btMatrix3x3 mtret(ret[0],ret[1],ret[2],ret[3],ret[4],ret[5],ret[6],ret[7],ret[8]);+	btVector3 vtret(ret[9],ret[10],ret[11]);+	btTransform tret(mtret,vtret);+	tret = o->getWorldTransform();+	ret[0]=tret.getBasis().getRow(0).m_floats[0];ret[1]=tret.getBasis().getRow(0).m_floats[1];ret[2]=tret.getBasis().getRow(0).m_floats[2];ret[3]=tret.getBasis().getRow(1).m_floats[0];ret[4]=tret.getBasis().getRow(1).m_floats[1];ret[5]=tret.getBasis().getRow(1).m_floats[2];ret[6]=tret.getBasis().getRow(2).m_floats[0];ret[7]=tret.getBasis().getRow(2).m_floats[1];ret[8]=tret.getBasis().getRow(2).m_floats[2];+	ret[9]=tret.getOrigin().m_floats[0];ret[10]=tret.getOrigin().m_floats[1];ret[11]=tret.getOrigin().m_floats[2];+}+//method: setCollisionFlags void ( ::btCollisionObject::* )( int ) +void btCollisionObject_setCollisionFlags(void *c,int p0) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	o->setCollisionFlags(p0);+}+//method: internalSetTemporaryCollisionShape void ( ::btCollisionObject::* )( ::btCollisionShape * ) +void btCollisionObject_internalSetTemporaryCollisionShape(void *c,void* p0) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	::btCollisionShape * tp0 = (::btCollisionShape *)p0;+	o->internalSetTemporaryCollisionShape(tp0);+}+//method: getHitFraction ::btScalar ( ::btCollisionObject::* )(  ) const+float btCollisionObject_getHitFraction(void *c) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	float retVal = (float)o->getHitFraction();+	return retVal;+}+//method: isActive bool ( ::btCollisionObject::* )(  ) const+int btCollisionObject_isActive(void *c) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	int retVal = (int)o->isActive();+	return retVal;+}+//method: setActivationState void ( ::btCollisionObject::* )( int ) +void btCollisionObject_setActivationState(void *c,int p0) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	o->setActivationState(p0);+}+//method: getInternalType int ( ::btCollisionObject::* )(  ) const+int btCollisionObject_getInternalType(void *c) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	int retVal = (int)o->getInternalType();+	return retVal;+}+//method: getActivationState int ( ::btCollisionObject::* )(  ) const+int btCollisionObject_getActivationState(void *c) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	int retVal = (int)o->getActivationState();+	return retVal;+}+//method: hasContactResponse bool ( ::btCollisionObject::* )(  ) const+int btCollisionObject_hasContactResponse(void *c) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	int retVal = (int)o->hasContactResponse();+	return retVal;+}+//method: getRootCollisionShape ::btCollisionShape const * ( ::btCollisionObject::* )(  ) const+void* btCollisionObject_getRootCollisionShape(void *c) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	void* retVal = (void*) o->getRootCollisionShape();+	return retVal;+}+//method: getRootCollisionShape ::btCollisionShape const * ( ::btCollisionObject::* )(  ) const+void* btCollisionObject_getRootCollisionShape0(void *c) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	void* retVal = (void*) o->getRootCollisionShape();+	return retVal;+}+//method: getRootCollisionShape ::btCollisionShape * ( ::btCollisionObject::* )(  ) +void* btCollisionObject_getRootCollisionShape1(void *c) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	void* retVal = (void*) o->getRootCollisionShape();+	return retVal;+}+//method: getRestitution ::btScalar ( ::btCollisionObject::* )(  ) const+float btCollisionObject_getRestitution(void *c) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	float retVal = (float)o->getRestitution();+	return retVal;+}+//method: getCcdSweptSphereRadius ::btScalar ( ::btCollisionObject::* )(  ) const+float btCollisionObject_getCcdSweptSphereRadius(void *c) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	float retVal = (float)o->getCcdSweptSphereRadius();+	return retVal;+}+//method: getContactProcessingThreshold ::btScalar ( ::btCollisionObject::* )(  ) const+float btCollisionObject_getContactProcessingThreshold(void *c) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	float retVal = (float)o->getContactProcessingThreshold();+	return retVal;+}+//method: setDeactivationTime void ( ::btCollisionObject::* )( ::btScalar ) +void btCollisionObject_setDeactivationTime(void *c,float p0) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	o->setDeactivationTime(p0);+}+//not supported method: internalGetExtensionPointer void * ( ::btCollisionObject::* )(  ) const+//method: isStaticOrKinematicObject bool ( ::btCollisionObject::* )(  ) const+int btCollisionObject_isStaticOrKinematicObject(void *c) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	int retVal = (int)o->isStaticOrKinematicObject();+	return retVal;+}+//method: setRestitution void ( ::btCollisionObject::* )( ::btScalar ) +void btCollisionObject_setRestitution(void *c,float p0) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	o->setRestitution(p0);+}+//method: hasAnisotropicFriction bool ( ::btCollisionObject::* )(  ) const+int btCollisionObject_hasAnisotropicFriction(void *c) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	int retVal = (int)o->hasAnisotropicFriction();+	return retVal;+}+//method: setBroadphaseHandle void ( ::btCollisionObject::* )( ::btBroadphaseProxy * ) +void btCollisionObject_setBroadphaseHandle(void *c,void* p0) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	::btBroadphaseProxy * tp0 = (::btBroadphaseProxy *)p0;+	o->setBroadphaseHandle(tp0);+}+//method: isKinematicObject bool ( ::btCollisionObject::* )(  ) const+int btCollisionObject_isKinematicObject(void *c) {+	::btCollisionObject *o = (::btCollisionObject*)c;+	int retVal = (int)o->isKinematicObject();+	return retVal;+}++// ::btCollisionObjectDoubleData+//constructor: btCollisionObjectDoubleData  ( ::btCollisionObjectDoubleData::* )(  ) +void* btCollisionObjectDoubleData_new() {+	::btCollisionObjectDoubleData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btCollisionObjectDoubleData),16);+	o = new (mem)::btCollisionObjectDoubleData();+	return (void*)o;+}+void btCollisionObjectDoubleData_free(void *c) {+	::btCollisionObjectDoubleData *o = (::btCollisionObjectDoubleData*)c;+	delete o;+}+//attribute: int btCollisionObjectDoubleData->m_activationState1+void btCollisionObjectDoubleData_m_activationState1_set(void *c,int a) {+	::btCollisionObjectDoubleData *o = (::btCollisionObjectDoubleData*)c;+	o->m_activationState1 = a;+}+int btCollisionObjectDoubleData_m_activationState1_get(void *c) {+	::btCollisionObjectDoubleData *o = (::btCollisionObjectDoubleData*)c;+	return (int)(o->m_activationState1);+}++//attribute: ::btVector3DoubleData btCollisionObjectDoubleData->m_anisotropicFriction+// attribute not supported: //attribute: ::btVector3DoubleData btCollisionObjectDoubleData->m_anisotropicFriction+//attribute: void * btCollisionObjectDoubleData->m_broadphaseHandle+// attribute not supported: //attribute: void * btCollisionObjectDoubleData->m_broadphaseHandle+//attribute: double btCollisionObjectDoubleData->m_ccdMotionThreshold+void btCollisionObjectDoubleData_m_ccdMotionThreshold_set(void *c,double a) {+	::btCollisionObjectDoubleData *o = (::btCollisionObjectDoubleData*)c;+	o->m_ccdMotionThreshold = a;+}+double btCollisionObjectDoubleData_m_ccdMotionThreshold_get(void *c) {+	::btCollisionObjectDoubleData *o = (::btCollisionObjectDoubleData*)c;+	return (double)(o->m_ccdMotionThreshold);+}++//attribute: double btCollisionObjectDoubleData->m_ccdSweptSphereRadius+void btCollisionObjectDoubleData_m_ccdSweptSphereRadius_set(void *c,double a) {+	::btCollisionObjectDoubleData *o = (::btCollisionObjectDoubleData*)c;+	o->m_ccdSweptSphereRadius = a;+}+double btCollisionObjectDoubleData_m_ccdSweptSphereRadius_get(void *c) {+	::btCollisionObjectDoubleData *o = (::btCollisionObjectDoubleData*)c;+	return (double)(o->m_ccdSweptSphereRadius);+}++//attribute: int btCollisionObjectDoubleData->m_checkCollideWith+void btCollisionObjectDoubleData_m_checkCollideWith_set(void *c,int a) {+	::btCollisionObjectDoubleData *o = (::btCollisionObjectDoubleData*)c;+	o->m_checkCollideWith = a;+}+int btCollisionObjectDoubleData_m_checkCollideWith_get(void *c) {+	::btCollisionObjectDoubleData *o = (::btCollisionObjectDoubleData*)c;+	return (int)(o->m_checkCollideWith);+}++//attribute: int btCollisionObjectDoubleData->m_collisionFlags+void btCollisionObjectDoubleData_m_collisionFlags_set(void *c,int a) {+	::btCollisionObjectDoubleData *o = (::btCollisionObjectDoubleData*)c;+	o->m_collisionFlags = a;+}+int btCollisionObjectDoubleData_m_collisionFlags_get(void *c) {+	::btCollisionObjectDoubleData *o = (::btCollisionObjectDoubleData*)c;+	return (int)(o->m_collisionFlags);+}++//attribute: void * btCollisionObjectDoubleData->m_collisionShape+// attribute not supported: //attribute: void * btCollisionObjectDoubleData->m_collisionShape+//attribute: int btCollisionObjectDoubleData->m_companionId+void btCollisionObjectDoubleData_m_companionId_set(void *c,int a) {+	::btCollisionObjectDoubleData *o = (::btCollisionObjectDoubleData*)c;+	o->m_companionId = a;+}+int btCollisionObjectDoubleData_m_companionId_get(void *c) {+	::btCollisionObjectDoubleData *o = (::btCollisionObjectDoubleData*)c;+	return (int)(o->m_companionId);+}++//attribute: double btCollisionObjectDoubleData->m_contactProcessingThreshold+void btCollisionObjectDoubleData_m_contactProcessingThreshold_set(void *c,double a) {+	::btCollisionObjectDoubleData *o = (::btCollisionObjectDoubleData*)c;+	o->m_contactProcessingThreshold = a;+}+double btCollisionObjectDoubleData_m_contactProcessingThreshold_get(void *c) {+	::btCollisionObjectDoubleData *o = (::btCollisionObjectDoubleData*)c;+	return (double)(o->m_contactProcessingThreshold);+}++//attribute: double btCollisionObjectDoubleData->m_deactivationTime+void btCollisionObjectDoubleData_m_deactivationTime_set(void *c,double a) {+	::btCollisionObjectDoubleData *o = (::btCollisionObjectDoubleData*)c;+	o->m_deactivationTime = a;+}+double btCollisionObjectDoubleData_m_deactivationTime_get(void *c) {+	::btCollisionObjectDoubleData *o = (::btCollisionObjectDoubleData*)c;+	return (double)(o->m_deactivationTime);+}++//attribute: double btCollisionObjectDoubleData->m_friction+void btCollisionObjectDoubleData_m_friction_set(void *c,double a) {+	::btCollisionObjectDoubleData *o = (::btCollisionObjectDoubleData*)c;+	o->m_friction = a;+}+double btCollisionObjectDoubleData_m_friction_get(void *c) {+	::btCollisionObjectDoubleData *o = (::btCollisionObjectDoubleData*)c;+	return (double)(o->m_friction);+}++//attribute: int btCollisionObjectDoubleData->m_hasAnisotropicFriction+void btCollisionObjectDoubleData_m_hasAnisotropicFriction_set(void *c,int a) {+	::btCollisionObjectDoubleData *o = (::btCollisionObjectDoubleData*)c;+	o->m_hasAnisotropicFriction = a;+}+int btCollisionObjectDoubleData_m_hasAnisotropicFriction_get(void *c) {+	::btCollisionObjectDoubleData *o = (::btCollisionObjectDoubleData*)c;+	return (int)(o->m_hasAnisotropicFriction);+}++//attribute: double btCollisionObjectDoubleData->m_hitFraction+void btCollisionObjectDoubleData_m_hitFraction_set(void *c,double a) {+	::btCollisionObjectDoubleData *o = (::btCollisionObjectDoubleData*)c;+	o->m_hitFraction = a;+}+double btCollisionObjectDoubleData_m_hitFraction_get(void *c) {+	::btCollisionObjectDoubleData *o = (::btCollisionObjectDoubleData*)c;+	return (double)(o->m_hitFraction);+}++//attribute: int btCollisionObjectDoubleData->m_internalType+void btCollisionObjectDoubleData_m_internalType_set(void *c,int a) {+	::btCollisionObjectDoubleData *o = (::btCollisionObjectDoubleData*)c;+	o->m_internalType = a;+}+int btCollisionObjectDoubleData_m_internalType_get(void *c) {+	::btCollisionObjectDoubleData *o = (::btCollisionObjectDoubleData*)c;+	return (int)(o->m_internalType);+}++//attribute: ::btVector3DoubleData btCollisionObjectDoubleData->m_interpolationAngularVelocity+// attribute not supported: //attribute: ::btVector3DoubleData btCollisionObjectDoubleData->m_interpolationAngularVelocity+//attribute: ::btVector3DoubleData btCollisionObjectDoubleData->m_interpolationLinearVelocity+// attribute not supported: //attribute: ::btVector3DoubleData btCollisionObjectDoubleData->m_interpolationLinearVelocity+//attribute: ::btTransformDoubleData btCollisionObjectDoubleData->m_interpolationWorldTransform+// attribute not supported: //attribute: ::btTransformDoubleData btCollisionObjectDoubleData->m_interpolationWorldTransform+//attribute: int btCollisionObjectDoubleData->m_islandTag1+void btCollisionObjectDoubleData_m_islandTag1_set(void *c,int a) {+	::btCollisionObjectDoubleData *o = (::btCollisionObjectDoubleData*)c;+	o->m_islandTag1 = a;+}+int btCollisionObjectDoubleData_m_islandTag1_get(void *c) {+	::btCollisionObjectDoubleData *o = (::btCollisionObjectDoubleData*)c;+	return (int)(o->m_islandTag1);+}++//attribute: char * btCollisionObjectDoubleData->m_name+void btCollisionObjectDoubleData_m_name_set(void *c,char * a) {+	::btCollisionObjectDoubleData *o = (::btCollisionObjectDoubleData*)c;+	o->m_name = a;+}+char * btCollisionObjectDoubleData_m_name_get(void *c) {+	::btCollisionObjectDoubleData *o = (::btCollisionObjectDoubleData*)c;+	return (char *)(o->m_name);+}++//attribute: char[4] btCollisionObjectDoubleData->m_padding+// attribute not supported: //attribute: char[4] btCollisionObjectDoubleData->m_padding+//attribute: double btCollisionObjectDoubleData->m_restitution+void btCollisionObjectDoubleData_m_restitution_set(void *c,double a) {+	::btCollisionObjectDoubleData *o = (::btCollisionObjectDoubleData*)c;+	o->m_restitution = a;+}+double btCollisionObjectDoubleData_m_restitution_get(void *c) {+	::btCollisionObjectDoubleData *o = (::btCollisionObjectDoubleData*)c;+	return (double)(o->m_restitution);+}++//attribute: ::btCollisionShapeData * btCollisionObjectDoubleData->m_rootCollisionShape+void btCollisionObjectDoubleData_m_rootCollisionShape_set(void *c,void* a) {+	::btCollisionObjectDoubleData *o = (::btCollisionObjectDoubleData*)c;+	::btCollisionShapeData * ta = (::btCollisionShapeData *)a;+	o->m_rootCollisionShape = ta;+}+// attriibute getter not supported: //attribute: ::btCollisionShapeData * btCollisionObjectDoubleData->m_rootCollisionShape+//attribute: ::btTransformDoubleData btCollisionObjectDoubleData->m_worldTransform+// attribute not supported: //attribute: ::btTransformDoubleData btCollisionObjectDoubleData->m_worldTransform++// ::btCollisionObjectFloatData+//constructor: btCollisionObjectFloatData  ( ::btCollisionObjectFloatData::* )(  ) +void* btCollisionObjectFloatData_new() {+	::btCollisionObjectFloatData *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btCollisionObjectFloatData),16);+	o = new (mem)::btCollisionObjectFloatData();+	return (void*)o;+}+void btCollisionObjectFloatData_free(void *c) {+	::btCollisionObjectFloatData *o = (::btCollisionObjectFloatData*)c;+	delete o;+}+//attribute: int btCollisionObjectFloatData->m_activationState1+void btCollisionObjectFloatData_m_activationState1_set(void *c,int a) {+	::btCollisionObjectFloatData *o = (::btCollisionObjectFloatData*)c;+	o->m_activationState1 = a;+}+int btCollisionObjectFloatData_m_activationState1_get(void *c) {+	::btCollisionObjectFloatData *o = (::btCollisionObjectFloatData*)c;+	return (int)(o->m_activationState1);+}++//attribute: ::btVector3FloatData btCollisionObjectFloatData->m_anisotropicFriction+// attribute not supported: //attribute: ::btVector3FloatData btCollisionObjectFloatData->m_anisotropicFriction+//attribute: void * btCollisionObjectFloatData->m_broadphaseHandle+// attribute not supported: //attribute: void * btCollisionObjectFloatData->m_broadphaseHandle+//attribute: float btCollisionObjectFloatData->m_ccdMotionThreshold+void btCollisionObjectFloatData_m_ccdMotionThreshold_set(void *c,float a) {+	::btCollisionObjectFloatData *o = (::btCollisionObjectFloatData*)c;+	o->m_ccdMotionThreshold = a;+}+float btCollisionObjectFloatData_m_ccdMotionThreshold_get(void *c) {+	::btCollisionObjectFloatData *o = (::btCollisionObjectFloatData*)c;+	return (float)(o->m_ccdMotionThreshold);+}++//attribute: float btCollisionObjectFloatData->m_ccdSweptSphereRadius+void btCollisionObjectFloatData_m_ccdSweptSphereRadius_set(void *c,float a) {+	::btCollisionObjectFloatData *o = (::btCollisionObjectFloatData*)c;+	o->m_ccdSweptSphereRadius = a;+}+float btCollisionObjectFloatData_m_ccdSweptSphereRadius_get(void *c) {+	::btCollisionObjectFloatData *o = (::btCollisionObjectFloatData*)c;+	return (float)(o->m_ccdSweptSphereRadius);+}++//attribute: int btCollisionObjectFloatData->m_checkCollideWith+void btCollisionObjectFloatData_m_checkCollideWith_set(void *c,int a) {+	::btCollisionObjectFloatData *o = (::btCollisionObjectFloatData*)c;+	o->m_checkCollideWith = a;+}+int btCollisionObjectFloatData_m_checkCollideWith_get(void *c) {+	::btCollisionObjectFloatData *o = (::btCollisionObjectFloatData*)c;+	return (int)(o->m_checkCollideWith);+}++//attribute: int btCollisionObjectFloatData->m_collisionFlags+void btCollisionObjectFloatData_m_collisionFlags_set(void *c,int a) {+	::btCollisionObjectFloatData *o = (::btCollisionObjectFloatData*)c;+	o->m_collisionFlags = a;+}+int btCollisionObjectFloatData_m_collisionFlags_get(void *c) {+	::btCollisionObjectFloatData *o = (::btCollisionObjectFloatData*)c;+	return (int)(o->m_collisionFlags);+}++//attribute: void * btCollisionObjectFloatData->m_collisionShape+// attribute not supported: //attribute: void * btCollisionObjectFloatData->m_collisionShape+//attribute: int btCollisionObjectFloatData->m_companionId+void btCollisionObjectFloatData_m_companionId_set(void *c,int a) {+	::btCollisionObjectFloatData *o = (::btCollisionObjectFloatData*)c;+	o->m_companionId = a;+}+int btCollisionObjectFloatData_m_companionId_get(void *c) {+	::btCollisionObjectFloatData *o = (::btCollisionObjectFloatData*)c;+	return (int)(o->m_companionId);+}++//attribute: float btCollisionObjectFloatData->m_contactProcessingThreshold+void btCollisionObjectFloatData_m_contactProcessingThreshold_set(void *c,float a) {+	::btCollisionObjectFloatData *o = (::btCollisionObjectFloatData*)c;+	o->m_contactProcessingThreshold = a;+}+float btCollisionObjectFloatData_m_contactProcessingThreshold_get(void *c) {+	::btCollisionObjectFloatData *o = (::btCollisionObjectFloatData*)c;+	return (float)(o->m_contactProcessingThreshold);+}++//attribute: float btCollisionObjectFloatData->m_deactivationTime+void btCollisionObjectFloatData_m_deactivationTime_set(void *c,float a) {+	::btCollisionObjectFloatData *o = (::btCollisionObjectFloatData*)c;+	o->m_deactivationTime = a;+}+float btCollisionObjectFloatData_m_deactivationTime_get(void *c) {+	::btCollisionObjectFloatData *o = (::btCollisionObjectFloatData*)c;+	return (float)(o->m_deactivationTime);+}++//attribute: float btCollisionObjectFloatData->m_friction+void btCollisionObjectFloatData_m_friction_set(void *c,float a) {+	::btCollisionObjectFloatData *o = (::btCollisionObjectFloatData*)c;+	o->m_friction = a;+}+float btCollisionObjectFloatData_m_friction_get(void *c) {+	::btCollisionObjectFloatData *o = (::btCollisionObjectFloatData*)c;+	return (float)(o->m_friction);+}++//attribute: int btCollisionObjectFloatData->m_hasAnisotropicFriction+void btCollisionObjectFloatData_m_hasAnisotropicFriction_set(void *c,int a) {+	::btCollisionObjectFloatData *o = (::btCollisionObjectFloatData*)c;+	o->m_hasAnisotropicFriction = a;+}+int btCollisionObjectFloatData_m_hasAnisotropicFriction_get(void *c) {+	::btCollisionObjectFloatData *o = (::btCollisionObjectFloatData*)c;+	return (int)(o->m_hasAnisotropicFriction);+}++//attribute: float btCollisionObjectFloatData->m_hitFraction+void btCollisionObjectFloatData_m_hitFraction_set(void *c,float a) {+	::btCollisionObjectFloatData *o = (::btCollisionObjectFloatData*)c;+	o->m_hitFraction = a;+}+float btCollisionObjectFloatData_m_hitFraction_get(void *c) {+	::btCollisionObjectFloatData *o = (::btCollisionObjectFloatData*)c;+	return (float)(o->m_hitFraction);+}++//attribute: int btCollisionObjectFloatData->m_internalType+void btCollisionObjectFloatData_m_internalType_set(void *c,int a) {+	::btCollisionObjectFloatData *o = (::btCollisionObjectFloatData*)c;+	o->m_internalType = a;+}+int btCollisionObjectFloatData_m_internalType_get(void *c) {+	::btCollisionObjectFloatData *o = (::btCollisionObjectFloatData*)c;+	return (int)(o->m_internalType);+}++//attribute: ::btVector3FloatData btCollisionObjectFloatData->m_interpolationAngularVelocity+// attribute not supported: //attribute: ::btVector3FloatData btCollisionObjectFloatData->m_interpolationAngularVelocity+//attribute: ::btVector3FloatData btCollisionObjectFloatData->m_interpolationLinearVelocity+// attribute not supported: //attribute: ::btVector3FloatData btCollisionObjectFloatData->m_interpolationLinearVelocity+//attribute: ::btTransformFloatData btCollisionObjectFloatData->m_interpolationWorldTransform+// attribute not supported: //attribute: ::btTransformFloatData btCollisionObjectFloatData->m_interpolationWorldTransform+//attribute: int btCollisionObjectFloatData->m_islandTag1+void btCollisionObjectFloatData_m_islandTag1_set(void *c,int a) {+	::btCollisionObjectFloatData *o = (::btCollisionObjectFloatData*)c;+	o->m_islandTag1 = a;+}+int btCollisionObjectFloatData_m_islandTag1_get(void *c) {+	::btCollisionObjectFloatData *o = (::btCollisionObjectFloatData*)c;+	return (int)(o->m_islandTag1);+}++//attribute: char * btCollisionObjectFloatData->m_name+void btCollisionObjectFloatData_m_name_set(void *c,char * a) {+	::btCollisionObjectFloatData *o = (::btCollisionObjectFloatData*)c;+	o->m_name = a;+}+char * btCollisionObjectFloatData_m_name_get(void *c) {+	::btCollisionObjectFloatData *o = (::btCollisionObjectFloatData*)c;+	return (char *)(o->m_name);+}++//attribute: float btCollisionObjectFloatData->m_restitution+void btCollisionObjectFloatData_m_restitution_set(void *c,float a) {+	::btCollisionObjectFloatData *o = (::btCollisionObjectFloatData*)c;+	o->m_restitution = a;+}+float btCollisionObjectFloatData_m_restitution_get(void *c) {+	::btCollisionObjectFloatData *o = (::btCollisionObjectFloatData*)c;+	return (float)(o->m_restitution);+}++//attribute: ::btCollisionShapeData * btCollisionObjectFloatData->m_rootCollisionShape+void btCollisionObjectFloatData_m_rootCollisionShape_set(void *c,void* a) {+	::btCollisionObjectFloatData *o = (::btCollisionObjectFloatData*)c;+	::btCollisionShapeData * ta = (::btCollisionShapeData *)a;+	o->m_rootCollisionShape = ta;+}+// attriibute getter not supported: //attribute: ::btCollisionShapeData * btCollisionObjectFloatData->m_rootCollisionShape+//attribute: ::btTransformFloatData btCollisionObjectFloatData->m_worldTransform+// attribute not supported: //attribute: ::btTransformFloatData btCollisionObjectFloatData->m_worldTransform++// ::btCollisionWorld+//constructor: btCollisionWorld  ( ::btCollisionWorld::* )( ::btDispatcher *,::btBroadphaseInterface *,::btCollisionConfiguration * ) +void* btCollisionWorld_new(void* p0,void* p1,void* p2) {+	::btCollisionWorld *o = 0;+	 void *mem = 0;+	::btDispatcher * tp0 = (::btDispatcher *)p0;+	::btBroadphaseInterface * tp1 = (::btBroadphaseInterface *)p1;+	::btCollisionConfiguration * tp2 = (::btCollisionConfiguration *)p2;+	mem = btAlignedAlloc(sizeof(::btCollisionWorld),16);+	o = new (mem)::btCollisionWorld(tp0,tp1,tp2);+	return (void*)o;+}+void btCollisionWorld_free(void *c) {+	::btCollisionWorld *o = (::btCollisionWorld*)c;+	delete o;+}+//method: setBroadphase void ( ::btCollisionWorld::* )( ::btBroadphaseInterface * ) +void btCollisionWorld_setBroadphase(void *c,void* p0) {+	::btCollisionWorld *o = (::btCollisionWorld*)c;+	::btBroadphaseInterface * tp0 = (::btBroadphaseInterface *)p0;+	o->setBroadphase(tp0);+}+//method: serialize void ( ::btCollisionWorld::* )( ::btSerializer * ) +void btCollisionWorld_serialize(void *c,void* p0) {+	::btCollisionWorld *o = (::btCollisionWorld*)c;+	::btSerializer * tp0 = (::btSerializer *)p0;+	o->serialize(tp0);+}+//method: getDispatcher ::btDispatcher * ( ::btCollisionWorld::* )(  ) +void* btCollisionWorld_getDispatcher(void *c) {+	::btCollisionWorld *o = (::btCollisionWorld*)c;+	void* retVal = (void*) o->getDispatcher();+	return retVal;+}+//method: getDispatcher ::btDispatcher * ( ::btCollisionWorld::* )(  ) +void* btCollisionWorld_getDispatcher0(void *c) {+	::btCollisionWorld *o = (::btCollisionWorld*)c;+	void* retVal = (void*) o->getDispatcher();+	return retVal;+}+//method: getDispatcher ::btDispatcher const * ( ::btCollisionWorld::* )(  ) const+void* btCollisionWorld_getDispatcher1(void *c) {+	::btCollisionWorld *o = (::btCollisionWorld*)c;+	void* retVal = (void*) o->getDispatcher();+	return retVal;+}+//method: getDispatchInfo ::btDispatcherInfo & ( ::btCollisionWorld::* )(  ) +void* btCollisionWorld_getDispatchInfo(void *c) {+	::btCollisionWorld *o = (::btCollisionWorld*)c;+	void* retVal = (void*) &(o->getDispatchInfo());+	return retVal;+}+//method: getDispatchInfo ::btDispatcherInfo & ( ::btCollisionWorld::* )(  ) +void* btCollisionWorld_getDispatchInfo0(void *c) {+	::btCollisionWorld *o = (::btCollisionWorld*)c;+	void* retVal = (void*) &(o->getDispatchInfo());+	return retVal;+}+//method: getDispatchInfo ::btDispatcherInfo const & ( ::btCollisionWorld::* )(  ) const+void* btCollisionWorld_getDispatchInfo1(void *c) {+	::btCollisionWorld *o = (::btCollisionWorld*)c;+	void* retVal = (void*) &(o->getDispatchInfo());+	return retVal;+}+//method: getDebugDrawer ::btIDebugDraw * ( ::btCollisionWorld::* )(  ) +void* btCollisionWorld_getDebugDrawer(void *c) {+	::btCollisionWorld *o = (::btCollisionWorld*)c;+	void* retVal = (void*) o->getDebugDrawer();+	return retVal;+}+//method: performDiscreteCollisionDetection void ( ::btCollisionWorld::* )(  ) +void btCollisionWorld_performDiscreteCollisionDetection(void *c) {+	::btCollisionWorld *o = (::btCollisionWorld*)c;+	o->performDiscreteCollisionDetection();+}+//not supported method: getCollisionObjectArray ::btCollisionObjectArray & ( ::btCollisionWorld::* )(  ) +//not supported method: getCollisionObjectArray ::btCollisionObjectArray & ( ::btCollisionWorld::* )(  ) +//not supported method: getCollisionObjectArray ::btCollisionObjectArray const & ( ::btCollisionWorld::* )(  ) const+//method: debugDrawObject void ( ::btCollisionWorld::* )( ::btTransform const &,::btCollisionShape const *,::btVector3 const & ) +void btCollisionWorld_debugDrawObject(void *c,float* p0,void* p1,float* p2) {+	::btCollisionWorld *o = (::btCollisionWorld*)c;+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	::btCollisionShape const * tp1 = (::btCollisionShape const *)p1;+	btVector3 tp2(p2[0],p2[1],p2[2]);+	o->debugDrawObject(tp0,tp1,tp2);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p2[0]=tp2.m_floats[0];p2[1]=tp2.m_floats[1];p2[2]=tp2.m_floats[2];+}+//method: rayTest void ( ::btCollisionWorld::* )( ::btVector3 const &,::btVector3 const &,::btCollisionWorld::RayResultCallback & ) const+void btCollisionWorld_rayTest(void *c,float* p0,float* p1,void* p2) {+	::btCollisionWorld *o = (::btCollisionWorld*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	::btCollisionWorld::RayResultCallback & tp2 = *(::btCollisionWorld::RayResultCallback *)p2;+	o->rayTest(tp0,tp1,tp2);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: addCollisionObject void ( ::btCollisionWorld::* )( ::btCollisionObject *,short int,short int ) +void btCollisionWorld_addCollisionObject(void *c,void* p0,short int p1,short int p2) {+	::btCollisionWorld *o = (::btCollisionWorld*)c;+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	o->addCollisionObject(tp0,p1,p2);+}+//method: setForceUpdateAllAabbs void ( ::btCollisionWorld::* )( bool ) +void btCollisionWorld_setForceUpdateAllAabbs(void *c,int p0) {+	::btCollisionWorld *o = (::btCollisionWorld*)c;+	o->setForceUpdateAllAabbs(p0);+}+//method: contactTest void ( ::btCollisionWorld::* )( ::btCollisionObject *,::btCollisionWorld::ContactResultCallback & ) +void btCollisionWorld_contactTest(void *c,void* p0,void* p1) {+	::btCollisionWorld *o = (::btCollisionWorld*)c;+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	::btCollisionWorld::ContactResultCallback & tp1 = *(::btCollisionWorld::ContactResultCallback *)p1;+	o->contactTest(tp0,tp1);+}+//method: getForceUpdateAllAabbs bool ( ::btCollisionWorld::* )(  ) const+int btCollisionWorld_getForceUpdateAllAabbs(void *c) {+	::btCollisionWorld *o = (::btCollisionWorld*)c;+	int retVal = (int)o->getForceUpdateAllAabbs();+	return retVal;+}+//method: updateAabbs void ( ::btCollisionWorld::* )(  ) +void btCollisionWorld_updateAabbs(void *c) {+	::btCollisionWorld *o = (::btCollisionWorld*)c;+	o->updateAabbs();+}+//method: setDebugDrawer void ( ::btCollisionWorld::* )( ::btIDebugDraw * ) +void btCollisionWorld_setDebugDrawer(void *c,void* p0) {+	::btCollisionWorld *o = (::btCollisionWorld*)c;+	::btIDebugDraw * tp0 = (::btIDebugDraw *)p0;+	o->setDebugDrawer(tp0);+}+//method: debugDrawWorld void ( ::btCollisionWorld::* )(  ) +void btCollisionWorld_debugDrawWorld(void *c) {+	::btCollisionWorld *o = (::btCollisionWorld*)c;+	o->debugDrawWorld();+}+//method: convexSweepTest void ( ::btCollisionWorld::* )( ::btConvexShape const *,::btTransform const &,::btTransform const &,::btCollisionWorld::ConvexResultCallback &,::btScalar ) const+void btCollisionWorld_convexSweepTest(void *c,void* p0,float* p1,float* p2,void* p3,float p4) {+	::btCollisionWorld *o = (::btCollisionWorld*)c;+	::btConvexShape const * tp0 = (::btConvexShape const *)p0;+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	btMatrix3x3 mtp2(p2[0],p2[1],p2[2],p2[3],p2[4],p2[5],p2[6],p2[7],p2[8]);+	btVector3 vtp2(p2[9],p2[10],p2[11]);+	btTransform tp2(mtp2,vtp2);+	::btCollisionWorld::ConvexResultCallback & tp3 = *(::btCollisionWorld::ConvexResultCallback *)p3;+	o->convexSweepTest(tp0,tp1,tp2,tp3,p4);+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+	p2[0]=tp2.getBasis().getRow(0).m_floats[0];p2[1]=tp2.getBasis().getRow(0).m_floats[1];p2[2]=tp2.getBasis().getRow(0).m_floats[2];p2[3]=tp2.getBasis().getRow(1).m_floats[0];p2[4]=tp2.getBasis().getRow(1).m_floats[1];p2[5]=tp2.getBasis().getRow(1).m_floats[2];p2[6]=tp2.getBasis().getRow(2).m_floats[0];p2[7]=tp2.getBasis().getRow(2).m_floats[1];p2[8]=tp2.getBasis().getRow(2).m_floats[2];+	p2[9]=tp2.getOrigin().m_floats[0];p2[10]=tp2.getOrigin().m_floats[1];p2[11]=tp2.getOrigin().m_floats[2];+}+//method: getNumCollisionObjects int ( ::btCollisionWorld::* )(  ) const+int btCollisionWorld_getNumCollisionObjects(void *c) {+	::btCollisionWorld *o = (::btCollisionWorld*)c;+	int retVal = (int)o->getNumCollisionObjects();+	return retVal;+}+//method: contactPairTest void ( ::btCollisionWorld::* )( ::btCollisionObject *,::btCollisionObject *,::btCollisionWorld::ContactResultCallback & ) +void btCollisionWorld_contactPairTest(void *c,void* p0,void* p1,void* p2) {+	::btCollisionWorld *o = (::btCollisionWorld*)c;+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	::btCollisionObject * tp1 = (::btCollisionObject *)p1;+	::btCollisionWorld::ContactResultCallback & tp2 = *(::btCollisionWorld::ContactResultCallback *)p2;+	o->contactPairTest(tp0,tp1,tp2);+}+//method: getBroadphase ::btBroadphaseInterface const * ( ::btCollisionWorld::* )(  ) const+void* btCollisionWorld_getBroadphase(void *c) {+	::btCollisionWorld *o = (::btCollisionWorld*)c;+	void* retVal = (void*) o->getBroadphase();+	return retVal;+}+//method: getBroadphase ::btBroadphaseInterface const * ( ::btCollisionWorld::* )(  ) const+void* btCollisionWorld_getBroadphase0(void *c) {+	::btCollisionWorld *o = (::btCollisionWorld*)c;+	void* retVal = (void*) o->getBroadphase();+	return retVal;+}+//method: getBroadphase ::btBroadphaseInterface * ( ::btCollisionWorld::* )(  ) +void* btCollisionWorld_getBroadphase1(void *c) {+	::btCollisionWorld *o = (::btCollisionWorld*)c;+	void* retVal = (void*) o->getBroadphase();+	return retVal;+}+//method: rayTestSingle void (*)( ::btTransform const &,::btTransform const &,::btCollisionObject *,::btCollisionShape const *,::btTransform const &,::btCollisionWorld::RayResultCallback & )+void btCollisionWorld_rayTestSingle(float* p0,float* p1,void* p2,void* p3,float* p4,void* p5) {+	btMatrix3x3 mtp0(p0[0],p0[1],p0[2],p0[3],p0[4],p0[5],p0[6],p0[7],p0[8]);+	btVector3 vtp0(p0[9],p0[10],p0[11]);+	btTransform tp0(mtp0,vtp0);+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	::btCollisionObject * tp2 = (::btCollisionObject *)p2;+	::btCollisionShape const * tp3 = (::btCollisionShape const *)p3;+	btMatrix3x3 mtp4(p4[0],p4[1],p4[2],p4[3],p4[4],p4[5],p4[6],p4[7],p4[8]);+	btVector3 vtp4(p4[9],p4[10],p4[11]);+	btTransform tp4(mtp4,vtp4);+	::btCollisionWorld::RayResultCallback & tp5 = *(::btCollisionWorld::RayResultCallback *)p5;+	::btCollisionWorld::rayTestSingle(tp0,tp1,tp2,tp3,tp4,tp5);+	p0[0]=tp0.getBasis().getRow(0).m_floats[0];p0[1]=tp0.getBasis().getRow(0).m_floats[1];p0[2]=tp0.getBasis().getRow(0).m_floats[2];p0[3]=tp0.getBasis().getRow(1).m_floats[0];p0[4]=tp0.getBasis().getRow(1).m_floats[1];p0[5]=tp0.getBasis().getRow(1).m_floats[2];p0[6]=tp0.getBasis().getRow(2).m_floats[0];p0[7]=tp0.getBasis().getRow(2).m_floats[1];p0[8]=tp0.getBasis().getRow(2).m_floats[2];+	p0[9]=tp0.getOrigin().m_floats[0];p0[10]=tp0.getOrigin().m_floats[1];p0[11]=tp0.getOrigin().m_floats[2];+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+	p4[0]=tp4.getBasis().getRow(0).m_floats[0];p4[1]=tp4.getBasis().getRow(0).m_floats[1];p4[2]=tp4.getBasis().getRow(0).m_floats[2];p4[3]=tp4.getBasis().getRow(1).m_floats[0];p4[4]=tp4.getBasis().getRow(1).m_floats[1];p4[5]=tp4.getBasis().getRow(1).m_floats[2];p4[6]=tp4.getBasis().getRow(2).m_floats[0];p4[7]=tp4.getBasis().getRow(2).m_floats[1];p4[8]=tp4.getBasis().getRow(2).m_floats[2];+	p4[9]=tp4.getOrigin().m_floats[0];p4[10]=tp4.getOrigin().m_floats[1];p4[11]=tp4.getOrigin().m_floats[2];+}+//method: objectQuerySingle void (*)( ::btConvexShape const *,::btTransform const &,::btTransform const &,::btCollisionObject *,::btCollisionShape const *,::btTransform const &,::btCollisionWorld::ConvexResultCallback &,::btScalar )+void btCollisionWorld_objectQuerySingle(void* p0,float* p1,float* p2,void* p3,void* p4,float* p5,void* p6,float p7) {+	::btConvexShape const * tp0 = (::btConvexShape const *)p0;+	btMatrix3x3 mtp1(p1[0],p1[1],p1[2],p1[3],p1[4],p1[5],p1[6],p1[7],p1[8]);+	btVector3 vtp1(p1[9],p1[10],p1[11]);+	btTransform tp1(mtp1,vtp1);+	btMatrix3x3 mtp2(p2[0],p2[1],p2[2],p2[3],p2[4],p2[5],p2[6],p2[7],p2[8]);+	btVector3 vtp2(p2[9],p2[10],p2[11]);+	btTransform tp2(mtp2,vtp2);+	::btCollisionObject * tp3 = (::btCollisionObject *)p3;+	::btCollisionShape const * tp4 = (::btCollisionShape const *)p4;+	btMatrix3x3 mtp5(p5[0],p5[1],p5[2],p5[3],p5[4],p5[5],p5[6],p5[7],p5[8]);+	btVector3 vtp5(p5[9],p5[10],p5[11]);+	btTransform tp5(mtp5,vtp5);+	::btCollisionWorld::ConvexResultCallback & tp6 = *(::btCollisionWorld::ConvexResultCallback *)p6;+	::btCollisionWorld::objectQuerySingle(tp0,tp1,tp2,tp3,tp4,tp5,tp6,p7);+	p1[0]=tp1.getBasis().getRow(0).m_floats[0];p1[1]=tp1.getBasis().getRow(0).m_floats[1];p1[2]=tp1.getBasis().getRow(0).m_floats[2];p1[3]=tp1.getBasis().getRow(1).m_floats[0];p1[4]=tp1.getBasis().getRow(1).m_floats[1];p1[5]=tp1.getBasis().getRow(1).m_floats[2];p1[6]=tp1.getBasis().getRow(2).m_floats[0];p1[7]=tp1.getBasis().getRow(2).m_floats[1];p1[8]=tp1.getBasis().getRow(2).m_floats[2];+	p1[9]=tp1.getOrigin().m_floats[0];p1[10]=tp1.getOrigin().m_floats[1];p1[11]=tp1.getOrigin().m_floats[2];+	p2[0]=tp2.getBasis().getRow(0).m_floats[0];p2[1]=tp2.getBasis().getRow(0).m_floats[1];p2[2]=tp2.getBasis().getRow(0).m_floats[2];p2[3]=tp2.getBasis().getRow(1).m_floats[0];p2[4]=tp2.getBasis().getRow(1).m_floats[1];p2[5]=tp2.getBasis().getRow(1).m_floats[2];p2[6]=tp2.getBasis().getRow(2).m_floats[0];p2[7]=tp2.getBasis().getRow(2).m_floats[1];p2[8]=tp2.getBasis().getRow(2).m_floats[2];+	p2[9]=tp2.getOrigin().m_floats[0];p2[10]=tp2.getOrigin().m_floats[1];p2[11]=tp2.getOrigin().m_floats[2];+	p5[0]=tp5.getBasis().getRow(0).m_floats[0];p5[1]=tp5.getBasis().getRow(0).m_floats[1];p5[2]=tp5.getBasis().getRow(0).m_floats[2];p5[3]=tp5.getBasis().getRow(1).m_floats[0];p5[4]=tp5.getBasis().getRow(1).m_floats[1];p5[5]=tp5.getBasis().getRow(1).m_floats[2];p5[6]=tp5.getBasis().getRow(2).m_floats[0];p5[7]=tp5.getBasis().getRow(2).m_floats[1];p5[8]=tp5.getBasis().getRow(2).m_floats[2];+	p5[9]=tp5.getOrigin().m_floats[0];p5[10]=tp5.getOrigin().m_floats[1];p5[11]=tp5.getOrigin().m_floats[2];+}+//method: updateSingleAabb void ( ::btCollisionWorld::* )( ::btCollisionObject * ) +void btCollisionWorld_updateSingleAabb(void *c,void* p0) {+	::btCollisionWorld *o = (::btCollisionWorld*)c;+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	o->updateSingleAabb(tp0);+}+//method: getPairCache ::btOverlappingPairCache * ( ::btCollisionWorld::* )(  ) +void* btCollisionWorld_getPairCache(void *c) {+	::btCollisionWorld *o = (::btCollisionWorld*)c;+	void* retVal = (void*) o->getPairCache();+	return retVal;+}+//method: removeCollisionObject void ( ::btCollisionWorld::* )( ::btCollisionObject * ) +void btCollisionWorld_removeCollisionObject(void *c,void* p0) {+	::btCollisionWorld *o = (::btCollisionWorld*)c;+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	o->removeCollisionObject(tp0);+}++// ::btConvexConvexAlgorithm+//not supported constructor: btConvexConvexAlgorithm  ( ::btConvexConvexAlgorithm::* )( ::btPersistentManifold *,::btCollisionAlgorithmConstructionInfo const &,::btCollisionObject *,::btCollisionObject *,::btVoronoiSimplexSolver *,::btConvexPenetrationDepthSolver *,int,int ) +void btConvexConvexAlgorithm_free(void *c) {+	::btConvexConvexAlgorithm *o = (::btConvexConvexAlgorithm*)c;+	delete o;+}+//not supported method: getAllContactManifolds void ( ::btConvexConvexAlgorithm::* )( ::btManifoldArray & ) +//method: calculateTimeOfImpact ::btScalar ( ::btConvexConvexAlgorithm::* )( ::btCollisionObject *,::btCollisionObject *,::btDispatcherInfo const &,::btManifoldResult * ) +float btConvexConvexAlgorithm_calculateTimeOfImpact(void *c,void* p0,void* p1,void* p2,void* p3) {+	::btConvexConvexAlgorithm *o = (::btConvexConvexAlgorithm*)c;+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	::btCollisionObject * tp1 = (::btCollisionObject *)p1;+	::btDispatcherInfo const & tp2 = *(::btDispatcherInfo const *)p2;+	::btManifoldResult * tp3 = (::btManifoldResult *)p3;+	float retVal = (float)o->calculateTimeOfImpact(tp0,tp1,tp2,tp3);+	return retVal;+}+//method: setLowLevelOfDetail void ( ::btConvexConvexAlgorithm::* )( bool ) +void btConvexConvexAlgorithm_setLowLevelOfDetail(void *c,int p0) {+	::btConvexConvexAlgorithm *o = (::btConvexConvexAlgorithm*)c;+	o->setLowLevelOfDetail(p0);+}+//method: processCollision void ( ::btConvexConvexAlgorithm::* )( ::btCollisionObject *,::btCollisionObject *,::btDispatcherInfo const &,::btManifoldResult * ) +void btConvexConvexAlgorithm_processCollision(void *c,void* p0,void* p1,void* p2,void* p3) {+	::btConvexConvexAlgorithm *o = (::btConvexConvexAlgorithm*)c;+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	::btCollisionObject * tp1 = (::btCollisionObject *)p1;+	::btDispatcherInfo const & tp2 = *(::btDispatcherInfo const *)p2;+	::btManifoldResult * tp3 = (::btManifoldResult *)p3;+	o->processCollision(tp0,tp1,tp2,tp3);+}+//method: getManifold ::btPersistentManifold const * ( ::btConvexConvexAlgorithm::* )(  ) +void* btConvexConvexAlgorithm_getManifold(void *c) {+	::btConvexConvexAlgorithm *o = (::btConvexConvexAlgorithm*)c;+	void* retVal = (void*) o->getManifold();+	return retVal;+}++// ::btDefaultCollisionConfiguration+//constructor: btDefaultCollisionConfiguration  ( ::btDefaultCollisionConfiguration::* )( ::btDefaultCollisionConstructionInfo const & ) +void* btDefaultCollisionConfiguration_new(void* p0) {+	::btDefaultCollisionConfiguration *o = 0;+	 void *mem = 0;+	::btDefaultCollisionConstructionInfo const & tp0 = *(::btDefaultCollisionConstructionInfo const *)p0;+	mem = btAlignedAlloc(sizeof(::btDefaultCollisionConfiguration),16);+	o = new (mem)::btDefaultCollisionConfiguration(tp0);+	return (void*)o;+}+void btDefaultCollisionConfiguration_free(void *c) {+	::btDefaultCollisionConfiguration *o = (::btDefaultCollisionConfiguration*)c;+	delete o;+}+//method: getStackAllocator ::btStackAlloc * ( ::btDefaultCollisionConfiguration::* )(  ) +void* btDefaultCollisionConfiguration_getStackAllocator(void *c) {+	::btDefaultCollisionConfiguration *o = (::btDefaultCollisionConfiguration*)c;+	void* retVal = (void*) o->getStackAllocator();+	return retVal;+}+//not supported method: getPersistentManifoldPool ::btPoolAllocator * ( ::btDefaultCollisionConfiguration::* )(  ) +//method: getSimplexSolver ::btVoronoiSimplexSolver * ( ::btDefaultCollisionConfiguration::* )(  ) +void* btDefaultCollisionConfiguration_getSimplexSolver(void *c) {+	::btDefaultCollisionConfiguration *o = (::btDefaultCollisionConfiguration*)c;+	void* retVal = (void*) o->getSimplexSolver();+	return retVal;+}+//method: setConvexConvexMultipointIterations void ( ::btDefaultCollisionConfiguration::* )( int,int ) +void btDefaultCollisionConfiguration_setConvexConvexMultipointIterations(void *c,int p0,int p1) {+	::btDefaultCollisionConfiguration *o = (::btDefaultCollisionConfiguration*)c;+	o->setConvexConvexMultipointIterations(p0,p1);+}+//not supported method: getCollisionAlgorithmPool ::btPoolAllocator * ( ::btDefaultCollisionConfiguration::* )(  ) +//method: getCollisionAlgorithmCreateFunc ::btCollisionAlgorithmCreateFunc * ( ::btDefaultCollisionConfiguration::* )( int,int ) +void* btDefaultCollisionConfiguration_getCollisionAlgorithmCreateFunc(void *c,int p0,int p1) {+	::btDefaultCollisionConfiguration *o = (::btDefaultCollisionConfiguration*)c;+	void* retVal = (void*) o->getCollisionAlgorithmCreateFunc(p0,p1);+	return retVal;+}++// ::btDefaultCollisionConstructionInfo+//constructor: btDefaultCollisionConstructionInfo  ( ::btDefaultCollisionConstructionInfo::* )(  ) +void* btDefaultCollisionConstructionInfo_new() {+	::btDefaultCollisionConstructionInfo *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btDefaultCollisionConstructionInfo),16);+	o = new (mem)::btDefaultCollisionConstructionInfo();+	return (void*)o;+}+void btDefaultCollisionConstructionInfo_free(void *c) {+	::btDefaultCollisionConstructionInfo *o = (::btDefaultCollisionConstructionInfo*)c;+	delete o;+}+//attribute: ::btPoolAllocator * btDefaultCollisionConstructionInfo->m_collisionAlgorithmPool+// attribute not supported: //attribute: ::btPoolAllocator * btDefaultCollisionConstructionInfo->m_collisionAlgorithmPool+//attribute: int btDefaultCollisionConstructionInfo->m_customCollisionAlgorithmMaxElementSize+void btDefaultCollisionConstructionInfo_m_customCollisionAlgorithmMaxElementSize_set(void *c,int a) {+	::btDefaultCollisionConstructionInfo *o = (::btDefaultCollisionConstructionInfo*)c;+	o->m_customCollisionAlgorithmMaxElementSize = a;+}+int btDefaultCollisionConstructionInfo_m_customCollisionAlgorithmMaxElementSize_get(void *c) {+	::btDefaultCollisionConstructionInfo *o = (::btDefaultCollisionConstructionInfo*)c;+	return (int)(o->m_customCollisionAlgorithmMaxElementSize);+}++//attribute: int btDefaultCollisionConstructionInfo->m_defaultMaxCollisionAlgorithmPoolSize+void btDefaultCollisionConstructionInfo_m_defaultMaxCollisionAlgorithmPoolSize_set(void *c,int a) {+	::btDefaultCollisionConstructionInfo *o = (::btDefaultCollisionConstructionInfo*)c;+	o->m_defaultMaxCollisionAlgorithmPoolSize = a;+}+int btDefaultCollisionConstructionInfo_m_defaultMaxCollisionAlgorithmPoolSize_get(void *c) {+	::btDefaultCollisionConstructionInfo *o = (::btDefaultCollisionConstructionInfo*)c;+	return (int)(o->m_defaultMaxCollisionAlgorithmPoolSize);+}++//attribute: int btDefaultCollisionConstructionInfo->m_defaultMaxPersistentManifoldPoolSize+void btDefaultCollisionConstructionInfo_m_defaultMaxPersistentManifoldPoolSize_set(void *c,int a) {+	::btDefaultCollisionConstructionInfo *o = (::btDefaultCollisionConstructionInfo*)c;+	o->m_defaultMaxPersistentManifoldPoolSize = a;+}+int btDefaultCollisionConstructionInfo_m_defaultMaxPersistentManifoldPoolSize_get(void *c) {+	::btDefaultCollisionConstructionInfo *o = (::btDefaultCollisionConstructionInfo*)c;+	return (int)(o->m_defaultMaxPersistentManifoldPoolSize);+}++//attribute: int btDefaultCollisionConstructionInfo->m_defaultStackAllocatorSize+void btDefaultCollisionConstructionInfo_m_defaultStackAllocatorSize_set(void *c,int a) {+	::btDefaultCollisionConstructionInfo *o = (::btDefaultCollisionConstructionInfo*)c;+	o->m_defaultStackAllocatorSize = a;+}+int btDefaultCollisionConstructionInfo_m_defaultStackAllocatorSize_get(void *c) {+	::btDefaultCollisionConstructionInfo *o = (::btDefaultCollisionConstructionInfo*)c;+	return (int)(o->m_defaultStackAllocatorSize);+}++//attribute: ::btPoolAllocator * btDefaultCollisionConstructionInfo->m_persistentManifoldPool+// attribute not supported: //attribute: ::btPoolAllocator * btDefaultCollisionConstructionInfo->m_persistentManifoldPool+//attribute: ::btStackAlloc * btDefaultCollisionConstructionInfo->m_stackAlloc+void btDefaultCollisionConstructionInfo_m_stackAlloc_set(void *c,void* a) {+	::btDefaultCollisionConstructionInfo *o = (::btDefaultCollisionConstructionInfo*)c;+	::btStackAlloc * ta = (::btStackAlloc *)a;+	o->m_stackAlloc = ta;+}+// attriibute getter not supported: //attribute: ::btStackAlloc * btDefaultCollisionConstructionInfo->m_stackAlloc+//attribute: int btDefaultCollisionConstructionInfo->m_useEpaPenetrationAlgorithm+void btDefaultCollisionConstructionInfo_m_useEpaPenetrationAlgorithm_set(void *c,int a) {+	::btDefaultCollisionConstructionInfo *o = (::btDefaultCollisionConstructionInfo*)c;+	o->m_useEpaPenetrationAlgorithm = a;+}+int btDefaultCollisionConstructionInfo_m_useEpaPenetrationAlgorithm_get(void *c) {+	::btDefaultCollisionConstructionInfo *o = (::btDefaultCollisionConstructionInfo*)c;+	return (int)(o->m_useEpaPenetrationAlgorithm);+}+++// ::btManifoldResult+//constructor: btManifoldResult  ( ::btManifoldResult::* )(  ) +void* btManifoldResult_new0() {+	::btManifoldResult *o = 0;+	 void *mem = 0;+	mem = btAlignedAlloc(sizeof(::btManifoldResult),16);+	o = new (mem)::btManifoldResult();+	return (void*)o;+}+//constructor: btManifoldResult  ( ::btManifoldResult::* )( ::btCollisionObject *,::btCollisionObject * ) +void* btManifoldResult_new1(void* p0,void* p1) {+	::btManifoldResult *o = 0;+	 void *mem = 0;+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	::btCollisionObject * tp1 = (::btCollisionObject *)p1;+	mem = btAlignedAlloc(sizeof(::btManifoldResult),16);+	o = new (mem)::btManifoldResult(tp0,tp1);+	return (void*)o;+}+void btManifoldResult_free(void *c) {+	::btManifoldResult *o = (::btManifoldResult*)c;+	delete o;+}+//method: getPersistentManifold ::btPersistentManifold const * ( ::btManifoldResult::* )(  ) const+void* btManifoldResult_getPersistentManifold(void *c) {+	::btManifoldResult *o = (::btManifoldResult*)c;+	void* retVal = (void*) o->getPersistentManifold();+	return retVal;+}+//method: getPersistentManifold ::btPersistentManifold const * ( ::btManifoldResult::* )(  ) const+void* btManifoldResult_getPersistentManifold0(void *c) {+	::btManifoldResult *o = (::btManifoldResult*)c;+	void* retVal = (void*) o->getPersistentManifold();+	return retVal;+}+//method: getPersistentManifold ::btPersistentManifold * ( ::btManifoldResult::* )(  ) +void* btManifoldResult_getPersistentManifold1(void *c) {+	::btManifoldResult *o = (::btManifoldResult*)c;+	void* retVal = (void*) o->getPersistentManifold();+	return retVal;+}+//method: getBody0Internal ::btCollisionObject const * ( ::btManifoldResult::* )(  ) const+void* btManifoldResult_getBody0Internal(void *c) {+	::btManifoldResult *o = (::btManifoldResult*)c;+	void* retVal = (void*) o->getBody0Internal();+	return retVal;+}+//method: addContactPoint void ( ::btManifoldResult::* )( ::btVector3 const &,::btVector3 const &,::btScalar ) +void btManifoldResult_addContactPoint(void *c,float* p0,float* p1,float p2) {+	::btManifoldResult *o = (::btManifoldResult*)c;+	btVector3 tp0(p0[0],p0[1],p0[2]);+	btVector3 tp1(p1[0],p1[1],p1[2]);+	o->addContactPoint(tp0,tp1,p2);+	p0[0]=tp0.m_floats[0];p0[1]=tp0.m_floats[1];p0[2]=tp0.m_floats[2];+	p1[0]=tp1.m_floats[0];p1[1]=tp1.m_floats[1];p1[2]=tp1.m_floats[2];+}+//method: getBody1Internal ::btCollisionObject const * ( ::btManifoldResult::* )(  ) const+void* btManifoldResult_getBody1Internal(void *c) {+	::btManifoldResult *o = (::btManifoldResult*)c;+	void* retVal = (void*) o->getBody1Internal();+	return retVal;+}+//method: setShapeIdentifiersB void ( ::btManifoldResult::* )( int,int ) +void btManifoldResult_setShapeIdentifiersB(void *c,int p0,int p1) {+	::btManifoldResult *o = (::btManifoldResult*)c;+	o->setShapeIdentifiersB(p0,p1);+}+//method: setShapeIdentifiersA void ( ::btManifoldResult::* )( int,int ) +void btManifoldResult_setShapeIdentifiersA(void *c,int p0,int p1) {+	::btManifoldResult *o = (::btManifoldResult*)c;+	o->setShapeIdentifiersA(p0,p1);+}+//method: refreshContactPoints void ( ::btManifoldResult::* )(  ) +void btManifoldResult_refreshContactPoints(void *c) {+	::btManifoldResult *o = (::btManifoldResult*)c;+	o->refreshContactPoints();+}+//method: setPersistentManifold void ( ::btManifoldResult::* )( ::btPersistentManifold * ) +void btManifoldResult_setPersistentManifold(void *c,void* p0) {+	::btManifoldResult *o = (::btManifoldResult*)c;+	::btPersistentManifold * tp0 = (::btPersistentManifold *)p0;+	o->setPersistentManifold(tp0);+}++// ::btSphereSphereCollisionAlgorithm+//constructor: btSphereSphereCollisionAlgorithm  ( ::btSphereSphereCollisionAlgorithm::* )( ::btPersistentManifold *,::btCollisionAlgorithmConstructionInfo const &,::btCollisionObject *,::btCollisionObject * ) +void* btSphereSphereCollisionAlgorithm_new0(void* p0,void* p1,void* p2,void* p3) {+	::btSphereSphereCollisionAlgorithm *o = 0;+	 void *mem = 0;+	::btPersistentManifold * tp0 = (::btPersistentManifold *)p0;+	::btCollisionAlgorithmConstructionInfo const & tp1 = *(::btCollisionAlgorithmConstructionInfo const *)p1;+	::btCollisionObject * tp2 = (::btCollisionObject *)p2;+	::btCollisionObject * tp3 = (::btCollisionObject *)p3;+	mem = btAlignedAlloc(sizeof(::btSphereSphereCollisionAlgorithm),16);+	o = new (mem)::btSphereSphereCollisionAlgorithm(tp0,tp1,tp2,tp3);+	return (void*)o;+}+//constructor: btSphereSphereCollisionAlgorithm  ( ::btSphereSphereCollisionAlgorithm::* )( ::btCollisionAlgorithmConstructionInfo const & ) +void* btSphereSphereCollisionAlgorithm_new1(void* p0) {+	::btSphereSphereCollisionAlgorithm *o = 0;+	 void *mem = 0;+	::btCollisionAlgorithmConstructionInfo const & tp0 = *(::btCollisionAlgorithmConstructionInfo const *)p0;+	mem = btAlignedAlloc(sizeof(::btSphereSphereCollisionAlgorithm),16);+	o = new (mem)::btSphereSphereCollisionAlgorithm(tp0);+	return (void*)o;+}+void btSphereSphereCollisionAlgorithm_free(void *c) {+	::btSphereSphereCollisionAlgorithm *o = (::btSphereSphereCollisionAlgorithm*)c;+	delete o;+}+//not supported method: getAllContactManifolds void ( ::btSphereSphereCollisionAlgorithm::* )( ::btManifoldArray & ) +//method: calculateTimeOfImpact ::btScalar ( ::btSphereSphereCollisionAlgorithm::* )( ::btCollisionObject *,::btCollisionObject *,::btDispatcherInfo const &,::btManifoldResult * ) +float btSphereSphereCollisionAlgorithm_calculateTimeOfImpact(void *c,void* p0,void* p1,void* p2,void* p3) {+	::btSphereSphereCollisionAlgorithm *o = (::btSphereSphereCollisionAlgorithm*)c;+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	::btCollisionObject * tp1 = (::btCollisionObject *)p1;+	::btDispatcherInfo const & tp2 = *(::btDispatcherInfo const *)p2;+	::btManifoldResult * tp3 = (::btManifoldResult *)p3;+	float retVal = (float)o->calculateTimeOfImpact(tp0,tp1,tp2,tp3);+	return retVal;+}+//method: processCollision void ( ::btSphereSphereCollisionAlgorithm::* )( ::btCollisionObject *,::btCollisionObject *,::btDispatcherInfo const &,::btManifoldResult * ) +void btSphereSphereCollisionAlgorithm_processCollision(void *c,void* p0,void* p1,void* p2,void* p3) {+	::btSphereSphereCollisionAlgorithm *o = (::btSphereSphereCollisionAlgorithm*)c;+	::btCollisionObject * tp0 = (::btCollisionObject *)p0;+	::btCollisionObject * tp1 = (::btCollisionObject *)p1;+	::btDispatcherInfo const & tp2 = *(::btDispatcherInfo const *)p2;+	::btManifoldResult * tp3 = (::btManifoldResult *)p3;+	o->processCollision(tp0,tp1,tp2,tp3);+}+
+ cbits/Bullet.h view
@@ -0,0 +1,4338 @@+#ifdef __cplusplus+extern "C" { +#endif+typedef void* O_btSoftBody_AJoint;+typedef void* O_btCollisionWorld_AllHitsRayResultCallback;+typedef void* O_btSoftBody_Anchor;+typedef void* O_bT_BOX_BOX_TRANSFORM_CACHE;+typedef void* O_bT_QUANTIZED_BVH_NODE;+typedef void* O_btSoftBody_Body;+typedef void* O_btSoftBody_CJoint;+typedef void* O_cProfileIterator;+typedef void* O_cProfileManager;+typedef void* O_cProfileNode;+typedef void* O_cProfileSample;+typedef void* O_btCollisionWorld_ClosestConvexResultCallback;+typedef void* O_btDiscreteCollisionDetectorInterface_ClosestPointInput;+typedef void* O_btCollisionWorld_ClosestRayResultCallback;+typedef void* O_btSoftBody_Cluster;+typedef void* O_btGImpactCompoundShape_CompoundPrimitiveManager;+typedef void* O_btSoftBody_Config;+typedef void* O_btCollisionWorld_ContactResultCallback;+typedef void* O_btCollisionWorld_ConvexResultCallback;+typedef void* O_btGImpactCollisionAlgorithm_CreateFunc;+typedef void* O_btSphereSphereCollisionAlgorithm_CreateFunc;+typedef void* O_btConvexConvexAlgorithm_CreateFunc;+typedef void* O_btSoftBody_Element;+typedef void* O_btSoftBody_Face;+typedef void* O_btSoftBody_Feature;+typedef void* O_gIM_BVH_DATA;+typedef void* O_gIM_BVH_DATA_ARRAY;+typedef void* O_gIM_BVH_TREE_NODE;+typedef void* O_gIM_BVH_TREE_NODE_ARRAY;+typedef void* O_gIM_PAIR;+typedef void* O_gIM_QUANTIZED_BVH_NODE_ARRAY;+typedef void* O_gIM_TRIANGLE_CONTACT;+typedef void* O_btDbvt_IClone;+typedef void* O_btDbvt_ICollide;+typedef void* O_btSoftBody_AJoint_IControl;+typedef void* O_btDbvt_IWriter;+typedef void* O_btSoftBody_ImplicitFn;+typedef void* O_btSoftBody_Impulse;+typedef void* O_btSoftBody_Joint;+typedef void* O_btSoftBody_LJoint;+typedef void* O_btSoftBody_Link;+typedef void* O_btCollisionWorld_LocalConvexResult;+typedef void* O_btCollisionWorld_LocalRayResult;+typedef void* O_btCollisionWorld_LocalShapeInfo;+typedef void* O_btSoftBody_Material;+typedef void* O_btSoftBody_Node;+typedef void* O_btSoftBody_Note;+typedef void* O_btSoftBody_Pose;+typedef void* O_btSoftBody_RContact;+typedef void* O_btSoftBody_RayFromToCaster;+typedef void* O_btCollisionWorld_RayResultCallback;+typedef void* O_btWheelInfo_RaycastInfo;+typedef void* O_btDiscreteCollisionDetectorInterface_Result;+typedef void* O_btSoftBody_SContact;+typedef void* O_btSoftBody_SolverState;+typedef void* O_btSoftBody_Joint_Specs;+typedef void* O_btSoftBody_LJoint_Specs;+typedef void* O_btSoftBody_AJoint_Specs;+typedef void* O_btSoftBody_Tetra;+typedef void* O_btGImpactMeshShapePart_TrimeshPrimitiveManager;+typedef void* O_bt32BitAxisSweep3;+typedef void* O_btAABB;+typedef void* O_btActionInterface;+typedef void* O_btActivatingCollisionAlgorithm;+typedef void* O_btAngularLimit;+typedef void* O_btAxisSweep3;+typedef void* O_btBU_Simplex1to4;+typedef void* O_btBlock;+typedef void* O_btBoxShape;+typedef void* O_btBroadphaseAabbCallback;+typedef void* O_btBroadphaseInterface;+typedef void* O_btBroadphasePair;+typedef void* O_btBroadphasePairSortPredicate;+typedef void* O_btBroadphaseProxy;+typedef void* O_btBroadphaseRayCallback;+typedef void* O_btBvhSubtreeInfo;+typedef void* O_btBvhSubtreeInfoData;+typedef void* O_btBvhTree;+typedef void* O_btBvhTriangleMeshShape;+typedef void* O_btCapsuleShape;+typedef void* O_btCapsuleShapeData;+typedef void* O_btCapsuleShapeX;+typedef void* O_btCapsuleShapeZ;+typedef void* O_btCharIndexTripletData;+typedef void* O_btChunk;+typedef void* O_btClock;+typedef void* O_btCollisionAlgorithm;+typedef void* O_btCollisionAlgorithmConstructionInfo;+typedef void* O_btCollisionAlgorithmCreateFunc;+typedef void* O_btCollisionConfiguration;+typedef void* O_btCollisionDispatcher;+typedef void* O_btCollisionObject;+typedef void* O_btCollisionObjectDoubleData;+typedef void* O_btCollisionObjectFloatData;+typedef void* O_btCollisionShape;+typedef void* O_btCollisionShapeData;+typedef void* O_btCollisionWorld;+typedef void* O_btCompoundShape;+typedef void* O_btCompoundShapeChild;+typedef void* O_btCompoundShapeChildData;+typedef void* O_btCompoundShapeData;+typedef void* O_btConcaveShape;+typedef void* O_btConeShape;+typedef void* O_btConeShapeX;+typedef void* O_btConeShapeZ;+typedef void* O_btConeTwistConstraint;+typedef void* O_btConeTwistConstraintData;+typedef void* O_btTypedConstraint_btConstraintInfo1;+typedef void* O_btTypedConstraint_btConstraintInfo2;+typedef void* O_btConstraintRow;+typedef void* O_btConstraintSetting;+typedef void* O_btConstraintSolver;+typedef void* O_btContactConstraint;+typedef void* O_btContactSolverInfo;+typedef void* O_btContactSolverInfoData;+typedef void* O_btContinuousDynamicsWorld;+typedef void* O_btConvexConvexAlgorithm;+typedef void* O_btConvexHullShape;+typedef void* O_btConvexHullShapeData;+typedef void* O_btConvexInternalAabbCachingShape;+typedef void* O_btConvexInternalShape;+typedef void* O_btConvexInternalShapeData;+typedef void* O_btConvexSeparatingDistanceUtil;+typedef void* O_btConvexShape;+typedef void* O_btConvexTriangleMeshShape;+typedef void* O_btCylinderShape;+typedef void* O_btCylinderShapeData;+typedef void* O_btCylinderShapeX;+typedef void* O_btCylinderShapeZ;+typedef void* O_btDbvt;+typedef void* O_btDbvtAabbMm;+typedef void* O_btDbvtBroadphase;+typedef void* O_btDbvtNode;+typedef void* O_btDbvtProxy;+typedef void* O_btDefaultCollisionConfiguration;+typedef void* O_btDefaultCollisionConstructionInfo;+typedef void* O_btDefaultMotionState;+typedef void* O_btDefaultSerializer;+typedef void* O_btDefaultVehicleRaycaster;+typedef void* O_btDiscreteCollisionDetectorInterface;+typedef void* O_btDiscreteDynamicsWorld;+typedef void* O_btDispatcher;+typedef void* O_btDispatcherInfo;+typedef void* O_btDynamicsWorld;+typedef void* O_btEmptyShape;+typedef void* O_btGImpactBvh;+typedef void* O_btGImpactCollisionAlgorithm;+typedef void* O_btGImpactCompoundShape;+typedef void* O_btGImpactMeshShape;+typedef void* O_btGImpactMeshShapeData;+typedef void* O_btGImpactMeshShapePart;+typedef void* O_btGImpactQuantizedBvh;+typedef void* O_btGImpactShapeInterface;+typedef void* O_btGLDebugDrawer;+typedef void* O_btGeneric6DofConstraint;+typedef void* O_btGeneric6DofConstraintData;+typedef void* O_btGeneric6DofSpringConstraint;+typedef void* O_btGeneric6DofSpringConstraintData;+typedef void* O_btGeometryUtil;+typedef void* O_btGjkEpaSolver2;+typedef void* O_btGjkPairDetector;+typedef void* O_btHashInt;+typedef void* O_btHashPtr;+typedef void* O_btHashString;+typedef void* O_btHashedOverlappingPairCache;+typedef void* O_btHinge2Constraint;+typedef void* O_btHingeConstraint;+typedef void* O_btHingeConstraintDoubleData;+typedef void* O_btHingeConstraintFloatData;+typedef void* O_btIDebugDraw;+typedef void* O_btIndexedMesh;+typedef void* O_btIntIndexData;+typedef void* O_btInternalTriangleIndexCallback;+typedef void* O_btJacobianEntry;+typedef void* O_btManifoldPoint;+typedef void* O_btManifoldResult;+typedef void* O_btMatrix3x3DoubleData;+typedef void* O_btMatrix3x3FloatData;+typedef void* O_btMeshPartData;+typedef void* O_btMotionState;+typedef void* O_btMultiSapBroadphase;+typedef void* O_btMultiSapBroadphase_btMultiSapProxy;+typedef void* O_btMultiSphereShape;+typedef void* O_btMultiSphereShapeData;+typedef void* O_btNodeOverlapCallback;+typedef void* O_btNullPairCache;+typedef void* O_btOptimizedBvh;+typedef void* O_btOptimizedBvhNode;+typedef void* O_btOptimizedBvhNodeDoubleData;+typedef void* O_btOptimizedBvhNodeFloatData;+typedef void* O_btOverlapCallback;+typedef void* O_btOverlapFilterCallback;+typedef void* O_btOverlappingPairCache;+typedef void* O_btOverlappingPairCallback;+typedef void* O_btPairSet;+typedef void* O_btPersistentManifold;+typedef void* O_btPoint2PointConstraint;+typedef void* O_btPoint2PointConstraintDoubleData;+typedef void* O_btPoint2PointConstraintFloatData;+typedef void* O_btPointerUid;+typedef void* O_btPolyhedralConvexAabbCachingShape;+typedef void* O_btPolyhedralConvexShape;+typedef void* O_btPositionAndRadius;+typedef void* O_btPrimitiveManagerBase;+typedef void* O_btPrimitiveTriangle;+typedef void* O_btQuadWord;+typedef void* O_btQuantizedBvh;+typedef void* O_btQuantizedBvhDoubleData;+typedef void* O_btQuantizedBvhFloatData;+typedef void* O_btQuantizedBvhNode;+typedef void* O_btQuantizedBvhNodeData;+typedef void* O_btQuantizedBvhTree;+typedef void* O_btRaycastVehicle;+typedef void* O_btRigidBody;+typedef void* O_btRigidBody_btRigidBodyConstructionInfo;+typedef void* O_btRigidBodyDoubleData;+typedef void* O_btRigidBodyFloatData;+typedef void* O_btRotationalLimitMotor;+typedef void* O_btScaledBvhTriangleMeshShape;+typedef void* O_btScaledTriangleMeshShapeData;+typedef void* O_btSequentialImpulseConstraintSolver;+typedef void* O_btSerializer;+typedef void* O_btShortIntIndexData;+typedef void* O_btShortIntIndexTripletData;+typedef void* O_btSimpleBroadphase;+typedef void* O_btSimpleBroadphaseProxy;+typedef void* O_btSimpleDynamicsWorld;+typedef void* O_btSliderConstraint;+typedef void* O_btSliderConstraintData;+typedef void* O_btSoftBody;+typedef void* O_btSoftBodyHelpers;+typedef void* O_btSoftBodyRigidBodyCollisionConfiguration;+typedef void* O_btSoftBodyWorldInfo;+typedef void* O_btSoftRigidDynamicsWorld;+typedef void* O_btSolverBodyObsolete;+typedef void* O_btSolverConstraint;+typedef void* O_btSortedOverlappingPairCache;+typedef void* O_btSphereShape;+typedef void* O_btSphereSphereCollisionAlgorithm;+typedef void* O_btStackAlloc;+typedef void* O_btStaticPlaneShape;+typedef void* O_btStaticPlaneShapeData;+typedef void* O_btStorageResult;+typedef void* O_btStridingMeshInterface;+typedef void* O_btStridingMeshInterfaceData;+typedef void* O_btSubSimplexClosestResult;+typedef void* O_btTetrahedronShapeEx;+typedef void* O_btTransformDoubleData;+typedef void* O_btTransformFloatData;+typedef void* O_btTransformUtil;+typedef void* O_btTranslationalLimitMotor;+typedef void* O_btTriangleCallback;+typedef void* O_btTriangleIndexVertexArray;+typedef void* O_btTriangleInfo;+typedef void* O_btTriangleInfoData;+typedef void* O_btTriangleInfoMap;+typedef void* O_btTriangleInfoMapData;+typedef void* O_btTriangleMesh;+typedef void* O_btTriangleMeshShape;+typedef void* O_btTriangleMeshShapeData;+typedef void* O_btTriangleShape;+typedef void* O_btTriangleShapeEx;+typedef void* O_btTypedConstraint;+typedef void* O_btTypedConstraintData;+typedef void* O_btTypedObject;+typedef void* O_btUniformScalingShape;+typedef void* O_btUniversalConstraint;+typedef void* O_btUsageBitfield;+typedef void* O_btVector3DoubleData;+typedef void* O_btVector3FloatData;+typedef void* O_btVehicleRaycaster;+typedef void* O_btVehicleRaycaster_btVehicleRaycasterResult;+typedef void* O_btRaycastVehicle_btVehicleTuning;+typedef void* O_btVoronoiSimplexSolver;+typedef void* O_btWheelInfo;+typedef void* O_btWheelInfoConstructionInfo;+typedef void* O_btSoftBody_eAeroModel;+typedef void* O_btSoftBody_eFeature;+typedef void* O_btSoftBody_ePSolver;+typedef void* O_btSoftBody_eSolverPresets;+typedef void* O_btSoftBody_Joint_eType;+typedef void* O_btSoftBody_eVSolver;+typedef void* O_btSoftBody_fCollision;+typedef void* O_fDrawFlags;+typedef void* O_btSoftBody_fMaterial;+typedef void* O_btSoftBody_sCti;+typedef void* O_btSoftBody_sMedium;+typedef void* O_btSoftBody_sRayCast;+typedef void* O_btGjkEpaSolver2_sResults;+typedef void* O_btDbvt_sStkCLN;+typedef void* O_btDbvt_sStkNN;+typedef void* O_btDbvt_sStkNP;+typedef void* O_btDbvt_sStkNPS;+void* btGLDebugDrawer_new(); //constructor: btGLDebugDrawer  ( ::btGLDebugDrawer::* )(  ) +void btGLDebugDrawer_free(void *c); void btGLDebugDrawer_draw3dText(void *c,float* p0,char const * p1); //method: draw3dText void ( ::btGLDebugDrawer::* )( ::btVector3 const &,char const * ) +void btGLDebugDrawer_drawTriangle(void *c,float* p0,float* p1,float* p2,float* p3,float p4); //method: drawTriangle void ( ::btGLDebugDrawer::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btScalar ) +void btGLDebugDrawer_drawBox(void *c,float* p0,float* p1,float* p2,float p3); //method: drawBox void ( ::btGLDebugDrawer::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btScalar ) +void btGLDebugDrawer_drawContactPoint(void *c,float* p0,float* p1,float p2,int p3,float* p4); //method: drawContactPoint void ( ::btGLDebugDrawer::* )( ::btVector3 const &,::btVector3 const &,::btScalar,int,::btVector3 const & ) +void btGLDebugDrawer_drawLine(void *c,float* p0,float* p1,float* p2,float* p3); //method: drawLine void ( ::btGLDebugDrawer::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void btGLDebugDrawer_drawLine0(void *c,float* p0,float* p1,float* p2,float* p3); //method: drawLine void ( ::btGLDebugDrawer::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void btGLDebugDrawer_drawLine1(void *c,float* p0,float* p1,float* p2); //method: drawLine void ( ::btGLDebugDrawer::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void btGLDebugDrawer_reportErrorWarning(void *c,char const * p0); //method: reportErrorWarning void ( ::btGLDebugDrawer::* )( char const * ) +int btGLDebugDrawer_getDebugMode(void *c); //method: getDebugMode int ( ::btGLDebugDrawer::* )(  ) const+void btGLDebugDrawer_setDebugMode(void *c,int p0); //method: setDebugMode void ( ::btGLDebugDrawer::* )( int ) +void btGLDebugDrawer_drawSphere(void *c,float* p0,float p1,float* p2); //method: drawSphere void ( ::btGLDebugDrawer::* )( ::btVector3 const &,::btScalar,::btVector3 const & ) +void* btSoftBody_AJoint_new(); //constructor: AJoint  ( ::btSoftBody::AJoint::* )(  ) +void btSoftBody_AJoint_free(void *c); void btSoftBody_AJoint_Terminate(void *c,float p0); //method: Terminate void ( ::btSoftBody::AJoint::* )( ::btScalar ) +//not supported method: Type ::btSoftBody::Joint::eType::_ ( ::btSoftBody::AJoint::* )(  ) const+void btSoftBody_AJoint_Solve(void *c,float p0,float p1); //method: Solve void ( ::btSoftBody::AJoint::* )( ::btScalar,::btScalar ) +void btSoftBody_AJoint_Prepare(void *c,float p0,int p1); //method: Prepare void ( ::btSoftBody::AJoint::* )( ::btScalar,int ) +// attribute not supported: //attribute: ::btVector3[2] btSoftBody_AJoint->m_axis+void btSoftBody_AJoint_m_icontrol_set(void *c,void* a); //attribute: ::btSoftBody::AJoint::IControl * btSoftBody_AJoint->m_icontrol+// attribute getter not supported: //attribute: ::btSoftBody::AJoint::IControl * btSoftBody_AJoint->m_icontrol+void* btSoftBody_Anchor_new(); //constructor: Anchor  ( ::btSoftBody::Anchor::* )(  ) +void btSoftBody_Anchor_free(void *c); void btSoftBody_Anchor_m_node_set(void *c,void* a); //attribute: ::btSoftBody::Node * btSoftBody_Anchor->m_node+// attribute getter not supported: //attribute: ::btSoftBody::Node * btSoftBody_Anchor->m_node+void btSoftBody_Anchor_m_local_set(void *c,float* a); //attribute: ::btVector3 btSoftBody_Anchor->m_local+void btSoftBody_Anchor_m_local_get(void *c,float* a);+void btSoftBody_Anchor_m_body_set(void *c,void* a); //attribute: ::btRigidBody * btSoftBody_Anchor->m_body+// attribute getter not supported: //attribute: ::btRigidBody * btSoftBody_Anchor->m_body+void btSoftBody_Anchor_m_influence_set(void *c,float a); //attribute: ::btScalar btSoftBody_Anchor->m_influence+float btSoftBody_Anchor_m_influence_get(void *c); //attribute: ::btScalar btSoftBody_Anchor->m_influence+void btSoftBody_Anchor_m_c0_set(void *c,float* a); //attribute: ::btMatrix3x3 btSoftBody_Anchor->m_c0+void btSoftBody_Anchor_m_c0_get(void *c,float* a);+void btSoftBody_Anchor_m_c1_set(void *c,float* a); //attribute: ::btVector3 btSoftBody_Anchor->m_c1+void btSoftBody_Anchor_m_c1_get(void *c,float* a);+void btSoftBody_Anchor_m_c2_set(void *c,float a); //attribute: ::btScalar btSoftBody_Anchor->m_c2+float btSoftBody_Anchor_m_c2_get(void *c); //attribute: ::btScalar btSoftBody_Anchor->m_c2+void* btSoftBody_Body_new0(); //constructor: Body  ( ::btSoftBody::Body::* )(  ) +void* btSoftBody_Body_new1(void* p0); //constructor: Body  ( ::btSoftBody::Body::* )( ::btSoftBody::Cluster * ) +void* btSoftBody_Body_new2(void* p0); //constructor: Body  ( ::btSoftBody::Body::* )( ::btCollisionObject * ) +void btSoftBody_Body_free(void *c); void btSoftBody_Body_invWorldInertia(void *c,float* ret); //method: invWorldInertia ::btMatrix3x3 const & ( ::btSoftBody::Body::* )(  ) const+void btSoftBody_Body_activate(void *c); //method: activate void ( ::btSoftBody::Body::* )(  ) const+void btSoftBody_Body_linearVelocity(void *c,float* ret); //method: linearVelocity ::btVector3 ( ::btSoftBody::Body::* )(  ) const+void btSoftBody_Body_applyVImpulse(void *c,float* p0,float* p1); //method: applyVImpulse void ( ::btSoftBody::Body::* )( ::btVector3 const &,::btVector3 const & ) const+void btSoftBody_Body_applyDImpulse(void *c,float* p0,float* p1); //method: applyDImpulse void ( ::btSoftBody::Body::* )( ::btVector3 const &,::btVector3 const & ) const+void btSoftBody_Body_applyDCImpulse(void *c,float* p0); //method: applyDCImpulse void ( ::btSoftBody::Body::* )( ::btVector3 const & ) const+void btSoftBody_Body_applyAImpulse(void *c,void* p0); //method: applyAImpulse void ( ::btSoftBody::Body::* )( ::btSoftBody::Impulse const & ) const+void btSoftBody_Body_angularVelocity(void *c,float* p0,float* ret); //method: angularVelocity ::btVector3 ( ::btSoftBody::Body::* )( ::btVector3 const & ) const+void btSoftBody_Body_angularVelocity0(void *c,float* p0,float* ret); //method: angularVelocity ::btVector3 ( ::btSoftBody::Body::* )( ::btVector3 const & ) const+void btSoftBody_Body_angularVelocity1(void *c,float* ret); //method: angularVelocity ::btVector3 ( ::btSoftBody::Body::* )(  ) const+void btSoftBody_Body_applyVAImpulse(void *c,float* p0); //method: applyVAImpulse void ( ::btSoftBody::Body::* )( ::btVector3 const & ) const+void btSoftBody_Body_applyImpulse(void *c,void* p0,float* p1); //method: applyImpulse void ( ::btSoftBody::Body::* )( ::btSoftBody::Impulse const &,::btVector3 const & ) const+void btSoftBody_Body_applyDAImpulse(void *c,float* p0); //method: applyDAImpulse void ( ::btSoftBody::Body::* )( ::btVector3 const & ) const+void btSoftBody_Body_velocity(void *c,float* p0,float* ret); //method: velocity ::btVector3 ( ::btSoftBody::Body::* )( ::btVector3 const & ) const+float btSoftBody_Body_invMass(void *c); //method: invMass ::btScalar ( ::btSoftBody::Body::* )(  ) const+void btSoftBody_Body_xform(void *c,float* ret); //method: xform ::btTransform const & ( ::btSoftBody::Body::* )(  ) const+void btSoftBody_Body_m_soft_set(void *c,void* a); //attribute: ::btSoftBody::Cluster * btSoftBody_Body->m_soft+// attribute getter not supported: //attribute: ::btSoftBody::Cluster * btSoftBody_Body->m_soft+void btSoftBody_Body_m_rigid_set(void *c,void* a); //attribute: ::btRigidBody * btSoftBody_Body->m_rigid+// attribute getter not supported: //attribute: ::btRigidBody * btSoftBody_Body->m_rigid+void btSoftBody_Body_m_collisionObject_set(void *c,void* a); //attribute: ::btCollisionObject * btSoftBody_Body->m_collisionObject+// attribute getter not supported: //attribute: ::btCollisionObject * btSoftBody_Body->m_collisionObject+void* btSoftBody_CJoint_new(); //constructor: CJoint  ( ::btSoftBody::CJoint::* )(  ) +void btSoftBody_CJoint_free(void *c); void btSoftBody_CJoint_Terminate(void *c,float p0); //method: Terminate void ( ::btSoftBody::CJoint::* )( ::btScalar ) +//not supported method: Type ::btSoftBody::Joint::eType::_ ( ::btSoftBody::CJoint::* )(  ) const+void btSoftBody_CJoint_Solve(void *c,float p0,float p1); //method: Solve void ( ::btSoftBody::CJoint::* )( ::btScalar,::btScalar ) +void btSoftBody_CJoint_Prepare(void *c,float p0,int p1); //method: Prepare void ( ::btSoftBody::CJoint::* )( ::btScalar,int ) +void btSoftBody_CJoint_m_life_set(void *c,int a); //attribute: int btSoftBody_CJoint->m_life+int btSoftBody_CJoint_m_life_get(void *c); //attribute: int btSoftBody_CJoint->m_life+void btSoftBody_CJoint_m_maxlife_set(void *c,int a); //attribute: int btSoftBody_CJoint->m_maxlife+int btSoftBody_CJoint_m_maxlife_get(void *c); //attribute: int btSoftBody_CJoint->m_maxlife+// attribute not supported: //attribute: ::btVector3[2] btSoftBody_CJoint->m_rpos+void btSoftBody_CJoint_m_normal_set(void *c,float* a); //attribute: ::btVector3 btSoftBody_CJoint->m_normal+void btSoftBody_CJoint_m_normal_get(void *c,float* a);+void btSoftBody_CJoint_m_friction_set(void *c,float a); //attribute: ::btScalar btSoftBody_CJoint->m_friction+float btSoftBody_CJoint_m_friction_get(void *c); //attribute: ::btScalar btSoftBody_CJoint->m_friction+void* btSoftBody_Cluster_new(); //constructor: Cluster  ( ::btSoftBody::Cluster::* )(  ) +void btSoftBody_Cluster_free(void *c); void btSoftBody_Cluster_m_adamping_set(void *c,float a); //attribute: ::btScalar btSoftBody_Cluster->m_adamping+float btSoftBody_Cluster_m_adamping_get(void *c); //attribute: ::btScalar btSoftBody_Cluster->m_adamping+void btSoftBody_Cluster_m_av_set(void *c,float* a); //attribute: ::btVector3 btSoftBody_Cluster->m_av+void btSoftBody_Cluster_m_av_get(void *c,float* a);+void btSoftBody_Cluster_m_clusterIndex_set(void *c,int a); //attribute: int btSoftBody_Cluster->m_clusterIndex+int btSoftBody_Cluster_m_clusterIndex_get(void *c); //attribute: int btSoftBody_Cluster->m_clusterIndex+void btSoftBody_Cluster_m_collide_set(void *c,int a); //attribute: bool btSoftBody_Cluster->m_collide+int btSoftBody_Cluster_m_collide_get(void *c); //attribute: bool btSoftBody_Cluster->m_collide+void btSoftBody_Cluster_m_com_set(void *c,float* a); //attribute: ::btVector3 btSoftBody_Cluster->m_com+void btSoftBody_Cluster_m_com_get(void *c,float* a);+void btSoftBody_Cluster_m_containsAnchor_set(void *c,int a); //attribute: bool btSoftBody_Cluster->m_containsAnchor+int btSoftBody_Cluster_m_containsAnchor_get(void *c); //attribute: bool btSoftBody_Cluster->m_containsAnchor+// attribute not supported: //attribute: ::btVector3[2] btSoftBody_Cluster->m_dimpulses+// attribute not supported: //attribute: ::btAlignedObjectArray<btVector3> btSoftBody_Cluster->m_framerefs+void btSoftBody_Cluster_m_framexform_set(void *c,float* a); //attribute: ::btTransform btSoftBody_Cluster->m_framexform+void btSoftBody_Cluster_m_framexform_get(void *c,float* a);+void btSoftBody_Cluster_m_idmass_set(void *c,float a); //attribute: ::btScalar btSoftBody_Cluster->m_idmass+float btSoftBody_Cluster_m_idmass_get(void *c); //attribute: ::btScalar btSoftBody_Cluster->m_idmass+void btSoftBody_Cluster_m_imass_set(void *c,float a); //attribute: ::btScalar btSoftBody_Cluster->m_imass+float btSoftBody_Cluster_m_imass_get(void *c); //attribute: ::btScalar btSoftBody_Cluster->m_imass+void btSoftBody_Cluster_m_invwi_set(void *c,float* a); //attribute: ::btMatrix3x3 btSoftBody_Cluster->m_invwi+void btSoftBody_Cluster_m_invwi_get(void *c,float* a);+void btSoftBody_Cluster_m_ldamping_set(void *c,float a); //attribute: ::btScalar btSoftBody_Cluster->m_ldamping+float btSoftBody_Cluster_m_ldamping_get(void *c); //attribute: ::btScalar btSoftBody_Cluster->m_ldamping+void btSoftBody_Cluster_m_leaf_set(void *c,void* a); //attribute: ::btDbvtNode * btSoftBody_Cluster->m_leaf+// attribute getter not supported: //attribute: ::btDbvtNode * btSoftBody_Cluster->m_leaf+void btSoftBody_Cluster_m_locii_set(void *c,float* a); //attribute: ::btMatrix3x3 btSoftBody_Cluster->m_locii+void btSoftBody_Cluster_m_locii_get(void *c,float* a);+void btSoftBody_Cluster_m_lv_set(void *c,float* a); //attribute: ::btVector3 btSoftBody_Cluster->m_lv+void btSoftBody_Cluster_m_lv_get(void *c,float* a);+// attribute not supported: //attribute: ::btAlignedObjectArray<float> btSoftBody_Cluster->m_masses+void btSoftBody_Cluster_m_matching_set(void *c,float a); //attribute: ::btScalar btSoftBody_Cluster->m_matching+float btSoftBody_Cluster_m_matching_get(void *c); //attribute: ::btScalar btSoftBody_Cluster->m_matching+void btSoftBody_Cluster_m_maxSelfCollisionImpulse_set(void *c,float a); //attribute: ::btScalar btSoftBody_Cluster->m_maxSelfCollisionImpulse+float btSoftBody_Cluster_m_maxSelfCollisionImpulse_get(void *c); //attribute: ::btScalar btSoftBody_Cluster->m_maxSelfCollisionImpulse+void btSoftBody_Cluster_m_ndamping_set(void *c,float a); //attribute: ::btScalar btSoftBody_Cluster->m_ndamping+float btSoftBody_Cluster_m_ndamping_get(void *c); //attribute: ::btScalar btSoftBody_Cluster->m_ndamping+void btSoftBody_Cluster_m_ndimpulses_set(void *c,int a); //attribute: int btSoftBody_Cluster->m_ndimpulses+int btSoftBody_Cluster_m_ndimpulses_get(void *c); //attribute: int btSoftBody_Cluster->m_ndimpulses+// attribute not supported: //attribute: ::btAlignedObjectArray<btSoftBody::Node*> btSoftBody_Cluster->m_nodes+void btSoftBody_Cluster_m_nvimpulses_set(void *c,int a); //attribute: int btSoftBody_Cluster->m_nvimpulses+int btSoftBody_Cluster_m_nvimpulses_get(void *c); //attribute: int btSoftBody_Cluster->m_nvimpulses+void btSoftBody_Cluster_m_selfCollisionImpulseFactor_set(void *c,float a); //attribute: ::btScalar btSoftBody_Cluster->m_selfCollisionImpulseFactor+float btSoftBody_Cluster_m_selfCollisionImpulseFactor_get(void *c); //attribute: ::btScalar btSoftBody_Cluster->m_selfCollisionImpulseFactor+// attribute not supported: //attribute: ::btVector3[2] btSoftBody_Cluster->m_vimpulses+void* btSoftBody_Config_new(); //constructor: Config  ( ::btSoftBody::Config::* )(  ) +void btSoftBody_Config_free(void *c); // attribute not supported: //attribute: ::btSoftBody::eAeroModel::_ btSoftBody_Config->aeromodel+void btSoftBody_Config_kVCF_set(void *c,float a); //attribute: ::btScalar btSoftBody_Config->kVCF+float btSoftBody_Config_kVCF_get(void *c); //attribute: ::btScalar btSoftBody_Config->kVCF+void btSoftBody_Config_kDP_set(void *c,float a); //attribute: ::btScalar btSoftBody_Config->kDP+float btSoftBody_Config_kDP_get(void *c); //attribute: ::btScalar btSoftBody_Config->kDP+void btSoftBody_Config_kDG_set(void *c,float a); //attribute: ::btScalar btSoftBody_Config->kDG+float btSoftBody_Config_kDG_get(void *c); //attribute: ::btScalar btSoftBody_Config->kDG+void btSoftBody_Config_kLF_set(void *c,float a); //attribute: ::btScalar btSoftBody_Config->kLF+float btSoftBody_Config_kLF_get(void *c); //attribute: ::btScalar btSoftBody_Config->kLF+void btSoftBody_Config_kPR_set(void *c,float a); //attribute: ::btScalar btSoftBody_Config->kPR+float btSoftBody_Config_kPR_get(void *c); //attribute: ::btScalar btSoftBody_Config->kPR+void btSoftBody_Config_kVC_set(void *c,float a); //attribute: ::btScalar btSoftBody_Config->kVC+float btSoftBody_Config_kVC_get(void *c); //attribute: ::btScalar btSoftBody_Config->kVC+void btSoftBody_Config_kDF_set(void *c,float a); //attribute: ::btScalar btSoftBody_Config->kDF+float btSoftBody_Config_kDF_get(void *c); //attribute: ::btScalar btSoftBody_Config->kDF+void btSoftBody_Config_kMT_set(void *c,float a); //attribute: ::btScalar btSoftBody_Config->kMT+float btSoftBody_Config_kMT_get(void *c); //attribute: ::btScalar btSoftBody_Config->kMT+void btSoftBody_Config_kCHR_set(void *c,float a); //attribute: ::btScalar btSoftBody_Config->kCHR+float btSoftBody_Config_kCHR_get(void *c); //attribute: ::btScalar btSoftBody_Config->kCHR+void btSoftBody_Config_kKHR_set(void *c,float a); //attribute: ::btScalar btSoftBody_Config->kKHR+float btSoftBody_Config_kKHR_get(void *c); //attribute: ::btScalar btSoftBody_Config->kKHR+void btSoftBody_Config_kSHR_set(void *c,float a); //attribute: ::btScalar btSoftBody_Config->kSHR+float btSoftBody_Config_kSHR_get(void *c); //attribute: ::btScalar btSoftBody_Config->kSHR+void btSoftBody_Config_kAHR_set(void *c,float a); //attribute: ::btScalar btSoftBody_Config->kAHR+float btSoftBody_Config_kAHR_get(void *c); //attribute: ::btScalar btSoftBody_Config->kAHR+void btSoftBody_Config_kSRHR_CL_set(void *c,float a); //attribute: ::btScalar btSoftBody_Config->kSRHR_CL+float btSoftBody_Config_kSRHR_CL_get(void *c); //attribute: ::btScalar btSoftBody_Config->kSRHR_CL+void btSoftBody_Config_kSKHR_CL_set(void *c,float a); //attribute: ::btScalar btSoftBody_Config->kSKHR_CL+float btSoftBody_Config_kSKHR_CL_get(void *c); //attribute: ::btScalar btSoftBody_Config->kSKHR_CL+void btSoftBody_Config_kSSHR_CL_set(void *c,float a); //attribute: ::btScalar btSoftBody_Config->kSSHR_CL+float btSoftBody_Config_kSSHR_CL_get(void *c); //attribute: ::btScalar btSoftBody_Config->kSSHR_CL+void btSoftBody_Config_kSR_SPLT_CL_set(void *c,float a); //attribute: ::btScalar btSoftBody_Config->kSR_SPLT_CL+float btSoftBody_Config_kSR_SPLT_CL_get(void *c); //attribute: ::btScalar btSoftBody_Config->kSR_SPLT_CL+void btSoftBody_Config_kSK_SPLT_CL_set(void *c,float a); //attribute: ::btScalar btSoftBody_Config->kSK_SPLT_CL+float btSoftBody_Config_kSK_SPLT_CL_get(void *c); //attribute: ::btScalar btSoftBody_Config->kSK_SPLT_CL+void btSoftBody_Config_kSS_SPLT_CL_set(void *c,float a); //attribute: ::btScalar btSoftBody_Config->kSS_SPLT_CL+float btSoftBody_Config_kSS_SPLT_CL_get(void *c); //attribute: ::btScalar btSoftBody_Config->kSS_SPLT_CL+void btSoftBody_Config_maxvolume_set(void *c,float a); //attribute: ::btScalar btSoftBody_Config->maxvolume+float btSoftBody_Config_maxvolume_get(void *c); //attribute: ::btScalar btSoftBody_Config->maxvolume+void btSoftBody_Config_timescale_set(void *c,float a); //attribute: ::btScalar btSoftBody_Config->timescale+float btSoftBody_Config_timescale_get(void *c); //attribute: ::btScalar btSoftBody_Config->timescale+void btSoftBody_Config_viterations_set(void *c,int a); //attribute: int btSoftBody_Config->viterations+int btSoftBody_Config_viterations_get(void *c); //attribute: int btSoftBody_Config->viterations+void btSoftBody_Config_piterations_set(void *c,int a); //attribute: int btSoftBody_Config->piterations+int btSoftBody_Config_piterations_get(void *c); //attribute: int btSoftBody_Config->piterations+void btSoftBody_Config_diterations_set(void *c,int a); //attribute: int btSoftBody_Config->diterations+int btSoftBody_Config_diterations_get(void *c); //attribute: int btSoftBody_Config->diterations+void btSoftBody_Config_citerations_set(void *c,int a); //attribute: int btSoftBody_Config->citerations+int btSoftBody_Config_citerations_get(void *c); //attribute: int btSoftBody_Config->citerations+void btSoftBody_Config_collisions_set(void *c,int a); //attribute: int btSoftBody_Config->collisions+int btSoftBody_Config_collisions_get(void *c); //attribute: int btSoftBody_Config->collisions+// attribute not supported: //attribute: ::btAlignedObjectArray<btSoftBody::eVSolver::_> btSoftBody_Config->m_vsequence+// attribute not supported: //attribute: ::btAlignedObjectArray<btSoftBody::ePSolver::_> btSoftBody_Config->m_psequence+// attribute not supported: //attribute: ::btAlignedObjectArray<btSoftBody::ePSolver::_> btSoftBody_Config->m_dsequence+void* btSoftBody_Element_new(); //constructor: Element  ( ::btSoftBody::Element::* )(  ) +void btSoftBody_Element_free(void *c); // attribute not supported: //attribute: void * btSoftBody_Element->m_tag+void* btSoftBody_Face_new(); //constructor: Face  ( ::btSoftBody::Face::* )(  ) +void btSoftBody_Face_free(void *c); // attribute not supported: //attribute: ::btSoftBody::Node *[3] btSoftBody_Face->m_n+void btSoftBody_Face_m_normal_set(void *c,float* a); //attribute: ::btVector3 btSoftBody_Face->m_normal+void btSoftBody_Face_m_normal_get(void *c,float* a);+void btSoftBody_Face_m_ra_set(void *c,float a); //attribute: ::btScalar btSoftBody_Face->m_ra+float btSoftBody_Face_m_ra_get(void *c); //attribute: ::btScalar btSoftBody_Face->m_ra+void btSoftBody_Face_m_leaf_set(void *c,void* a); //attribute: ::btDbvtNode * btSoftBody_Face->m_leaf+// attribute getter not supported: //attribute: ::btDbvtNode * btSoftBody_Face->m_leaf+void* btSoftBody_Feature_new(); //constructor: Feature  ( ::btSoftBody::Feature::* )(  ) +void btSoftBody_Feature_free(void *c); void btSoftBody_Feature_m_material_set(void *c,void* a); //attribute: ::btSoftBody::Material * btSoftBody_Feature->m_material+// attribute getter not supported: //attribute: ::btSoftBody::Material * btSoftBody_Feature->m_material+void* btSoftBody_AJoint_IControl_new(); //constructor: IControl  ( ::btSoftBody::AJoint::IControl::* )(  ) +void btSoftBody_AJoint_IControl_free(void *c); void* btSoftBody_AJoint_IControl_Default(); //method: Default ::btSoftBody::AJoint::IControl * (*)(  )+float btSoftBody_AJoint_IControl_Speed(void *c,void* p0,float p1); //method: Speed ::btScalar ( ::btSoftBody::AJoint::IControl::* )( ::btSoftBody::AJoint *,::btScalar ) +void btSoftBody_AJoint_IControl_Prepare(void *c,void* p0); //method: Prepare void ( ::btSoftBody::AJoint::IControl::* )( ::btSoftBody::AJoint * ) +float btSoftBody_ImplicitFn_Eval(void *c,float* p0); //method: Eval ::btScalar ( ::btSoftBody::ImplicitFn::* )( ::btVector3 const & ) +void* btSoftBody_Impulse_new(); //constructor: Impulse  ( ::btSoftBody::Impulse::* )(  ) +void btSoftBody_Impulse_free(void *c); void btSoftBody_Impulse_m_asDrift_set(void *c,int a); //attribute: int btSoftBody_Impulse->m_asDrift+int btSoftBody_Impulse_m_asDrift_get(void *c); //attribute: int btSoftBody_Impulse->m_asDrift+void btSoftBody_Impulse_m_asVelocity_set(void *c,int a); //attribute: int btSoftBody_Impulse->m_asVelocity+int btSoftBody_Impulse_m_asVelocity_get(void *c); //attribute: int btSoftBody_Impulse->m_asVelocity+void btSoftBody_Impulse_m_drift_set(void *c,float* a); //attribute: ::btVector3 btSoftBody_Impulse->m_drift+void btSoftBody_Impulse_m_drift_get(void *c,float* a);+void btSoftBody_Impulse_m_velocity_set(void *c,float* a); //attribute: ::btVector3 btSoftBody_Impulse->m_velocity+void btSoftBody_Impulse_m_velocity_get(void *c,float* a);+void btSoftBody_Joint_Terminate(void *c,float p0); //method: Terminate void ( ::btSoftBody::Joint::* )( ::btScalar ) +//not supported method: Type ::btSoftBody::Joint::eType::_ ( ::btSoftBody::Joint::* )(  ) const+void btSoftBody_Joint_Solve(void *c,float p0,float p1); //method: Solve void ( ::btSoftBody::Joint::* )( ::btScalar,::btScalar ) +void btSoftBody_Joint_Prepare(void *c,float p0,int p1); //method: Prepare void ( ::btSoftBody::Joint::* )( ::btScalar,int ) +// attribute not supported: //attribute: ::btSoftBody::Body[2] btSoftBody_Joint->m_bodies+// attribute not supported: //attribute: ::btVector3[2] btSoftBody_Joint->m_refs+void btSoftBody_Joint_m_cfm_set(void *c,float a); //attribute: ::btScalar btSoftBody_Joint->m_cfm+float btSoftBody_Joint_m_cfm_get(void *c); //attribute: ::btScalar btSoftBody_Joint->m_cfm+void btSoftBody_Joint_m_erp_set(void *c,float a); //attribute: ::btScalar btSoftBody_Joint->m_erp+float btSoftBody_Joint_m_erp_get(void *c); //attribute: ::btScalar btSoftBody_Joint->m_erp+void btSoftBody_Joint_m_split_set(void *c,float a); //attribute: ::btScalar btSoftBody_Joint->m_split+float btSoftBody_Joint_m_split_get(void *c); //attribute: ::btScalar btSoftBody_Joint->m_split+void btSoftBody_Joint_m_drift_set(void *c,float* a); //attribute: ::btVector3 btSoftBody_Joint->m_drift+void btSoftBody_Joint_m_drift_get(void *c,float* a);+void btSoftBody_Joint_m_sdrift_set(void *c,float* a); //attribute: ::btVector3 btSoftBody_Joint->m_sdrift+void btSoftBody_Joint_m_sdrift_get(void *c,float* a);+void btSoftBody_Joint_m_massmatrix_set(void *c,float* a); //attribute: ::btMatrix3x3 btSoftBody_Joint->m_massmatrix+void btSoftBody_Joint_m_massmatrix_get(void *c,float* a);+void btSoftBody_Joint_m_delete_set(void *c,int a); //attribute: bool btSoftBody_Joint->m_delete+int btSoftBody_Joint_m_delete_get(void *c); //attribute: bool btSoftBody_Joint->m_delete+void* btSoftBody_LJoint_new(); //constructor: LJoint  ( ::btSoftBody::LJoint::* )(  ) +void btSoftBody_LJoint_free(void *c); void btSoftBody_LJoint_Terminate(void *c,float p0); //method: Terminate void ( ::btSoftBody::LJoint::* )( ::btScalar ) +//not supported method: Type ::btSoftBody::Joint::eType::_ ( ::btSoftBody::LJoint::* )(  ) const+void btSoftBody_LJoint_Solve(void *c,float p0,float p1); //method: Solve void ( ::btSoftBody::LJoint::* )( ::btScalar,::btScalar ) +void btSoftBody_LJoint_Prepare(void *c,float p0,int p1); //method: Prepare void ( ::btSoftBody::LJoint::* )( ::btScalar,int ) +// attribute not supported: //attribute: ::btVector3[2] btSoftBody_LJoint->m_rpos+void* btSoftBody_Link_new(); //constructor: Link  ( ::btSoftBody::Link::* )(  ) +void btSoftBody_Link_free(void *c); // attribute not supported: //attribute: ::btSoftBody::Node *[2] btSoftBody_Link->m_n+void btSoftBody_Link_m_rl_set(void *c,float a); //attribute: ::btScalar btSoftBody_Link->m_rl+float btSoftBody_Link_m_rl_get(void *c); //attribute: ::btScalar btSoftBody_Link->m_rl+void btSoftBody_Link_m_bbending_set(void *c,int a); //attribute: int btSoftBody_Link->m_bbending+int btSoftBody_Link_m_bbending_get(void *c); //attribute: int btSoftBody_Link->m_bbending+void btSoftBody_Link_m_c0_set(void *c,float a); //attribute: ::btScalar btSoftBody_Link->m_c0+float btSoftBody_Link_m_c0_get(void *c); //attribute: ::btScalar btSoftBody_Link->m_c0+void btSoftBody_Link_m_c1_set(void *c,float a); //attribute: ::btScalar btSoftBody_Link->m_c1+float btSoftBody_Link_m_c1_get(void *c); //attribute: ::btScalar btSoftBody_Link->m_c1+void btSoftBody_Link_m_c2_set(void *c,float a); //attribute: ::btScalar btSoftBody_Link->m_c2+float btSoftBody_Link_m_c2_get(void *c); //attribute: ::btScalar btSoftBody_Link->m_c2+void btSoftBody_Link_m_c3_set(void *c,float* a); //attribute: ::btVector3 btSoftBody_Link->m_c3+void btSoftBody_Link_m_c3_get(void *c,float* a);+void* btSoftBody_Material_new(); //constructor: Material  ( ::btSoftBody::Material::* )(  ) +void btSoftBody_Material_free(void *c); void btSoftBody_Material_m_flags_set(void *c,int a); //attribute: int btSoftBody_Material->m_flags+int btSoftBody_Material_m_flags_get(void *c); //attribute: int btSoftBody_Material->m_flags+void btSoftBody_Material_m_kAST_set(void *c,float a); //attribute: ::btScalar btSoftBody_Material->m_kAST+float btSoftBody_Material_m_kAST_get(void *c); //attribute: ::btScalar btSoftBody_Material->m_kAST+void btSoftBody_Material_m_kLST_set(void *c,float a); //attribute: ::btScalar btSoftBody_Material->m_kLST+float btSoftBody_Material_m_kLST_get(void *c); //attribute: ::btScalar btSoftBody_Material->m_kLST+void btSoftBody_Material_m_kVST_set(void *c,float a); //attribute: ::btScalar btSoftBody_Material->m_kVST+float btSoftBody_Material_m_kVST_get(void *c); //attribute: ::btScalar btSoftBody_Material->m_kVST+void* btSoftBody_Node_new(); //constructor: Node  ( ::btSoftBody::Node::* )(  ) +void btSoftBody_Node_free(void *c); void btSoftBody_Node_m_area_set(void *c,float a); //attribute: ::btScalar btSoftBody_Node->m_area+float btSoftBody_Node_m_area_get(void *c); //attribute: ::btScalar btSoftBody_Node->m_area+void btSoftBody_Node_m_battach_set(void *c,int a); //attribute: int btSoftBody_Node->m_battach+int btSoftBody_Node_m_battach_get(void *c); //attribute: int btSoftBody_Node->m_battach+void btSoftBody_Node_m_f_set(void *c,float* a); //attribute: ::btVector3 btSoftBody_Node->m_f+void btSoftBody_Node_m_f_get(void *c,float* a);+void btSoftBody_Node_m_im_set(void *c,float a); //attribute: ::btScalar btSoftBody_Node->m_im+float btSoftBody_Node_m_im_get(void *c); //attribute: ::btScalar btSoftBody_Node->m_im+void btSoftBody_Node_m_leaf_set(void *c,void* a); //attribute: ::btDbvtNode * btSoftBody_Node->m_leaf+// attribute getter not supported: //attribute: ::btDbvtNode * btSoftBody_Node->m_leaf+void btSoftBody_Node_m_n_set(void *c,float* a); //attribute: ::btVector3 btSoftBody_Node->m_n+void btSoftBody_Node_m_n_get(void *c,float* a);+void btSoftBody_Node_m_q_set(void *c,float* a); //attribute: ::btVector3 btSoftBody_Node->m_q+void btSoftBody_Node_m_q_get(void *c,float* a);+void btSoftBody_Node_m_v_set(void *c,float* a); //attribute: ::btVector3 btSoftBody_Node->m_v+void btSoftBody_Node_m_v_get(void *c,float* a);+void btSoftBody_Node_m_x_set(void *c,float* a); //attribute: ::btVector3 btSoftBody_Node->m_x+void btSoftBody_Node_m_x_get(void *c,float* a);+void* btSoftBody_Note_new(); //constructor: Note  ( ::btSoftBody::Note::* )(  ) +void btSoftBody_Note_free(void *c); void btSoftBody_Note_m_text_set(void *c,char const * a); //attribute: char const * btSoftBody_Note->m_text+char const * btSoftBody_Note_m_text_get(void *c); //attribute: char const * btSoftBody_Note->m_text+void btSoftBody_Note_m_offset_set(void *c,float* a); //attribute: ::btVector3 btSoftBody_Note->m_offset+void btSoftBody_Note_m_offset_get(void *c,float* a);+void btSoftBody_Note_m_rank_set(void *c,int a); //attribute: int btSoftBody_Note->m_rank+int btSoftBody_Note_m_rank_get(void *c); //attribute: int btSoftBody_Note->m_rank+// attribute not supported: //attribute: ::btSoftBody::Node *[4] btSoftBody_Note->m_nodes+// attribute not supported: //attribute: ::btScalar[4] btSoftBody_Note->m_coords+void* btSoftBody_Pose_new(); //constructor: Pose  ( ::btSoftBody::Pose::* )(  ) +void btSoftBody_Pose_free(void *c); void btSoftBody_Pose_m_bvolume_set(void *c,int a); //attribute: bool btSoftBody_Pose->m_bvolume+int btSoftBody_Pose_m_bvolume_get(void *c); //attribute: bool btSoftBody_Pose->m_bvolume+void btSoftBody_Pose_m_bframe_set(void *c,int a); //attribute: bool btSoftBody_Pose->m_bframe+int btSoftBody_Pose_m_bframe_get(void *c); //attribute: bool btSoftBody_Pose->m_bframe+void btSoftBody_Pose_m_volume_set(void *c,float a); //attribute: ::btScalar btSoftBody_Pose->m_volume+float btSoftBody_Pose_m_volume_get(void *c); //attribute: ::btScalar btSoftBody_Pose->m_volume+// attribute not supported: //attribute: ::btAlignedObjectArray<btVector3> btSoftBody_Pose->m_pos+// attribute not supported: //attribute: ::btAlignedObjectArray<float> btSoftBody_Pose->m_wgh+void btSoftBody_Pose_m_com_set(void *c,float* a); //attribute: ::btVector3 btSoftBody_Pose->m_com+void btSoftBody_Pose_m_com_get(void *c,float* a);+void btSoftBody_Pose_m_rot_set(void *c,float* a); //attribute: ::btMatrix3x3 btSoftBody_Pose->m_rot+void btSoftBody_Pose_m_rot_get(void *c,float* a);+void btSoftBody_Pose_m_scl_set(void *c,float* a); //attribute: ::btMatrix3x3 btSoftBody_Pose->m_scl+void btSoftBody_Pose_m_scl_get(void *c,float* a);+void btSoftBody_Pose_m_aqq_set(void *c,float* a); //attribute: ::btMatrix3x3 btSoftBody_Pose->m_aqq+void btSoftBody_Pose_m_aqq_get(void *c,float* a);+void* btSoftBody_RContact_new(); //constructor: RContact  ( ::btSoftBody::RContact::* )(  ) +void btSoftBody_RContact_free(void *c); // attribute not supported: //attribute: ::btSoftBody::sCti btSoftBody_RContact->m_cti+void btSoftBody_RContact_m_node_set(void *c,void* a); //attribute: ::btSoftBody::Node * btSoftBody_RContact->m_node+// attribute getter not supported: //attribute: ::btSoftBody::Node * btSoftBody_RContact->m_node+void btSoftBody_RContact_m_c0_set(void *c,float* a); //attribute: ::btMatrix3x3 btSoftBody_RContact->m_c0+void btSoftBody_RContact_m_c0_get(void *c,float* a);+void btSoftBody_RContact_m_c1_set(void *c,float* a); //attribute: ::btVector3 btSoftBody_RContact->m_c1+void btSoftBody_RContact_m_c1_get(void *c,float* a);+void btSoftBody_RContact_m_c2_set(void *c,float a); //attribute: ::btScalar btSoftBody_RContact->m_c2+float btSoftBody_RContact_m_c2_get(void *c); //attribute: ::btScalar btSoftBody_RContact->m_c2+void btSoftBody_RContact_m_c3_set(void *c,float a); //attribute: ::btScalar btSoftBody_RContact->m_c3+float btSoftBody_RContact_m_c3_get(void *c); //attribute: ::btScalar btSoftBody_RContact->m_c3+void btSoftBody_RContact_m_c4_set(void *c,float a); //attribute: ::btScalar btSoftBody_RContact->m_c4+float btSoftBody_RContact_m_c4_get(void *c); //attribute: ::btScalar btSoftBody_RContact->m_c4+void* btSoftBody_RayFromToCaster_new(float* p0,float* p1,float p2); //constructor: RayFromToCaster  ( ::btSoftBody::RayFromToCaster::* )( ::btVector3 const &,::btVector3 const &,::btScalar ) +void btSoftBody_RayFromToCaster_free(void *c); void btSoftBody_RayFromToCaster_Process(void *c,void* p0); //method: Process void ( ::btSoftBody::RayFromToCaster::* )( ::btDbvtNode const * ) +void btSoftBody_RayFromToCaster_m_rayFrom_set(void *c,float* a); //attribute: ::btVector3 btSoftBody_RayFromToCaster->m_rayFrom+void btSoftBody_RayFromToCaster_m_rayFrom_get(void *c,float* a);+void btSoftBody_RayFromToCaster_m_rayTo_set(void *c,float* a); //attribute: ::btVector3 btSoftBody_RayFromToCaster->m_rayTo+void btSoftBody_RayFromToCaster_m_rayTo_get(void *c,float* a);+void btSoftBody_RayFromToCaster_m_rayNormalizedDirection_set(void *c,float* a); //attribute: ::btVector3 btSoftBody_RayFromToCaster->m_rayNormalizedDirection+void btSoftBody_RayFromToCaster_m_rayNormalizedDirection_get(void *c,float* a);+void btSoftBody_RayFromToCaster_m_mint_set(void *c,float a); //attribute: ::btScalar btSoftBody_RayFromToCaster->m_mint+float btSoftBody_RayFromToCaster_m_mint_get(void *c); //attribute: ::btScalar btSoftBody_RayFromToCaster->m_mint+void btSoftBody_RayFromToCaster_m_face_set(void *c,void* a); //attribute: ::btSoftBody::Face * btSoftBody_RayFromToCaster->m_face+// attribute getter not supported: //attribute: ::btSoftBody::Face * btSoftBody_RayFromToCaster->m_face+void btSoftBody_RayFromToCaster_m_tests_set(void *c,int a); //attribute: int btSoftBody_RayFromToCaster->m_tests+int btSoftBody_RayFromToCaster_m_tests_get(void *c); //attribute: int btSoftBody_RayFromToCaster->m_tests+void* btSoftBody_SContact_new(); //constructor: SContact  ( ::btSoftBody::SContact::* )(  ) +void btSoftBody_SContact_free(void *c); void btSoftBody_SContact_m_node_set(void *c,void* a); //attribute: ::btSoftBody::Node * btSoftBody_SContact->m_node+// attribute getter not supported: //attribute: ::btSoftBody::Node * btSoftBody_SContact->m_node+void btSoftBody_SContact_m_face_set(void *c,void* a); //attribute: ::btSoftBody::Face * btSoftBody_SContact->m_face+// attribute getter not supported: //attribute: ::btSoftBody::Face * btSoftBody_SContact->m_face+void btSoftBody_SContact_m_weights_set(void *c,float* a); //attribute: ::btVector3 btSoftBody_SContact->m_weights+void btSoftBody_SContact_m_weights_get(void *c,float* a);+void btSoftBody_SContact_m_normal_set(void *c,float* a); //attribute: ::btVector3 btSoftBody_SContact->m_normal+void btSoftBody_SContact_m_normal_get(void *c,float* a);+void btSoftBody_SContact_m_margin_set(void *c,float a); //attribute: ::btScalar btSoftBody_SContact->m_margin+float btSoftBody_SContact_m_margin_get(void *c); //attribute: ::btScalar btSoftBody_SContact->m_margin+void btSoftBody_SContact_m_friction_set(void *c,float a); //attribute: ::btScalar btSoftBody_SContact->m_friction+float btSoftBody_SContact_m_friction_get(void *c); //attribute: ::btScalar btSoftBody_SContact->m_friction+// attribute not supported: //attribute: ::btScalar[2] btSoftBody_SContact->m_cfm+void* btSoftBody_SolverState_new(); //constructor: SolverState  ( ::btSoftBody::SolverState::* )(  ) +void btSoftBody_SolverState_free(void *c); void btSoftBody_SolverState_sdt_set(void *c,float a); //attribute: ::btScalar btSoftBody_SolverState->sdt+float btSoftBody_SolverState_sdt_get(void *c); //attribute: ::btScalar btSoftBody_SolverState->sdt+void btSoftBody_SolverState_isdt_set(void *c,float a); //attribute: ::btScalar btSoftBody_SolverState->isdt+float btSoftBody_SolverState_isdt_get(void *c); //attribute: ::btScalar btSoftBody_SolverState->isdt+void btSoftBody_SolverState_velmrg_set(void *c,float a); //attribute: ::btScalar btSoftBody_SolverState->velmrg+float btSoftBody_SolverState_velmrg_get(void *c); //attribute: ::btScalar btSoftBody_SolverState->velmrg+void btSoftBody_SolverState_radmrg_set(void *c,float a); //attribute: ::btScalar btSoftBody_SolverState->radmrg+float btSoftBody_SolverState_radmrg_get(void *c); //attribute: ::btScalar btSoftBody_SolverState->radmrg+void btSoftBody_SolverState_updmrg_set(void *c,float a); //attribute: ::btScalar btSoftBody_SolverState->updmrg+float btSoftBody_SolverState_updmrg_get(void *c); //attribute: ::btScalar btSoftBody_SolverState->updmrg+void* btSoftBody_Joint_Specs_new(); //constructor: Specs  ( ::btSoftBody::Joint::Specs::* )(  ) +void btSoftBody_Joint_Specs_free(void *c); void btSoftBody_Joint_Specs_erp_set(void *c,float a); //attribute: ::btScalar btSoftBody_Joint_Specs->erp+float btSoftBody_Joint_Specs_erp_get(void *c); //attribute: ::btScalar btSoftBody_Joint_Specs->erp+void btSoftBody_Joint_Specs_cfm_set(void *c,float a); //attribute: ::btScalar btSoftBody_Joint_Specs->cfm+float btSoftBody_Joint_Specs_cfm_get(void *c); //attribute: ::btScalar btSoftBody_Joint_Specs->cfm+void btSoftBody_Joint_Specs_split_set(void *c,float a); //attribute: ::btScalar btSoftBody_Joint_Specs->split+float btSoftBody_Joint_Specs_split_get(void *c); //attribute: ::btScalar btSoftBody_Joint_Specs->split+void* btSoftBody_LJoint_Specs_new(); //constructor: Specs  ( ::btSoftBody::LJoint::Specs::* )(  ) +void btSoftBody_LJoint_Specs_free(void *c); void btSoftBody_LJoint_Specs_position_set(void *c,float* a); //attribute: ::btVector3 btSoftBody_LJoint_Specs->position+void btSoftBody_LJoint_Specs_position_get(void *c,float* a);+void* btSoftBody_AJoint_Specs_new(); //constructor: Specs  ( ::btSoftBody::AJoint::Specs::* )(  ) +void btSoftBody_AJoint_Specs_free(void *c); void btSoftBody_AJoint_Specs_axis_set(void *c,float* a); //attribute: ::btVector3 btSoftBody_AJoint_Specs->axis+void btSoftBody_AJoint_Specs_axis_get(void *c,float* a);+void btSoftBody_AJoint_Specs_icontrol_set(void *c,void* a); //attribute: ::btSoftBody::AJoint::IControl * btSoftBody_AJoint_Specs->icontrol+// attribute getter not supported: //attribute: ::btSoftBody::AJoint::IControl * btSoftBody_AJoint_Specs->icontrol+void* btSoftBody_Tetra_new(); //constructor: Tetra  ( ::btSoftBody::Tetra::* )(  ) +void btSoftBody_Tetra_free(void *c); // attribute not supported: //attribute: ::btSoftBody::Node *[4] btSoftBody_Tetra->m_n+void btSoftBody_Tetra_m_rv_set(void *c,float a); //attribute: ::btScalar btSoftBody_Tetra->m_rv+float btSoftBody_Tetra_m_rv_get(void *c); //attribute: ::btScalar btSoftBody_Tetra->m_rv+void btSoftBody_Tetra_m_leaf_set(void *c,void* a); //attribute: ::btDbvtNode * btSoftBody_Tetra->m_leaf+// attribute getter not supported: //attribute: ::btDbvtNode * btSoftBody_Tetra->m_leaf+// attribute not supported: //attribute: ::btVector3[4] btSoftBody_Tetra->m_c0+void btSoftBody_Tetra_m_c1_set(void *c,float a); //attribute: ::btScalar btSoftBody_Tetra->m_c1+float btSoftBody_Tetra_m_c1_get(void *c); //attribute: ::btScalar btSoftBody_Tetra->m_c1+void btSoftBody_Tetra_m_c2_set(void *c,float a); //attribute: ::btScalar btSoftBody_Tetra->m_c2+float btSoftBody_Tetra_m_c2_get(void *c); //attribute: ::btScalar btSoftBody_Tetra->m_c2+//not supported constructor: btSoftBody  ( ::btSoftBody::* )( ::btSoftBodyWorldInfo *,int,::btVector3 const *,::btScalar const * ) +void* btSoftBody_new1(void* p0); //constructor: btSoftBody  ( ::btSoftBody::* )( ::btSoftBodyWorldInfo * ) +void btSoftBody_free(void *c); float btSoftBody_getVolume(void *c); //method: getVolume ::btScalar ( ::btSoftBody::* )(  ) const+int btSoftBody_cutLink(void *c,int p0,int p1,float p2); //method: cutLink bool ( ::btSoftBody::* )( int,int,::btScalar ) +int btSoftBody_cutLink0(void *c,int p0,int p1,float p2); //method: cutLink bool ( ::btSoftBody::* )( int,int,::btScalar ) +int btSoftBody_cutLink1(void *c,void* p0,void* p1,float p2); //method: cutLink bool ( ::btSoftBody::* )( ::btSoftBody::Node const *,::btSoftBody::Node const *,::btScalar ) +void btSoftBody_PSolve_Links(void* p0,float p1,float p2); //method: PSolve_Links void (*)( ::btSoftBody *,::btScalar,::btScalar )+int btSoftBody_generateClusters(void *c,int p0,int p1); //method: generateClusters int ( ::btSoftBody::* )( int,int ) +void btSoftBody_setCollisionShape(void *c,void* p0); //method: setCollisionShape void ( ::btSoftBody::* )( ::btCollisionShape * ) +void btSoftBody_initializeClusters(void *c); //method: initializeClusters void ( ::btSoftBody::* )(  ) +void btSoftBody_clusterVAImpulse(void* p0,float* p1); //method: clusterVAImpulse void (*)( ::btSoftBody::Cluster *,::btVector3 const & )+void btSoftBody_addForce(void *c,float* p0); //method: addForce void ( ::btSoftBody::* )( ::btVector3 const & ) +void btSoftBody_addForce0(void *c,float* p0); //method: addForce void ( ::btSoftBody::* )( ::btVector3 const & ) +void btSoftBody_addForce1(void *c,float* p0,int p1); //method: addForce void ( ::btSoftBody::* )( ::btVector3 const &,int ) +//not supported method: serialize char const * ( ::btSoftBody::* )( void *,::btSerializer * ) const+void btSoftBody_updateBounds(void *c); //method: updateBounds void ( ::btSoftBody::* )(  ) +void btSoftBody_rotate(void *c,float* p0); //method: rotate void ( ::btSoftBody::* )( ::btQuaternion const & ) +void btSoftBody_releaseCluster(void *c,int p0); //method: releaseCluster void ( ::btSoftBody::* )( int ) +void btSoftBody_updateNormals(void *c); //method: updateNormals void ( ::btSoftBody::* )(  ) +void btSoftBody_prepareClusters(void *c,int p0); //method: prepareClusters void ( ::btSoftBody::* )( int ) +void btSoftBody_releaseClusters(void *c); //method: releaseClusters void ( ::btSoftBody::* )(  ) +float btSoftBody_getTotalMass(void *c); //method: getTotalMass ::btScalar ( ::btSoftBody::* )(  ) const+int btSoftBody_checkContact(void *c,void* p0,float* p1,float p2,void* p3); //method: checkContact bool ( ::btSoftBody::* )( ::btCollisionObject *,::btVector3 const &,::btScalar,::btSoftBody::sCti & ) const+//not supported method: indicesToPointers void ( ::btSoftBody::* )( int const * ) +void btSoftBody_clusterDImpulse(void* p0,float* p1,float* p2); //method: clusterDImpulse void (*)( ::btSoftBody::Cluster *,::btVector3 const &,::btVector3 const & )+void btSoftBody_initDefaults(void *c); //method: initDefaults void ( ::btSoftBody::* )(  ) +int btSoftBody_checkLink(void *c,int p0,int p1); //method: checkLink bool ( ::btSoftBody::* )( int,int ) const+int btSoftBody_checkLink0(void *c,int p0,int p1); //method: checkLink bool ( ::btSoftBody::* )( int,int ) const+int btSoftBody_checkLink1(void *c,void* p0,void* p1); //method: checkLink bool ( ::btSoftBody::* )( ::btSoftBody::Node const *,::btSoftBody::Node const * ) const+void btSoftBody_setVolumeMass(void *c,float p0); //method: setVolumeMass void ( ::btSoftBody::* )( ::btScalar ) +void btSoftBody_clusterImpulse(void* p0,float* p1,void* p2); //method: clusterImpulse void (*)( ::btSoftBody::Cluster *,::btVector3 const &,::btSoftBody::Impulse const & )+int btSoftBody_checkFace(void *c,int p0,int p1,int p2); //method: checkFace bool ( ::btSoftBody::* )( int,int,int ) const+void btSoftBody_evaluateCom(void *c,float* ret); //method: evaluateCom ::btVector3 ( ::btSoftBody::* )(  ) const+void btSoftBody_clusterDAImpulse(void* p0,float* p1); //method: clusterDAImpulse void (*)( ::btSoftBody::Cluster *,::btVector3 const & )+void btSoftBody_VSolve_Links(void* p0,float p1); //method: VSolve_Links void (*)( ::btSoftBody *,::btScalar )+void btSoftBody_setTotalMass(void *c,float p0,int p1); //method: setTotalMass void ( ::btSoftBody::* )( ::btScalar,bool ) +void btSoftBody_clusterDCImpulse(void* p0,float* p1); //method: clusterDCImpulse void (*)( ::btSoftBody::Cluster *,::btVector3 const & )+void btSoftBody_clusterVelocity(void* p0,float* p1,float* ret); //method: clusterVelocity ::btVector3 (*)( ::btSoftBody::Cluster const *,::btVector3 const & )+int btSoftBody_generateBendingConstraints(void *c,int p0,void* p1); //method: generateBendingConstraints int ( ::btSoftBody::* )( int,::btSoftBody::Material * ) +void btSoftBody_updateClusters(void *c); //method: updateClusters void ( ::btSoftBody::* )(  ) +void btSoftBody_appendAnchor(void *c,int p0,void* p1,int p2,float p3); //method: appendAnchor void ( ::btSoftBody::* )( int,::btRigidBody *,bool,::btScalar ) +void btSoftBody_appendAnchor0(void *c,int p0,void* p1,int p2,float p3); //method: appendAnchor void ( ::btSoftBody::* )( int,::btRigidBody *,bool,::btScalar ) +void btSoftBody_appendAnchor1(void *c,int p0,void* p1,float* p2,int p3,float p4); //method: appendAnchor void ( ::btSoftBody::* )( int,::btRigidBody *,::btVector3 const &,bool,::btScalar ) +void btSoftBody_applyClusters(void *c,int p0); //method: applyClusters void ( ::btSoftBody::* )( bool ) +void btSoftBody_setVelocity(void *c,float* p0); //method: setVelocity void ( ::btSoftBody::* )( ::btVector3 const & ) +int btSoftBody_clusterCount(void *c); //method: clusterCount int ( ::btSoftBody::* )(  ) const+void* btSoftBody_upcast(void* p0); //method: upcast ::btSoftBody const * (*)( ::btCollisionObject const * )+void* btSoftBody_upcast0(void* p0); //method: upcast ::btSoftBody const * (*)( ::btCollisionObject const * )+void* btSoftBody_upcast1(void* p0); //method: upcast ::btSoftBody * (*)( ::btCollisionObject * )+void btSoftBody_getWindVelocity(void *c,float* ret); //method: getWindVelocity ::btVector3 const & ( ::btSoftBody::* )(  ) +void btSoftBody_predictMotion(void *c,float p0); //method: predictMotion void ( ::btSoftBody::* )( ::btScalar ) +void btSoftBody_pointersToIndices(void *c); //method: pointersToIndices void ( ::btSoftBody::* )(  ) +float btSoftBody_getMass(void *c,int p0); //method: getMass ::btScalar ( ::btSoftBody::* )( int ) const+void btSoftBody_PSolve_RContacts(void* p0,float p1,float p2); //method: PSolve_RContacts void (*)( ::btSoftBody *,::btScalar,::btScalar )+void btSoftBody_initializeFaceTree(void *c); //method: initializeFaceTree void ( ::btSoftBody::* )(  ) +void btSoftBody_addVelocity(void *c,float* p0); //method: addVelocity void ( ::btSoftBody::* )( ::btVector3 const & ) +void btSoftBody_addVelocity0(void *c,float* p0); //method: addVelocity void ( ::btSoftBody::* )( ::btVector3 const & ) +void btSoftBody_addVelocity1(void *c,float* p0,int p1); //method: addVelocity void ( ::btSoftBody::* )( ::btVector3 const &,int ) +void btSoftBody_PSolve_Anchors(void* p0,float p1,float p2); //method: PSolve_Anchors void (*)( ::btSoftBody *,::btScalar,::btScalar )+void btSoftBody_cleanupClusters(void *c); //method: cleanupClusters void ( ::btSoftBody::* )(  ) +void btSoftBody_transform(void *c,float* p0); //method: transform void ( ::btSoftBody::* )( ::btTransform const & ) +//not supported method: appendLinearJoint void ( ::btSoftBody::* )( ::btSoftBody::LJoint::Specs const &,::btSoftBody::Cluster *,::btSoftBody::Body ) +//not supported method: appendLinearJoint void ( ::btSoftBody::* )( ::btSoftBody::LJoint::Specs const &,::btSoftBody::Cluster *,::btSoftBody::Body ) +//not supported method: appendLinearJoint void ( ::btSoftBody::* )( ::btSoftBody::LJoint::Specs const &,::btSoftBody::Body ) +void btSoftBody_appendLinearJoint2(void *c,void* p0,void* p1); //method: appendLinearJoint void ( ::btSoftBody::* )( ::btSoftBody::LJoint::Specs const &,::btSoftBody * ) +void btSoftBody_randomizeConstraints(void *c); //method: randomizeConstraints void ( ::btSoftBody::* )(  ) +void btSoftBody_updatePose(void *c); //method: updatePose void ( ::btSoftBody::* )(  ) +void btSoftBody_translate(void *c,float* p0); //method: translate void ( ::btSoftBody::* )( ::btVector3 const & ) +void btSoftBody_getAabb(void *c,float* p0,float* p1); //method: getAabb void ( ::btSoftBody::* )( ::btVector3 &,::btVector3 & ) const+void btSoftBody_PSolve_SContacts(void* p0,float p1,float p2); //method: PSolve_SContacts void (*)( ::btSoftBody *,::btScalar,::btScalar )+void* btSoftBody_appendMaterial(void *c); //method: appendMaterial ::btSoftBody::Material * ( ::btSoftBody::* )(  ) +void btSoftBody_appendNode(void *c,float* p0,float p1); //method: appendNode void ( ::btSoftBody::* )( ::btVector3 const &,::btScalar ) +void btSoftBody_setMass(void *c,int p0,float p1); //method: setMass void ( ::btSoftBody::* )( int,::btScalar ) +void btSoftBody_integrateMotion(void *c); //method: integrateMotion void ( ::btSoftBody::* )(  ) +void btSoftBody_defaultCollisionHandler(void *c,void* p0); //method: defaultCollisionHandler void ( ::btSoftBody::* )( ::btCollisionObject * ) +void btSoftBody_defaultCollisionHandler0(void *c,void* p0); //method: defaultCollisionHandler void ( ::btSoftBody::* )( ::btCollisionObject * ) +void btSoftBody_defaultCollisionHandler1(void *c,void* p0); //method: defaultCollisionHandler void ( ::btSoftBody::* )( ::btSoftBody * ) +void btSoftBody_solveConstraints(void *c); //method: solveConstraints void ( ::btSoftBody::* )(  ) +void btSoftBody_setTotalDensity(void *c,float p0); //method: setTotalDensity void ( ::btSoftBody::* )( ::btScalar ) +void btSoftBody_appendNote(void *c,char const * p0,float* p1,float* p2,void* p3,void* p4,void* p5,void* p6); //method: appendNote void ( ::btSoftBody::* )( char const *,::btVector3 const &,::btVector4 const &,::btSoftBody::Node *,::btSoftBody::Node *,::btSoftBody::Node *,::btSoftBody::Node * ) +void btSoftBody_appendNote0(void *c,char const * p0,float* p1,float* p2,void* p3,void* p4,void* p5,void* p6); //method: appendNote void ( ::btSoftBody::* )( char const *,::btVector3 const &,::btVector4 const &,::btSoftBody::Node *,::btSoftBody::Node *,::btSoftBody::Node *,::btSoftBody::Node * ) +void btSoftBody_appendNote1(void *c,char const * p0,float* p1,void* p2); //method: appendNote void ( ::btSoftBody::* )( char const *,::btVector3 const &,::btSoftBody::Node * ) +void btSoftBody_appendNote2(void *c,char const * p0,float* p1,void* p2); //method: appendNote void ( ::btSoftBody::* )( char const *,::btVector3 const &,::btSoftBody::Link * ) +void btSoftBody_appendNote3(void *c,char const * p0,float* p1,void* p2); //method: appendNote void ( ::btSoftBody::* )( char const *,::btVector3 const &,::btSoftBody::Face * ) +void btSoftBody_setVolumeDensity(void *c,float p0); //method: setVolumeDensity void ( ::btSoftBody::* )( ::btScalar ) +//not supported method: solveCommonConstraints void (*)( ::btSoftBody * *,int,int )+void btSoftBody_updateConstants(void *c); //method: updateConstants void ( ::btSoftBody::* )(  ) +void btSoftBody_staticSolve(void *c,int p0); //method: staticSolve void ( ::btSoftBody::* )( int ) +//not supported method: getSoftBodySolver ::btSoftBodySolver * ( ::btSoftBody::* )(  ) +//not supported method: getSoftBodySolver ::btSoftBodySolver * ( ::btSoftBody::* )(  ) +//not supported method: getSoftBodySolver ::btSoftBodySolver * ( ::btSoftBody::* )(  ) const+void btSoftBody_refine(void *c,void* p0,float p1,int p2); //method: refine void ( ::btSoftBody::* )( ::btSoftBody::ImplicitFn *,::btScalar,bool ) +void btSoftBody_appendLink(void *c,int p0,void* p1); //method: appendLink void ( ::btSoftBody::* )( int,::btSoftBody::Material * ) +void btSoftBody_appendLink0(void *c,int p0,void* p1); //method: appendLink void ( ::btSoftBody::* )( int,::btSoftBody::Material * ) +void btSoftBody_appendLink1(void *c,int p0,int p1,void* p2,int p3); //method: appendLink void ( ::btSoftBody::* )( int,int,::btSoftBody::Material *,bool ) +void btSoftBody_appendLink2(void *c,void* p0,void* p1,void* p2,int p3); //method: appendLink void ( ::btSoftBody::* )( ::btSoftBody::Node *,::btSoftBody::Node *,::btSoftBody::Material *,bool ) +int btSoftBody_calculateSerializeBufferSize(void *c); //method: calculateSerializeBufferSize int ( ::btSoftBody::* )(  ) const+//not supported method: solveClusters void (*)( ::btAlignedObjectArray<btSoftBody*> const & )+//not supported method: solveClusters void (*)( ::btAlignedObjectArray<btSoftBody*> const & )+void btSoftBody_solveClusters1(void *c,float p0); //method: solveClusters void ( ::btSoftBody::* )( ::btScalar ) +int btSoftBody_rayTest(void *c,float* p0,float* p1,void* p2); //method: rayTest bool ( ::btSoftBody::* )( ::btVector3 const &,::btVector3 const &,::btSoftBody::sRayCast & ) +int btSoftBody_rayTest0(void *c,float* p0,float* p1,void* p2); //method: rayTest bool ( ::btSoftBody::* )( ::btVector3 const &,::btVector3 const &,::btSoftBody::sRayCast & ) +//not supported method: rayTest int ( ::btSoftBody::* )( ::btVector3 const &,::btVector3 const &,::btScalar &,::btSoftBody::eFeature::_ &,int &,bool ) const+void btSoftBody_setPose(void *c,int p0,int p1); //method: setPose void ( ::btSoftBody::* )( bool,bool ) +void btSoftBody_appendFace(void *c,int p0,void* p1); //method: appendFace void ( ::btSoftBody::* )( int,::btSoftBody::Material * ) +void btSoftBody_appendFace0(void *c,int p0,void* p1); //method: appendFace void ( ::btSoftBody::* )( int,::btSoftBody::Material * ) +void btSoftBody_appendFace1(void *c,int p0,int p1,int p2,void* p3); //method: appendFace void ( ::btSoftBody::* )( int,int,int,::btSoftBody::Material * ) +void btSoftBody_dampClusters(void *c); //method: dampClusters void ( ::btSoftBody::* )(  ) +void* btSoftBody_getWorldInfo(void *c); //method: getWorldInfo ::btSoftBodyWorldInfo * ( ::btSoftBody::* )(  ) +//not supported method: appendAngularJoint void ( ::btSoftBody::* )( ::btSoftBody::AJoint::Specs const &,::btSoftBody::Cluster *,::btSoftBody::Body ) +//not supported method: appendAngularJoint void ( ::btSoftBody::* )( ::btSoftBody::AJoint::Specs const &,::btSoftBody::Cluster *,::btSoftBody::Body ) +//not supported method: appendAngularJoint void ( ::btSoftBody::* )( ::btSoftBody::AJoint::Specs const &,::btSoftBody::Body ) +void btSoftBody_appendAngularJoint2(void *c,void* p0,void* p1); //method: appendAngularJoint void ( ::btSoftBody::* )( ::btSoftBody::AJoint::Specs const &,::btSoftBody * ) +//not supported method: setSolver void ( ::btSoftBody::* )( ::btSoftBody::eSolverPresets::_ ) +void btSoftBody_clusterVImpulse(void* p0,float* p1,float* p2); //method: clusterVImpulse void (*)( ::btSoftBody::Cluster *,::btVector3 const &,::btVector3 const & )+void btSoftBody_scale(void *c,float* p0); //method: scale void ( ::btSoftBody::* )( ::btVector3 const & ) +void btSoftBody_clusterAImpulse(void* p0,void* p1); //method: clusterAImpulse void (*)( ::btSoftBody::Cluster *,::btSoftBody::Impulse const & )+void btSoftBody_clusterCom(void* p0,float* ret); //method: clusterCom ::btVector3 (*)( ::btSoftBody::Cluster const * )+void btSoftBody_clusterCom0(void* p0,float* ret); //method: clusterCom ::btVector3 (*)( ::btSoftBody::Cluster const * )+void btSoftBody_clusterCom1(void *c,int p0,float* ret); //method: clusterCom ::btVector3 ( ::btSoftBody::* )( int ) const+//not supported method: setSoftBodySolver void ( ::btSoftBody::* )( ::btSoftBodySolver * ) +void btSoftBody_setWindVelocity(void *c,float* p0); //method: setWindVelocity void ( ::btSoftBody::* )( ::btVector3 const & ) +//not supported method: getSolver void (*)( ::btSoftBody *,::btScalar,::btScalar ) * (*)( ::btSoftBody::ePSolver::_ )+//not supported method: getSolver void (*)( ::btSoftBody *,::btScalar,::btScalar ) * (*)( ::btSoftBody::ePSolver::_ )+//not supported method: getSolver void (*)( ::btSoftBody *,::btScalar ) * (*)( ::btSoftBody::eVSolver::_ )+void btSoftBody_applyForces(void *c); //method: applyForces void ( ::btSoftBody::* )(  ) +void btSoftBody_appendTetra(void *c,int p0,void* p1); //method: appendTetra void ( ::btSoftBody::* )( int,::btSoftBody::Material * ) +void btSoftBody_appendTetra0(void *c,int p0,void* p1); //method: appendTetra void ( ::btSoftBody::* )( int,::btSoftBody::Material * ) +void btSoftBody_appendTetra1(void *c,int p0,int p1,int p2,int p3,void* p4); //method: appendTetra void ( ::btSoftBody::* )( int,int,int,int,::btSoftBody::Material * ) +// attribute not supported: //attribute: ::btAlignedObjectArray<btSoftBody::Anchor> btSoftBody->m_anchors+void btSoftBody_m_bUpdateRtCst_set(void *c,int a); //attribute: bool btSoftBody->m_bUpdateRtCst+int btSoftBody_m_bUpdateRtCst_get(void *c); //attribute: bool btSoftBody->m_bUpdateRtCst+// attribute not supported: //attribute: ::btVector3[2] btSoftBody->m_bounds+// attribute not supported: //attribute: ::btDbvt btSoftBody->m_cdbvt+// attribute not supported: //attribute: ::btSoftBody::Config btSoftBody->m_cfg+// attribute not supported: //attribute: ::btAlignedObjectArray<bool> btSoftBody->m_clusterConnectivity+// attribute not supported: //attribute: ::btAlignedObjectArray<btSoftBody::Cluster*> btSoftBody->m_clusters+// attribute not supported: //attribute: ::btAlignedObjectArray<btCollisionObject*> btSoftBody->m_collisionDisabledObjects+// attribute not supported: //attribute: ::btAlignedObjectArray<btSoftBody::Face> btSoftBody->m_faces+// attribute not supported: //attribute: ::btDbvt btSoftBody->m_fdbvt+void btSoftBody_m_initialWorldTransform_set(void *c,float* a); //attribute: ::btTransform btSoftBody->m_initialWorldTransform+void btSoftBody_m_initialWorldTransform_get(void *c,float* a);+// attribute not supported: //attribute: ::btAlignedObjectArray<btSoftBody::Joint*> btSoftBody->m_joints+// attribute not supported: //attribute: ::btAlignedObjectArray<btSoftBody::Link> btSoftBody->m_links+// attribute not supported: //attribute: ::btAlignedObjectArray<btSoftBody::Material*> btSoftBody->m_materials+// attribute not supported: //attribute: ::btDbvt btSoftBody->m_ndbvt+// attribute not supported: //attribute: ::btAlignedObjectArray<btSoftBody::Node> btSoftBody->m_nodes+// attribute not supported: //attribute: ::btAlignedObjectArray<btSoftBody::Note> btSoftBody->m_notes+// attribute not supported: //attribute: ::btSoftBody::Pose btSoftBody->m_pose+// attribute not supported: //attribute: ::btAlignedObjectArray<btSoftBody::RContact> btSoftBody->m_rcontacts+// attribute not supported: //attribute: ::btAlignedObjectArray<btSoftBody::SContact> btSoftBody->m_scontacts+// attribute not supported: //attribute: ::btSoftBodySolver * btSoftBody->m_softBodySolver+// attribute not supported: //attribute: ::btSoftBody::SolverState btSoftBody->m_sst+// attribute not supported: //attribute: void * btSoftBody->m_tag+// attribute not supported: //attribute: ::btAlignedObjectArray<btSoftBody::Tetra> btSoftBody->m_tetras+void btSoftBody_m_timeacc_set(void *c,float a); //attribute: ::btScalar btSoftBody->m_timeacc+float btSoftBody_m_timeacc_get(void *c); //attribute: ::btScalar btSoftBody->m_timeacc+// attribute not supported: //attribute: ::btAlignedObjectArray<int> btSoftBody->m_userIndexMapping+void btSoftBody_m_windVelocity_set(void *c,float* a); //attribute: ::btVector3 btSoftBody->m_windVelocity+void btSoftBody_m_windVelocity_get(void *c,float* a);+void btSoftBody_m_worldInfo_set(void *c,void* a); //attribute: ::btSoftBodyWorldInfo * btSoftBody->m_worldInfo+// attribute getter not supported: //attribute: ::btSoftBodyWorldInfo * btSoftBody->m_worldInfo+void* btSoftBodyHelpers_new(); //constructor: btSoftBodyHelpers  ( ::btSoftBodyHelpers::* )(  ) +void btSoftBodyHelpers_free(void *c); void btSoftBodyHelpers_DrawInfos(void* p0,void* p1,int p2,int p3,int p4); //method: DrawInfos void (*)( ::btSoftBody *,::btIDebugDraw *,bool,bool,bool )+void btSoftBodyHelpers_Draw(void* p0,void* p1,int p2); //method: Draw void (*)( ::btSoftBody *,::btIDebugDraw *,int )+void* btSoftBodyHelpers_CreateEllipsoid(void* p0,float* p1,float* p2,int p3); //method: CreateEllipsoid ::btSoftBody * (*)( ::btSoftBodyWorldInfo &,::btVector3 const &,::btVector3 const &,int )+void* btSoftBodyHelpers_CreateFromTetGenData(void* p0,char const * p1,char const * p2,char const * p3,int p4,int p5,int p6); //method: CreateFromTetGenData ::btSoftBody * (*)( ::btSoftBodyWorldInfo &,char const *,char const *,char const *,bool,bool,bool )+void btSoftBodyHelpers_DrawFrame(void* p0,void* p1); //method: DrawFrame void (*)( ::btSoftBody *,::btIDebugDraw * )+void* btSoftBodyHelpers_CreateRope(void* p0,float* p1,float* p2,int p3,int p4); //method: CreateRope ::btSoftBody * (*)( ::btSoftBodyWorldInfo &,::btVector3 const &,::btVector3 const &,int,int )+float btSoftBodyHelpers_CalculateUV(int p0,int p1,int p2,int p3,int p4); //method: CalculateUV float (*)( int,int,int,int,int )+void btSoftBodyHelpers_DrawFaceTree(void* p0,void* p1,int p2,int p3); //method: DrawFaceTree void (*)( ::btSoftBody *,::btIDebugDraw *,int,int )+void btSoftBodyHelpers_DrawClusterTree(void* p0,void* p1,int p2,int p3); //method: DrawClusterTree void (*)( ::btSoftBody *,::btIDebugDraw *,int,int )+//not supported method: CreateFromTriMesh ::btSoftBody * (*)( ::btSoftBodyWorldInfo &,::btScalar const *,int const *,int,bool )+void btSoftBodyHelpers_DrawNodeTree(void* p0,void* p1,int p2,int p3); //method: DrawNodeTree void (*)( ::btSoftBody *,::btIDebugDraw *,int,int )+//not supported method: CreateFromConvexHull ::btSoftBody * (*)( ::btSoftBodyWorldInfo &,::btVector3 const *,int,bool )+void* btSoftBodyHelpers_CreatePatch(void* p0,float* p1,float* p2,float* p3,float* p4,int p5,int p6,int p7,int p8); //method: CreatePatch ::btSoftBody * (*)( ::btSoftBodyWorldInfo &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,int,int,int,bool )+//not supported method: CreatePatchUV ::btSoftBody * (*)( ::btSoftBodyWorldInfo &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,int,int,int,bool,float * )+void* btSoftBodyRigidBodyCollisionConfiguration_new(void* p0); //constructor: btSoftBodyRigidBodyCollisionConfiguration  ( ::btSoftBodyRigidBodyCollisionConfiguration::* )( ::btDefaultCollisionConstructionInfo const & ) +void btSoftBodyRigidBodyCollisionConfiguration_free(void *c); void* btSoftBodyRigidBodyCollisionConfiguration_getCollisionAlgorithmCreateFunc(void *c,int p0,int p1); //method: getCollisionAlgorithmCreateFunc ::btCollisionAlgorithmCreateFunc * ( ::btSoftBodyRigidBodyCollisionConfiguration::* )( int,int ) +void* btSoftBodyWorldInfo_new(); //constructor: btSoftBodyWorldInfo  ( ::btSoftBodyWorldInfo::* )(  ) +void btSoftBodyWorldInfo_free(void *c); void btSoftBodyWorldInfo_air_density_set(void *c,float a); //attribute: ::btScalar btSoftBodyWorldInfo->air_density+float btSoftBodyWorldInfo_air_density_get(void *c); //attribute: ::btScalar btSoftBodyWorldInfo->air_density+void btSoftBodyWorldInfo_m_broadphase_set(void *c,void* a); //attribute: ::btBroadphaseInterface * btSoftBodyWorldInfo->m_broadphase+// attribute getter not supported: //attribute: ::btBroadphaseInterface * btSoftBodyWorldInfo->m_broadphase+void btSoftBodyWorldInfo_m_dispatcher_set(void *c,void* a); //attribute: ::btDispatcher * btSoftBodyWorldInfo->m_dispatcher+// attribute getter not supported: //attribute: ::btDispatcher * btSoftBodyWorldInfo->m_dispatcher+void btSoftBodyWorldInfo_m_gravity_set(void *c,float* a); //attribute: ::btVector3 btSoftBodyWorldInfo->m_gravity+void btSoftBodyWorldInfo_m_gravity_get(void *c,float* a);+// attribute not supported: //attribute: ::btSparseSdf<3> btSoftBodyWorldInfo->m_sparsesdf+void btSoftBodyWorldInfo_water_density_set(void *c,float a); //attribute: ::btScalar btSoftBodyWorldInfo->water_density+float btSoftBodyWorldInfo_water_density_get(void *c); //attribute: ::btScalar btSoftBodyWorldInfo->water_density+void btSoftBodyWorldInfo_water_normal_set(void *c,float* a); //attribute: ::btVector3 btSoftBodyWorldInfo->water_normal+void btSoftBodyWorldInfo_water_normal_get(void *c,float* a);+void btSoftBodyWorldInfo_water_offset_set(void *c,float a); //attribute: ::btScalar btSoftBodyWorldInfo->water_offset+float btSoftBodyWorldInfo_water_offset_get(void *c); //attribute: ::btScalar btSoftBodyWorldInfo->water_offset+//not supported constructor: btSoftRigidDynamicsWorld  ( ::btSoftRigidDynamicsWorld::* )( ::btDispatcher *,::btBroadphaseInterface *,::btConstraintSolver *,::btCollisionConfiguration *,::btSoftBodySolver * ) +void btSoftRigidDynamicsWorld_free(void *c); void* btSoftRigidDynamicsWorld_getWorldInfo(void *c); //method: getWorldInfo ::btSoftBodyWorldInfo & ( ::btSoftRigidDynamicsWorld::* )(  ) +void* btSoftRigidDynamicsWorld_getWorldInfo0(void *c); //method: getWorldInfo ::btSoftBodyWorldInfo & ( ::btSoftRigidDynamicsWorld::* )(  ) +void* btSoftRigidDynamicsWorld_getWorldInfo1(void *c); //method: getWorldInfo ::btSoftBodyWorldInfo const & ( ::btSoftRigidDynamicsWorld::* )(  ) const+void btSoftRigidDynamicsWorld_setDrawFlags(void *c,int p0); //method: setDrawFlags void ( ::btSoftRigidDynamicsWorld::* )( int ) +//not supported method: getSoftBodyArray ::btSoftBodyArray & ( ::btSoftRigidDynamicsWorld::* )(  ) +//not supported method: getSoftBodyArray ::btSoftBodyArray & ( ::btSoftRigidDynamicsWorld::* )(  ) +//not supported method: getSoftBodyArray ::btSoftBodyArray const & ( ::btSoftRigidDynamicsWorld::* )(  ) const+void btSoftRigidDynamicsWorld_serialize(void *c,void* p0); //method: serialize void ( ::btSoftRigidDynamicsWorld::* )( ::btSerializer * ) +void btSoftRigidDynamicsWorld_rayTest(void *c,float* p0,float* p1,void* p2); //method: rayTest void ( ::btSoftRigidDynamicsWorld::* )( ::btVector3 const &,::btVector3 const &,::btCollisionWorld::RayResultCallback & ) const+//not supported method: getWorldType ::btDynamicsWorldType ( ::btSoftRigidDynamicsWorld::* )(  ) const+void btSoftRigidDynamicsWorld_addSoftBody(void *c,void* p0,short int p1,short int p2); //method: addSoftBody void ( ::btSoftRigidDynamicsWorld::* )( ::btSoftBody *,short int,short int ) +void btSoftRigidDynamicsWorld_removeCollisionObject(void *c,void* p0); //method: removeCollisionObject void ( ::btSoftRigidDynamicsWorld::* )( ::btCollisionObject * ) +void btSoftRigidDynamicsWorld_rayTestSingle(float* p0,float* p1,void* p2,void* p3,float* p4,void* p5); //method: rayTestSingle void (*)( ::btTransform const &,::btTransform const &,::btCollisionObject *,::btCollisionShape const *,::btTransform const &,::btCollisionWorld::RayResultCallback & )+void btSoftRigidDynamicsWorld_removeSoftBody(void *c,void* p0); //method: removeSoftBody void ( ::btSoftRigidDynamicsWorld::* )( ::btSoftBody * ) +void btSoftRigidDynamicsWorld_debugDrawWorld(void *c); //method: debugDrawWorld void ( ::btSoftRigidDynamicsWorld::* )(  ) +int btSoftRigidDynamicsWorld_getDrawFlags(void *c); //method: getDrawFlags int ( ::btSoftRigidDynamicsWorld::* )(  ) const+void* btSoftBody_eAeroModel_new(); //constructor: eAeroModel  ( ::btSoftBody::eAeroModel::* )(  ) +void btSoftBody_eAeroModel_free(void *c); void* btSoftBody_eFeature_new(); //constructor: eFeature  ( ::btSoftBody::eFeature::* )(  ) +void btSoftBody_eFeature_free(void *c); void* btSoftBody_ePSolver_new(); //constructor: ePSolver  ( ::btSoftBody::ePSolver::* )(  ) +void btSoftBody_ePSolver_free(void *c); void* btSoftBody_eSolverPresets_new(); //constructor: eSolverPresets  ( ::btSoftBody::eSolverPresets::* )(  ) +void btSoftBody_eSolverPresets_free(void *c); void* btSoftBody_Joint_eType_new(); //constructor: eType  ( ::btSoftBody::Joint::eType::* )(  ) +void btSoftBody_Joint_eType_free(void *c); void* btSoftBody_eVSolver_new(); //constructor: eVSolver  ( ::btSoftBody::eVSolver::* )(  ) +void btSoftBody_eVSolver_free(void *c); void* btSoftBody_fCollision_new(); //constructor: fCollision  ( ::btSoftBody::fCollision::* )(  ) +void btSoftBody_fCollision_free(void *c); void* fDrawFlags_new(); //constructor: fDrawFlags  ( ::fDrawFlags::* )(  ) +void fDrawFlags_free(void *c); void* btSoftBody_fMaterial_new(); //constructor: fMaterial  ( ::btSoftBody::fMaterial::* )(  ) +void btSoftBody_fMaterial_free(void *c); void* btSoftBody_sCti_new(); //constructor: sCti  ( ::btSoftBody::sCti::* )(  ) +void btSoftBody_sCti_free(void *c); void btSoftBody_sCti_m_colObj_set(void *c,void* a); //attribute: ::btCollisionObject * btSoftBody_sCti->m_colObj+// attribute getter not supported: //attribute: ::btCollisionObject * btSoftBody_sCti->m_colObj+void btSoftBody_sCti_m_normal_set(void *c,float* a); //attribute: ::btVector3 btSoftBody_sCti->m_normal+void btSoftBody_sCti_m_normal_get(void *c,float* a);+void btSoftBody_sCti_m_offset_set(void *c,float a); //attribute: ::btScalar btSoftBody_sCti->m_offset+float btSoftBody_sCti_m_offset_get(void *c); //attribute: ::btScalar btSoftBody_sCti->m_offset+void* btSoftBody_sMedium_new(); //constructor: sMedium  ( ::btSoftBody::sMedium::* )(  ) +void btSoftBody_sMedium_free(void *c); void btSoftBody_sMedium_m_density_set(void *c,float a); //attribute: ::btScalar btSoftBody_sMedium->m_density+float btSoftBody_sMedium_m_density_get(void *c); //attribute: ::btScalar btSoftBody_sMedium->m_density+void btSoftBody_sMedium_m_pressure_set(void *c,float a); //attribute: ::btScalar btSoftBody_sMedium->m_pressure+float btSoftBody_sMedium_m_pressure_get(void *c); //attribute: ::btScalar btSoftBody_sMedium->m_pressure+void btSoftBody_sMedium_m_velocity_set(void *c,float* a); //attribute: ::btVector3 btSoftBody_sMedium->m_velocity+void btSoftBody_sMedium_m_velocity_get(void *c,float* a);+void* btSoftBody_sRayCast_new(); //constructor: sRayCast  ( ::btSoftBody::sRayCast::* )(  ) +void btSoftBody_sRayCast_free(void *c); void btSoftBody_sRayCast_body_set(void *c,void* a); //attribute: ::btSoftBody * btSoftBody_sRayCast->body+// attribute getter not supported: //attribute: ::btSoftBody * btSoftBody_sRayCast->body+// attribute not supported: //attribute: ::btSoftBody::eFeature::_ btSoftBody_sRayCast->feature+void btSoftBody_sRayCast_fraction_set(void *c,float a); //attribute: ::btScalar btSoftBody_sRayCast->fraction+float btSoftBody_sRayCast_fraction_get(void *c); //attribute: ::btScalar btSoftBody_sRayCast->fraction+void btSoftBody_sRayCast_index_set(void *c,int a); //attribute: int btSoftBody_sRayCast->index+int btSoftBody_sRayCast_index_get(void *c); //attribute: int btSoftBody_sRayCast->index+void cProfileIterator_free(void *c); char const * cProfileIterator_Get_Current_Name(void *c); //method: Get_Current_Name char const * ( ::CProfileIterator::* )(  ) +int cProfileIterator_Get_Current_Total_Calls(void *c); //method: Get_Current_Total_Calls int ( ::CProfileIterator::* )(  ) +float cProfileIterator_Get_Current_Total_Time(void *c); //method: Get_Current_Total_Time float ( ::CProfileIterator::* )(  ) +void cProfileIterator_Enter_Child(void *c,int p0); //method: Enter_Child void ( ::CProfileIterator::* )( int ) +int cProfileIterator_Is_Done(void *c); //method: Is_Done bool ( ::CProfileIterator::* )(  ) +void cProfileIterator_Next(void *c); //method: Next void ( ::CProfileIterator::* )(  ) +int cProfileIterator_Is_Root(void *c); //method: Is_Root bool ( ::CProfileIterator::* )(  ) +char const * cProfileIterator_Get_Current_Parent_Name(void *c); //method: Get_Current_Parent_Name char const * ( ::CProfileIterator::* )(  ) +int cProfileIterator_Get_Current_Parent_Total_Calls(void *c); //method: Get_Current_Parent_Total_Calls int ( ::CProfileIterator::* )(  ) +float cProfileIterator_Get_Current_Parent_Total_Time(void *c); //method: Get_Current_Parent_Total_Time float ( ::CProfileIterator::* )(  ) +void cProfileIterator_Enter_Parent(void *c); //method: Enter_Parent void ( ::CProfileIterator::* )(  ) +void cProfileIterator_First(void *c); //method: First void ( ::CProfileIterator::* )(  ) +void* cProfileManager_new(); //constructor: CProfileManager  ( ::CProfileManager::* )(  ) +void cProfileManager_free(void *c); void cProfileManager_Reset(); //method: Reset void (*)(  )+void cProfileManager_dumpAll(); //method: dumpAll void (*)(  )+int cProfileManager_Get_Frame_Count_Since_Reset(); //method: Get_Frame_Count_Since_Reset int (*)(  )+void cProfileManager_Release_Iterator(void* p0); //method: Release_Iterator void (*)( ::CProfileIterator * )+void cProfileManager_Stop_Profile(); //method: Stop_Profile void (*)(  )+void cProfileManager_CleanupMemory(); //method: CleanupMemory void (*)(  )+float cProfileManager_Get_Time_Since_Reset(); //method: Get_Time_Since_Reset float (*)(  )+void cProfileManager_Start_Profile(char const * p0); //method: Start_Profile void (*)( char const * )+void cProfileManager_Increment_Frame_Counter(); //method: Increment_Frame_Counter void (*)(  )+void cProfileManager_dumpRecursive(void* p0,int p1); //method: dumpRecursive void (*)( ::CProfileIterator *,int )+void* cProfileManager_Get_Iterator(); //method: Get_Iterator ::CProfileIterator * (*)(  )+void* cProfileNode_new(char const * p0,void* p1); //constructor: CProfileNode  ( ::CProfileNode::* )( char const *,::CProfileNode * ) +void cProfileNode_free(void *c); void cProfileNode_Reset(void *c); //method: Reset void ( ::CProfileNode::* )(  ) +int cProfileNode_Return(void *c); //method: Return bool ( ::CProfileNode::* )(  ) +void* cProfileNode_Get_Sub_Node(void *c,char const * p0); //method: Get_Sub_Node ::CProfileNode * ( ::CProfileNode::* )( char const * ) +void cProfileNode_CleanupMemory(void *c); //method: CleanupMemory void ( ::CProfileNode::* )(  ) +void* cProfileNode_Get_Parent(void *c); //method: Get_Parent ::CProfileNode * ( ::CProfileNode::* )(  ) +int cProfileNode_Get_Total_Calls(void *c); //method: Get_Total_Calls int ( ::CProfileNode::* )(  ) +char const * cProfileNode_Get_Name(void *c); //method: Get_Name char const * ( ::CProfileNode::* )(  ) +float cProfileNode_Get_Total_Time(void *c); //method: Get_Total_Time float ( ::CProfileNode::* )(  ) +void cProfileNode_Call(void *c); //method: Call void ( ::CProfileNode::* )(  ) +void* cProfileNode_Get_Sibling(void *c); //method: Get_Sibling ::CProfileNode * ( ::CProfileNode::* )(  ) +void* cProfileNode_Get_Child(void *c); //method: Get_Child ::CProfileNode * ( ::CProfileNode::* )(  ) +void* cProfileSample_new(char const * p0); //constructor: CProfileSample  ( ::CProfileSample::* )( char const * ) +void cProfileSample_free(void *c); void* btBlock_new(); //constructor: btBlock  ( ::btBlock::* )(  ) +void btBlock_free(void *c); void btBlock_previous_set(void *c,void* a); //attribute: ::btBlock * btBlock->previous+// attribute getter not supported: //attribute: ::btBlock * btBlock->previous+// attribute not supported: //attribute: unsigned char * btBlock->address+void* btChunk_new(); //constructor: btChunk  ( ::btChunk::* )(  ) +void btChunk_free(void *c); void btChunk_m_chunkCode_set(void *c,int a); //attribute: int btChunk->m_chunkCode+int btChunk_m_chunkCode_get(void *c); //attribute: int btChunk->m_chunkCode+void btChunk_m_length_set(void *c,int a); //attribute: int btChunk->m_length+int btChunk_m_length_get(void *c); //attribute: int btChunk->m_length+// attribute not supported: //attribute: void * btChunk->m_oldPtr+void btChunk_m_dna_nr_set(void *c,int a); //attribute: int btChunk->m_dna_nr+int btChunk_m_dna_nr_get(void *c); //attribute: int btChunk->m_dna_nr+void btChunk_m_number_set(void *c,int a); //attribute: int btChunk->m_number+int btChunk_m_number_get(void *c); //attribute: int btChunk->m_number+void* btClock_new(); //constructor: btClock  ( ::btClock::* )(  ) +void btClock_free(void *c); void btClock_reset(void *c); //method: reset void ( ::btClock::* )(  ) +long unsigned int btClock_getTimeMilliseconds(void *c); //method: getTimeMilliseconds long unsigned int ( ::btClock::* )(  ) +long unsigned int btClock_getTimeMicroseconds(void *c); //method: getTimeMicroseconds long unsigned int ( ::btClock::* )(  ) +void* btConvexSeparatingDistanceUtil_new(float p0,float p1); //constructor: btConvexSeparatingDistanceUtil  ( ::btConvexSeparatingDistanceUtil::* )( ::btScalar,::btScalar ) +void btConvexSeparatingDistanceUtil_free(void *c); void btConvexSeparatingDistanceUtil_updateSeparatingDistance(void *c,float* p0,float* p1); //method: updateSeparatingDistance void ( ::btConvexSeparatingDistanceUtil::* )( ::btTransform const &,::btTransform const & ) +float btConvexSeparatingDistanceUtil_getConservativeSeparatingDistance(void *c); //method: getConservativeSeparatingDistance ::btScalar ( ::btConvexSeparatingDistanceUtil::* )(  ) +void btConvexSeparatingDistanceUtil_initSeparatingDistance(void *c,float* p0,float p1,float* p2,float* p3); //method: initSeparatingDistance void ( ::btConvexSeparatingDistanceUtil::* )( ::btVector3 const &,::btScalar,::btTransform const &,::btTransform const & ) +void* btDefaultMotionState_new(float* p0,float* p1); //constructor: btDefaultMotionState  ( ::btDefaultMotionState::* )( ::btTransform const &,::btTransform const & ) +void btDefaultMotionState_free(void *c); void btDefaultMotionState_setWorldTransform(void *c,float* p0); //method: setWorldTransform void ( ::btDefaultMotionState::* )( ::btTransform const & ) +void btDefaultMotionState_getWorldTransform(void *c,float* p0); //method: getWorldTransform void ( ::btDefaultMotionState::* )( ::btTransform & ) const+void btDefaultMotionState_m_graphicsWorldTrans_set(void *c,float* a); //attribute: ::btTransform btDefaultMotionState->m_graphicsWorldTrans+void btDefaultMotionState_m_graphicsWorldTrans_get(void *c,float* a);+void btDefaultMotionState_m_centerOfMassOffset_set(void *c,float* a); //attribute: ::btTransform btDefaultMotionState->m_centerOfMassOffset+void btDefaultMotionState_m_centerOfMassOffset_get(void *c,float* a);+void btDefaultMotionState_m_startWorldTrans_set(void *c,float* a); //attribute: ::btTransform btDefaultMotionState->m_startWorldTrans+void btDefaultMotionState_m_startWorldTrans_get(void *c,float* a);+// attribute not supported: //attribute: void * btDefaultMotionState->m_userPointer+void* btDefaultSerializer_new(int p0); //constructor: btDefaultSerializer  ( ::btDefaultSerializer::* )( int ) +void btDefaultSerializer_free(void *c); void btDefaultSerializer_setSerializationFlags(void *c,int p0); //method: setSerializationFlags void ( ::btDefaultSerializer::* )( int ) +//not supported method: findNameForPointer char const * ( ::btDefaultSerializer::* )( void const * ) const+//not supported method: writeHeader void ( ::btDefaultSerializer::* )( unsigned char * ) const+void btDefaultSerializer_startSerialization(void *c); //method: startSerialization void ( ::btDefaultSerializer::* )(  ) +int btDefaultSerializer_getSerializationFlags(void *c); //method: getSerializationFlags int ( ::btDefaultSerializer::* )(  ) const+void btDefaultSerializer_finishSerialization(void *c); //method: finishSerialization void ( ::btDefaultSerializer::* )(  ) +//not supported method: finalizeChunk void ( ::btDefaultSerializer::* )( ::btChunk *,char const *,int,void * ) +//not supported method: getBufferPointer unsigned char const * ( ::btDefaultSerializer::* )(  ) const+int btDefaultSerializer_getCurrentBufferSize(void *c); //method: getCurrentBufferSize int ( ::btDefaultSerializer::* )(  ) const+//not supported method: getUniquePointer void * ( ::btDefaultSerializer::* )( void * ) +void btDefaultSerializer_serializeName(void *c,char const * p0); //method: serializeName void ( ::btDefaultSerializer::* )( char const * ) +//not supported method: internalAlloc unsigned char * ( ::btDefaultSerializer::* )( ::size_t ) +//not supported method: registerNameForPointer void ( ::btDefaultSerializer::* )( void const *,char const * ) +//not supported method: allocate ::btChunk * ( ::btDefaultSerializer::* )( ::size_t,int ) +void* btGeometryUtil_new(); //constructor: btGeometryUtil  ( ::btGeometryUtil::* )(  ) +void btGeometryUtil_free(void *c); //not supported method: isPointInsidePlanes bool (*)( ::btAlignedObjectArray<btVector3> const &,::btVector3 const &,::btScalar )+//not supported method: getVerticesFromPlaneEquations void (*)( ::btAlignedObjectArray<btVector3> const &,::btAlignedObjectArray<btVector3> & )+//not supported method: isInside bool (*)( ::btAlignedObjectArray<btVector3> const &,::btVector3 const &,::btScalar )+//not supported method: areVerticesBehindPlane bool (*)( ::btVector3 const &,::btAlignedObjectArray<btVector3> const &,::btScalar )+//not supported method: getPlaneEquationsFromVertices void (*)( ::btAlignedObjectArray<btVector3> &,::btAlignedObjectArray<btVector3> & )+void* btHashInt_new(int p0); //constructor: btHashInt  ( ::btHashInt::* )( int ) +void btHashInt_free(void *c); int btHashInt_getUid1(void *c); //method: getUid1 int ( ::btHashInt::* )(  ) const+unsigned int btHashInt_getHash(void *c); //method: getHash unsigned int ( ::btHashInt::* )(  ) const+void btHashInt_setUid1(void *c,int p0); //method: setUid1 void ( ::btHashInt::* )( int ) +int btHashInt_equals(void *c,void* p0); //method: equals bool ( ::btHashInt::* )( ::btHashInt const & ) const+//not supported constructor: btHashPtr  ( ::btHashPtr::* )( void const * ) +void btHashPtr_free(void *c); unsigned int btHashPtr_getHash(void *c); //method: getHash unsigned int ( ::btHashPtr::* )(  ) const+//not supported method: getPointer void const * ( ::btHashPtr::* )(  ) const+int btHashPtr_equals(void *c,void* p0); //method: equals bool ( ::btHashPtr::* )( ::btHashPtr const & ) const+void* btHashString_new(char const * p0); //constructor: btHashString  ( ::btHashString::* )( char const * ) +void btHashString_free(void *c); unsigned int btHashString_getHash(void *c); //method: getHash unsigned int ( ::btHashString::* )(  ) const+int btHashString_equals(void *c,void* p0); //method: equals bool ( ::btHashString::* )( ::btHashString const & ) const+int btHashString_portableStringCompare(void *c,char const * p0,char const * p1); //method: portableStringCompare int ( ::btHashString::* )( char const *,char const * ) const+void btHashString_m_hash_set(void *c,unsigned int a); //attribute: unsigned int btHashString->m_hash+unsigned int btHashString_m_hash_get(void *c); //attribute: unsigned int btHashString->m_hash+void btHashString_m_string_set(void *c,char const * a); //attribute: char const * btHashString->m_string+char const * btHashString_m_string_get(void *c); //attribute: char const * btHashString->m_string+void btIDebugDraw_draw3dText(void *c,float* p0,char const * p1); //method: draw3dText void ( ::btIDebugDraw::* )( ::btVector3 const &,char const * ) +void btIDebugDraw_drawBox(void *c,float* p0,float* p1,float* p2); //method: drawBox void ( ::btIDebugDraw::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void btIDebugDraw_drawBox0(void *c,float* p0,float* p1,float* p2); //method: drawBox void ( ::btIDebugDraw::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void btIDebugDraw_drawBox1(void *c,float* p0,float* p1,float* p2,float* p3); //method: drawBox void ( ::btIDebugDraw::* )( ::btVector3 const &,::btVector3 const &,::btTransform const &,::btVector3 const & ) +void btIDebugDraw_drawCone(void *c,float p0,float p1,int p2,float* p3,float* p4); //method: drawCone void ( ::btIDebugDraw::* )( ::btScalar,::btScalar,int,::btTransform const &,::btVector3 const & ) +void btIDebugDraw_drawCapsule(void *c,float p0,float p1,int p2,float* p3,float* p4); //method: drawCapsule void ( ::btIDebugDraw::* )( ::btScalar,::btScalar,int,::btTransform const &,::btVector3 const & ) +void btIDebugDraw_drawArc(void *c,float* p0,float* p1,float* p2,float p3,float p4,float p5,float p6,float* p7,int p8,float p9); //method: drawArc void ( ::btIDebugDraw::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btScalar,::btScalar,::btScalar,::btScalar,::btVector3 const &,bool,::btScalar ) +void btIDebugDraw_drawCylinder(void *c,float p0,float p1,int p2,float* p3,float* p4); //method: drawCylinder void ( ::btIDebugDraw::* )( ::btScalar,::btScalar,int,::btTransform const &,::btVector3 const & ) +void btIDebugDraw_reportErrorWarning(void *c,char const * p0); //method: reportErrorWarning void ( ::btIDebugDraw::* )( char const * ) +void btIDebugDraw_drawTriangle(void *c,float* p0,float* p1,float* p2,float* p3,float* p4,float* p5,float* p6,float p7); //method: drawTriangle void ( ::btIDebugDraw::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btScalar ) +void btIDebugDraw_drawTriangle0(void *c,float* p0,float* p1,float* p2,float* p3,float* p4,float* p5,float* p6,float p7); //method: drawTriangle void ( ::btIDebugDraw::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btScalar ) +void btIDebugDraw_drawTriangle1(void *c,float* p0,float* p1,float* p2,float* p3,float p4); //method: drawTriangle void ( ::btIDebugDraw::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btScalar ) +int btIDebugDraw_getDebugMode(void *c); //method: getDebugMode int ( ::btIDebugDraw::* )(  ) const+void btIDebugDraw_drawLine(void *c,float* p0,float* p1,float* p2); //method: drawLine void ( ::btIDebugDraw::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void btIDebugDraw_drawLine0(void *c,float* p0,float* p1,float* p2); //method: drawLine void ( ::btIDebugDraw::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void btIDebugDraw_drawLine1(void *c,float* p0,float* p1,float* p2,float* p3); //method: drawLine void ( ::btIDebugDraw::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void btIDebugDraw_drawTransform(void *c,float* p0,float p1); //method: drawTransform void ( ::btIDebugDraw::* )( ::btTransform const &,::btScalar ) +void btIDebugDraw_drawAabb(void *c,float* p0,float* p1,float* p2); //method: drawAabb void ( ::btIDebugDraw::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void btIDebugDraw_drawPlane(void *c,float* p0,float p1,float* p2,float* p3); //method: drawPlane void ( ::btIDebugDraw::* )( ::btVector3 const &,::btScalar,::btTransform const &,::btVector3 const & ) +void btIDebugDraw_drawContactPoint(void *c,float* p0,float* p1,float p2,int p3,float* p4); //method: drawContactPoint void ( ::btIDebugDraw::* )( ::btVector3 const &,::btVector3 const &,::btScalar,int,::btVector3 const & ) +void btIDebugDraw_setDebugMode(void *c,int p0); //method: setDebugMode void ( ::btIDebugDraw::* )( int ) +void btIDebugDraw_drawSpherePatch(void *c,float* p0,float* p1,float* p2,float p3,float p4,float p5,float p6,float p7,float* p8,float p9); //method: drawSpherePatch void ( ::btIDebugDraw::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btScalar,::btScalar,::btScalar,::btScalar,::btScalar,::btVector3 const &,::btScalar ) +void btIDebugDraw_drawSphere(void *c,float p0,float* p1,float* p2); //method: drawSphere void ( ::btIDebugDraw::* )( ::btScalar,::btTransform const &,::btVector3 const & ) +void btIDebugDraw_drawSphere0(void *c,float p0,float* p1,float* p2); //method: drawSphere void ( ::btIDebugDraw::* )( ::btScalar,::btTransform const &,::btVector3 const & ) +void btIDebugDraw_drawSphere1(void *c,float* p0,float p1,float* p2); //method: drawSphere void ( ::btIDebugDraw::* )( ::btVector3 const &,::btScalar,::btVector3 const & ) +void* btMatrix3x3DoubleData_new(); //constructor: btMatrix3x3DoubleData  ( ::btMatrix3x3DoubleData::* )(  ) +void btMatrix3x3DoubleData_free(void *c); // attribute not supported: //attribute: ::btVector3DoubleData[3] btMatrix3x3DoubleData->m_el+void* btMatrix3x3FloatData_new(); //constructor: btMatrix3x3FloatData  ( ::btMatrix3x3FloatData::* )(  ) +void btMatrix3x3FloatData_free(void *c); // attribute not supported: //attribute: ::btVector3FloatData[3] btMatrix3x3FloatData->m_el+void btMotionState_setWorldTransform(void *c,float* p0); //method: setWorldTransform void ( ::btMotionState::* )( ::btTransform const & ) +void btMotionState_getWorldTransform(void *c,float* p0); //method: getWorldTransform void ( ::btMotionState::* )( ::btTransform & ) const+void* btPointerUid_new(); //constructor: btPointerUid  ( ::btPointerUid::* )(  ) +void btPointerUid_free(void *c); // attribute not supported: //attribute: ::btPointerUid btPointerUid->+void* btQuadWord_new0(); //constructor: btQuadWord  ( ::btQuadWord::* )(  ) +void* btQuadWord_new1(float p0,float p1,float p2); //constructor: btQuadWord  ( ::btQuadWord::* )( ::btScalar const &,::btScalar const &,::btScalar const & ) +void* btQuadWord_new2(float p0,float p1,float p2,float p3); //constructor: btQuadWord  ( ::btQuadWord::* )( ::btScalar const &,::btScalar const &,::btScalar const &,::btScalar const & ) +void btQuadWord_free(void *c); void btQuadWord_setMin(void *c,void* p0); //method: setMin void ( ::btQuadWord::* )( ::btQuadWord const & ) +void btQuadWord_setValue(void *c,float p0,float p1,float p2); //method: setValue void ( ::btQuadWord::* )( ::btScalar const &,::btScalar const &,::btScalar const & ) +void btQuadWord_setValue0(void *c,float p0,float p1,float p2); //method: setValue void ( ::btQuadWord::* )( ::btScalar const &,::btScalar const &,::btScalar const & ) +void btQuadWord_setValue1(void *c,float p0,float p1,float p2,float p3); //method: setValue void ( ::btQuadWord::* )( ::btScalar const &,::btScalar const &,::btScalar const &,::btScalar const & ) +void btQuadWord_setMax(void *c,void* p0); //method: setMax void ( ::btQuadWord::* )( ::btQuadWord const & ) +float btQuadWord_getX(void *c); //method: getX ::btScalar const & ( ::btQuadWord::* )(  ) const+float btQuadWord_getY(void *c); //method: getY ::btScalar const & ( ::btQuadWord::* )(  ) const+float btQuadWord_getZ(void *c); //method: getZ ::btScalar const & ( ::btQuadWord::* )(  ) const+void btQuadWord_setW(void *c,float p0); //method: setW void ( ::btQuadWord::* )( ::btScalar ) +float btQuadWord_w(void *c); //method: w ::btScalar const & ( ::btQuadWord::* )(  ) const+float btQuadWord_y(void *c); //method: y ::btScalar const & ( ::btQuadWord::* )(  ) const+float btQuadWord_x(void *c); //method: x ::btScalar const & ( ::btQuadWord::* )(  ) const+float btQuadWord_z(void *c); //method: z ::btScalar const & ( ::btQuadWord::* )(  ) const+void btQuadWord_setX(void *c,float p0); //method: setX void ( ::btQuadWord::* )( ::btScalar ) +void btQuadWord_setY(void *c,float p0); //method: setY void ( ::btQuadWord::* )( ::btScalar ) +void btQuadWord_setZ(void *c,float p0); //method: setZ void ( ::btQuadWord::* )( ::btScalar ) +void btSerializer_setSerializationFlags(void *c,int p0); //method: setSerializationFlags void ( ::btSerializer::* )( int ) +int btSerializer_getCurrentBufferSize(void *c); //method: getCurrentBufferSize int ( ::btSerializer::* )(  ) const+void btSerializer_startSerialization(void *c); //method: startSerialization void ( ::btSerializer::* )(  ) +int btSerializer_getSerializationFlags(void *c); //method: getSerializationFlags int ( ::btSerializer::* )(  ) const+void btSerializer_finishSerialization(void *c); //method: finishSerialization void ( ::btSerializer::* )(  ) +//not supported method: getUniquePointer void * ( ::btSerializer::* )( void * ) +//not supported method: allocate ::btChunk * ( ::btSerializer::* )( ::size_t,int ) +//not supported method: findNameForPointer char const * ( ::btSerializer::* )( void const * ) const+//not supported method: finalizeChunk void ( ::btSerializer::* )( ::btChunk *,char const *,int,void * ) +void btSerializer_serializeName(void *c,char const * p0); //method: serializeName void ( ::btSerializer::* )( char const * ) +//not supported method: findPointer void * ( ::btSerializer::* )( void * ) +//not supported method: registerNameForPointer void ( ::btSerializer::* )( void const *,char const * ) +//not supported method: getBufferPointer unsigned char const * ( ::btSerializer::* )(  ) const+void* btStackAlloc_new(unsigned int p0); //constructor: btStackAlloc  ( ::btStackAlloc::* )( unsigned int ) +void btStackAlloc_free(void *c); void btStackAlloc_create(void *c,unsigned int p0); //method: create void ( ::btStackAlloc::* )( unsigned int ) +//not supported method: allocate unsigned char * ( ::btStackAlloc::* )( unsigned int ) +void btStackAlloc_destroy(void *c); //method: destroy void ( ::btStackAlloc::* )(  ) +void* btStackAlloc_beginBlock(void *c); //method: beginBlock ::btBlock * ( ::btStackAlloc::* )(  ) +int btStackAlloc_getAvailableMemory(void *c); //method: getAvailableMemory int ( ::btStackAlloc::* )(  ) const+void btStackAlloc_endBlock(void *c,void* p0); //method: endBlock void ( ::btStackAlloc::* )( ::btBlock * ) +void* btTransformDoubleData_new(); //constructor: btTransformDoubleData  ( ::btTransformDoubleData::* )(  ) +void btTransformDoubleData_free(void *c); // attribute not supported: //attribute: ::btMatrix3x3DoubleData btTransformDoubleData->m_basis+// attribute not supported: //attribute: ::btVector3DoubleData btTransformDoubleData->m_origin+void* btTransformFloatData_new(); //constructor: btTransformFloatData  ( ::btTransformFloatData::* )(  ) +void btTransformFloatData_free(void *c); // attribute not supported: //attribute: ::btMatrix3x3FloatData btTransformFloatData->m_basis+// attribute not supported: //attribute: ::btVector3FloatData btTransformFloatData->m_origin+void* btTransformUtil_new(); //constructor: btTransformUtil  ( ::btTransformUtil::* )(  ) +void btTransformUtil_free(void *c); //not supported method: calculateDiffAxisAngle void (*)( ::btTransform const &,::btTransform const &,::btVector3 &,::btScalar & )+void btTransformUtil_calculateVelocity(float* p0,float* p1,float p2,float* p3,float* p4); //method: calculateVelocity void (*)( ::btTransform const &,::btTransform const &,::btScalar,::btVector3 &,::btVector3 & )+void btTransformUtil_integrateTransform(float* p0,float* p1,float* p2,float p3,float* p4); //method: integrateTransform void (*)( ::btTransform const &,::btVector3 const &,::btVector3 const &,::btScalar,::btTransform & )+void btTransformUtil_calculateVelocityQuaternion(float* p0,float* p1,float* p2,float* p3,float p4,float* p5,float* p6); //method: calculateVelocityQuaternion void (*)( ::btVector3 const &,::btVector3 const &,::btQuaternion const &,::btQuaternion const &,::btScalar,::btVector3 &,::btVector3 & )+//not supported method: calculateDiffAxisAngleQuaternion void (*)( ::btQuaternion const &,::btQuaternion const &,::btVector3 &,::btScalar & )+void* btTypedObject_new(int p0); //constructor: btTypedObject  ( ::btTypedObject::* )( int ) +void btTypedObject_free(void *c); int btTypedObject_getObjectType(void *c); //method: getObjectType int ( ::btTypedObject::* )(  ) const+void btTypedObject_m_objectType_set(void *c,int a); //attribute: int btTypedObject->m_objectType+int btTypedObject_m_objectType_get(void *c); //attribute: int btTypedObject->m_objectType+void* btVector3DoubleData_new(); //constructor: btVector3DoubleData  ( ::btVector3DoubleData::* )(  ) +void btVector3DoubleData_free(void *c); // attribute not supported: //attribute: double[4] btVector3DoubleData->m_floats+void* btVector3FloatData_new(); //constructor: btVector3FloatData  ( ::btVector3FloatData::* )(  ) +void btVector3FloatData_free(void *c); // attribute not supported: //attribute: float[4] btVector3FloatData->m_floats+void* btAngularLimit_new(); //constructor: btAngularLimit  ( ::btAngularLimit::* )(  ) +void btAngularLimit_free(void *c); float btAngularLimit_getCorrection(void *c); //method: getCorrection ::btScalar ( ::btAngularLimit::* )(  ) const+void btAngularLimit_set(void *c,float p0,float p1,float p2,float p3,float p4); //method: set void ( ::btAngularLimit::* )( ::btScalar,::btScalar,::btScalar,::btScalar,::btScalar ) +float btAngularLimit_getError(void *c); //method: getError ::btScalar ( ::btAngularLimit::* )(  ) const+//not supported method: fit void ( ::btAngularLimit::* )( ::btScalar & ) const+int btAngularLimit_isLimit(void *c); //method: isLimit bool ( ::btAngularLimit::* )(  ) const+float btAngularLimit_getSign(void *c); //method: getSign ::btScalar ( ::btAngularLimit::* )(  ) const+float btAngularLimit_getBiasFactor(void *c); //method: getBiasFactor ::btScalar ( ::btAngularLimit::* )(  ) const+float btAngularLimit_getSoftness(void *c); //method: getSoftness ::btScalar ( ::btAngularLimit::* )(  ) const+float btAngularLimit_getHigh(void *c); //method: getHigh ::btScalar ( ::btAngularLimit::* )(  ) const+//not supported method: test void ( ::btAngularLimit::* )( ::btScalar const ) +float btAngularLimit_getHalfRange(void *c); //method: getHalfRange ::btScalar ( ::btAngularLimit::* )(  ) const+float btAngularLimit_getLow(void *c); //method: getLow ::btScalar ( ::btAngularLimit::* )(  ) const+float btAngularLimit_getRelaxationFactor(void *c); //method: getRelaxationFactor ::btScalar ( ::btAngularLimit::* )(  ) const+void* btConeTwistConstraint_new0(void* p0,void* p1,float* p2,float* p3); //constructor: btConeTwistConstraint  ( ::btConeTwistConstraint::* )( ::btRigidBody &,::btRigidBody &,::btTransform const &,::btTransform const & ) +void* btConeTwistConstraint_new1(void* p0,float* p1); //constructor: btConeTwistConstraint  ( ::btConeTwistConstraint::* )( ::btRigidBody &,::btTransform const & ) +void btConeTwistConstraint_free(void *c); void* btConeTwistConstraint_getRigidBodyB(void *c); //method: getRigidBodyB ::btRigidBody const & ( ::btConeTwistConstraint::* )(  ) const+void btConeTwistConstraint_getInfo2NonVirtual(void *c,void* p0,float* p1,float* p2,float* p3,float* p4); //method: getInfo2NonVirtual void ( ::btConeTwistConstraint::* )( ::btTypedConstraint::btConstraintInfo2 *,::btTransform const &,::btTransform const &,::btMatrix3x3 const &,::btMatrix3x3 const & ) +void* btConeTwistConstraint_getRigidBodyA(void *c); //method: getRigidBodyA ::btRigidBody const & ( ::btConeTwistConstraint::* )(  ) const+int btConeTwistConstraint_isPastSwingLimit(void *c); //method: isPastSwingLimit bool ( ::btConeTwistConstraint::* )(  ) +void btConeTwistConstraint_getFrameOffsetA(void *c,float* ret); //method: getFrameOffsetA ::btTransform const & ( ::btConeTwistConstraint::* )(  ) const+void btConeTwistConstraint_getFrameOffsetB(void *c,float* ret); //method: getFrameOffsetB ::btTransform const & ( ::btConeTwistConstraint::* )(  ) const+float btConeTwistConstraint_getSwingSpan2(void *c); //method: getSwingSpan2 ::btScalar ( ::btConeTwistConstraint::* )(  ) +float btConeTwistConstraint_getSwingSpan1(void *c); //method: getSwingSpan1 ::btScalar ( ::btConeTwistConstraint::* )(  ) +void btConeTwistConstraint_calcAngleInfo2(void *c,float* p0,float* p1,float* p2,float* p3); //method: calcAngleInfo2 void ( ::btConeTwistConstraint::* )( ::btTransform const &,::btTransform const &,::btMatrix3x3 const &,::btMatrix3x3 const & ) +void btConeTwistConstraint_setParam(void *c,int p0,float p1,int p2); //method: setParam void ( ::btConeTwistConstraint::* )( int,::btScalar,int ) +float btConeTwistConstraint_getParam(void *c,int p0,int p1); //method: getParam ::btScalar ( ::btConeTwistConstraint::* )( int,int ) const+void btConeTwistConstraint_setDamping(void *c,float p0); //method: setDamping void ( ::btConeTwistConstraint::* )( ::btScalar ) +void btConeTwistConstraint_getInfo1(void *c,void* p0); //method: getInfo1 void ( ::btConeTwistConstraint::* )( ::btTypedConstraint::btConstraintInfo1 * ) +void btConeTwistConstraint_getInfo2(void *c,void* p0); //method: getInfo2 void ( ::btConeTwistConstraint::* )( ::btTypedConstraint::btConstraintInfo2 * ) +int btConeTwistConstraint_calculateSerializeBufferSize(void *c); //method: calculateSerializeBufferSize int ( ::btConeTwistConstraint::* )(  ) const+float btConeTwistConstraint_getTwistAngle(void *c); //method: getTwistAngle ::btScalar ( ::btConeTwistConstraint::* )(  ) +void btConeTwistConstraint_setMaxMotorImpulseNormalized(void *c,float p0); //method: setMaxMotorImpulseNormalized void ( ::btConeTwistConstraint::* )( ::btScalar ) +int btConeTwistConstraint_getSolveTwistLimit(void *c); //method: getSolveTwistLimit int ( ::btConeTwistConstraint::* )(  ) +void btConeTwistConstraint_enableMotor(void *c,int p0); //method: enableMotor void ( ::btConeTwistConstraint::* )( bool ) +void btConeTwistConstraint_getBFrame(void *c,float* ret); //method: getBFrame ::btTransform const & ( ::btConeTwistConstraint::* )(  ) +void btConeTwistConstraint_getInfo1NonVirtual(void *c,void* p0); //method: getInfo1NonVirtual void ( ::btConeTwistConstraint::* )( ::btTypedConstraint::btConstraintInfo1 * ) +//not supported method: serialize char const * ( ::btConeTwistConstraint::* )( void *,::btSerializer * ) const+float btConeTwistConstraint_getFixThresh(void *c); //method: getFixThresh ::btScalar ( ::btConeTwistConstraint::* )(  ) +int btConeTwistConstraint_getSolveSwingLimit(void *c); //method: getSolveSwingLimit int ( ::btConeTwistConstraint::* )(  ) +void btConeTwistConstraint_setAngularOnly(void *c,int p0); //method: setAngularOnly void ( ::btConeTwistConstraint::* )( bool ) +void btConeTwistConstraint_setFrames(void *c,float* p0,float* p1); //method: setFrames void ( ::btConeTwistConstraint::* )( ::btTransform const &,::btTransform const & ) +void btConeTwistConstraint_setLimit(void *c,int p0,float p1); //method: setLimit void ( ::btConeTwistConstraint::* )( int,::btScalar ) +void btConeTwistConstraint_setLimit0(void *c,int p0,float p1); //method: setLimit void ( ::btConeTwistConstraint::* )( int,::btScalar ) +void btConeTwistConstraint_setLimit1(void *c,float p0,float p1,float p2,float p3,float p4,float p5); //method: setLimit void ( ::btConeTwistConstraint::* )( ::btScalar,::btScalar,::btScalar,::btScalar,::btScalar,::btScalar ) +void btConeTwistConstraint_buildJacobian(void *c); //method: buildJacobian void ( ::btConeTwistConstraint::* )(  ) +float btConeTwistConstraint_getTwistLimitSign(void *c); //method: getTwistLimitSign ::btScalar ( ::btConeTwistConstraint::* )(  ) +void btConeTwistConstraint_setMaxMotorImpulse(void *c,float p0); //method: setMaxMotorImpulse void ( ::btConeTwistConstraint::* )( ::btScalar ) +void btConeTwistConstraint_updateRHS(void *c,float p0); //method: updateRHS void ( ::btConeTwistConstraint::* )( ::btScalar ) +void btConeTwistConstraint_setMotorTarget(void *c,float* p0); //method: setMotorTarget void ( ::btConeTwistConstraint::* )( ::btQuaternion const & ) +void btConeTwistConstraint_setFixThresh(void *c,float p0); //method: setFixThresh void ( ::btConeTwistConstraint::* )( ::btScalar ) +void btConeTwistConstraint_setMotorTargetInConstraintSpace(void *c,float* p0); //method: setMotorTargetInConstraintSpace void ( ::btConeTwistConstraint::* )( ::btQuaternion const & ) +void btConeTwistConstraint_solveConstraintObsolete(void *c,void* p0,void* p1,float p2); //method: solveConstraintObsolete void ( ::btConeTwistConstraint::* )( ::btRigidBody &,::btRigidBody &,::btScalar ) +void btConeTwistConstraint_GetPointForAngle(void *c,float p0,float p1,float* ret); //method: GetPointForAngle ::btVector3 ( ::btConeTwistConstraint::* )( ::btScalar,::btScalar ) const+void btConeTwistConstraint_calcAngleInfo(void *c); //method: calcAngleInfo void ( ::btConeTwistConstraint::* )(  ) +float btConeTwistConstraint_getTwistSpan(void *c); //method: getTwistSpan ::btScalar ( ::btConeTwistConstraint::* )(  ) +void btConeTwistConstraint_getAFrame(void *c,float* ret); //method: getAFrame ::btTransform const & ( ::btConeTwistConstraint::* )(  ) +void* btConeTwistConstraintData_new(); //constructor: btConeTwistConstraintData  ( ::btConeTwistConstraintData::* )(  ) +void btConeTwistConstraintData_free(void *c); // attribute not supported: //attribute: ::btTypedConstraintData btConeTwistConstraintData->m_typeConstraintData+// attribute not supported: //attribute: ::btTransformFloatData btConeTwistConstraintData->m_rbAFrame+// attribute not supported: //attribute: ::btTransformFloatData btConeTwistConstraintData->m_rbBFrame+void btConeTwistConstraintData_m_swingSpan1_set(void *c,float a); //attribute: float btConeTwistConstraintData->m_swingSpan1+float btConeTwistConstraintData_m_swingSpan1_get(void *c); //attribute: float btConeTwistConstraintData->m_swingSpan1+void btConeTwistConstraintData_m_swingSpan2_set(void *c,float a); //attribute: float btConeTwistConstraintData->m_swingSpan2+float btConeTwistConstraintData_m_swingSpan2_get(void *c); //attribute: float btConeTwistConstraintData->m_swingSpan2+void btConeTwistConstraintData_m_twistSpan_set(void *c,float a); //attribute: float btConeTwistConstraintData->m_twistSpan+float btConeTwistConstraintData_m_twistSpan_get(void *c); //attribute: float btConeTwistConstraintData->m_twistSpan+void btConeTwistConstraintData_m_limitSoftness_set(void *c,float a); //attribute: float btConeTwistConstraintData->m_limitSoftness+float btConeTwistConstraintData_m_limitSoftness_get(void *c); //attribute: float btConeTwistConstraintData->m_limitSoftness+void btConeTwistConstraintData_m_biasFactor_set(void *c,float a); //attribute: float btConeTwistConstraintData->m_biasFactor+float btConeTwistConstraintData_m_biasFactor_get(void *c); //attribute: float btConeTwistConstraintData->m_biasFactor+void btConeTwistConstraintData_m_relaxationFactor_set(void *c,float a); //attribute: float btConeTwistConstraintData->m_relaxationFactor+float btConeTwistConstraintData_m_relaxationFactor_get(void *c); //attribute: float btConeTwistConstraintData->m_relaxationFactor+void btConeTwistConstraintData_m_damping_set(void *c,float a); //attribute: float btConeTwistConstraintData->m_damping+float btConeTwistConstraintData_m_damping_get(void *c); //attribute: float btConeTwistConstraintData->m_damping+// attribute not supported: //attribute: char[4] btConeTwistConstraintData->m_pad+void* btTypedConstraint_btConstraintInfo1_new(); //constructor: btConstraintInfo1  ( ::btTypedConstraint::btConstraintInfo1::* )(  ) +void btTypedConstraint_btConstraintInfo1_free(void *c); void btTypedConstraint_btConstraintInfo1_m_numConstraintRows_set(void *c,int a); //attribute: int btTypedConstraint_btConstraintInfo1->m_numConstraintRows+int btTypedConstraint_btConstraintInfo1_m_numConstraintRows_get(void *c); //attribute: int btTypedConstraint_btConstraintInfo1->m_numConstraintRows+void btTypedConstraint_btConstraintInfo1_nub_set(void *c,int a); //attribute: int btTypedConstraint_btConstraintInfo1->nub+int btTypedConstraint_btConstraintInfo1_nub_get(void *c); //attribute: int btTypedConstraint_btConstraintInfo1->nub+void* btTypedConstraint_btConstraintInfo2_new(); //constructor: btConstraintInfo2  ( ::btTypedConstraint::btConstraintInfo2::* )(  ) +void btTypedConstraint_btConstraintInfo2_free(void *c); // attribute not supported: //attribute: ::btScalar * btTypedConstraint_btConstraintInfo2->cfm+void btTypedConstraint_btConstraintInfo2_erp_set(void *c,float a); //attribute: ::btScalar btTypedConstraint_btConstraintInfo2->erp+float btTypedConstraint_btConstraintInfo2_erp_get(void *c); //attribute: ::btScalar btTypedConstraint_btConstraintInfo2->erp+// attribute not supported: //attribute: int * btTypedConstraint_btConstraintInfo2->findex+void btTypedConstraint_btConstraintInfo2_fps_set(void *c,float a); //attribute: ::btScalar btTypedConstraint_btConstraintInfo2->fps+float btTypedConstraint_btConstraintInfo2_fps_get(void *c); //attribute: ::btScalar btTypedConstraint_btConstraintInfo2->fps+// attribute not supported: //attribute: ::btScalar * btTypedConstraint_btConstraintInfo2->m_J1angularAxis+// attribute not supported: //attribute: ::btScalar * btTypedConstraint_btConstraintInfo2->m_J1linearAxis+// attribute not supported: //attribute: ::btScalar * btTypedConstraint_btConstraintInfo2->m_J2angularAxis+// attribute not supported: //attribute: ::btScalar * btTypedConstraint_btConstraintInfo2->m_J2linearAxis+// attribute not supported: //attribute: ::btScalar * btTypedConstraint_btConstraintInfo2->m_constraintError+void btTypedConstraint_btConstraintInfo2_m_damping_set(void *c,float a); //attribute: ::btScalar btTypedConstraint_btConstraintInfo2->m_damping+float btTypedConstraint_btConstraintInfo2_m_damping_get(void *c); //attribute: ::btScalar btTypedConstraint_btConstraintInfo2->m_damping+// attribute not supported: //attribute: ::btScalar * btTypedConstraint_btConstraintInfo2->m_lowerLimit+void btTypedConstraint_btConstraintInfo2_m_numIterations_set(void *c,int a); //attribute: int btTypedConstraint_btConstraintInfo2->m_numIterations+int btTypedConstraint_btConstraintInfo2_m_numIterations_get(void *c); //attribute: int btTypedConstraint_btConstraintInfo2->m_numIterations+// attribute not supported: //attribute: ::btScalar * btTypedConstraint_btConstraintInfo2->m_upperLimit+void btTypedConstraint_btConstraintInfo2_rowskip_set(void *c,int a); //attribute: int btTypedConstraint_btConstraintInfo2->rowskip+int btTypedConstraint_btConstraintInfo2_rowskip_get(void *c); //attribute: int btTypedConstraint_btConstraintInfo2->rowskip+void* btConstraintSetting_new(); //constructor: btConstraintSetting  ( ::btConstraintSetting::* )(  ) +void btConstraintSetting_free(void *c); void btConstraintSetting_m_tau_set(void *c,float a); //attribute: ::btScalar btConstraintSetting->m_tau+float btConstraintSetting_m_tau_get(void *c); //attribute: ::btScalar btConstraintSetting->m_tau+void btConstraintSetting_m_damping_set(void *c,float a); //attribute: ::btScalar btConstraintSetting->m_damping+float btConstraintSetting_m_damping_get(void *c); //attribute: ::btScalar btConstraintSetting->m_damping+void btConstraintSetting_m_impulseClamp_set(void *c,float a); //attribute: ::btScalar btConstraintSetting->m_impulseClamp+float btConstraintSetting_m_impulseClamp_get(void *c); //attribute: ::btScalar btConstraintSetting->m_impulseClamp+void btConstraintSolver_reset(void *c); //method: reset void ( ::btConstraintSolver::* )(  ) +void btConstraintSolver_allSolved(void *c,void* p0,void* p1,void* p2); //method: allSolved void ( ::btConstraintSolver::* )( ::btContactSolverInfo const &,::btIDebugDraw *,::btStackAlloc * ) +//not supported method: solveGroup ::btScalar ( ::btConstraintSolver::* )( ::btCollisionObject * *,int,::btPersistentManifold * *,int,::btTypedConstraint * *,int,::btContactSolverInfo const &,::btIDebugDraw *,::btStackAlloc *,::btDispatcher * ) +void btConstraintSolver_prepareSolve(void *c,int p0,int p1); //method: prepareSolve void ( ::btConstraintSolver::* )( int,int ) +void btContactConstraint_getInfo1(void *c,void* p0); //method: getInfo1 void ( ::btContactConstraint::* )( ::btTypedConstraint::btConstraintInfo1 * ) +void btContactConstraint_setContactManifold(void *c,void* p0); //method: setContactManifold void ( ::btContactConstraint::* )( ::btPersistentManifold * ) +void btContactConstraint_buildJacobian(void *c); //method: buildJacobian void ( ::btContactConstraint::* )(  ) +void btContactConstraint_getInfo2(void *c,void* p0); //method: getInfo2 void ( ::btContactConstraint::* )( ::btTypedConstraint::btConstraintInfo2 * ) +void* btContactConstraint_getContactManifold(void *c); //method: getContactManifold ::btPersistentManifold * ( ::btContactConstraint::* )(  ) +void* btContactConstraint_getContactManifold0(void *c); //method: getContactManifold ::btPersistentManifold * ( ::btContactConstraint::* )(  ) +void* btContactConstraint_getContactManifold1(void *c); //method: getContactManifold ::btPersistentManifold const * ( ::btContactConstraint::* )(  ) const+void* btContactSolverInfo_new(); //constructor: btContactSolverInfo  ( ::btContactSolverInfo::* )(  ) +void btContactSolverInfo_free(void *c); void* btContactSolverInfoData_new(); //constructor: btContactSolverInfoData  ( ::btContactSolverInfoData::* )(  ) +void btContactSolverInfoData_free(void *c); void btContactSolverInfoData_m_tau_set(void *c,float a); //attribute: ::btScalar btContactSolverInfoData->m_tau+float btContactSolverInfoData_m_tau_get(void *c); //attribute: ::btScalar btContactSolverInfoData->m_tau+void btContactSolverInfoData_m_damping_set(void *c,float a); //attribute: ::btScalar btContactSolverInfoData->m_damping+float btContactSolverInfoData_m_damping_get(void *c); //attribute: ::btScalar btContactSolverInfoData->m_damping+void btContactSolverInfoData_m_friction_set(void *c,float a); //attribute: ::btScalar btContactSolverInfoData->m_friction+float btContactSolverInfoData_m_friction_get(void *c); //attribute: ::btScalar btContactSolverInfoData->m_friction+void btContactSolverInfoData_m_timeStep_set(void *c,float a); //attribute: ::btScalar btContactSolverInfoData->m_timeStep+float btContactSolverInfoData_m_timeStep_get(void *c); //attribute: ::btScalar btContactSolverInfoData->m_timeStep+void btContactSolverInfoData_m_restitution_set(void *c,float a); //attribute: ::btScalar btContactSolverInfoData->m_restitution+float btContactSolverInfoData_m_restitution_get(void *c); //attribute: ::btScalar btContactSolverInfoData->m_restitution+void btContactSolverInfoData_m_numIterations_set(void *c,int a); //attribute: int btContactSolverInfoData->m_numIterations+int btContactSolverInfoData_m_numIterations_get(void *c); //attribute: int btContactSolverInfoData->m_numIterations+void btContactSolverInfoData_m_maxErrorReduction_set(void *c,float a); //attribute: ::btScalar btContactSolverInfoData->m_maxErrorReduction+float btContactSolverInfoData_m_maxErrorReduction_get(void *c); //attribute: ::btScalar btContactSolverInfoData->m_maxErrorReduction+void btContactSolverInfoData_m_sor_set(void *c,float a); //attribute: ::btScalar btContactSolverInfoData->m_sor+float btContactSolverInfoData_m_sor_get(void *c); //attribute: ::btScalar btContactSolverInfoData->m_sor+void btContactSolverInfoData_m_erp_set(void *c,float a); //attribute: ::btScalar btContactSolverInfoData->m_erp+float btContactSolverInfoData_m_erp_get(void *c); //attribute: ::btScalar btContactSolverInfoData->m_erp+void btContactSolverInfoData_m_erp2_set(void *c,float a); //attribute: ::btScalar btContactSolverInfoData->m_erp2+float btContactSolverInfoData_m_erp2_get(void *c); //attribute: ::btScalar btContactSolverInfoData->m_erp2+void btContactSolverInfoData_m_globalCfm_set(void *c,float a); //attribute: ::btScalar btContactSolverInfoData->m_globalCfm+float btContactSolverInfoData_m_globalCfm_get(void *c); //attribute: ::btScalar btContactSolverInfoData->m_globalCfm+void btContactSolverInfoData_m_splitImpulse_set(void *c,int a); //attribute: int btContactSolverInfoData->m_splitImpulse+int btContactSolverInfoData_m_splitImpulse_get(void *c); //attribute: int btContactSolverInfoData->m_splitImpulse+void btContactSolverInfoData_m_splitImpulsePenetrationThreshold_set(void *c,float a); //attribute: ::btScalar btContactSolverInfoData->m_splitImpulsePenetrationThreshold+float btContactSolverInfoData_m_splitImpulsePenetrationThreshold_get(void *c); //attribute: ::btScalar btContactSolverInfoData->m_splitImpulsePenetrationThreshold+void btContactSolverInfoData_m_linearSlop_set(void *c,float a); //attribute: ::btScalar btContactSolverInfoData->m_linearSlop+float btContactSolverInfoData_m_linearSlop_get(void *c); //attribute: ::btScalar btContactSolverInfoData->m_linearSlop+void btContactSolverInfoData_m_warmstartingFactor_set(void *c,float a); //attribute: ::btScalar btContactSolverInfoData->m_warmstartingFactor+float btContactSolverInfoData_m_warmstartingFactor_get(void *c); //attribute: ::btScalar btContactSolverInfoData->m_warmstartingFactor+void btContactSolverInfoData_m_solverMode_set(void *c,int a); //attribute: int btContactSolverInfoData->m_solverMode+int btContactSolverInfoData_m_solverMode_get(void *c); //attribute: int btContactSolverInfoData->m_solverMode+void btContactSolverInfoData_m_restingContactRestitutionThreshold_set(void *c,int a); //attribute: int btContactSolverInfoData->m_restingContactRestitutionThreshold+int btContactSolverInfoData_m_restingContactRestitutionThreshold_get(void *c); //attribute: int btContactSolverInfoData->m_restingContactRestitutionThreshold+void btContactSolverInfoData_m_minimumSolverBatchSize_set(void *c,int a); //attribute: int btContactSolverInfoData->m_minimumSolverBatchSize+int btContactSolverInfoData_m_minimumSolverBatchSize_get(void *c); //attribute: int btContactSolverInfoData->m_minimumSolverBatchSize+void* btGeneric6DofConstraint_new0(void* p0,void* p1,float* p2,float* p3,int p4); //constructor: btGeneric6DofConstraint  ( ::btGeneric6DofConstraint::* )( ::btRigidBody &,::btRigidBody &,::btTransform const &,::btTransform const &,bool ) +void* btGeneric6DofConstraint_new1(void* p0,float* p1,int p2); //constructor: btGeneric6DofConstraint  ( ::btGeneric6DofConstraint::* )( ::btRigidBody &,::btTransform const &,bool ) +void btGeneric6DofConstraint_free(void *c); void btGeneric6DofConstraint_buildJacobian(void *c); //method: buildJacobian void ( ::btGeneric6DofConstraint::* )(  ) +void btGeneric6DofConstraint_setParam(void *c,int p0,float p1,int p2); //method: setParam void ( ::btGeneric6DofConstraint::* )( int,::btScalar,int ) +void btGeneric6DofConstraint_getFrameOffsetA(void *c,float* ret); //method: getFrameOffsetA ::btTransform const & ( ::btGeneric6DofConstraint::* )(  ) const+void btGeneric6DofConstraint_getFrameOffsetA0(void *c,float* ret); //method: getFrameOffsetA ::btTransform const & ( ::btGeneric6DofConstraint::* )(  ) const+void btGeneric6DofConstraint_getFrameOffsetA1(void *c,float* ret); //method: getFrameOffsetA ::btTransform & ( ::btGeneric6DofConstraint::* )(  ) +float btGeneric6DofConstraint_getRelativePivotPosition(void *c,int p0); //method: getRelativePivotPosition ::btScalar ( ::btGeneric6DofConstraint::* )( int ) const+void btGeneric6DofConstraint_getFrameOffsetB(void *c,float* ret); //method: getFrameOffsetB ::btTransform const & ( ::btGeneric6DofConstraint::* )(  ) const+void btGeneric6DofConstraint_getFrameOffsetB0(void *c,float* ret); //method: getFrameOffsetB ::btTransform const & ( ::btGeneric6DofConstraint::* )(  ) const+void btGeneric6DofConstraint_getFrameOffsetB1(void *c,float* ret); //method: getFrameOffsetB ::btTransform & ( ::btGeneric6DofConstraint::* )(  ) +void btGeneric6DofConstraint_getInfo2NonVirtual(void *c,void* p0,float* p1,float* p2,float* p3,float* p4,float* p5,float* p6); //method: getInfo2NonVirtual void ( ::btGeneric6DofConstraint::* )( ::btTypedConstraint::btConstraintInfo2 *,::btTransform const &,::btTransform const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void btGeneric6DofConstraint_getCalculatedTransformA(void *c,float* ret); //method: getCalculatedTransformA ::btTransform const & ( ::btGeneric6DofConstraint::* )(  ) const+float btGeneric6DofConstraint_getParam(void *c,int p0,int p1); //method: getParam ::btScalar ( ::btGeneric6DofConstraint::* )( int,int ) const+void btGeneric6DofConstraint_getInfo1(void *c,void* p0); //method: getInfo1 void ( ::btGeneric6DofConstraint::* )( ::btTypedConstraint::btConstraintInfo1 * ) +void btGeneric6DofConstraint_getInfo2(void *c,void* p0); //method: getInfo2 void ( ::btGeneric6DofConstraint::* )( ::btTypedConstraint::btConstraintInfo2 * ) +void btGeneric6DofConstraint_calcAnchorPos(void *c); //method: calcAnchorPos void ( ::btGeneric6DofConstraint::* )(  ) +void btGeneric6DofConstraint_getAngularLowerLimit(void *c,float* p0); //method: getAngularLowerLimit void ( ::btGeneric6DofConstraint::* )( ::btVector3 & ) +int btGeneric6DofConstraint_calculateSerializeBufferSize(void *c); //method: calculateSerializeBufferSize int ( ::btGeneric6DofConstraint::* )(  ) const+void btGeneric6DofConstraint_getAxis(void *c,int p0,float* ret); //method: getAxis ::btVector3 ( ::btGeneric6DofConstraint::* )( int ) const+void btGeneric6DofConstraint_getLinearUpperLimit(void *c,float* p0); //method: getLinearUpperLimit void ( ::btGeneric6DofConstraint::* )( ::btVector3 & ) +void btGeneric6DofConstraint_setUseFrameOffset(void *c,int p0); //method: setUseFrameOffset void ( ::btGeneric6DofConstraint::* )( bool ) +void* btGeneric6DofConstraint_getRotationalLimitMotor(void *c,int p0); //method: getRotationalLimitMotor ::btRotationalLimitMotor * ( ::btGeneric6DofConstraint::* )( int ) +void btGeneric6DofConstraint_getInfo1NonVirtual(void *c,void* p0); //method: getInfo1NonVirtual void ( ::btGeneric6DofConstraint::* )( ::btTypedConstraint::btConstraintInfo1 * ) +//not supported method: serialize char const * ( ::btGeneric6DofConstraint::* )( void *,::btSerializer * ) const+void btGeneric6DofConstraint_setLinearLowerLimit(void *c,float* p0); //method: setLinearLowerLimit void ( ::btGeneric6DofConstraint::* )( ::btVector3 const & ) +void btGeneric6DofConstraint_getLinearLowerLimit(void *c,float* p0); //method: getLinearLowerLimit void ( ::btGeneric6DofConstraint::* )( ::btVector3 & ) +int btGeneric6DofConstraint_isLimited(void *c,int p0); //method: isLimited bool ( ::btGeneric6DofConstraint::* )( int ) +int btGeneric6DofConstraint_getUseFrameOffset(void *c); //method: getUseFrameOffset bool ( ::btGeneric6DofConstraint::* )(  ) +void btGeneric6DofConstraint_getCalculatedTransformB(void *c,float* ret); //method: getCalculatedTransformB ::btTransform const & ( ::btGeneric6DofConstraint::* )(  ) const+void btGeneric6DofConstraint_calculateTransforms(void *c,float* p0,float* p1); //method: calculateTransforms void ( ::btGeneric6DofConstraint::* )( ::btTransform const &,::btTransform const & ) +void btGeneric6DofConstraint_calculateTransforms0(void *c,float* p0,float* p1); //method: calculateTransforms void ( ::btGeneric6DofConstraint::* )( ::btTransform const &,::btTransform const & ) +void btGeneric6DofConstraint_calculateTransforms1(void *c); //method: calculateTransforms void ( ::btGeneric6DofConstraint::* )(  ) +int btGeneric6DofConstraint_get_limit_motor_info2(void *c,void* p0,float* p1,float* p2,float* p3,float* p4,float* p5,float* p6,void* p7,int p8,float* p9,int p10,int p11); //method: get_limit_motor_info2 int ( ::btGeneric6DofConstraint::* )( ::btRotationalLimitMotor *,::btTransform const &,::btTransform const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btTypedConstraint::btConstraintInfo2 *,int,::btVector3 &,int,int ) +void btGeneric6DofConstraint_setLimit(void *c,int p0,float p1,float p2); //method: setLimit void ( ::btGeneric6DofConstraint::* )( int,::btScalar,::btScalar ) +void* btGeneric6DofConstraint_getTranslationalLimitMotor(void *c); //method: getTranslationalLimitMotor ::btTranslationalLimitMotor * ( ::btGeneric6DofConstraint::* )(  ) +float btGeneric6DofConstraint_getAngle(void *c,int p0); //method: getAngle ::btScalar ( ::btGeneric6DofConstraint::* )( int ) const+void btGeneric6DofConstraint_updateRHS(void *c,float p0); //method: updateRHS void ( ::btGeneric6DofConstraint::* )( ::btScalar ) +void btGeneric6DofConstraint_getAngularUpperLimit(void *c,float* p0); //method: getAngularUpperLimit void ( ::btGeneric6DofConstraint::* )( ::btVector3 & ) +void btGeneric6DofConstraint_setAngularLowerLimit(void *c,float* p0); //method: setAngularLowerLimit void ( ::btGeneric6DofConstraint::* )( ::btVector3 const & ) +void btGeneric6DofConstraint_setFrames(void *c,float* p0,float* p1); //method: setFrames void ( ::btGeneric6DofConstraint::* )( ::btTransform const &,::btTransform const & ) +void btGeneric6DofConstraint_setLinearUpperLimit(void *c,float* p0); //method: setLinearUpperLimit void ( ::btGeneric6DofConstraint::* )( ::btVector3 const & ) +void btGeneric6DofConstraint_setAngularUpperLimit(void *c,float* p0); //method: setAngularUpperLimit void ( ::btGeneric6DofConstraint::* )( ::btVector3 const & ) +void btGeneric6DofConstraint_setAxis(void *c,float* p0,float* p1); //method: setAxis void ( ::btGeneric6DofConstraint::* )( ::btVector3 const &,::btVector3 const & ) +int btGeneric6DofConstraint_testAngularLimitMotor(void *c,int p0); //method: testAngularLimitMotor bool ( ::btGeneric6DofConstraint::* )( int ) +void btGeneric6DofConstraint_m_useSolveConstraintObsolete_set(void *c,int a); //attribute: bool btGeneric6DofConstraint->m_useSolveConstraintObsolete+int btGeneric6DofConstraint_m_useSolveConstraintObsolete_get(void *c); //attribute: bool btGeneric6DofConstraint->m_useSolveConstraintObsolete+void* btGeneric6DofConstraintData_new(); //constructor: btGeneric6DofConstraintData  ( ::btGeneric6DofConstraintData::* )(  ) +void btGeneric6DofConstraintData_free(void *c); // attribute not supported: //attribute: ::btTypedConstraintData btGeneric6DofConstraintData->m_typeConstraintData+// attribute not supported: //attribute: ::btTransformFloatData btGeneric6DofConstraintData->m_rbAFrame+// attribute not supported: //attribute: ::btTransformFloatData btGeneric6DofConstraintData->m_rbBFrame+// attribute not supported: //attribute: ::btVector3FloatData btGeneric6DofConstraintData->m_linearUpperLimit+// attribute not supported: //attribute: ::btVector3FloatData btGeneric6DofConstraintData->m_linearLowerLimit+// attribute not supported: //attribute: ::btVector3FloatData btGeneric6DofConstraintData->m_angularUpperLimit+// attribute not supported: //attribute: ::btVector3FloatData btGeneric6DofConstraintData->m_angularLowerLimit+void btGeneric6DofConstraintData_m_useLinearReferenceFrameA_set(void *c,int a); //attribute: int btGeneric6DofConstraintData->m_useLinearReferenceFrameA+int btGeneric6DofConstraintData_m_useLinearReferenceFrameA_get(void *c); //attribute: int btGeneric6DofConstraintData->m_useLinearReferenceFrameA+void btGeneric6DofConstraintData_m_useOffsetForConstraintFrame_set(void *c,int a); //attribute: int btGeneric6DofConstraintData->m_useOffsetForConstraintFrame+int btGeneric6DofConstraintData_m_useOffsetForConstraintFrame_get(void *c); //attribute: int btGeneric6DofConstraintData->m_useOffsetForConstraintFrame+void* btGeneric6DofSpringConstraint_new(void* p0,void* p1,float* p2,float* p3,int p4); //constructor: btGeneric6DofSpringConstraint  ( ::btGeneric6DofSpringConstraint::* )( ::btRigidBody &,::btRigidBody &,::btTransform const &,::btTransform const &,bool ) +void btGeneric6DofSpringConstraint_free(void *c); int btGeneric6DofSpringConstraint_calculateSerializeBufferSize(void *c); //method: calculateSerializeBufferSize int ( ::btGeneric6DofSpringConstraint::* )(  ) const+void btGeneric6DofSpringConstraint_setEquilibriumPoint(void *c); //method: setEquilibriumPoint void ( ::btGeneric6DofSpringConstraint::* )(  ) +void btGeneric6DofSpringConstraint_setEquilibriumPoint0(void *c); //method: setEquilibriumPoint void ( ::btGeneric6DofSpringConstraint::* )(  ) +void btGeneric6DofSpringConstraint_setEquilibriumPoint1(void *c,int p0); //method: setEquilibriumPoint void ( ::btGeneric6DofSpringConstraint::* )( int ) +void btGeneric6DofSpringConstraint_setEquilibriumPoint2(void *c,int p0,float p1); //method: setEquilibriumPoint void ( ::btGeneric6DofSpringConstraint::* )( int,::btScalar ) +//not supported method: serialize char const * ( ::btGeneric6DofSpringConstraint::* )( void *,::btSerializer * ) const+void btGeneric6DofSpringConstraint_enableSpring(void *c,int p0,int p1); //method: enableSpring void ( ::btGeneric6DofSpringConstraint::* )( int,bool ) +void btGeneric6DofSpringConstraint_setStiffness(void *c,int p0,float p1); //method: setStiffness void ( ::btGeneric6DofSpringConstraint::* )( int,::btScalar ) +void btGeneric6DofSpringConstraint_setDamping(void *c,int p0,float p1); //method: setDamping void ( ::btGeneric6DofSpringConstraint::* )( int,::btScalar ) +void btGeneric6DofSpringConstraint_getInfo2(void *c,void* p0); //method: getInfo2 void ( ::btGeneric6DofSpringConstraint::* )( ::btTypedConstraint::btConstraintInfo2 * ) +void btGeneric6DofSpringConstraint_setAxis(void *c,float* p0,float* p1); //method: setAxis void ( ::btGeneric6DofSpringConstraint::* )( ::btVector3 const &,::btVector3 const & ) +void* btGeneric6DofSpringConstraintData_new(); //constructor: btGeneric6DofSpringConstraintData  ( ::btGeneric6DofSpringConstraintData::* )(  ) +void btGeneric6DofSpringConstraintData_free(void *c); // attribute not supported: //attribute: ::btGeneric6DofConstraintData btGeneric6DofSpringConstraintData->m_6dofData+// attribute not supported: //attribute: int[6] btGeneric6DofSpringConstraintData->m_springEnabled+// attribute not supported: //attribute: float[6] btGeneric6DofSpringConstraintData->m_equilibriumPoint+// attribute not supported: //attribute: float[6] btGeneric6DofSpringConstraintData->m_springStiffness+// attribute not supported: //attribute: float[6] btGeneric6DofSpringConstraintData->m_springDamping+void* btHinge2Constraint_new(void* p0,void* p1,float* p2,float* p3,float* p4); //constructor: btHinge2Constraint  ( ::btHinge2Constraint::* )( ::btRigidBody &,::btRigidBody &,::btVector3 &,::btVector3 &,::btVector3 & ) +void btHinge2Constraint_free(void *c); void btHinge2Constraint_setLowerLimit(void *c,float p0); //method: setLowerLimit void ( ::btHinge2Constraint::* )( ::btScalar ) +void btHinge2Constraint_getAnchor2(void *c,float* ret); //method: getAnchor2 ::btVector3 const & ( ::btHinge2Constraint::* )(  ) +void btHinge2Constraint_getAxis1(void *c,float* ret); //method: getAxis1 ::btVector3 const & ( ::btHinge2Constraint::* )(  ) +void btHinge2Constraint_getAnchor(void *c,float* ret); //method: getAnchor ::btVector3 const & ( ::btHinge2Constraint::* )(  ) +void btHinge2Constraint_getAxis2(void *c,float* ret); //method: getAxis2 ::btVector3 const & ( ::btHinge2Constraint::* )(  ) +void btHinge2Constraint_setUpperLimit(void *c,float p0); //method: setUpperLimit void ( ::btHinge2Constraint::* )( ::btScalar ) +float btHinge2Constraint_getAngle2(void *c); //method: getAngle2 ::btScalar ( ::btHinge2Constraint::* )(  ) +float btHinge2Constraint_getAngle1(void *c); //method: getAngle1 ::btScalar ( ::btHinge2Constraint::* )(  ) +void* btHingeConstraint_new0(void* p0,void* p1,float* p2,float* p3,float* p4,float* p5,int p6); //constructor: btHingeConstraint  ( ::btHingeConstraint::* )( ::btRigidBody &,::btRigidBody &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,bool ) +void* btHingeConstraint_new1(void* p0,float* p1,float* p2,int p3); //constructor: btHingeConstraint  ( ::btHingeConstraint::* )( ::btRigidBody &,::btVector3 const &,::btVector3 const &,bool ) +void* btHingeConstraint_new2(void* p0,void* p1,float* p2,float* p3,int p4); //constructor: btHingeConstraint  ( ::btHingeConstraint::* )( ::btRigidBody &,::btRigidBody &,::btTransform const &,::btTransform const &,bool ) +void* btHingeConstraint_new3(void* p0,float* p1,int p2); //constructor: btHingeConstraint  ( ::btHingeConstraint::* )( ::btRigidBody &,::btTransform const &,bool ) +void btHingeConstraint_free(void *c); void* btHingeConstraint_getRigidBodyB(void *c); //method: getRigidBodyB ::btRigidBody const & ( ::btHingeConstraint::* )(  ) const+void* btHingeConstraint_getRigidBodyB0(void *c); //method: getRigidBodyB ::btRigidBody const & ( ::btHingeConstraint::* )(  ) const+void* btHingeConstraint_getRigidBodyB1(void *c); //method: getRigidBodyB ::btRigidBody & ( ::btHingeConstraint::* )(  ) +void btHingeConstraint_getInfo2NonVirtual(void *c,void* p0,float* p1,float* p2,float* p3,float* p4); //method: getInfo2NonVirtual void ( ::btHingeConstraint::* )( ::btTypedConstraint::btConstraintInfo2 *,::btTransform const &,::btTransform const &,::btVector3 const &,::btVector3 const & ) +void* btHingeConstraint_getRigidBodyA(void *c); //method: getRigidBodyA ::btRigidBody const & ( ::btHingeConstraint::* )(  ) const+void* btHingeConstraint_getRigidBodyA0(void *c); //method: getRigidBodyA ::btRigidBody const & ( ::btHingeConstraint::* )(  ) const+void* btHingeConstraint_getRigidBodyA1(void *c); //method: getRigidBodyA ::btRigidBody & ( ::btHingeConstraint::* )(  ) +float btHingeConstraint_getMotorTargetVelosity(void *c); //method: getMotorTargetVelosity ::btScalar ( ::btHingeConstraint::* )(  ) +void btHingeConstraint_getFrameOffsetA(void *c,float* ret); //method: getFrameOffsetA ::btTransform & ( ::btHingeConstraint::* )(  ) +void btHingeConstraint_getFrameOffsetB(void *c,float* ret); //method: getFrameOffsetB ::btTransform & ( ::btHingeConstraint::* )(  ) +void btHingeConstraint_buildJacobian(void *c); //method: buildJacobian void ( ::btHingeConstraint::* )(  ) +void btHingeConstraint_setMaxMotorImpulse(void *c,float p0); //method: setMaxMotorImpulse void ( ::btHingeConstraint::* )( ::btScalar ) +float btHingeConstraint_getHingeAngle(void *c); //method: getHingeAngle ::btScalar ( ::btHingeConstraint::* )(  ) +float btHingeConstraint_getHingeAngle0(void *c); //method: getHingeAngle ::btScalar ( ::btHingeConstraint::* )(  ) +float btHingeConstraint_getHingeAngle1(void *c,float* p0,float* p1); //method: getHingeAngle ::btScalar ( ::btHingeConstraint::* )( ::btTransform const &,::btTransform const & ) +void btHingeConstraint_testLimit(void *c,float* p0,float* p1); //method: testLimit void ( ::btHingeConstraint::* )( ::btTransform const &,::btTransform const & ) +void btHingeConstraint_getInfo1(void *c,void* p0); //method: getInfo1 void ( ::btHingeConstraint::* )( ::btTypedConstraint::btConstraintInfo1 * ) +void btHingeConstraint_getInfo2Internal(void *c,void* p0,float* p1,float* p2,float* p3,float* p4); //method: getInfo2Internal void ( ::btHingeConstraint::* )( ::btTypedConstraint::btConstraintInfo2 *,::btTransform const &,::btTransform const &,::btVector3 const &,::btVector3 const & ) +void btHingeConstraint_getInfo2(void *c,void* p0); //method: getInfo2 void ( ::btHingeConstraint::* )( ::btTypedConstraint::btConstraintInfo2 * ) +float btHingeConstraint_getUpperLimit(void *c); //method: getUpperLimit ::btScalar ( ::btHingeConstraint::* )(  ) const+void btHingeConstraint_enableAngularMotor(void *c,int p0,float p1,float p2); //method: enableAngularMotor void ( ::btHingeConstraint::* )( bool,::btScalar,::btScalar ) +float btHingeConstraint_getLimitSign(void *c); //method: getLimitSign ::btScalar ( ::btHingeConstraint::* )(  ) +int btHingeConstraint_calculateSerializeBufferSize(void *c); //method: calculateSerializeBufferSize int ( ::btHingeConstraint::* )(  ) const+float btHingeConstraint_getMaxMotorImpulse(void *c); //method: getMaxMotorImpulse ::btScalar ( ::btHingeConstraint::* )(  ) +float btHingeConstraint_getLowerLimit(void *c); //method: getLowerLimit ::btScalar ( ::btHingeConstraint::* )(  ) const+void btHingeConstraint_setParam(void *c,int p0,float p1,int p2); //method: setParam void ( ::btHingeConstraint::* )( int,::btScalar,int ) +void btHingeConstraint_setUseFrameOffset(void *c,int p0); //method: setUseFrameOffset void ( ::btHingeConstraint::* )( bool ) +int btHingeConstraint_getEnableAngularMotor(void *c); //method: getEnableAngularMotor bool ( ::btHingeConstraint::* )(  ) +void btHingeConstraint_enableMotor(void *c,int p0); //method: enableMotor void ( ::btHingeConstraint::* )( bool ) +void btHingeConstraint_getBFrame(void *c,float* ret); //method: getBFrame ::btTransform const & ( ::btHingeConstraint::* )(  ) const+void btHingeConstraint_getBFrame0(void *c,float* ret); //method: getBFrame ::btTransform const & ( ::btHingeConstraint::* )(  ) const+void btHingeConstraint_getBFrame1(void *c,float* ret); //method: getBFrame ::btTransform & ( ::btHingeConstraint::* )(  ) +void btHingeConstraint_getInfo1NonVirtual(void *c,void* p0); //method: getInfo1NonVirtual void ( ::btHingeConstraint::* )( ::btTypedConstraint::btConstraintInfo1 * ) +void btHingeConstraint_getInfo2InternalUsingFrameOffset(void *c,void* p0,float* p1,float* p2,float* p3,float* p4); //method: getInfo2InternalUsingFrameOffset void ( ::btHingeConstraint::* )( ::btTypedConstraint::btConstraintInfo2 *,::btTransform const &,::btTransform const &,::btVector3 const &,::btVector3 const & ) +//not supported method: serialize char const * ( ::btHingeConstraint::* )( void *,::btSerializer * ) const+int btHingeConstraint_getUseFrameOffset(void *c); //method: getUseFrameOffset bool ( ::btHingeConstraint::* )(  ) +void btHingeConstraint_setAngularOnly(void *c,int p0); //method: setAngularOnly void ( ::btHingeConstraint::* )( bool ) +float btHingeConstraint_getParam(void *c,int p0,int p1); //method: getParam ::btScalar ( ::btHingeConstraint::* )( int,int ) const+void btHingeConstraint_setLimit(void *c,float p0,float p1,float p2,float p3,float p4); //method: setLimit void ( ::btHingeConstraint::* )( ::btScalar,::btScalar,::btScalar,::btScalar,::btScalar ) +int btHingeConstraint_getSolveLimit(void *c); //method: getSolveLimit int ( ::btHingeConstraint::* )(  ) +void btHingeConstraint_updateRHS(void *c,float p0); //method: updateRHS void ( ::btHingeConstraint::* )( ::btScalar ) +void btHingeConstraint_setMotorTarget(void *c,float* p0,float p1); //method: setMotorTarget void ( ::btHingeConstraint::* )( ::btQuaternion const &,::btScalar ) +void btHingeConstraint_setMotorTarget0(void *c,float* p0,float p1); //method: setMotorTarget void ( ::btHingeConstraint::* )( ::btQuaternion const &,::btScalar ) +void btHingeConstraint_setMotorTarget1(void *c,float p0,float p1); //method: setMotorTarget void ( ::btHingeConstraint::* )( ::btScalar,::btScalar ) +int btHingeConstraint_getAngularOnly(void *c); //method: getAngularOnly bool ( ::btHingeConstraint::* )(  ) +void btHingeConstraint_setFrames(void *c,float* p0,float* p1); //method: setFrames void ( ::btHingeConstraint::* )( ::btTransform const &,::btTransform const & ) +void btHingeConstraint_setAxis(void *c,float* p0); //method: setAxis void ( ::btHingeConstraint::* )( ::btVector3 & ) +void btHingeConstraint_getAFrame(void *c,float* ret); //method: getAFrame ::btTransform const & ( ::btHingeConstraint::* )(  ) const+void btHingeConstraint_getAFrame0(void *c,float* ret); //method: getAFrame ::btTransform const & ( ::btHingeConstraint::* )(  ) const+void btHingeConstraint_getAFrame1(void *c,float* ret); //method: getAFrame ::btTransform & ( ::btHingeConstraint::* )(  ) +void* btHingeConstraintDoubleData_new(); //constructor: btHingeConstraintDoubleData  ( ::btHingeConstraintDoubleData::* )(  ) +void btHingeConstraintDoubleData_free(void *c); // attribute not supported: //attribute: ::btTypedConstraintData btHingeConstraintDoubleData->m_typeConstraintData+// attribute not supported: //attribute: ::btTransformDoubleData btHingeConstraintDoubleData->m_rbAFrame+// attribute not supported: //attribute: ::btTransformDoubleData btHingeConstraintDoubleData->m_rbBFrame+void btHingeConstraintDoubleData_m_useReferenceFrameA_set(void *c,int a); //attribute: int btHingeConstraintDoubleData->m_useReferenceFrameA+int btHingeConstraintDoubleData_m_useReferenceFrameA_get(void *c); //attribute: int btHingeConstraintDoubleData->m_useReferenceFrameA+void btHingeConstraintDoubleData_m_angularOnly_set(void *c,int a); //attribute: int btHingeConstraintDoubleData->m_angularOnly+int btHingeConstraintDoubleData_m_angularOnly_get(void *c); //attribute: int btHingeConstraintDoubleData->m_angularOnly+void btHingeConstraintDoubleData_m_enableAngularMotor_set(void *c,int a); //attribute: int btHingeConstraintDoubleData->m_enableAngularMotor+int btHingeConstraintDoubleData_m_enableAngularMotor_get(void *c); //attribute: int btHingeConstraintDoubleData->m_enableAngularMotor+void btHingeConstraintDoubleData_m_motorTargetVelocity_set(void *c,float a); //attribute: float btHingeConstraintDoubleData->m_motorTargetVelocity+float btHingeConstraintDoubleData_m_motorTargetVelocity_get(void *c); //attribute: float btHingeConstraintDoubleData->m_motorTargetVelocity+void btHingeConstraintDoubleData_m_maxMotorImpulse_set(void *c,float a); //attribute: float btHingeConstraintDoubleData->m_maxMotorImpulse+float btHingeConstraintDoubleData_m_maxMotorImpulse_get(void *c); //attribute: float btHingeConstraintDoubleData->m_maxMotorImpulse+void btHingeConstraintDoubleData_m_lowerLimit_set(void *c,float a); //attribute: float btHingeConstraintDoubleData->m_lowerLimit+float btHingeConstraintDoubleData_m_lowerLimit_get(void *c); //attribute: float btHingeConstraintDoubleData->m_lowerLimit+void btHingeConstraintDoubleData_m_upperLimit_set(void *c,float a); //attribute: float btHingeConstraintDoubleData->m_upperLimit+float btHingeConstraintDoubleData_m_upperLimit_get(void *c); //attribute: float btHingeConstraintDoubleData->m_upperLimit+void btHingeConstraintDoubleData_m_limitSoftness_set(void *c,float a); //attribute: float btHingeConstraintDoubleData->m_limitSoftness+float btHingeConstraintDoubleData_m_limitSoftness_get(void *c); //attribute: float btHingeConstraintDoubleData->m_limitSoftness+void btHingeConstraintDoubleData_m_biasFactor_set(void *c,float a); //attribute: float btHingeConstraintDoubleData->m_biasFactor+float btHingeConstraintDoubleData_m_biasFactor_get(void *c); //attribute: float btHingeConstraintDoubleData->m_biasFactor+void btHingeConstraintDoubleData_m_relaxationFactor_set(void *c,float a); //attribute: float btHingeConstraintDoubleData->m_relaxationFactor+float btHingeConstraintDoubleData_m_relaxationFactor_get(void *c); //attribute: float btHingeConstraintDoubleData->m_relaxationFactor+void* btHingeConstraintFloatData_new(); //constructor: btHingeConstraintFloatData  ( ::btHingeConstraintFloatData::* )(  ) +void btHingeConstraintFloatData_free(void *c); // attribute not supported: //attribute: ::btTypedConstraintData btHingeConstraintFloatData->m_typeConstraintData+// attribute not supported: //attribute: ::btTransformFloatData btHingeConstraintFloatData->m_rbAFrame+// attribute not supported: //attribute: ::btTransformFloatData btHingeConstraintFloatData->m_rbBFrame+void btHingeConstraintFloatData_m_useReferenceFrameA_set(void *c,int a); //attribute: int btHingeConstraintFloatData->m_useReferenceFrameA+int btHingeConstraintFloatData_m_useReferenceFrameA_get(void *c); //attribute: int btHingeConstraintFloatData->m_useReferenceFrameA+void btHingeConstraintFloatData_m_angularOnly_set(void *c,int a); //attribute: int btHingeConstraintFloatData->m_angularOnly+int btHingeConstraintFloatData_m_angularOnly_get(void *c); //attribute: int btHingeConstraintFloatData->m_angularOnly+void btHingeConstraintFloatData_m_enableAngularMotor_set(void *c,int a); //attribute: int btHingeConstraintFloatData->m_enableAngularMotor+int btHingeConstraintFloatData_m_enableAngularMotor_get(void *c); //attribute: int btHingeConstraintFloatData->m_enableAngularMotor+void btHingeConstraintFloatData_m_motorTargetVelocity_set(void *c,float a); //attribute: float btHingeConstraintFloatData->m_motorTargetVelocity+float btHingeConstraintFloatData_m_motorTargetVelocity_get(void *c); //attribute: float btHingeConstraintFloatData->m_motorTargetVelocity+void btHingeConstraintFloatData_m_maxMotorImpulse_set(void *c,float a); //attribute: float btHingeConstraintFloatData->m_maxMotorImpulse+float btHingeConstraintFloatData_m_maxMotorImpulse_get(void *c); //attribute: float btHingeConstraintFloatData->m_maxMotorImpulse+void btHingeConstraintFloatData_m_lowerLimit_set(void *c,float a); //attribute: float btHingeConstraintFloatData->m_lowerLimit+float btHingeConstraintFloatData_m_lowerLimit_get(void *c); //attribute: float btHingeConstraintFloatData->m_lowerLimit+void btHingeConstraintFloatData_m_upperLimit_set(void *c,float a); //attribute: float btHingeConstraintFloatData->m_upperLimit+float btHingeConstraintFloatData_m_upperLimit_get(void *c); //attribute: float btHingeConstraintFloatData->m_upperLimit+void btHingeConstraintFloatData_m_limitSoftness_set(void *c,float a); //attribute: float btHingeConstraintFloatData->m_limitSoftness+float btHingeConstraintFloatData_m_limitSoftness_get(void *c); //attribute: float btHingeConstraintFloatData->m_limitSoftness+void btHingeConstraintFloatData_m_biasFactor_set(void *c,float a); //attribute: float btHingeConstraintFloatData->m_biasFactor+float btHingeConstraintFloatData_m_biasFactor_get(void *c); //attribute: float btHingeConstraintFloatData->m_biasFactor+void btHingeConstraintFloatData_m_relaxationFactor_set(void *c,float a); //attribute: float btHingeConstraintFloatData->m_relaxationFactor+float btHingeConstraintFloatData_m_relaxationFactor_get(void *c); //attribute: float btHingeConstraintFloatData->m_relaxationFactor+void* btJacobianEntry_new0(); //constructor: btJacobianEntry  ( ::btJacobianEntry::* )(  ) +//not supported constructor: btJacobianEntry  ( ::btJacobianEntry::* )( ::btMatrix3x3 const &,::btMatrix3x3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btScalar const,::btVector3 const &,::btScalar const ) +void* btJacobianEntry_new2(float* p0,float* p1,float* p2,float* p3,float* p4); //constructor: btJacobianEntry  ( ::btJacobianEntry::* )( ::btVector3 const &,::btMatrix3x3 const &,::btMatrix3x3 const &,::btVector3 const &,::btVector3 const & ) +void* btJacobianEntry_new3(float* p0,float* p1,float* p2,float* p3); //constructor: btJacobianEntry  ( ::btJacobianEntry::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const & ) +//not supported constructor: btJacobianEntry  ( ::btJacobianEntry::* )( ::btMatrix3x3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btScalar const ) +void btJacobianEntry_free(void *c); float btJacobianEntry_getDiagonal(void *c); //method: getDiagonal ::btScalar ( ::btJacobianEntry::* )(  ) const+float btJacobianEntry_getRelativeVelocity(void *c,float* p0,float* p1,float* p2,float* p3); //method: getRelativeVelocity ::btScalar ( ::btJacobianEntry::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const & ) +//not supported method: getNonDiagonal ::btScalar ( ::btJacobianEntry::* )( ::btJacobianEntry const &,::btScalar const ) const+//not supported method: getNonDiagonal ::btScalar ( ::btJacobianEntry::* )( ::btJacobianEntry const &,::btScalar const ) const+//not supported method: getNonDiagonal ::btScalar ( ::btJacobianEntry::* )( ::btJacobianEntry const &,::btScalar const,::btScalar const ) const+void btJacobianEntry_m_0MinvJt_set(void *c,float* a); //attribute: ::btVector3 btJacobianEntry->m_0MinvJt+void btJacobianEntry_m_0MinvJt_get(void *c,float* a);+void btJacobianEntry_m_1MinvJt_set(void *c,float* a); //attribute: ::btVector3 btJacobianEntry->m_1MinvJt+void btJacobianEntry_m_1MinvJt_get(void *c,float* a);+void btJacobianEntry_m_Adiag_set(void *c,float a); //attribute: ::btScalar btJacobianEntry->m_Adiag+float btJacobianEntry_m_Adiag_get(void *c); //attribute: ::btScalar btJacobianEntry->m_Adiag+void btJacobianEntry_m_aJ_set(void *c,float* a); //attribute: ::btVector3 btJacobianEntry->m_aJ+void btJacobianEntry_m_aJ_get(void *c,float* a);+void btJacobianEntry_m_bJ_set(void *c,float* a); //attribute: ::btVector3 btJacobianEntry->m_bJ+void btJacobianEntry_m_bJ_get(void *c,float* a);+void btJacobianEntry_m_linearJointAxis_set(void *c,float* a); //attribute: ::btVector3 btJacobianEntry->m_linearJointAxis+void btJacobianEntry_m_linearJointAxis_get(void *c,float* a);+void* btPoint2PointConstraint_new0(void* p0,void* p1,float* p2,float* p3); //constructor: btPoint2PointConstraint  ( ::btPoint2PointConstraint::* )( ::btRigidBody &,::btRigidBody &,::btVector3 const &,::btVector3 const & ) +void* btPoint2PointConstraint_new1(void* p0,float* p1); //constructor: btPoint2PointConstraint  ( ::btPoint2PointConstraint::* )( ::btRigidBody &,::btVector3 const & ) +void btPoint2PointConstraint_free(void *c); void btPoint2PointConstraint_getInfo1NonVirtual(void *c,void* p0); //method: getInfo1NonVirtual void ( ::btPoint2PointConstraint::* )( ::btTypedConstraint::btConstraintInfo1 * ) +void btPoint2PointConstraint_getInfo2NonVirtual(void *c,void* p0,float* p1,float* p2); //method: getInfo2NonVirtual void ( ::btPoint2PointConstraint::* )( ::btTypedConstraint::btConstraintInfo2 *,::btTransform const &,::btTransform const & ) +void btPoint2PointConstraint_setParam(void *c,int p0,float p1,int p2); //method: setParam void ( ::btPoint2PointConstraint::* )( int,::btScalar,int ) +void btPoint2PointConstraint_getPivotInA(void *c,float* ret); //method: getPivotInA ::btVector3 const & ( ::btPoint2PointConstraint::* )(  ) const+void btPoint2PointConstraint_getPivotInB(void *c,float* ret); //method: getPivotInB ::btVector3 const & ( ::btPoint2PointConstraint::* )(  ) const+void btPoint2PointConstraint_updateRHS(void *c,float p0); //method: updateRHS void ( ::btPoint2PointConstraint::* )( ::btScalar ) +//not supported method: serialize char const * ( ::btPoint2PointConstraint::* )( void *,::btSerializer * ) const+void btPoint2PointConstraint_buildJacobian(void *c); //method: buildJacobian void ( ::btPoint2PointConstraint::* )(  ) +int btPoint2PointConstraint_calculateSerializeBufferSize(void *c); //method: calculateSerializeBufferSize int ( ::btPoint2PointConstraint::* )(  ) const+float btPoint2PointConstraint_getParam(void *c,int p0,int p1); //method: getParam ::btScalar ( ::btPoint2PointConstraint::* )( int,int ) const+void btPoint2PointConstraint_getInfo1(void *c,void* p0); //method: getInfo1 void ( ::btPoint2PointConstraint::* )( ::btTypedConstraint::btConstraintInfo1 * ) +void btPoint2PointConstraint_getInfo2(void *c,void* p0); //method: getInfo2 void ( ::btPoint2PointConstraint::* )( ::btTypedConstraint::btConstraintInfo2 * ) +void btPoint2PointConstraint_setPivotA(void *c,float* p0); //method: setPivotA void ( ::btPoint2PointConstraint::* )( ::btVector3 const & ) +void btPoint2PointConstraint_setPivotB(void *c,float* p0); //method: setPivotB void ( ::btPoint2PointConstraint::* )( ::btVector3 const & ) +void btPoint2PointConstraint_m_useSolveConstraintObsolete_set(void *c,int a); //attribute: bool btPoint2PointConstraint->m_useSolveConstraintObsolete+int btPoint2PointConstraint_m_useSolveConstraintObsolete_get(void *c); //attribute: bool btPoint2PointConstraint->m_useSolveConstraintObsolete+// attribute not supported: //attribute: ::btConstraintSetting btPoint2PointConstraint->m_setting+void* btPoint2PointConstraintDoubleData_new(); //constructor: btPoint2PointConstraintDoubleData  ( ::btPoint2PointConstraintDoubleData::* )(  ) +void btPoint2PointConstraintDoubleData_free(void *c); // attribute not supported: //attribute: ::btTypedConstraintData btPoint2PointConstraintDoubleData->m_typeConstraintData+// attribute not supported: //attribute: ::btVector3DoubleData btPoint2PointConstraintDoubleData->m_pivotInA+// attribute not supported: //attribute: ::btVector3DoubleData btPoint2PointConstraintDoubleData->m_pivotInB+void* btPoint2PointConstraintFloatData_new(); //constructor: btPoint2PointConstraintFloatData  ( ::btPoint2PointConstraintFloatData::* )(  ) +void btPoint2PointConstraintFloatData_free(void *c); // attribute not supported: //attribute: ::btTypedConstraintData btPoint2PointConstraintFloatData->m_typeConstraintData+// attribute not supported: //attribute: ::btVector3FloatData btPoint2PointConstraintFloatData->m_pivotInA+// attribute not supported: //attribute: ::btVector3FloatData btPoint2PointConstraintFloatData->m_pivotInB+void* btRotationalLimitMotor_new(); //constructor: btRotationalLimitMotor  ( ::btRotationalLimitMotor::* )(  ) +void btRotationalLimitMotor_free(void *c); int btRotationalLimitMotor_testLimitValue(void *c,float p0); //method: testLimitValue int ( ::btRotationalLimitMotor::* )( ::btScalar ) +float btRotationalLimitMotor_solveAngularLimits(void *c,float p0,float* p1,float p2,void* p3,void* p4); //method: solveAngularLimits ::btScalar ( ::btRotationalLimitMotor::* )( ::btScalar,::btVector3 &,::btScalar,::btRigidBody *,::btRigidBody * ) +int btRotationalLimitMotor_needApplyTorques(void *c); //method: needApplyTorques bool ( ::btRotationalLimitMotor::* )(  ) +int btRotationalLimitMotor_isLimited(void *c); //method: isLimited bool ( ::btRotationalLimitMotor::* )(  ) +void btRotationalLimitMotor_m_accumulatedImpulse_set(void *c,float a); //attribute: ::btScalar btRotationalLimitMotor->m_accumulatedImpulse+float btRotationalLimitMotor_m_accumulatedImpulse_get(void *c); //attribute: ::btScalar btRotationalLimitMotor->m_accumulatedImpulse+void btRotationalLimitMotor_m_bounce_set(void *c,float a); //attribute: ::btScalar btRotationalLimitMotor->m_bounce+float btRotationalLimitMotor_m_bounce_get(void *c); //attribute: ::btScalar btRotationalLimitMotor->m_bounce+void btRotationalLimitMotor_m_currentLimit_set(void *c,int a); //attribute: int btRotationalLimitMotor->m_currentLimit+int btRotationalLimitMotor_m_currentLimit_get(void *c); //attribute: int btRotationalLimitMotor->m_currentLimit+void btRotationalLimitMotor_m_currentLimitError_set(void *c,float a); //attribute: ::btScalar btRotationalLimitMotor->m_currentLimitError+float btRotationalLimitMotor_m_currentLimitError_get(void *c); //attribute: ::btScalar btRotationalLimitMotor->m_currentLimitError+void btRotationalLimitMotor_m_currentPosition_set(void *c,float a); //attribute: ::btScalar btRotationalLimitMotor->m_currentPosition+float btRotationalLimitMotor_m_currentPosition_get(void *c); //attribute: ::btScalar btRotationalLimitMotor->m_currentPosition+void btRotationalLimitMotor_m_damping_set(void *c,float a); //attribute: ::btScalar btRotationalLimitMotor->m_damping+float btRotationalLimitMotor_m_damping_get(void *c); //attribute: ::btScalar btRotationalLimitMotor->m_damping+void btRotationalLimitMotor_m_enableMotor_set(void *c,int a); //attribute: bool btRotationalLimitMotor->m_enableMotor+int btRotationalLimitMotor_m_enableMotor_get(void *c); //attribute: bool btRotationalLimitMotor->m_enableMotor+void btRotationalLimitMotor_m_hiLimit_set(void *c,float a); //attribute: ::btScalar btRotationalLimitMotor->m_hiLimit+float btRotationalLimitMotor_m_hiLimit_get(void *c); //attribute: ::btScalar btRotationalLimitMotor->m_hiLimit+void btRotationalLimitMotor_m_limitSoftness_set(void *c,float a); //attribute: ::btScalar btRotationalLimitMotor->m_limitSoftness+float btRotationalLimitMotor_m_limitSoftness_get(void *c); //attribute: ::btScalar btRotationalLimitMotor->m_limitSoftness+void btRotationalLimitMotor_m_loLimit_set(void *c,float a); //attribute: ::btScalar btRotationalLimitMotor->m_loLimit+float btRotationalLimitMotor_m_loLimit_get(void *c); //attribute: ::btScalar btRotationalLimitMotor->m_loLimit+void btRotationalLimitMotor_m_maxLimitForce_set(void *c,float a); //attribute: ::btScalar btRotationalLimitMotor->m_maxLimitForce+float btRotationalLimitMotor_m_maxLimitForce_get(void *c); //attribute: ::btScalar btRotationalLimitMotor->m_maxLimitForce+void btRotationalLimitMotor_m_maxMotorForce_set(void *c,float a); //attribute: ::btScalar btRotationalLimitMotor->m_maxMotorForce+float btRotationalLimitMotor_m_maxMotorForce_get(void *c); //attribute: ::btScalar btRotationalLimitMotor->m_maxMotorForce+void btRotationalLimitMotor_m_normalCFM_set(void *c,float a); //attribute: ::btScalar btRotationalLimitMotor->m_normalCFM+float btRotationalLimitMotor_m_normalCFM_get(void *c); //attribute: ::btScalar btRotationalLimitMotor->m_normalCFM+void btRotationalLimitMotor_m_stopCFM_set(void *c,float a); //attribute: ::btScalar btRotationalLimitMotor->m_stopCFM+float btRotationalLimitMotor_m_stopCFM_get(void *c); //attribute: ::btScalar btRotationalLimitMotor->m_stopCFM+void btRotationalLimitMotor_m_stopERP_set(void *c,float a); //attribute: ::btScalar btRotationalLimitMotor->m_stopERP+float btRotationalLimitMotor_m_stopERP_get(void *c); //attribute: ::btScalar btRotationalLimitMotor->m_stopERP+void btRotationalLimitMotor_m_targetVelocity_set(void *c,float a); //attribute: ::btScalar btRotationalLimitMotor->m_targetVelocity+float btRotationalLimitMotor_m_targetVelocity_get(void *c); //attribute: ::btScalar btRotationalLimitMotor->m_targetVelocity+void* btSequentialImpulseConstraintSolver_new(); //constructor: btSequentialImpulseConstraintSolver  ( ::btSequentialImpulseConstraintSolver::* )(  ) +void btSequentialImpulseConstraintSolver_free(void *c); void btSequentialImpulseConstraintSolver_reset(void *c); //method: reset void ( ::btSequentialImpulseConstraintSolver::* )(  ) +long unsigned int btSequentialImpulseConstraintSolver_btRand2(void *c); //method: btRand2 long unsigned int ( ::btSequentialImpulseConstraintSolver::* )(  ) +long unsigned int btSequentialImpulseConstraintSolver_getRandSeed(void *c); //method: getRandSeed long unsigned int ( ::btSequentialImpulseConstraintSolver::* )(  ) const+void btSequentialImpulseConstraintSolver_setRandSeed(void *c,long unsigned int p0); //method: setRandSeed void ( ::btSequentialImpulseConstraintSolver::* )( long unsigned int ) +//not supported method: solveGroup ::btScalar ( ::btSequentialImpulseConstraintSolver::* )( ::btCollisionObject * *,int,::btPersistentManifold * *,int,::btTypedConstraint * *,int,::btContactSolverInfo const &,::btIDebugDraw *,::btStackAlloc *,::btDispatcher * ) +int btSequentialImpulseConstraintSolver_btRandInt2(void *c,int p0); //method: btRandInt2 int ( ::btSequentialImpulseConstraintSolver::* )( int ) +void* btSliderConstraint_new0(void* p0,void* p1,float* p2,float* p3,int p4); //constructor: btSliderConstraint  ( ::btSliderConstraint::* )( ::btRigidBody &,::btRigidBody &,::btTransform const &,::btTransform const &,bool ) +void* btSliderConstraint_new1(void* p0,float* p1,int p2); //constructor: btSliderConstraint  ( ::btSliderConstraint::* )( ::btRigidBody &,::btTransform const &,bool ) +void btSliderConstraint_free(void *c); void* btSliderConstraint_getRigidBodyB(void *c); //method: getRigidBodyB ::btRigidBody const & ( ::btSliderConstraint::* )(  ) const+void btSliderConstraint_setPoweredAngMotor(void *c,int p0); //method: setPoweredAngMotor void ( ::btSliderConstraint::* )( bool ) +void btSliderConstraint_getInfo2NonVirtual(void *c,void* p0,float* p1,float* p2,float* p3,float* p4,float p5,float p6); //method: getInfo2NonVirtual void ( ::btSliderConstraint::* )( ::btTypedConstraint::btConstraintInfo2 *,::btTransform const &,::btTransform const &,::btVector3 const &,::btVector3 const &,::btScalar,::btScalar ) +void* btSliderConstraint_getRigidBodyA(void *c); //method: getRigidBodyA ::btRigidBody const & ( ::btSliderConstraint::* )(  ) const+float btSliderConstraint_getDampingLimAng(void *c); //method: getDampingLimAng ::btScalar ( ::btSliderConstraint::* )(  ) +void btSliderConstraint_setRestitutionOrthoLin(void *c,float p0); //method: setRestitutionOrthoLin void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_setRestitutionDirLin(void *c,float p0); //method: setRestitutionDirLin void ( ::btSliderConstraint::* )( ::btScalar ) +float btSliderConstraint_getLinearPos(void *c); //method: getLinearPos ::btScalar ( ::btSliderConstraint::* )(  ) const+void btSliderConstraint_getFrameOffsetA(void *c,float* ret); //method: getFrameOffsetA ::btTransform const & ( ::btSliderConstraint::* )(  ) const+void btSliderConstraint_getFrameOffsetA0(void *c,float* ret); //method: getFrameOffsetA ::btTransform const & ( ::btSliderConstraint::* )(  ) const+void btSliderConstraint_getFrameOffsetA1(void *c,float* ret); //method: getFrameOffsetA ::btTransform & ( ::btSliderConstraint::* )(  ) +void btSliderConstraint_getFrameOffsetB(void *c,float* ret); //method: getFrameOffsetB ::btTransform const & ( ::btSliderConstraint::* )(  ) const+void btSliderConstraint_getFrameOffsetB0(void *c,float* ret); //method: getFrameOffsetB ::btTransform const & ( ::btSliderConstraint::* )(  ) const+void btSliderConstraint_getFrameOffsetB1(void *c,float* ret); //method: getFrameOffsetB ::btTransform & ( ::btSliderConstraint::* )(  ) +void btSliderConstraint_setPoweredLinMotor(void *c,int p0); //method: setPoweredLinMotor void ( ::btSliderConstraint::* )( bool ) +void btSliderConstraint_getCalculatedTransformB(void *c,float* ret); //method: getCalculatedTransformB ::btTransform const & ( ::btSliderConstraint::* )(  ) const+void btSliderConstraint_getCalculatedTransformA(void *c,float* ret); //method: getCalculatedTransformA ::btTransform const & ( ::btSliderConstraint::* )(  ) const+float btSliderConstraint_getRestitutionLimLin(void *c); //method: getRestitutionLimLin ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getSoftnessOrthoAng(void *c); //method: getSoftnessOrthoAng ::btScalar ( ::btSliderConstraint::* )(  ) +void btSliderConstraint_setSoftnessOrthoLin(void *c,float p0); //method: setSoftnessOrthoLin void ( ::btSliderConstraint::* )( ::btScalar ) +int btSliderConstraint_calculateSerializeBufferSize(void *c); //method: calculateSerializeBufferSize int ( ::btSliderConstraint::* )(  ) const+void btSliderConstraint_setSoftnessLimLin(void *c,float p0); //method: setSoftnessLimLin void ( ::btSliderConstraint::* )( ::btScalar ) +float btSliderConstraint_getAngularPos(void *c); //method: getAngularPos ::btScalar ( ::btSliderConstraint::* )(  ) const+void btSliderConstraint_setRestitutionLimAng(void *c,float p0); //method: setRestitutionLimAng void ( ::btSliderConstraint::* )( ::btScalar ) +float btSliderConstraint_getParam(void *c,int p0,int p1); //method: getParam ::btScalar ( ::btSliderConstraint::* )( int,int ) const+void btSliderConstraint_getInfo1(void *c,void* p0); //method: getInfo1 void ( ::btSliderConstraint::* )( ::btTypedConstraint::btConstraintInfo1 * ) +void btSliderConstraint_getInfo2(void *c,void* p0); //method: getInfo2 void ( ::btSliderConstraint::* )( ::btTypedConstraint::btConstraintInfo2 * ) +void btSliderConstraint_setParam(void *c,int p0,float p1,int p2); //method: setParam void ( ::btSliderConstraint::* )( int,::btScalar,int ) +void btSliderConstraint_setUpperLinLimit(void *c,float p0); //method: setUpperLinLimit void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_setDampingDirLin(void *c,float p0); //method: setDampingDirLin void ( ::btSliderConstraint::* )( ::btScalar ) +float btSliderConstraint_getUpperAngLimit(void *c); //method: getUpperAngLimit ::btScalar ( ::btSliderConstraint::* )(  ) +void btSliderConstraint_setRestitutionDirAng(void *c,float p0); //method: setRestitutionDirAng void ( ::btSliderConstraint::* )( ::btScalar ) +float btSliderConstraint_getDampingDirLin(void *c); //method: getDampingDirLin ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getAngDepth(void *c); //method: getAngDepth ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getSoftnessDirAng(void *c); //method: getSoftnessDirAng ::btScalar ( ::btSliderConstraint::* )(  ) +int btSliderConstraint_getPoweredAngMotor(void *c); //method: getPoweredAngMotor bool ( ::btSliderConstraint::* )(  ) +void btSliderConstraint_setLowerAngLimit(void *c,float p0); //method: setLowerAngLimit void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_setUpperAngLimit(void *c,float p0); //method: setUpperAngLimit void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_setTargetLinMotorVelocity(void *c,float p0); //method: setTargetLinMotorVelocity void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_setDampingLimAng(void *c,float p0); //method: setDampingLimAng void ( ::btSliderConstraint::* )( ::btScalar ) +float btSliderConstraint_getRestitutionLimAng(void *c); //method: getRestitutionLimAng ::btScalar ( ::btSliderConstraint::* )(  ) +int btSliderConstraint_getUseFrameOffset(void *c); //method: getUseFrameOffset bool ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getSoftnessOrthoLin(void *c); //method: getSoftnessOrthoLin ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getDampingOrthoAng(void *c); //method: getDampingOrthoAng ::btScalar ( ::btSliderConstraint::* )(  ) +void btSliderConstraint_setUseFrameOffset(void *c,int p0); //method: setUseFrameOffset void ( ::btSliderConstraint::* )( bool ) +void btSliderConstraint_setLowerLinLimit(void *c,float p0); //method: setLowerLinLimit void ( ::btSliderConstraint::* )( ::btScalar ) +float btSliderConstraint_getRestitutionDirLin(void *c); //method: getRestitutionDirLin ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getTargetLinMotorVelocity(void *c); //method: getTargetLinMotorVelocity ::btScalar ( ::btSliderConstraint::* )(  ) +void btSliderConstraint_testLinLimits(void *c); //method: testLinLimits void ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getLowerLinLimit(void *c); //method: getLowerLinLimit ::btScalar ( ::btSliderConstraint::* )(  ) +void btSliderConstraint_setFrames(void *c,float* p0,float* p1); //method: setFrames void ( ::btSliderConstraint::* )( ::btTransform const &,::btTransform const & ) +float btSliderConstraint_getSoftnessLimLin(void *c); //method: getSoftnessLimLin ::btScalar ( ::btSliderConstraint::* )(  ) +void btSliderConstraint_getInfo1NonVirtual(void *c,void* p0); //method: getInfo1NonVirtual void ( ::btSliderConstraint::* )( ::btTypedConstraint::btConstraintInfo1 * ) +void btSliderConstraint_setDampingOrthoAng(void *c,float p0); //method: setDampingOrthoAng void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_setSoftnessDirAng(void *c,float p0); //method: setSoftnessDirAng void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_getAncorInA(void *c,float* ret); //method: getAncorInA ::btVector3 ( ::btSliderConstraint::* )(  ) +int btSliderConstraint_getPoweredLinMotor(void *c); //method: getPoweredLinMotor bool ( ::btSliderConstraint::* )(  ) +void btSliderConstraint_getAncorInB(void *c,float* ret); //method: getAncorInB ::btVector3 ( ::btSliderConstraint::* )(  ) +void btSliderConstraint_setRestitutionOrthoAng(void *c,float p0); //method: setRestitutionOrthoAng void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_setDampingDirAng(void *c,float p0); //method: setDampingDirAng void ( ::btSliderConstraint::* )( ::btScalar ) +int btSliderConstraint_getSolveLinLimit(void *c); //method: getSolveLinLimit bool ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getRestitutionOrthoAng(void *c); //method: getRestitutionOrthoAng ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getMaxAngMotorForce(void *c); //method: getMaxAngMotorForce ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getDampingDirAng(void *c); //method: getDampingDirAng ::btScalar ( ::btSliderConstraint::* )(  ) +void btSliderConstraint_calculateTransforms(void *c,float* p0,float* p1); //method: calculateTransforms void ( ::btSliderConstraint::* )( ::btTransform const &,::btTransform const & ) +float btSliderConstraint_getUpperLinLimit(void *c); //method: getUpperLinLimit ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getLinDepth(void *c); //method: getLinDepth ::btScalar ( ::btSliderConstraint::* )(  ) +void btSliderConstraint_setMaxLinMotorForce(void *c,float p0); //method: setMaxLinMotorForce void ( ::btSliderConstraint::* )( ::btScalar ) +float btSliderConstraint_getRestitutionOrthoLin(void *c); //method: getRestitutionOrthoLin ::btScalar ( ::btSliderConstraint::* )(  ) +//not supported method: serialize char const * ( ::btSliderConstraint::* )( void *,::btSerializer * ) const+void btSliderConstraint_setTargetAngMotorVelocity(void *c,float p0); //method: setTargetAngMotorVelocity void ( ::btSliderConstraint::* )( ::btScalar ) +float btSliderConstraint_getSoftnessLimAng(void *c); //method: getSoftnessLimAng ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getDampingOrthoLin(void *c); //method: getDampingOrthoLin ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getDampingLimLin(void *c); //method: getDampingLimLin ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getLowerAngLimit(void *c); //method: getLowerAngLimit ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getRestitutionDirAng(void *c); //method: getRestitutionDirAng ::btScalar ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getTargetAngMotorVelocity(void *c); //method: getTargetAngMotorVelocity ::btScalar ( ::btSliderConstraint::* )(  ) +void btSliderConstraint_setRestitutionLimLin(void *c,float p0); //method: setRestitutionLimLin void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_testAngLimits(void *c); //method: testAngLimits void ( ::btSliderConstraint::* )(  ) +float btSliderConstraint_getMaxLinMotorForce(void *c); //method: getMaxLinMotorForce ::btScalar ( ::btSliderConstraint::* )(  ) +void btSliderConstraint_setDampingOrthoLin(void *c,float p0); //method: setDampingOrthoLin void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_setSoftnessOrthoAng(void *c,float p0); //method: setSoftnessOrthoAng void ( ::btSliderConstraint::* )( ::btScalar ) +int btSliderConstraint_getSolveAngLimit(void *c); //method: getSolveAngLimit bool ( ::btSliderConstraint::* )(  ) +void btSliderConstraint_setDampingLimLin(void *c,float p0); //method: setDampingLimLin void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_setSoftnessDirLin(void *c,float p0); //method: setSoftnessDirLin void ( ::btSliderConstraint::* )( ::btScalar ) +void btSliderConstraint_setMaxAngMotorForce(void *c,float p0); //method: setMaxAngMotorForce void ( ::btSliderConstraint::* )( ::btScalar ) +float btSliderConstraint_getSoftnessDirLin(void *c); //method: getSoftnessDirLin ::btScalar ( ::btSliderConstraint::* )(  ) +void btSliderConstraint_setSoftnessLimAng(void *c,float p0); //method: setSoftnessLimAng void ( ::btSliderConstraint::* )( ::btScalar ) +int btSliderConstraint_getUseLinearReferenceFrameA(void *c); //method: getUseLinearReferenceFrameA bool ( ::btSliderConstraint::* )(  ) +void* btSliderConstraintData_new(); //constructor: btSliderConstraintData  ( ::btSliderConstraintData::* )(  ) +void btSliderConstraintData_free(void *c); // attribute not supported: //attribute: ::btTypedConstraintData btSliderConstraintData->m_typeConstraintData+// attribute not supported: //attribute: ::btTransformFloatData btSliderConstraintData->m_rbAFrame+// attribute not supported: //attribute: ::btTransformFloatData btSliderConstraintData->m_rbBFrame+void btSliderConstraintData_m_linearUpperLimit_set(void *c,float a); //attribute: float btSliderConstraintData->m_linearUpperLimit+float btSliderConstraintData_m_linearUpperLimit_get(void *c); //attribute: float btSliderConstraintData->m_linearUpperLimit+void btSliderConstraintData_m_linearLowerLimit_set(void *c,float a); //attribute: float btSliderConstraintData->m_linearLowerLimit+float btSliderConstraintData_m_linearLowerLimit_get(void *c); //attribute: float btSliderConstraintData->m_linearLowerLimit+void btSliderConstraintData_m_angularUpperLimit_set(void *c,float a); //attribute: float btSliderConstraintData->m_angularUpperLimit+float btSliderConstraintData_m_angularUpperLimit_get(void *c); //attribute: float btSliderConstraintData->m_angularUpperLimit+void btSliderConstraintData_m_angularLowerLimit_set(void *c,float a); //attribute: float btSliderConstraintData->m_angularLowerLimit+float btSliderConstraintData_m_angularLowerLimit_get(void *c); //attribute: float btSliderConstraintData->m_angularLowerLimit+void btSliderConstraintData_m_useLinearReferenceFrameA_set(void *c,int a); //attribute: int btSliderConstraintData->m_useLinearReferenceFrameA+int btSliderConstraintData_m_useLinearReferenceFrameA_get(void *c); //attribute: int btSliderConstraintData->m_useLinearReferenceFrameA+void btSliderConstraintData_m_useOffsetForConstraintFrame_set(void *c,int a); //attribute: int btSliderConstraintData->m_useOffsetForConstraintFrame+int btSliderConstraintData_m_useOffsetForConstraintFrame_get(void *c); //attribute: int btSliderConstraintData->m_useOffsetForConstraintFrame+void* btSolverBodyObsolete_new(); //constructor: btSolverBodyObsolete  ( ::btSolverBodyObsolete::* )(  ) +void btSolverBodyObsolete_free(void *c); //not supported method: applyImpulse void ( ::btSolverBodyObsolete::* )( ::btVector3 const &,::btVector3 const &,::btScalar const ) +void btSolverBodyObsolete_getAngularVelocity(void *c,float* p0); //method: getAngularVelocity void ( ::btSolverBodyObsolete::* )( ::btVector3 & ) const+void btSolverBodyObsolete_writebackVelocity(void *c); //method: writebackVelocity void ( ::btSolverBodyObsolete::* )(  ) +void btSolverBodyObsolete_writebackVelocity0(void *c); //method: writebackVelocity void ( ::btSolverBodyObsolete::* )(  ) +void btSolverBodyObsolete_writebackVelocity1(void *c,float p0); //method: writebackVelocity void ( ::btSolverBodyObsolete::* )( ::btScalar ) +void btSolverBodyObsolete_internalApplyPushImpulse(void *c,float* p0,float* p1,float p2); //method: internalApplyPushImpulse void ( ::btSolverBodyObsolete::* )( ::btVector3 const &,::btVector3 const &,::btScalar ) +void btSolverBodyObsolete_getVelocityInLocalPointObsolete(void *c,float* p0,float* p1); //method: getVelocityInLocalPointObsolete void ( ::btSolverBodyObsolete::* )( ::btVector3 const &,::btVector3 & ) const+void btSolverBodyObsolete_m_deltaLinearVelocity_set(void *c,float* a); //attribute: ::btVector3 btSolverBodyObsolete->m_deltaLinearVelocity+void btSolverBodyObsolete_m_deltaLinearVelocity_get(void *c,float* a);+void btSolverBodyObsolete_m_deltaAngularVelocity_set(void *c,float* a); //attribute: ::btVector3 btSolverBodyObsolete->m_deltaAngularVelocity+void btSolverBodyObsolete_m_deltaAngularVelocity_get(void *c,float* a);+void btSolverBodyObsolete_m_angularFactor_set(void *c,float* a); //attribute: ::btVector3 btSolverBodyObsolete->m_angularFactor+void btSolverBodyObsolete_m_angularFactor_get(void *c,float* a);+void btSolverBodyObsolete_m_invMass_set(void *c,float* a); //attribute: ::btVector3 btSolverBodyObsolete->m_invMass+void btSolverBodyObsolete_m_invMass_get(void *c,float* a);+void btSolverBodyObsolete_m_originalBody_set(void *c,void* a); //attribute: ::btRigidBody * btSolverBodyObsolete->m_originalBody+// attribute getter not supported: //attribute: ::btRigidBody * btSolverBodyObsolete->m_originalBody+void btSolverBodyObsolete_m_pushVelocity_set(void *c,float* a); //attribute: ::btVector3 btSolverBodyObsolete->m_pushVelocity+void btSolverBodyObsolete_m_pushVelocity_get(void *c,float* a);+void btSolverBodyObsolete_m_turnVelocity_set(void *c,float* a); //attribute: ::btVector3 btSolverBodyObsolete->m_turnVelocity+void btSolverBodyObsolete_m_turnVelocity_get(void *c,float* a);+void* btSolverConstraint_new(); //constructor: btSolverConstraint  ( ::btSolverConstraint::* )(  ) +void btSolverConstraint_free(void *c); void btSolverConstraint_m_relpos1CrossNormal_set(void *c,float* a); //attribute: ::btVector3 btSolverConstraint->m_relpos1CrossNormal+void btSolverConstraint_m_relpos1CrossNormal_get(void *c,float* a);+void btSolverConstraint_m_contactNormal_set(void *c,float* a); //attribute: ::btVector3 btSolverConstraint->m_contactNormal+void btSolverConstraint_m_contactNormal_get(void *c,float* a);+void btSolverConstraint_m_relpos2CrossNormal_set(void *c,float* a); //attribute: ::btVector3 btSolverConstraint->m_relpos2CrossNormal+void btSolverConstraint_m_relpos2CrossNormal_get(void *c,float* a);+void btSolverConstraint_m_angularComponentA_set(void *c,float* a); //attribute: ::btVector3 btSolverConstraint->m_angularComponentA+void btSolverConstraint_m_angularComponentA_get(void *c,float* a);+void btSolverConstraint_m_angularComponentB_set(void *c,float* a); //attribute: ::btVector3 btSolverConstraint->m_angularComponentB+void btSolverConstraint_m_angularComponentB_get(void *c,float* a);+void btSolverConstraint_m_appliedPushImpulse_set(void *c,float a); //attribute: ::btScalar btSolverConstraint->m_appliedPushImpulse+float btSolverConstraint_m_appliedPushImpulse_get(void *c); //attribute: ::btScalar btSolverConstraint->m_appliedPushImpulse+void btSolverConstraint_m_appliedImpulse_set(void *c,float a); //attribute: ::btScalar btSolverConstraint->m_appliedImpulse+float btSolverConstraint_m_appliedImpulse_get(void *c); //attribute: ::btScalar btSolverConstraint->m_appliedImpulse+void btSolverConstraint_m_friction_set(void *c,float a); //attribute: ::btScalar btSolverConstraint->m_friction+float btSolverConstraint_m_friction_get(void *c); //attribute: ::btScalar btSolverConstraint->m_friction+void btSolverConstraint_m_jacDiagABInv_set(void *c,float a); //attribute: ::btScalar btSolverConstraint->m_jacDiagABInv+float btSolverConstraint_m_jacDiagABInv_get(void *c); //attribute: ::btScalar btSolverConstraint->m_jacDiagABInv+// attribute not supported: //attribute: ::btSolverConstraint btSolverConstraint->+// attribute not supported: //attribute: ::btSolverConstraint btSolverConstraint->+// attribute not supported: //attribute: ::btSolverConstraint btSolverConstraint->+// attribute not supported: //attribute: ::btSolverConstraint btSolverConstraint->+// attribute not supported: //attribute: ::btSolverConstraint btSolverConstraint->+void btSolverConstraint_m_rhs_set(void *c,float a); //attribute: ::btScalar btSolverConstraint->m_rhs+float btSolverConstraint_m_rhs_get(void *c); //attribute: ::btScalar btSolverConstraint->m_rhs+void btSolverConstraint_m_cfm_set(void *c,float a); //attribute: ::btScalar btSolverConstraint->m_cfm+float btSolverConstraint_m_cfm_get(void *c); //attribute: ::btScalar btSolverConstraint->m_cfm+void btSolverConstraint_m_lowerLimit_set(void *c,float a); //attribute: ::btScalar btSolverConstraint->m_lowerLimit+float btSolverConstraint_m_lowerLimit_get(void *c); //attribute: ::btScalar btSolverConstraint->m_lowerLimit+void btSolverConstraint_m_upperLimit_set(void *c,float a); //attribute: ::btScalar btSolverConstraint->m_upperLimit+float btSolverConstraint_m_upperLimit_get(void *c); //attribute: ::btScalar btSolverConstraint->m_upperLimit+void btSolverConstraint_m_rhsPenetration_set(void *c,float a); //attribute: ::btScalar btSolverConstraint->m_rhsPenetration+float btSolverConstraint_m_rhsPenetration_get(void *c); //attribute: ::btScalar btSolverConstraint->m_rhsPenetration+void* btTranslationalLimitMotor_new(); //constructor: btTranslationalLimitMotor  ( ::btTranslationalLimitMotor::* )(  ) +void btTranslationalLimitMotor_free(void *c); int btTranslationalLimitMotor_testLimitValue(void *c,int p0,float p1); //method: testLimitValue int ( ::btTranslationalLimitMotor::* )( int,::btScalar ) +int btTranslationalLimitMotor_needApplyForce(void *c,int p0); //method: needApplyForce bool ( ::btTranslationalLimitMotor::* )( int ) +float btTranslationalLimitMotor_solveLinearAxis(void *c,float p0,float p1,void* p2,float* p3,void* p4,float* p5,int p6,float* p7,float* p8); //method: solveLinearAxis ::btScalar ( ::btTranslationalLimitMotor::* )( ::btScalar,::btScalar,::btRigidBody &,::btVector3 const &,::btRigidBody &,::btVector3 const &,int,::btVector3 const &,::btVector3 const & ) +int btTranslationalLimitMotor_isLimited(void *c,int p0); //method: isLimited bool ( ::btTranslationalLimitMotor::* )( int ) +void btTranslationalLimitMotor_m_accumulatedImpulse_set(void *c,float* a); //attribute: ::btVector3 btTranslationalLimitMotor->m_accumulatedImpulse+void btTranslationalLimitMotor_m_accumulatedImpulse_get(void *c,float* a);+// attribute not supported: //attribute: int[3] btTranslationalLimitMotor->m_currentLimit+void btTranslationalLimitMotor_m_currentLimitError_set(void *c,float* a); //attribute: ::btVector3 btTranslationalLimitMotor->m_currentLimitError+void btTranslationalLimitMotor_m_currentLimitError_get(void *c,float* a);+void btTranslationalLimitMotor_m_currentLinearDiff_set(void *c,float* a); //attribute: ::btVector3 btTranslationalLimitMotor->m_currentLinearDiff+void btTranslationalLimitMotor_m_currentLinearDiff_get(void *c,float* a);+void btTranslationalLimitMotor_m_damping_set(void *c,float a); //attribute: ::btScalar btTranslationalLimitMotor->m_damping+float btTranslationalLimitMotor_m_damping_get(void *c); //attribute: ::btScalar btTranslationalLimitMotor->m_damping+// attribute not supported: //attribute: bool[3] btTranslationalLimitMotor->m_enableMotor+void btTranslationalLimitMotor_m_limitSoftness_set(void *c,float a); //attribute: ::btScalar btTranslationalLimitMotor->m_limitSoftness+float btTranslationalLimitMotor_m_limitSoftness_get(void *c); //attribute: ::btScalar btTranslationalLimitMotor->m_limitSoftness+void btTranslationalLimitMotor_m_lowerLimit_set(void *c,float* a); //attribute: ::btVector3 btTranslationalLimitMotor->m_lowerLimit+void btTranslationalLimitMotor_m_lowerLimit_get(void *c,float* a);+void btTranslationalLimitMotor_m_maxMotorForce_set(void *c,float* a); //attribute: ::btVector3 btTranslationalLimitMotor->m_maxMotorForce+void btTranslationalLimitMotor_m_maxMotorForce_get(void *c,float* a);+void btTranslationalLimitMotor_m_normalCFM_set(void *c,float* a); //attribute: ::btVector3 btTranslationalLimitMotor->m_normalCFM+void btTranslationalLimitMotor_m_normalCFM_get(void *c,float* a);+void btTranslationalLimitMotor_m_restitution_set(void *c,float a); //attribute: ::btScalar btTranslationalLimitMotor->m_restitution+float btTranslationalLimitMotor_m_restitution_get(void *c); //attribute: ::btScalar btTranslationalLimitMotor->m_restitution+void btTranslationalLimitMotor_m_stopCFM_set(void *c,float* a); //attribute: ::btVector3 btTranslationalLimitMotor->m_stopCFM+void btTranslationalLimitMotor_m_stopCFM_get(void *c,float* a);+void btTranslationalLimitMotor_m_stopERP_set(void *c,float* a); //attribute: ::btVector3 btTranslationalLimitMotor->m_stopERP+void btTranslationalLimitMotor_m_stopERP_get(void *c,float* a);+void btTranslationalLimitMotor_m_targetVelocity_set(void *c,float* a); //attribute: ::btVector3 btTranslationalLimitMotor->m_targetVelocity+void btTranslationalLimitMotor_m_targetVelocity_get(void *c,float* a);+void btTranslationalLimitMotor_m_upperLimit_set(void *c,float* a); //attribute: ::btVector3 btTranslationalLimitMotor->m_upperLimit+void btTranslationalLimitMotor_m_upperLimit_get(void *c,float* a);+void* btTypedConstraint_getRigidBodyB(void *c); //method: getRigidBodyB ::btRigidBody const & ( ::btTypedConstraint::* )(  ) const+void* btTypedConstraint_getRigidBodyB0(void *c); //method: getRigidBodyB ::btRigidBody const & ( ::btTypedConstraint::* )(  ) const+void* btTypedConstraint_getRigidBodyB1(void *c); //method: getRigidBodyB ::btRigidBody & ( ::btTypedConstraint::* )(  ) +void btTypedConstraint_buildJacobian(void *c); //method: buildJacobian void ( ::btTypedConstraint::* )(  ) +void* btTypedConstraint_getRigidBodyA(void *c); //method: getRigidBodyA ::btRigidBody const & ( ::btTypedConstraint::* )(  ) const+void* btTypedConstraint_getRigidBodyA0(void *c); //method: getRigidBodyA ::btRigidBody const & ( ::btTypedConstraint::* )(  ) const+void* btTypedConstraint_getRigidBodyA1(void *c); //method: getRigidBodyA ::btRigidBody & ( ::btTypedConstraint::* )(  ) +//not supported method: serialize char const * ( ::btTypedConstraint::* )( void *,::btSerializer * ) const+void btTypedConstraint_enableFeedback(void *c,int p0); //method: enableFeedback void ( ::btTypedConstraint::* )( bool ) +int btTypedConstraint_getUserConstraintId(void *c); //method: getUserConstraintId int ( ::btTypedConstraint::* )(  ) const+void btTypedConstraint_setParam(void *c,int p0,float p1,int p2); //method: setParam void ( ::btTypedConstraint::* )( int,::btScalar,int ) +float btTypedConstraint_getParam(void *c,int p0,int p1); //method: getParam ::btScalar ( ::btTypedConstraint::* )( int,int ) const+void btTypedConstraint_getInfo1(void *c,void* p0); //method: getInfo1 void ( ::btTypedConstraint::* )( ::btTypedConstraint::btConstraintInfo1 * ) +void btTypedConstraint_getInfo2(void *c,void* p0); //method: getInfo2 void ( ::btTypedConstraint::* )( ::btTypedConstraint::btConstraintInfo2 * ) +void btTypedConstraint_setBreakingImpulseThreshold(void *c,float p0); //method: setBreakingImpulseThreshold void ( ::btTypedConstraint::* )( ::btScalar ) +int btTypedConstraint_calculateSerializeBufferSize(void *c); //method: calculateSerializeBufferSize int ( ::btTypedConstraint::* )(  ) const+int btTypedConstraint_isEnabled(void *c); //method: isEnabled bool ( ::btTypedConstraint::* )(  ) const+void btTypedConstraint_setUserConstraintId(void *c,int p0); //method: setUserConstraintId void ( ::btTypedConstraint::* )( int ) +//not supported method: getConstraintType ::btTypedConstraintType ( ::btTypedConstraint::* )(  ) const+float btTypedConstraint_getDbgDrawSize(void *c); //method: getDbgDrawSize ::btScalar ( ::btTypedConstraint::* )(  ) +void btTypedConstraint_internalSetAppliedImpulse(void *c,float p0); //method: internalSetAppliedImpulse void ( ::btTypedConstraint::* )( ::btScalar ) +int btTypedConstraint_needsFeedback(void *c); //method: needsFeedback bool ( ::btTypedConstraint::* )(  ) const+//not supported method: getUserConstraintPtr void * ( ::btTypedConstraint::* )(  ) +void btTypedConstraint_setEnabled(void *c,int p0); //method: setEnabled void ( ::btTypedConstraint::* )( bool ) +int btTypedConstraint_getUid(void *c); //method: getUid int ( ::btTypedConstraint::* )(  ) const+void btTypedConstraint_setDbgDrawSize(void *c,float p0); //method: setDbgDrawSize void ( ::btTypedConstraint::* )( ::btScalar ) +void btTypedConstraint_setUserConstraintType(void *c,int p0); //method: setUserConstraintType void ( ::btTypedConstraint::* )( int ) +float btTypedConstraint_internalGetAppliedImpulse(void *c); //method: internalGetAppliedImpulse ::btScalar ( ::btTypedConstraint::* )(  ) +//not supported method: setupSolverConstraint void ( ::btTypedConstraint::* )( ::btConstraintArray &,int,int,::btScalar ) +float btTypedConstraint_getBreakingImpulseThreshold(void *c); //method: getBreakingImpulseThreshold ::btScalar ( ::btTypedConstraint::* )(  ) const+int btTypedConstraint_getUserConstraintType(void *c); //method: getUserConstraintType int ( ::btTypedConstraint::* )(  ) const+void btTypedConstraint_solveConstraintObsolete(void *c,void* p0,void* p1,float p2); //method: solveConstraintObsolete void ( ::btTypedConstraint::* )( ::btRigidBody &,::btRigidBody &,::btScalar ) +float btTypedConstraint_getAppliedImpulse(void *c); //method: getAppliedImpulse ::btScalar ( ::btTypedConstraint::* )(  ) const+//not supported method: setUserConstraintPtr void ( ::btTypedConstraint::* )( void * ) +void* btTypedConstraintData_new(); //constructor: btTypedConstraintData  ( ::btTypedConstraintData::* )(  ) +void btTypedConstraintData_free(void *c); void btTypedConstraintData_m_appliedImpulse_set(void *c,float a); //attribute: float btTypedConstraintData->m_appliedImpulse+float btTypedConstraintData_m_appliedImpulse_get(void *c); //attribute: float btTypedConstraintData->m_appliedImpulse+void btTypedConstraintData_m_dbgDrawSize_set(void *c,float a); //attribute: float btTypedConstraintData->m_dbgDrawSize+float btTypedConstraintData_m_dbgDrawSize_get(void *c); //attribute: float btTypedConstraintData->m_dbgDrawSize+void btTypedConstraintData_m_disableCollisionsBetweenLinkedBodies_set(void *c,int a); //attribute: int btTypedConstraintData->m_disableCollisionsBetweenLinkedBodies+int btTypedConstraintData_m_disableCollisionsBetweenLinkedBodies_get(void *c); //attribute: int btTypedConstraintData->m_disableCollisionsBetweenLinkedBodies+void btTypedConstraintData_m_name_set(void *c,char * a); //attribute: char * btTypedConstraintData->m_name+char * btTypedConstraintData_m_name_get(void *c); //attribute: char * btTypedConstraintData->m_name+void btTypedConstraintData_m_needsFeedback_set(void *c,int a); //attribute: int btTypedConstraintData->m_needsFeedback+int btTypedConstraintData_m_needsFeedback_get(void *c); //attribute: int btTypedConstraintData->m_needsFeedback+void btTypedConstraintData_m_objectType_set(void *c,int a); //attribute: int btTypedConstraintData->m_objectType+int btTypedConstraintData_m_objectType_get(void *c); //attribute: int btTypedConstraintData->m_objectType+// attribute not supported: //attribute: char[4] btTypedConstraintData->m_pad4+void btTypedConstraintData_m_rbA_set(void *c,void* a); //attribute: ::btRigidBodyFloatData * btTypedConstraintData->m_rbA+// attribute getter not supported: //attribute: ::btRigidBodyFloatData * btTypedConstraintData->m_rbA+void btTypedConstraintData_m_rbB_set(void *c,void* a); //attribute: ::btRigidBodyFloatData * btTypedConstraintData->m_rbB+// attribute getter not supported: //attribute: ::btRigidBodyFloatData * btTypedConstraintData->m_rbB+void btTypedConstraintData_m_userConstraintId_set(void *c,int a); //attribute: int btTypedConstraintData->m_userConstraintId+int btTypedConstraintData_m_userConstraintId_get(void *c); //attribute: int btTypedConstraintData->m_userConstraintId+void btTypedConstraintData_m_userConstraintType_set(void *c,int a); //attribute: int btTypedConstraintData->m_userConstraintType+int btTypedConstraintData_m_userConstraintType_get(void *c); //attribute: int btTypedConstraintData->m_userConstraintType+void* btUniversalConstraint_new(void* p0,void* p1,float* p2,float* p3,float* p4); //constructor: btUniversalConstraint  ( ::btUniversalConstraint::* )( ::btRigidBody &,::btRigidBody &,::btVector3 &,::btVector3 &,::btVector3 & ) +void btUniversalConstraint_free(void *c); void btUniversalConstraint_setLowerLimit(void *c,float p0,float p1); //method: setLowerLimit void ( ::btUniversalConstraint::* )( ::btScalar,::btScalar ) +void btUniversalConstraint_getAnchor2(void *c,float* ret); //method: getAnchor2 ::btVector3 const & ( ::btUniversalConstraint::* )(  ) +void btUniversalConstraint_setAxis(void *c,float* p0,float* p1); //method: setAxis void ( ::btUniversalConstraint::* )( ::btVector3 const &,::btVector3 const & ) +void btUniversalConstraint_getAxis1(void *c,float* ret); //method: getAxis1 ::btVector3 const & ( ::btUniversalConstraint::* )(  ) +void btUniversalConstraint_getAnchor(void *c,float* ret); //method: getAnchor ::btVector3 const & ( ::btUniversalConstraint::* )(  ) +void btUniversalConstraint_getAxis2(void *c,float* ret); //method: getAxis2 ::btVector3 const & ( ::btUniversalConstraint::* )(  ) +void btUniversalConstraint_setUpperLimit(void *c,float p0,float p1); //method: setUpperLimit void ( ::btUniversalConstraint::* )( ::btScalar,::btScalar ) +float btUniversalConstraint_getAngle2(void *c); //method: getAngle2 ::btScalar ( ::btUniversalConstraint::* )(  ) +float btUniversalConstraint_getAngle1(void *c); //method: getAngle1 ::btScalar ( ::btUniversalConstraint::* )(  ) +void btActionInterface_updateAction(void *c,void* p0,float p1); //method: updateAction void ( ::btActionInterface::* )( ::btCollisionWorld *,::btScalar ) +void btActionInterface_debugDraw(void *c,void* p0); //method: debugDraw void ( ::btActionInterface::* )( ::btIDebugDraw * ) +void* btContinuousDynamicsWorld_new(void* p0,void* p1,void* p2,void* p3); //constructor: btContinuousDynamicsWorld  ( ::btContinuousDynamicsWorld::* )( ::btDispatcher *,::btBroadphaseInterface *,::btConstraintSolver *,::btCollisionConfiguration * ) +void btContinuousDynamicsWorld_free(void *c); void btContinuousDynamicsWorld_internalSingleStepSimulation(void *c,float p0); //method: internalSingleStepSimulation void ( ::btContinuousDynamicsWorld::* )( ::btScalar ) +//not supported method: getWorldType ::btDynamicsWorldType ( ::btContinuousDynamicsWorld::* )(  ) const+void btContinuousDynamicsWorld_calculateTimeOfImpacts(void *c,float p0); //method: calculateTimeOfImpacts void ( ::btContinuousDynamicsWorld::* )( ::btScalar ) +void* btDiscreteDynamicsWorld_new(void* p0,void* p1,void* p2,void* p3); //constructor: btDiscreteDynamicsWorld  ( ::btDiscreteDynamicsWorld::* )( ::btDispatcher *,::btBroadphaseInterface *,::btConstraintSolver *,::btCollisionConfiguration * ) +void btDiscreteDynamicsWorld_free(void *c); void btDiscreteDynamicsWorld_setGravity(void *c,float* p0); //method: setGravity void ( ::btDiscreteDynamicsWorld::* )( ::btVector3 const & ) +void btDiscreteDynamicsWorld_addAction(void *c,void* p0); //method: addAction void ( ::btDiscreteDynamicsWorld::* )( ::btActionInterface * ) +void btDiscreteDynamicsWorld_applyGravity(void *c); //method: applyGravity void ( ::btDiscreteDynamicsWorld::* )(  ) +void btDiscreteDynamicsWorld_serialize(void *c,void* p0); //method: serialize void ( ::btDiscreteDynamicsWorld::* )( ::btSerializer * ) +void* btDiscreteDynamicsWorld_getCollisionWorld(void *c); //method: getCollisionWorld ::btCollisionWorld * ( ::btDiscreteDynamicsWorld::* )(  ) +void btDiscreteDynamicsWorld_addRigidBody(void *c,void* p0); //method: addRigidBody void ( ::btDiscreteDynamicsWorld::* )( ::btRigidBody * ) +void btDiscreteDynamicsWorld_addRigidBody0(void *c,void* p0); //method: addRigidBody void ( ::btDiscreteDynamicsWorld::* )( ::btRigidBody * ) +void btDiscreteDynamicsWorld_addRigidBody1(void *c,void* p0,short int p1,short int p2); //method: addRigidBody void ( ::btDiscreteDynamicsWorld::* )( ::btRigidBody *,short int,short int ) +void btDiscreteDynamicsWorld_clearForces(void *c); //method: clearForces void ( ::btDiscreteDynamicsWorld::* )(  ) +void btDiscreteDynamicsWorld_removeVehicle(void *c,void* p0); //method: removeVehicle void ( ::btDiscreteDynamicsWorld::* )( ::btActionInterface * ) +int btDiscreteDynamicsWorld_getSynchronizeAllMotionStates(void *c); //method: getSynchronizeAllMotionStates bool ( ::btDiscreteDynamicsWorld::* )(  ) const+void btDiscreteDynamicsWorld_setNumTasks(void *c,int p0); //method: setNumTasks void ( ::btDiscreteDynamicsWorld::* )( int ) +void btDiscreteDynamicsWorld_setSynchronizeAllMotionStates(void *c,int p0); //method: setSynchronizeAllMotionStates void ( ::btDiscreteDynamicsWorld::* )( bool ) +void btDiscreteDynamicsWorld_removeConstraint(void *c,void* p0); //method: removeConstraint void ( ::btDiscreteDynamicsWorld::* )( ::btTypedConstraint * ) +int btDiscreteDynamicsWorld_getNumConstraints(void *c); //method: getNumConstraints int ( ::btDiscreteDynamicsWorld::* )(  ) const+void btDiscreteDynamicsWorld_addCollisionObject(void *c,void* p0,short int p1,short int p2); //method: addCollisionObject void ( ::btDiscreteDynamicsWorld::* )( ::btCollisionObject *,short int,short int ) +void btDiscreteDynamicsWorld_removeRigidBody(void *c,void* p0); //method: removeRigidBody void ( ::btDiscreteDynamicsWorld::* )( ::btRigidBody * ) +void btDiscreteDynamicsWorld_debugDrawConstraint(void *c,void* p0); //method: debugDrawConstraint void ( ::btDiscreteDynamicsWorld::* )( ::btTypedConstraint * ) +void btDiscreteDynamicsWorld_debugDrawWorld(void *c); //method: debugDrawWorld void ( ::btDiscreteDynamicsWorld::* )(  ) +void btDiscreteDynamicsWorld_addConstraint(void *c,void* p0,int p1); //method: addConstraint void ( ::btDiscreteDynamicsWorld::* )( ::btTypedConstraint *,bool ) +void btDiscreteDynamicsWorld_getGravity(void *c,float* ret); //method: getGravity ::btVector3 ( ::btDiscreteDynamicsWorld::* )(  ) const+void btDiscreteDynamicsWorld_removeAction(void *c,void* p0); //method: removeAction void ( ::btDiscreteDynamicsWorld::* )( ::btActionInterface * ) +void btDiscreteDynamicsWorld_removeCharacter(void *c,void* p0); //method: removeCharacter void ( ::btDiscreteDynamicsWorld::* )( ::btActionInterface * ) +void* btDiscreteDynamicsWorld_getConstraint(void *c,int p0); //method: getConstraint ::btTypedConstraint * ( ::btDiscreteDynamicsWorld::* )( int ) +void* btDiscreteDynamicsWorld_getConstraint0(void *c,int p0); //method: getConstraint ::btTypedConstraint * ( ::btDiscreteDynamicsWorld::* )( int ) +void* btDiscreteDynamicsWorld_getConstraint1(void *c,int p0); //method: getConstraint ::btTypedConstraint const * ( ::btDiscreteDynamicsWorld::* )( int ) const+void* btDiscreteDynamicsWorld_getConstraintSolver(void *c); //method: getConstraintSolver ::btConstraintSolver * ( ::btDiscreteDynamicsWorld::* )(  ) +int btDiscreteDynamicsWorld_stepSimulation(void *c,float p0,int p1,float p2); //method: stepSimulation int ( ::btDiscreteDynamicsWorld::* )( ::btScalar,int,::btScalar ) +void btDiscreteDynamicsWorld_addCharacter(void *c,void* p0); //method: addCharacter void ( ::btDiscreteDynamicsWorld::* )( ::btActionInterface * ) +//not supported method: getWorldType ::btDynamicsWorldType ( ::btDiscreteDynamicsWorld::* )(  ) const+void btDiscreteDynamicsWorld_updateVehicles(void *c,float p0); //method: updateVehicles void ( ::btDiscreteDynamicsWorld::* )( ::btScalar ) +void btDiscreteDynamicsWorld_synchronizeSingleMotionState(void *c,void* p0); //method: synchronizeSingleMotionState void ( ::btDiscreteDynamicsWorld::* )( ::btRigidBody * ) +void btDiscreteDynamicsWorld_addVehicle(void *c,void* p0); //method: addVehicle void ( ::btDiscreteDynamicsWorld::* )( ::btActionInterface * ) +void btDiscreteDynamicsWorld_synchronizeMotionStates(void *c); //method: synchronizeMotionStates void ( ::btDiscreteDynamicsWorld::* )(  ) +//not supported method: getSimulationIslandManager ::btSimulationIslandManager * ( ::btDiscreteDynamicsWorld::* )(  ) +//not supported method: getSimulationIslandManager ::btSimulationIslandManager * ( ::btDiscreteDynamicsWorld::* )(  ) +//not supported method: getSimulationIslandManager ::btSimulationIslandManager const * ( ::btDiscreteDynamicsWorld::* )(  ) const+void btDiscreteDynamicsWorld_removeCollisionObject(void *c,void* p0); //method: removeCollisionObject void ( ::btDiscreteDynamicsWorld::* )( ::btCollisionObject * ) +void btDiscreteDynamicsWorld_setConstraintSolver(void *c,void* p0); //method: setConstraintSolver void ( ::btDiscreteDynamicsWorld::* )( ::btConstraintSolver * ) +void btDynamicsWorld_setGravity(void *c,float* p0); //method: setGravity void ( ::btDynamicsWorld::* )( ::btVector3 const & ) +void btDynamicsWorld_addAction(void *c,void* p0); //method: addAction void ( ::btDynamicsWorld::* )( ::btActionInterface * ) +void* btDynamicsWorld_getSolverInfo(void *c); //method: getSolverInfo ::btContactSolverInfo & ( ::btDynamicsWorld::* )(  ) +void btDynamicsWorld_addRigidBody(void *c,void* p0); //method: addRigidBody void ( ::btDynamicsWorld::* )( ::btRigidBody * ) +void btDynamicsWorld_addRigidBody0(void *c,void* p0); //method: addRigidBody void ( ::btDynamicsWorld::* )( ::btRigidBody * ) +void btDynamicsWorld_addRigidBody1(void *c,void* p0,short int p1,short int p2); //method: addRigidBody void ( ::btDynamicsWorld::* )( ::btRigidBody *,short int,short int ) +void btDynamicsWorld_clearForces(void *c); //method: clearForces void ( ::btDynamicsWorld::* )(  ) +void btDynamicsWorld_removeVehicle(void *c,void* p0); //method: removeVehicle void ( ::btDynamicsWorld::* )( ::btActionInterface * ) +void btDynamicsWorld_removeConstraint(void *c,void* p0); //method: removeConstraint void ( ::btDynamicsWorld::* )( ::btTypedConstraint * ) +int btDynamicsWorld_getNumConstraints(void *c); //method: getNumConstraints int ( ::btDynamicsWorld::* )(  ) const+void btDynamicsWorld_removeRigidBody(void *c,void* p0); //method: removeRigidBody void ( ::btDynamicsWorld::* )( ::btRigidBody * ) +//not supported method: setInternalTickCallback void ( ::btDynamicsWorld::* )( ::btInternalTickCallback,void *,bool ) +void btDynamicsWorld_synchronizeMotionStates(void *c); //method: synchronizeMotionStates void ( ::btDynamicsWorld::* )(  ) +void btDynamicsWorld_addConstraint(void *c,void* p0,int p1); //method: addConstraint void ( ::btDynamicsWorld::* )( ::btTypedConstraint *,bool ) +void btDynamicsWorld_getGravity(void *c,float* ret); //method: getGravity ::btVector3 ( ::btDynamicsWorld::* )(  ) const+void btDynamicsWorld_debugDrawWorld(void *c); //method: debugDrawWorld void ( ::btDynamicsWorld::* )(  ) +void btDynamicsWorld_removeAction(void *c,void* p0); //method: removeAction void ( ::btDynamicsWorld::* )( ::btActionInterface * ) +//not supported method: setWorldUserInfo void ( ::btDynamicsWorld::* )( void * ) +void btDynamicsWorld_removeCharacter(void *c,void* p0); //method: removeCharacter void ( ::btDynamicsWorld::* )( ::btActionInterface * ) +void* btDynamicsWorld_getConstraint(void *c,int p0); //method: getConstraint ::btTypedConstraint * ( ::btDynamicsWorld::* )( int ) +void* btDynamicsWorld_getConstraint0(void *c,int p0); //method: getConstraint ::btTypedConstraint * ( ::btDynamicsWorld::* )( int ) +void* btDynamicsWorld_getConstraint1(void *c,int p0); //method: getConstraint ::btTypedConstraint const * ( ::btDynamicsWorld::* )( int ) const+void* btDynamicsWorld_getConstraintSolver(void *c); //method: getConstraintSolver ::btConstraintSolver * ( ::btDynamicsWorld::* )(  ) +int btDynamicsWorld_stepSimulation(void *c,float p0,int p1,float p2); //method: stepSimulation int ( ::btDynamicsWorld::* )( ::btScalar,int,::btScalar ) +void btDynamicsWorld_addCharacter(void *c,void* p0); //method: addCharacter void ( ::btDynamicsWorld::* )( ::btActionInterface * ) +//not supported method: getWorldType ::btDynamicsWorldType ( ::btDynamicsWorld::* )(  ) const+void btDynamicsWorld_addVehicle(void *c,void* p0); //method: addVehicle void ( ::btDynamicsWorld::* )( ::btActionInterface * ) +//not supported method: getWorldUserInfo void * ( ::btDynamicsWorld::* )(  ) const+void btDynamicsWorld_setConstraintSolver(void *c,void* p0); //method: setConstraintSolver void ( ::btDynamicsWorld::* )( ::btConstraintSolver * ) +void* btRigidBody_new0(void* p0); //constructor: btRigidBody  ( ::btRigidBody::* )( ::btRigidBody::btRigidBodyConstructionInfo const & ) +void* btRigidBody_new1(float p0,void* p1,void* p2,float* p3); //constructor: btRigidBody  ( ::btRigidBody::* )( ::btScalar,::btMotionState *,::btCollisionShape *,::btVector3 const & ) +void btRigidBody_free(void *c); void btRigidBody_setGravity(void *c,float* p0); //method: setGravity void ( ::btRigidBody::* )( ::btVector3 const & ) +void btRigidBody_updateDeactivation(void *c,float p0); //method: updateDeactivation void ( ::btRigidBody::* )( ::btScalar ) +void btRigidBody_setAngularFactor(void *c,float* p0); //method: setAngularFactor void ( ::btRigidBody::* )( ::btVector3 const & ) +void btRigidBody_setAngularFactor0(void *c,float* p0); //method: setAngularFactor void ( ::btRigidBody::* )( ::btVector3 const & ) +void btRigidBody_setAngularFactor1(void *c,float p0); //method: setAngularFactor void ( ::btRigidBody::* )( ::btScalar ) +void btRigidBody_internalWritebackVelocity(void *c); //method: internalWritebackVelocity void ( ::btRigidBody::* )(  ) +void btRigidBody_internalWritebackVelocity0(void *c); //method: internalWritebackVelocity void ( ::btRigidBody::* )(  ) +void btRigidBody_internalWritebackVelocity1(void *c,float p0); //method: internalWritebackVelocity void ( ::btRigidBody::* )( ::btScalar ) +void btRigidBody_getPushVelocity(void *c,float* ret); //method: getPushVelocity ::btVector3 const & ( ::btRigidBody::* )(  ) const+void btRigidBody_internalGetDeltaAngularVelocity(void *c,float* ret); //method: internalGetDeltaAngularVelocity ::btVector3 & ( ::btRigidBody::* )(  ) +void btRigidBody_applyGravity(void *c); //method: applyGravity void ( ::btRigidBody::* )(  ) +//not supported method: serialize char const * ( ::btRigidBody::* )( void *,::btSerializer * ) const+void btRigidBody_getOrientation(void *c,float* ret); //method: getOrientation ::btQuaternion ( ::btRigidBody::* )(  ) const+void btRigidBody_applyCentralForce(void *c,float* p0); //method: applyCentralForce void ( ::btRigidBody::* )( ::btVector3 const & ) +//not supported method: internalApplyImpulse void ( ::btRigidBody::* )( ::btVector3 const &,::btVector3 const &,::btScalar const ) +void btRigidBody_setMotionState(void *c,void* p0); //method: setMotionState void ( ::btRigidBody::* )( ::btMotionState * ) +void btRigidBody_clearForces(void *c); //method: clearForces void ( ::btRigidBody::* )(  ) +void* btRigidBody_getMotionState(void *c); //method: getMotionState ::btMotionState * ( ::btRigidBody::* )(  ) +void* btRigidBody_getMotionState0(void *c); //method: getMotionState ::btMotionState * ( ::btRigidBody::* )(  ) +void* btRigidBody_getMotionState1(void *c); //method: getMotionState ::btMotionState const * ( ::btRigidBody::* )(  ) const+void btRigidBody_setDamping(void *c,float p0,float p1); //method: setDamping void ( ::btRigidBody::* )( ::btScalar,::btScalar ) +void btRigidBody_applyImpulse(void *c,float* p0,float* p1); //method: applyImpulse void ( ::btRigidBody::* )( ::btVector3 const &,::btVector3 const & ) +void btRigidBody_applyTorque(void *c,float* p0); //method: applyTorque void ( ::btRigidBody::* )( ::btVector3 const & ) +void btRigidBody_internalApplyPushImpulse(void *c,float* p0,float* p1,float p2); //method: internalApplyPushImpulse void ( ::btRigidBody::* )( ::btVector3 const &,::btVector3 const &,::btScalar ) +int btRigidBody_wantsSleeping(void *c); //method: wantsSleeping bool ( ::btRigidBody::* )(  ) +void btRigidBody_setNewBroadphaseProxy(void *c,void* p0); //method: setNewBroadphaseProxy void ( ::btRigidBody::* )( ::btBroadphaseProxy * ) +void btRigidBody_getVelocityInLocalPoint(void *c,float* p0,float* ret); //method: getVelocityInLocalPoint ::btVector3 ( ::btRigidBody::* )( ::btVector3 const & ) const+int btRigidBody_calculateSerializeBufferSize(void *c); //method: calculateSerializeBufferSize int ( ::btRigidBody::* )(  ) const+void btRigidBody_setAngularVelocity(void *c,float* p0); //method: setAngularVelocity void ( ::btRigidBody::* )( ::btVector3 const & ) +void btRigidBody_getLinearFactor(void *c,float* ret); //method: getLinearFactor ::btVector3 const & ( ::btRigidBody::* )(  ) const+void btRigidBody_predictIntegratedTransform(void *c,float p0,float* p1); //method: predictIntegratedTransform void ( ::btRigidBody::* )( ::btScalar,::btTransform & ) +void btRigidBody_internalGetAngularFactor(void *c,float* ret); //method: internalGetAngularFactor ::btVector3 const & ( ::btRigidBody::* )(  ) const+float btRigidBody_getAngularSleepingThreshold(void *c); //method: getAngularSleepingThreshold ::btScalar ( ::btRigidBody::* )(  ) const+void btRigidBody_applyDamping(void *c,float p0); //method: applyDamping void ( ::btRigidBody::* )( ::btScalar ) +void btRigidBody_saveKinematicState(void *c,float p0); //method: saveKinematicState void ( ::btRigidBody::* )( ::btScalar ) +void btRigidBody_setSleepingThresholds(void *c,float p0,float p1); //method: setSleepingThresholds void ( ::btRigidBody::* )( ::btScalar,::btScalar ) +void btRigidBody_getAngularVelocity(void *c,float* ret); //method: getAngularVelocity ::btVector3 const & ( ::btRigidBody::* )(  ) const+float btRigidBody_getLinearSleepingThreshold(void *c); //method: getLinearSleepingThreshold ::btScalar ( ::btRigidBody::* )(  ) const+void btRigidBody_internalGetInvMass(void *c,float* ret); //method: internalGetInvMass ::btVector3 const & ( ::btRigidBody::* )(  ) const+void btRigidBody_applyTorqueImpulse(void *c,float* p0); //method: applyTorqueImpulse void ( ::btRigidBody::* )( ::btVector3 const & ) +void btRigidBody_internalGetPushVelocity(void *c,float* ret); //method: internalGetPushVelocity ::btVector3 & ( ::btRigidBody::* )(  ) +void btRigidBody_setLinearFactor(void *c,float* p0); //method: setLinearFactor void ( ::btRigidBody::* )( ::btVector3 const & ) +void btRigidBody_serializeSingleObject(void *c,void* p0); //method: serializeSingleObject void ( ::btRigidBody::* )( ::btSerializer * ) const+float btRigidBody_getInvMass(void *c); //method: getInvMass ::btScalar ( ::btRigidBody::* )(  ) const+void btRigidBody_getTotalForce(void *c,float* ret); //method: getTotalForce ::btVector3 const & ( ::btRigidBody::* )(  ) const+void btRigidBody_getCenterOfMassPosition(void *c,float* ret); //method: getCenterOfMassPosition ::btVector3 const & ( ::btRigidBody::* )(  ) const+void btRigidBody_getAabb(void *c,float* p0,float* p1); //method: getAabb void ( ::btRigidBody::* )( ::btVector3 &,::btVector3 & ) const+void* btRigidBody_getBroadphaseProxy(void *c); //method: getBroadphaseProxy ::btBroadphaseProxy const * ( ::btRigidBody::* )(  ) const+void* btRigidBody_getBroadphaseProxy0(void *c); //method: getBroadphaseProxy ::btBroadphaseProxy const * ( ::btRigidBody::* )(  ) const+void* btRigidBody_getBroadphaseProxy1(void *c); //method: getBroadphaseProxy ::btBroadphaseProxy * ( ::btRigidBody::* )(  ) +void* btRigidBody_getCollisionShape(void *c); //method: getCollisionShape ::btCollisionShape const * ( ::btRigidBody::* )(  ) const+void* btRigidBody_getCollisionShape0(void *c); //method: getCollisionShape ::btCollisionShape const * ( ::btRigidBody::* )(  ) const+void* btRigidBody_getCollisionShape1(void *c); //method: getCollisionShape ::btCollisionShape * ( ::btRigidBody::* )(  ) +void* btRigidBody_upcast(void* p0); //method: upcast ::btRigidBody const * (*)( ::btCollisionObject const * )+void* btRigidBody_upcast0(void* p0); //method: upcast ::btRigidBody const * (*)( ::btCollisionObject const * )+void* btRigidBody_upcast1(void* p0); //method: upcast ::btRigidBody * (*)( ::btCollisionObject * )+int btRigidBody_checkCollideWithOverride(void *c,void* p0); //method: checkCollideWithOverride bool ( ::btRigidBody::* )( ::btCollisionObject * ) +void btRigidBody_translate(void *c,float* p0); //method: translate void ( ::btRigidBody::* )( ::btVector3 const & ) +void btRigidBody_updateInertiaTensor(void *c); //method: updateInertiaTensor void ( ::btRigidBody::* )(  ) +void btRigidBody_applyForce(void *c,float* p0,float* p1); //method: applyForce void ( ::btRigidBody::* )( ::btVector3 const &,::btVector3 const & ) +void btRigidBody_internalGetAngularVelocity(void *c,float* p0); //method: internalGetAngularVelocity void ( ::btRigidBody::* )( ::btVector3 & ) const+void btRigidBody_applyCentralImpulse(void *c,float* p0); //method: applyCentralImpulse void ( ::btRigidBody::* )( ::btVector3 const & ) +void btRigidBody_getTurnVelocity(void *c,float* ret); //method: getTurnVelocity ::btVector3 const & ( ::btRigidBody::* )(  ) const+void btRigidBody_getDeltaLinearVelocity(void *c,float* ret); //method: getDeltaLinearVelocity ::btVector3 const & ( ::btRigidBody::* )(  ) const+void btRigidBody_integrateVelocities(void *c,float p0); //method: integrateVelocities void ( ::btRigidBody::* )( ::btScalar ) +void btRigidBody_getGravity(void *c,float* ret); //method: getGravity ::btVector3 const & ( ::btRigidBody::* )(  ) const+void btRigidBody_setMassProps(void *c,float p0,float* p1); //method: setMassProps void ( ::btRigidBody::* )( ::btScalar,::btVector3 const & ) +void btRigidBody_setCenterOfMassTransform(void *c,float* p0); //method: setCenterOfMassTransform void ( ::btRigidBody::* )( ::btTransform const & ) +void btRigidBody_setFlags(void *c,int p0); //method: setFlags void ( ::btRigidBody::* )( int ) +void btRigidBody_addConstraintRef(void *c,void* p0); //method: addConstraintRef void ( ::btRigidBody::* )( ::btTypedConstraint * ) +void btRigidBody_setLinearVelocity(void *c,float* p0); //method: setLinearVelocity void ( ::btRigidBody::* )( ::btVector3 const & ) +int btRigidBody_isInWorld(void *c); //method: isInWorld bool ( ::btRigidBody::* )(  ) const+void btRigidBody_getTotalTorque(void *c,float* ret); //method: getTotalTorque ::btVector3 const & ( ::btRigidBody::* )(  ) const+int btRigidBody_getNumConstraintRefs(void *c); //method: getNumConstraintRefs int ( ::btRigidBody::* )(  ) const+float btRigidBody_computeAngularImpulseDenominator(void *c,float* p0); //method: computeAngularImpulseDenominator ::btScalar ( ::btRigidBody::* )( ::btVector3 const & ) const+void btRigidBody_getInvInertiaTensorWorld(void *c,float* ret); //method: getInvInertiaTensorWorld ::btMatrix3x3 const & ( ::btRigidBody::* )(  ) const+void btRigidBody_getDeltaAngularVelocity(void *c,float* ret); //method: getDeltaAngularVelocity ::btVector3 const & ( ::btRigidBody::* )(  ) const+void btRigidBody_internalGetDeltaLinearVelocity(void *c,float* ret); //method: internalGetDeltaLinearVelocity ::btVector3 & ( ::btRigidBody::* )(  ) +float btRigidBody_computeImpulseDenominator(void *c,float* p0,float* p1); //method: computeImpulseDenominator ::btScalar ( ::btRigidBody::* )( ::btVector3 const &,::btVector3 const & ) const+void* btRigidBody_getConstraintRef(void *c,int p0); //method: getConstraintRef ::btTypedConstraint * ( ::btRigidBody::* )( int ) +float btRigidBody_getAngularDamping(void *c); //method: getAngularDamping ::btScalar ( ::btRigidBody::* )(  ) const+void btRigidBody_internalGetTurnVelocity(void *c,float* ret); //method: internalGetTurnVelocity ::btVector3 & ( ::btRigidBody::* )(  ) +void btRigidBody_proceedToTransform(void *c,float* p0); //method: proceedToTransform void ( ::btRigidBody::* )( ::btTransform const & ) +void btRigidBody_setInvInertiaDiagLocal(void *c,float* p0); //method: setInvInertiaDiagLocal void ( ::btRigidBody::* )( ::btVector3 const & ) +void btRigidBody_getInvInertiaDiagLocal(void *c,float* ret); //method: getInvInertiaDiagLocal ::btVector3 const & ( ::btRigidBody::* )(  ) const+void btRigidBody_getCenterOfMassTransform(void *c,float* ret); //method: getCenterOfMassTransform ::btTransform const & ( ::btRigidBody::* )(  ) const+void btRigidBody_removeConstraintRef(void *c,void* p0); //method: removeConstraintRef void ( ::btRigidBody::* )( ::btTypedConstraint * ) +void btRigidBody_getAngularFactor(void *c,float* ret); //method: getAngularFactor ::btVector3 const & ( ::btRigidBody::* )(  ) const+void btRigidBody_getLinearVelocity(void *c,float* ret); //method: getLinearVelocity ::btVector3 const & ( ::btRigidBody::* )(  ) const+int btRigidBody_getFlags(void *c); //method: getFlags int ( ::btRigidBody::* )(  ) const+void btRigidBody_internalGetVelocityInLocalPointObsolete(void *c,float* p0,float* p1); //method: internalGetVelocityInLocalPointObsolete void ( ::btRigidBody::* )( ::btVector3 const &,::btVector3 & ) const+float btRigidBody_getLinearDamping(void *c); //method: getLinearDamping ::btScalar ( ::btRigidBody::* )(  ) const+void btRigidBody_m_contactSolverType_set(void *c,int a); //attribute: int btRigidBody->m_contactSolverType+int btRigidBody_m_contactSolverType_get(void *c); //attribute: int btRigidBody->m_contactSolverType+void btRigidBody_m_frictionSolverType_set(void *c,int a); //attribute: int btRigidBody->m_frictionSolverType+int btRigidBody_m_frictionSolverType_get(void *c); //attribute: int btRigidBody->m_frictionSolverType+void* btRigidBody_btRigidBodyConstructionInfo_new(float p0,void* p1,void* p2,float* p3); //constructor: btRigidBodyConstructionInfo  ( ::btRigidBody::btRigidBodyConstructionInfo::* )( ::btScalar,::btMotionState *,::btCollisionShape *,::btVector3 const & ) +void btRigidBody_btRigidBodyConstructionInfo_free(void *c); void btRigidBody_btRigidBodyConstructionInfo_m_additionalAngularDampingFactor_set(void *c,float a); //attribute: ::btScalar btRigidBody_btRigidBodyConstructionInfo->m_additionalAngularDampingFactor+float btRigidBody_btRigidBodyConstructionInfo_m_additionalAngularDampingFactor_get(void *c); //attribute: ::btScalar btRigidBody_btRigidBodyConstructionInfo->m_additionalAngularDampingFactor+void btRigidBody_btRigidBodyConstructionInfo_m_additionalAngularDampingThresholdSqr_set(void *c,float a); //attribute: ::btScalar btRigidBody_btRigidBodyConstructionInfo->m_additionalAngularDampingThresholdSqr+float btRigidBody_btRigidBodyConstructionInfo_m_additionalAngularDampingThresholdSqr_get(void *c); //attribute: ::btScalar btRigidBody_btRigidBodyConstructionInfo->m_additionalAngularDampingThresholdSqr+void btRigidBody_btRigidBodyConstructionInfo_m_additionalDamping_set(void *c,int a); //attribute: bool btRigidBody_btRigidBodyConstructionInfo->m_additionalDamping+int btRigidBody_btRigidBodyConstructionInfo_m_additionalDamping_get(void *c); //attribute: bool btRigidBody_btRigidBodyConstructionInfo->m_additionalDamping+void btRigidBody_btRigidBodyConstructionInfo_m_additionalDampingFactor_set(void *c,float a); //attribute: ::btScalar btRigidBody_btRigidBodyConstructionInfo->m_additionalDampingFactor+float btRigidBody_btRigidBodyConstructionInfo_m_additionalDampingFactor_get(void *c); //attribute: ::btScalar btRigidBody_btRigidBodyConstructionInfo->m_additionalDampingFactor+void btRigidBody_btRigidBodyConstructionInfo_m_additionalLinearDampingThresholdSqr_set(void *c,float a); //attribute: ::btScalar btRigidBody_btRigidBodyConstructionInfo->m_additionalLinearDampingThresholdSqr+float btRigidBody_btRigidBodyConstructionInfo_m_additionalLinearDampingThresholdSqr_get(void *c); //attribute: ::btScalar btRigidBody_btRigidBodyConstructionInfo->m_additionalLinearDampingThresholdSqr+void btRigidBody_btRigidBodyConstructionInfo_m_angularDamping_set(void *c,float a); //attribute: ::btScalar btRigidBody_btRigidBodyConstructionInfo->m_angularDamping+float btRigidBody_btRigidBodyConstructionInfo_m_angularDamping_get(void *c); //attribute: ::btScalar btRigidBody_btRigidBodyConstructionInfo->m_angularDamping+void btRigidBody_btRigidBodyConstructionInfo_m_angularSleepingThreshold_set(void *c,float a); //attribute: ::btScalar btRigidBody_btRigidBodyConstructionInfo->m_angularSleepingThreshold+float btRigidBody_btRigidBodyConstructionInfo_m_angularSleepingThreshold_get(void *c); //attribute: ::btScalar btRigidBody_btRigidBodyConstructionInfo->m_angularSleepingThreshold+void btRigidBody_btRigidBodyConstructionInfo_m_collisionShape_set(void *c,void* a); //attribute: ::btCollisionShape * btRigidBody_btRigidBodyConstructionInfo->m_collisionShape+// attribute getter not supported: //attribute: ::btCollisionShape * btRigidBody_btRigidBodyConstructionInfo->m_collisionShape+void btRigidBody_btRigidBodyConstructionInfo_m_friction_set(void *c,float a); //attribute: ::btScalar btRigidBody_btRigidBodyConstructionInfo->m_friction+float btRigidBody_btRigidBodyConstructionInfo_m_friction_get(void *c); //attribute: ::btScalar btRigidBody_btRigidBodyConstructionInfo->m_friction+void btRigidBody_btRigidBodyConstructionInfo_m_linearDamping_set(void *c,float a); //attribute: ::btScalar btRigidBody_btRigidBodyConstructionInfo->m_linearDamping+float btRigidBody_btRigidBodyConstructionInfo_m_linearDamping_get(void *c); //attribute: ::btScalar btRigidBody_btRigidBodyConstructionInfo->m_linearDamping+void btRigidBody_btRigidBodyConstructionInfo_m_linearSleepingThreshold_set(void *c,float a); //attribute: ::btScalar btRigidBody_btRigidBodyConstructionInfo->m_linearSleepingThreshold+float btRigidBody_btRigidBodyConstructionInfo_m_linearSleepingThreshold_get(void *c); //attribute: ::btScalar btRigidBody_btRigidBodyConstructionInfo->m_linearSleepingThreshold+void btRigidBody_btRigidBodyConstructionInfo_m_localInertia_set(void *c,float* a); //attribute: ::btVector3 btRigidBody_btRigidBodyConstructionInfo->m_localInertia+void btRigidBody_btRigidBodyConstructionInfo_m_localInertia_get(void *c,float* a);+void btRigidBody_btRigidBodyConstructionInfo_m_mass_set(void *c,float a); //attribute: ::btScalar btRigidBody_btRigidBodyConstructionInfo->m_mass+float btRigidBody_btRigidBodyConstructionInfo_m_mass_get(void *c); //attribute: ::btScalar btRigidBody_btRigidBodyConstructionInfo->m_mass+void btRigidBody_btRigidBodyConstructionInfo_m_motionState_set(void *c,void* a); //attribute: ::btMotionState * btRigidBody_btRigidBodyConstructionInfo->m_motionState+// attribute getter not supported: //attribute: ::btMotionState * btRigidBody_btRigidBodyConstructionInfo->m_motionState+void btRigidBody_btRigidBodyConstructionInfo_m_restitution_set(void *c,float a); //attribute: ::btScalar btRigidBody_btRigidBodyConstructionInfo->m_restitution+float btRigidBody_btRigidBodyConstructionInfo_m_restitution_get(void *c); //attribute: ::btScalar btRigidBody_btRigidBodyConstructionInfo->m_restitution+void btRigidBody_btRigidBodyConstructionInfo_m_startWorldTransform_set(void *c,float* a); //attribute: ::btTransform btRigidBody_btRigidBodyConstructionInfo->m_startWorldTransform+void btRigidBody_btRigidBodyConstructionInfo_m_startWorldTransform_get(void *c,float* a);+void* btRigidBodyDoubleData_new(); //constructor: btRigidBodyDoubleData  ( ::btRigidBodyDoubleData::* )(  ) +void btRigidBodyDoubleData_free(void *c); // attribute not supported: //attribute: ::btCollisionObjectDoubleData btRigidBodyDoubleData->m_collisionObjectData+// attribute not supported: //attribute: ::btMatrix3x3DoubleData btRigidBodyDoubleData->m_invInertiaTensorWorld+// attribute not supported: //attribute: ::btVector3DoubleData btRigidBodyDoubleData->m_linearVelocity+// attribute not supported: //attribute: ::btVector3DoubleData btRigidBodyDoubleData->m_angularVelocity+// attribute not supported: //attribute: ::btVector3DoubleData btRigidBodyDoubleData->m_angularFactor+// attribute not supported: //attribute: ::btVector3DoubleData btRigidBodyDoubleData->m_linearFactor+// attribute not supported: //attribute: ::btVector3DoubleData btRigidBodyDoubleData->m_gravity+// attribute not supported: //attribute: ::btVector3DoubleData btRigidBodyDoubleData->m_gravity_acceleration+// attribute not supported: //attribute: ::btVector3DoubleData btRigidBodyDoubleData->m_invInertiaLocal+// attribute not supported: //attribute: ::btVector3DoubleData btRigidBodyDoubleData->m_totalForce+// attribute not supported: //attribute: ::btVector3DoubleData btRigidBodyDoubleData->m_totalTorque+void btRigidBodyDoubleData_m_inverseMass_set(void *c,double a); //attribute: double btRigidBodyDoubleData->m_inverseMass+double btRigidBodyDoubleData_m_inverseMass_get(void *c); //attribute: double btRigidBodyDoubleData->m_inverseMass+void btRigidBodyDoubleData_m_linearDamping_set(void *c,double a); //attribute: double btRigidBodyDoubleData->m_linearDamping+double btRigidBodyDoubleData_m_linearDamping_get(void *c); //attribute: double btRigidBodyDoubleData->m_linearDamping+void btRigidBodyDoubleData_m_angularDamping_set(void *c,double a); //attribute: double btRigidBodyDoubleData->m_angularDamping+double btRigidBodyDoubleData_m_angularDamping_get(void *c); //attribute: double btRigidBodyDoubleData->m_angularDamping+void btRigidBodyDoubleData_m_additionalDampingFactor_set(void *c,double a); //attribute: double btRigidBodyDoubleData->m_additionalDampingFactor+double btRigidBodyDoubleData_m_additionalDampingFactor_get(void *c); //attribute: double btRigidBodyDoubleData->m_additionalDampingFactor+void btRigidBodyDoubleData_m_additionalLinearDampingThresholdSqr_set(void *c,double a); //attribute: double btRigidBodyDoubleData->m_additionalLinearDampingThresholdSqr+double btRigidBodyDoubleData_m_additionalLinearDampingThresholdSqr_get(void *c); //attribute: double btRigidBodyDoubleData->m_additionalLinearDampingThresholdSqr+void btRigidBodyDoubleData_m_additionalAngularDampingThresholdSqr_set(void *c,double a); //attribute: double btRigidBodyDoubleData->m_additionalAngularDampingThresholdSqr+double btRigidBodyDoubleData_m_additionalAngularDampingThresholdSqr_get(void *c); //attribute: double btRigidBodyDoubleData->m_additionalAngularDampingThresholdSqr+void btRigidBodyDoubleData_m_additionalAngularDampingFactor_set(void *c,double a); //attribute: double btRigidBodyDoubleData->m_additionalAngularDampingFactor+double btRigidBodyDoubleData_m_additionalAngularDampingFactor_get(void *c); //attribute: double btRigidBodyDoubleData->m_additionalAngularDampingFactor+void btRigidBodyDoubleData_m_linearSleepingThreshold_set(void *c,double a); //attribute: double btRigidBodyDoubleData->m_linearSleepingThreshold+double btRigidBodyDoubleData_m_linearSleepingThreshold_get(void *c); //attribute: double btRigidBodyDoubleData->m_linearSleepingThreshold+void btRigidBodyDoubleData_m_angularSleepingThreshold_set(void *c,double a); //attribute: double btRigidBodyDoubleData->m_angularSleepingThreshold+double btRigidBodyDoubleData_m_angularSleepingThreshold_get(void *c); //attribute: double btRigidBodyDoubleData->m_angularSleepingThreshold+void btRigidBodyDoubleData_m_additionalDamping_set(void *c,int a); //attribute: int btRigidBodyDoubleData->m_additionalDamping+int btRigidBodyDoubleData_m_additionalDamping_get(void *c); //attribute: int btRigidBodyDoubleData->m_additionalDamping+// attribute not supported: //attribute: char[4] btRigidBodyDoubleData->m_padding+void* btRigidBodyFloatData_new(); //constructor: btRigidBodyFloatData  ( ::btRigidBodyFloatData::* )(  ) +void btRigidBodyFloatData_free(void *c); void btRigidBodyFloatData_m_additionalAngularDampingFactor_set(void *c,float a); //attribute: float btRigidBodyFloatData->m_additionalAngularDampingFactor+float btRigidBodyFloatData_m_additionalAngularDampingFactor_get(void *c); //attribute: float btRigidBodyFloatData->m_additionalAngularDampingFactor+void btRigidBodyFloatData_m_additionalAngularDampingThresholdSqr_set(void *c,float a); //attribute: float btRigidBodyFloatData->m_additionalAngularDampingThresholdSqr+float btRigidBodyFloatData_m_additionalAngularDampingThresholdSqr_get(void *c); //attribute: float btRigidBodyFloatData->m_additionalAngularDampingThresholdSqr+void btRigidBodyFloatData_m_additionalDamping_set(void *c,int a); //attribute: int btRigidBodyFloatData->m_additionalDamping+int btRigidBodyFloatData_m_additionalDamping_get(void *c); //attribute: int btRigidBodyFloatData->m_additionalDamping+void btRigidBodyFloatData_m_additionalDampingFactor_set(void *c,float a); //attribute: float btRigidBodyFloatData->m_additionalDampingFactor+float btRigidBodyFloatData_m_additionalDampingFactor_get(void *c); //attribute: float btRigidBodyFloatData->m_additionalDampingFactor+void btRigidBodyFloatData_m_additionalLinearDampingThresholdSqr_set(void *c,float a); //attribute: float btRigidBodyFloatData->m_additionalLinearDampingThresholdSqr+float btRigidBodyFloatData_m_additionalLinearDampingThresholdSqr_get(void *c); //attribute: float btRigidBodyFloatData->m_additionalLinearDampingThresholdSqr+void btRigidBodyFloatData_m_angularDamping_set(void *c,float a); //attribute: float btRigidBodyFloatData->m_angularDamping+float btRigidBodyFloatData_m_angularDamping_get(void *c); //attribute: float btRigidBodyFloatData->m_angularDamping+// attribute not supported: //attribute: ::btVector3FloatData btRigidBodyFloatData->m_angularFactor+void btRigidBodyFloatData_m_angularSleepingThreshold_set(void *c,float a); //attribute: float btRigidBodyFloatData->m_angularSleepingThreshold+float btRigidBodyFloatData_m_angularSleepingThreshold_get(void *c); //attribute: float btRigidBodyFloatData->m_angularSleepingThreshold+// attribute not supported: //attribute: ::btVector3FloatData btRigidBodyFloatData->m_angularVelocity+// attribute not supported: //attribute: ::btCollisionObjectFloatData btRigidBodyFloatData->m_collisionObjectData+// attribute not supported: //attribute: ::btVector3FloatData btRigidBodyFloatData->m_gravity+// attribute not supported: //attribute: ::btVector3FloatData btRigidBodyFloatData->m_gravity_acceleration+// attribute not supported: //attribute: ::btVector3FloatData btRigidBodyFloatData->m_invInertiaLocal+// attribute not supported: //attribute: ::btMatrix3x3FloatData btRigidBodyFloatData->m_invInertiaTensorWorld+void btRigidBodyFloatData_m_inverseMass_set(void *c,float a); //attribute: float btRigidBodyFloatData->m_inverseMass+float btRigidBodyFloatData_m_inverseMass_get(void *c); //attribute: float btRigidBodyFloatData->m_inverseMass+void btRigidBodyFloatData_m_linearDamping_set(void *c,float a); //attribute: float btRigidBodyFloatData->m_linearDamping+float btRigidBodyFloatData_m_linearDamping_get(void *c); //attribute: float btRigidBodyFloatData->m_linearDamping+// attribute not supported: //attribute: ::btVector3FloatData btRigidBodyFloatData->m_linearFactor+void btRigidBodyFloatData_m_linearSleepingThreshold_set(void *c,float a); //attribute: float btRigidBodyFloatData->m_linearSleepingThreshold+float btRigidBodyFloatData_m_linearSleepingThreshold_get(void *c); //attribute: float btRigidBodyFloatData->m_linearSleepingThreshold+// attribute not supported: //attribute: ::btVector3FloatData btRigidBodyFloatData->m_linearVelocity+// attribute not supported: //attribute: ::btVector3FloatData btRigidBodyFloatData->m_totalForce+// attribute not supported: //attribute: ::btVector3FloatData btRigidBodyFloatData->m_totalTorque+void* btSimpleDynamicsWorld_new(void* p0,void* p1,void* p2,void* p3); //constructor: btSimpleDynamicsWorld  ( ::btSimpleDynamicsWorld::* )( ::btDispatcher *,::btBroadphaseInterface *,::btConstraintSolver *,::btCollisionConfiguration * ) +void btSimpleDynamicsWorld_free(void *c); void btSimpleDynamicsWorld_setGravity(void *c,float* p0); //method: setGravity void ( ::btSimpleDynamicsWorld::* )( ::btVector3 const & ) +void btSimpleDynamicsWorld_addAction(void *c,void* p0); //method: addAction void ( ::btSimpleDynamicsWorld::* )( ::btActionInterface * ) +void btSimpleDynamicsWorld_setConstraintSolver(void *c,void* p0); //method: setConstraintSolver void ( ::btSimpleDynamicsWorld::* )( ::btConstraintSolver * ) +void* btSimpleDynamicsWorld_getConstraintSolver(void *c); //method: getConstraintSolver ::btConstraintSolver * ( ::btSimpleDynamicsWorld::* )(  ) +int btSimpleDynamicsWorld_stepSimulation(void *c,float p0,int p1,float p2); //method: stepSimulation int ( ::btSimpleDynamicsWorld::* )( ::btScalar,int,::btScalar ) +//not supported method: getWorldType ::btDynamicsWorldType ( ::btSimpleDynamicsWorld::* )(  ) const+void btSimpleDynamicsWorld_removeRigidBody(void *c,void* p0); //method: removeRigidBody void ( ::btSimpleDynamicsWorld::* )( ::btRigidBody * ) +void btSimpleDynamicsWorld_addRigidBody(void *c,void* p0); //method: addRigidBody void ( ::btSimpleDynamicsWorld::* )( ::btRigidBody * ) +void btSimpleDynamicsWorld_addRigidBody0(void *c,void* p0); //method: addRigidBody void ( ::btSimpleDynamicsWorld::* )( ::btRigidBody * ) +void btSimpleDynamicsWorld_addRigidBody1(void *c,void* p0,short int p1,short int p2); //method: addRigidBody void ( ::btSimpleDynamicsWorld::* )( ::btRigidBody *,short int,short int ) +void btSimpleDynamicsWorld_getGravity(void *c,float* ret); //method: getGravity ::btVector3 ( ::btSimpleDynamicsWorld::* )(  ) const+void btSimpleDynamicsWorld_synchronizeMotionStates(void *c); //method: synchronizeMotionStates void ( ::btSimpleDynamicsWorld::* )(  ) +void btSimpleDynamicsWorld_removeCollisionObject(void *c,void* p0); //method: removeCollisionObject void ( ::btSimpleDynamicsWorld::* )( ::btCollisionObject * ) +void btSimpleDynamicsWorld_clearForces(void *c); //method: clearForces void ( ::btSimpleDynamicsWorld::* )(  ) +void btSimpleDynamicsWorld_removeAction(void *c,void* p0); //method: removeAction void ( ::btSimpleDynamicsWorld::* )( ::btActionInterface * ) +void btSimpleDynamicsWorld_updateAabbs(void *c); //method: updateAabbs void ( ::btSimpleDynamicsWorld::* )(  ) +void btSimpleDynamicsWorld_debugDrawWorld(void *c); //method: debugDrawWorld void ( ::btSimpleDynamicsWorld::* )(  ) +void* btWheelInfo_RaycastInfo_new(); //constructor: RaycastInfo  ( ::btWheelInfo::RaycastInfo::* )(  ) +void btWheelInfo_RaycastInfo_free(void *c); void btWheelInfo_RaycastInfo_m_contactNormalWS_set(void *c,float* a); //attribute: ::btVector3 btWheelInfo_RaycastInfo->m_contactNormalWS+void btWheelInfo_RaycastInfo_m_contactNormalWS_get(void *c,float* a);+void btWheelInfo_RaycastInfo_m_contactPointWS_set(void *c,float* a); //attribute: ::btVector3 btWheelInfo_RaycastInfo->m_contactPointWS+void btWheelInfo_RaycastInfo_m_contactPointWS_get(void *c,float* a);+void btWheelInfo_RaycastInfo_m_suspensionLength_set(void *c,float a); //attribute: ::btScalar btWheelInfo_RaycastInfo->m_suspensionLength+float btWheelInfo_RaycastInfo_m_suspensionLength_get(void *c); //attribute: ::btScalar btWheelInfo_RaycastInfo->m_suspensionLength+void btWheelInfo_RaycastInfo_m_hardPointWS_set(void *c,float* a); //attribute: ::btVector3 btWheelInfo_RaycastInfo->m_hardPointWS+void btWheelInfo_RaycastInfo_m_hardPointWS_get(void *c,float* a);+void btWheelInfo_RaycastInfo_m_wheelDirectionWS_set(void *c,float* a); //attribute: ::btVector3 btWheelInfo_RaycastInfo->m_wheelDirectionWS+void btWheelInfo_RaycastInfo_m_wheelDirectionWS_get(void *c,float* a);+void btWheelInfo_RaycastInfo_m_wheelAxleWS_set(void *c,float* a); //attribute: ::btVector3 btWheelInfo_RaycastInfo->m_wheelAxleWS+void btWheelInfo_RaycastInfo_m_wheelAxleWS_get(void *c,float* a);+void btWheelInfo_RaycastInfo_m_isInContact_set(void *c,int a); //attribute: bool btWheelInfo_RaycastInfo->m_isInContact+int btWheelInfo_RaycastInfo_m_isInContact_get(void *c); //attribute: bool btWheelInfo_RaycastInfo->m_isInContact+// attribute not supported: //attribute: void * btWheelInfo_RaycastInfo->m_groundObject+void* btDefaultVehicleRaycaster_new(void* p0); //constructor: btDefaultVehicleRaycaster  ( ::btDefaultVehicleRaycaster::* )( ::btDynamicsWorld * ) +void btDefaultVehicleRaycaster_free(void *c); //not supported method: castRay void * ( ::btDefaultVehicleRaycaster::* )( ::btVector3 const &,::btVector3 const &,::btVehicleRaycaster::btVehicleRaycasterResult & ) +void* btRaycastVehicle_new(void* p0,void* p1,void* p2); //constructor: btRaycastVehicle  ( ::btRaycastVehicle::* )( ::btRaycastVehicle::btVehicleTuning const &,::btRigidBody *,::btVehicleRaycaster * ) +void btRaycastVehicle_free(void *c); void btRaycastVehicle_updateSuspension(void *c,float p0); //method: updateSuspension void ( ::btRaycastVehicle::* )( ::btScalar ) +void* btRaycastVehicle_getRigidBody(void *c); //method: getRigidBody ::btRigidBody * ( ::btRaycastVehicle::* )(  ) +void* btRaycastVehicle_getRigidBody0(void *c); //method: getRigidBody ::btRigidBody * ( ::btRaycastVehicle::* )(  ) +void* btRaycastVehicle_getRigidBody1(void *c); //method: getRigidBody ::btRigidBody const * ( ::btRaycastVehicle::* )(  ) const+int btRaycastVehicle_getUserConstraintId(void *c); //method: getUserConstraintId int ( ::btRaycastVehicle::* )(  ) const+void btRaycastVehicle_getWheelTransformWS(void *c,int p0,float* ret); //method: getWheelTransformWS ::btTransform const & ( ::btRaycastVehicle::* )( int ) const+void* btRaycastVehicle_addWheel(void *c,float* p0,float* p1,float* p2,float p3,float p4,void* p5,int p6); //method: addWheel ::btWheelInfo & ( ::btRaycastVehicle::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btScalar,::btScalar,::btRaycastVehicle::btVehicleTuning const &,bool ) +void btRaycastVehicle_updateWheelTransform(void *c,int p0,int p1); //method: updateWheelTransform void ( ::btRaycastVehicle::* )( int,bool ) +void btRaycastVehicle_setUserConstraintId(void *c,int p0); //method: setUserConstraintId void ( ::btRaycastVehicle::* )( int ) +int btRaycastVehicle_getNumWheels(void *c); //method: getNumWheels int ( ::btRaycastVehicle::* )(  ) const+float btRaycastVehicle_rayCast(void *c,void* p0); //method: rayCast ::btScalar ( ::btRaycastVehicle::* )( ::btWheelInfo & ) +int btRaycastVehicle_getRightAxis(void *c); //method: getRightAxis int ( ::btRaycastVehicle::* )(  ) const+int btRaycastVehicle_getUpAxis(void *c); //method: getUpAxis int ( ::btRaycastVehicle::* )(  ) const+void btRaycastVehicle_getForwardVector(void *c,float* ret); //method: getForwardVector ::btVector3 ( ::btRaycastVehicle::* )(  ) const+void* btRaycastVehicle_getWheelInfo(void *c,int p0); //method: getWheelInfo ::btWheelInfo const & ( ::btRaycastVehicle::* )( int ) const+void* btRaycastVehicle_getWheelInfo0(void *c,int p0); //method: getWheelInfo ::btWheelInfo const & ( ::btRaycastVehicle::* )( int ) const+void* btRaycastVehicle_getWheelInfo1(void *c,int p0); //method: getWheelInfo ::btWheelInfo & ( ::btRaycastVehicle::* )( int ) +void btRaycastVehicle_getChassisWorldTransform(void *c,float* ret); //method: getChassisWorldTransform ::btTransform const & ( ::btRaycastVehicle::* )(  ) const+void btRaycastVehicle_updateWheelTransformsWS(void *c,void* p0,int p1); //method: updateWheelTransformsWS void ( ::btRaycastVehicle::* )( ::btWheelInfo &,bool ) +void btRaycastVehicle_applyEngineForce(void *c,float p0,int p1); //method: applyEngineForce void ( ::btRaycastVehicle::* )( ::btScalar,int ) +void btRaycastVehicle_resetSuspension(void *c); //method: resetSuspension void ( ::btRaycastVehicle::* )(  ) +void btRaycastVehicle_setCoordinateSystem(void *c,int p0,int p1,int p2); //method: setCoordinateSystem void ( ::btRaycastVehicle::* )( int,int,int ) +void btRaycastVehicle_setUserConstraintType(void *c,int p0); //method: setUserConstraintType void ( ::btRaycastVehicle::* )( int ) +void btRaycastVehicle_debugDraw(void *c,void* p0); //method: debugDraw void ( ::btRaycastVehicle::* )( ::btIDebugDraw * ) +void btRaycastVehicle_updateFriction(void *c,float p0); //method: updateFriction void ( ::btRaycastVehicle::* )( ::btScalar ) +int btRaycastVehicle_getForwardAxis(void *c); //method: getForwardAxis int ( ::btRaycastVehicle::* )(  ) const+float btRaycastVehicle_getSteeringValue(void *c,int p0); //method: getSteeringValue ::btScalar ( ::btRaycastVehicle::* )( int ) const+int btRaycastVehicle_getUserConstraintType(void *c); //method: getUserConstraintType int ( ::btRaycastVehicle::* )(  ) const+void btRaycastVehicle_setPitchControl(void *c,float p0); //method: setPitchControl void ( ::btRaycastVehicle::* )( ::btScalar ) +float btRaycastVehicle_getCurrentSpeedKmHour(void *c); //method: getCurrentSpeedKmHour ::btScalar ( ::btRaycastVehicle::* )(  ) const+void btRaycastVehicle_setBrake(void *c,float p0,int p1); //method: setBrake void ( ::btRaycastVehicle::* )( ::btScalar,int ) +void btRaycastVehicle_setSteeringValue(void *c,float p0,int p1); //method: setSteeringValue void ( ::btRaycastVehicle::* )( ::btScalar,int ) +void btRaycastVehicle_updateVehicle(void *c,float p0); //method: updateVehicle void ( ::btRaycastVehicle::* )( ::btScalar ) +void btRaycastVehicle_updateAction(void *c,void* p0,float p1); //method: updateAction void ( ::btRaycastVehicle::* )( ::btCollisionWorld *,::btScalar ) +// attribute not supported: //attribute: ::btAlignedObjectArray<btWheelInfo> btRaycastVehicle->m_wheelInfo+//not supported method: castRay void * ( ::btVehicleRaycaster::* )( ::btVector3 const &,::btVector3 const &,::btVehicleRaycaster::btVehicleRaycasterResult & ) +void* btVehicleRaycaster_btVehicleRaycasterResult_new(); //constructor: btVehicleRaycasterResult  ( ::btVehicleRaycaster::btVehicleRaycasterResult::* )(  ) +void btVehicleRaycaster_btVehicleRaycasterResult_free(void *c); void btVehicleRaycaster_btVehicleRaycasterResult_m_distFraction_set(void *c,float a); //attribute: ::btScalar btVehicleRaycaster_btVehicleRaycasterResult->m_distFraction+float btVehicleRaycaster_btVehicleRaycasterResult_m_distFraction_get(void *c); //attribute: ::btScalar btVehicleRaycaster_btVehicleRaycasterResult->m_distFraction+void btVehicleRaycaster_btVehicleRaycasterResult_m_hitNormalInWorld_set(void *c,float* a); //attribute: ::btVector3 btVehicleRaycaster_btVehicleRaycasterResult->m_hitNormalInWorld+void btVehicleRaycaster_btVehicleRaycasterResult_m_hitNormalInWorld_get(void *c,float* a);+void btVehicleRaycaster_btVehicleRaycasterResult_m_hitPointInWorld_set(void *c,float* a); //attribute: ::btVector3 btVehicleRaycaster_btVehicleRaycasterResult->m_hitPointInWorld+void btVehicleRaycaster_btVehicleRaycasterResult_m_hitPointInWorld_get(void *c,float* a);+void* btRaycastVehicle_btVehicleTuning_new(); //constructor: btVehicleTuning  ( ::btRaycastVehicle::btVehicleTuning::* )(  ) +void btRaycastVehicle_btVehicleTuning_free(void *c); void btRaycastVehicle_btVehicleTuning_m_frictionSlip_set(void *c,float a); //attribute: ::btScalar btRaycastVehicle_btVehicleTuning->m_frictionSlip+float btRaycastVehicle_btVehicleTuning_m_frictionSlip_get(void *c); //attribute: ::btScalar btRaycastVehicle_btVehicleTuning->m_frictionSlip+void btRaycastVehicle_btVehicleTuning_m_maxSuspensionForce_set(void *c,float a); //attribute: ::btScalar btRaycastVehicle_btVehicleTuning->m_maxSuspensionForce+float btRaycastVehicle_btVehicleTuning_m_maxSuspensionForce_get(void *c); //attribute: ::btScalar btRaycastVehicle_btVehicleTuning->m_maxSuspensionForce+void btRaycastVehicle_btVehicleTuning_m_maxSuspensionTravelCm_set(void *c,float a); //attribute: ::btScalar btRaycastVehicle_btVehicleTuning->m_maxSuspensionTravelCm+float btRaycastVehicle_btVehicleTuning_m_maxSuspensionTravelCm_get(void *c); //attribute: ::btScalar btRaycastVehicle_btVehicleTuning->m_maxSuspensionTravelCm+void btRaycastVehicle_btVehicleTuning_m_suspensionCompression_set(void *c,float a); //attribute: ::btScalar btRaycastVehicle_btVehicleTuning->m_suspensionCompression+float btRaycastVehicle_btVehicleTuning_m_suspensionCompression_get(void *c); //attribute: ::btScalar btRaycastVehicle_btVehicleTuning->m_suspensionCompression+void btRaycastVehicle_btVehicleTuning_m_suspensionDamping_set(void *c,float a); //attribute: ::btScalar btRaycastVehicle_btVehicleTuning->m_suspensionDamping+float btRaycastVehicle_btVehicleTuning_m_suspensionDamping_get(void *c); //attribute: ::btScalar btRaycastVehicle_btVehicleTuning->m_suspensionDamping+void btRaycastVehicle_btVehicleTuning_m_suspensionStiffness_set(void *c,float a); //attribute: ::btScalar btRaycastVehicle_btVehicleTuning->m_suspensionStiffness+float btRaycastVehicle_btVehicleTuning_m_suspensionStiffness_get(void *c); //attribute: ::btScalar btRaycastVehicle_btVehicleTuning->m_suspensionStiffness+void* btWheelInfo_new(void* p0); //constructor: btWheelInfo  ( ::btWheelInfo::* )( ::btWheelInfoConstructionInfo & ) +void btWheelInfo_free(void *c); float btWheelInfo_getSuspensionRestLength(void *c); //method: getSuspensionRestLength ::btScalar ( ::btWheelInfo::* )(  ) const+void btWheelInfo_updateWheel(void *c,void* p0,void* p1); //method: updateWheel void ( ::btWheelInfo::* )( ::btRigidBody const &,::btWheelInfo::RaycastInfo & ) +void btWheelInfo_m_bIsFrontWheel_set(void *c,int a); //attribute: bool btWheelInfo->m_bIsFrontWheel+int btWheelInfo_m_bIsFrontWheel_get(void *c); //attribute: bool btWheelInfo->m_bIsFrontWheel+void btWheelInfo_m_brake_set(void *c,float a); //attribute: ::btScalar btWheelInfo->m_brake+float btWheelInfo_m_brake_get(void *c); //attribute: ::btScalar btWheelInfo->m_brake+void btWheelInfo_m_chassisConnectionPointCS_set(void *c,float* a); //attribute: ::btVector3 btWheelInfo->m_chassisConnectionPointCS+void btWheelInfo_m_chassisConnectionPointCS_get(void *c,float* a);+// attribute not supported: //attribute: void * btWheelInfo->m_clientInfo+void btWheelInfo_m_clippedInvContactDotSuspension_set(void *c,float a); //attribute: ::btScalar btWheelInfo->m_clippedInvContactDotSuspension+float btWheelInfo_m_clippedInvContactDotSuspension_get(void *c); //attribute: ::btScalar btWheelInfo->m_clippedInvContactDotSuspension+void btWheelInfo_m_deltaRotation_set(void *c,float a); //attribute: ::btScalar btWheelInfo->m_deltaRotation+float btWheelInfo_m_deltaRotation_get(void *c); //attribute: ::btScalar btWheelInfo->m_deltaRotation+void btWheelInfo_m_engineForce_set(void *c,float a); //attribute: ::btScalar btWheelInfo->m_engineForce+float btWheelInfo_m_engineForce_get(void *c); //attribute: ::btScalar btWheelInfo->m_engineForce+void btWheelInfo_m_frictionSlip_set(void *c,float a); //attribute: ::btScalar btWheelInfo->m_frictionSlip+float btWheelInfo_m_frictionSlip_get(void *c); //attribute: ::btScalar btWheelInfo->m_frictionSlip+void btWheelInfo_m_maxSuspensionForce_set(void *c,float a); //attribute: ::btScalar btWheelInfo->m_maxSuspensionForce+float btWheelInfo_m_maxSuspensionForce_get(void *c); //attribute: ::btScalar btWheelInfo->m_maxSuspensionForce+void btWheelInfo_m_maxSuspensionTravelCm_set(void *c,float a); //attribute: ::btScalar btWheelInfo->m_maxSuspensionTravelCm+float btWheelInfo_m_maxSuspensionTravelCm_get(void *c); //attribute: ::btScalar btWheelInfo->m_maxSuspensionTravelCm+// attribute not supported: //attribute: ::btWheelInfo::RaycastInfo btWheelInfo->m_raycastInfo+void btWheelInfo_m_rollInfluence_set(void *c,float a); //attribute: ::btScalar btWheelInfo->m_rollInfluence+float btWheelInfo_m_rollInfluence_get(void *c); //attribute: ::btScalar btWheelInfo->m_rollInfluence+void btWheelInfo_m_rotation_set(void *c,float a); //attribute: ::btScalar btWheelInfo->m_rotation+float btWheelInfo_m_rotation_get(void *c); //attribute: ::btScalar btWheelInfo->m_rotation+void btWheelInfo_m_skidInfo_set(void *c,float a); //attribute: ::btScalar btWheelInfo->m_skidInfo+float btWheelInfo_m_skidInfo_get(void *c); //attribute: ::btScalar btWheelInfo->m_skidInfo+void btWheelInfo_m_steering_set(void *c,float a); //attribute: ::btScalar btWheelInfo->m_steering+float btWheelInfo_m_steering_get(void *c); //attribute: ::btScalar btWheelInfo->m_steering+void btWheelInfo_m_suspensionRelativeVelocity_set(void *c,float a); //attribute: ::btScalar btWheelInfo->m_suspensionRelativeVelocity+float btWheelInfo_m_suspensionRelativeVelocity_get(void *c); //attribute: ::btScalar btWheelInfo->m_suspensionRelativeVelocity+void btWheelInfo_m_suspensionRestLength1_set(void *c,float a); //attribute: ::btScalar btWheelInfo->m_suspensionRestLength1+float btWheelInfo_m_suspensionRestLength1_get(void *c); //attribute: ::btScalar btWheelInfo->m_suspensionRestLength1+void btWheelInfo_m_suspensionStiffness_set(void *c,float a); //attribute: ::btScalar btWheelInfo->m_suspensionStiffness+float btWheelInfo_m_suspensionStiffness_get(void *c); //attribute: ::btScalar btWheelInfo->m_suspensionStiffness+void btWheelInfo_m_wheelAxleCS_set(void *c,float* a); //attribute: ::btVector3 btWheelInfo->m_wheelAxleCS+void btWheelInfo_m_wheelAxleCS_get(void *c,float* a);+void btWheelInfo_m_wheelDirectionCS_set(void *c,float* a); //attribute: ::btVector3 btWheelInfo->m_wheelDirectionCS+void btWheelInfo_m_wheelDirectionCS_get(void *c,float* a);+void btWheelInfo_m_wheelsDampingCompression_set(void *c,float a); //attribute: ::btScalar btWheelInfo->m_wheelsDampingCompression+float btWheelInfo_m_wheelsDampingCompression_get(void *c); //attribute: ::btScalar btWheelInfo->m_wheelsDampingCompression+void btWheelInfo_m_wheelsDampingRelaxation_set(void *c,float a); //attribute: ::btScalar btWheelInfo->m_wheelsDampingRelaxation+float btWheelInfo_m_wheelsDampingRelaxation_get(void *c); //attribute: ::btScalar btWheelInfo->m_wheelsDampingRelaxation+void btWheelInfo_m_wheelsRadius_set(void *c,float a); //attribute: ::btScalar btWheelInfo->m_wheelsRadius+float btWheelInfo_m_wheelsRadius_get(void *c); //attribute: ::btScalar btWheelInfo->m_wheelsRadius+void btWheelInfo_m_wheelsSuspensionForce_set(void *c,float a); //attribute: ::btScalar btWheelInfo->m_wheelsSuspensionForce+float btWheelInfo_m_wheelsSuspensionForce_get(void *c); //attribute: ::btScalar btWheelInfo->m_wheelsSuspensionForce+void btWheelInfo_m_worldTransform_set(void *c,float* a); //attribute: ::btTransform btWheelInfo->m_worldTransform+void btWheelInfo_m_worldTransform_get(void *c,float* a);+void* btWheelInfoConstructionInfo_new(); //constructor: btWheelInfoConstructionInfo  ( ::btWheelInfoConstructionInfo::* )(  ) +void btWheelInfoConstructionInfo_free(void *c); void btWheelInfoConstructionInfo_m_bIsFrontWheel_set(void *c,int a); //attribute: bool btWheelInfoConstructionInfo->m_bIsFrontWheel+int btWheelInfoConstructionInfo_m_bIsFrontWheel_get(void *c); //attribute: bool btWheelInfoConstructionInfo->m_bIsFrontWheel+void btWheelInfoConstructionInfo_m_chassisConnectionCS_set(void *c,float* a); //attribute: ::btVector3 btWheelInfoConstructionInfo->m_chassisConnectionCS+void btWheelInfoConstructionInfo_m_chassisConnectionCS_get(void *c,float* a);+void btWheelInfoConstructionInfo_m_frictionSlip_set(void *c,float a); //attribute: ::btScalar btWheelInfoConstructionInfo->m_frictionSlip+float btWheelInfoConstructionInfo_m_frictionSlip_get(void *c); //attribute: ::btScalar btWheelInfoConstructionInfo->m_frictionSlip+void btWheelInfoConstructionInfo_m_maxSuspensionForce_set(void *c,float a); //attribute: ::btScalar btWheelInfoConstructionInfo->m_maxSuspensionForce+float btWheelInfoConstructionInfo_m_maxSuspensionForce_get(void *c); //attribute: ::btScalar btWheelInfoConstructionInfo->m_maxSuspensionForce+void btWheelInfoConstructionInfo_m_maxSuspensionTravelCm_set(void *c,float a); //attribute: ::btScalar btWheelInfoConstructionInfo->m_maxSuspensionTravelCm+float btWheelInfoConstructionInfo_m_maxSuspensionTravelCm_get(void *c); //attribute: ::btScalar btWheelInfoConstructionInfo->m_maxSuspensionTravelCm+void btWheelInfoConstructionInfo_m_suspensionRestLength_set(void *c,float a); //attribute: ::btScalar btWheelInfoConstructionInfo->m_suspensionRestLength+float btWheelInfoConstructionInfo_m_suspensionRestLength_get(void *c); //attribute: ::btScalar btWheelInfoConstructionInfo->m_suspensionRestLength+void btWheelInfoConstructionInfo_m_suspensionStiffness_set(void *c,float a); //attribute: ::btScalar btWheelInfoConstructionInfo->m_suspensionStiffness+float btWheelInfoConstructionInfo_m_suspensionStiffness_get(void *c); //attribute: ::btScalar btWheelInfoConstructionInfo->m_suspensionStiffness+void btWheelInfoConstructionInfo_m_wheelAxleCS_set(void *c,float* a); //attribute: ::btVector3 btWheelInfoConstructionInfo->m_wheelAxleCS+void btWheelInfoConstructionInfo_m_wheelAxleCS_get(void *c,float* a);+void btWheelInfoConstructionInfo_m_wheelDirectionCS_set(void *c,float* a); //attribute: ::btVector3 btWheelInfoConstructionInfo->m_wheelDirectionCS+void btWheelInfoConstructionInfo_m_wheelDirectionCS_get(void *c,float* a);+void btWheelInfoConstructionInfo_m_wheelRadius_set(void *c,float a); //attribute: ::btScalar btWheelInfoConstructionInfo->m_wheelRadius+float btWheelInfoConstructionInfo_m_wheelRadius_get(void *c); //attribute: ::btScalar btWheelInfoConstructionInfo->m_wheelRadius+void btWheelInfoConstructionInfo_m_wheelsDampingCompression_set(void *c,float a); //attribute: ::btScalar btWheelInfoConstructionInfo->m_wheelsDampingCompression+float btWheelInfoConstructionInfo_m_wheelsDampingCompression_get(void *c); //attribute: ::btScalar btWheelInfoConstructionInfo->m_wheelsDampingCompression+void btWheelInfoConstructionInfo_m_wheelsDampingRelaxation_set(void *c,float a); //attribute: ::btScalar btWheelInfoConstructionInfo->m_wheelsDampingRelaxation+float btWheelInfoConstructionInfo_m_wheelsDampingRelaxation_get(void *c); //attribute: ::btScalar btWheelInfoConstructionInfo->m_wheelsDampingRelaxation+void* btBU_Simplex1to4_new0(); //constructor: btBU_Simplex1to4  ( ::btBU_Simplex1to4::* )(  ) +void* btBU_Simplex1to4_new1(float* p0); //constructor: btBU_Simplex1to4  ( ::btBU_Simplex1to4::* )( ::btVector3 const & ) +void* btBU_Simplex1to4_new2(float* p0,float* p1); //constructor: btBU_Simplex1to4  ( ::btBU_Simplex1to4::* )( ::btVector3 const &,::btVector3 const & ) +void* btBU_Simplex1to4_new3(float* p0,float* p1,float* p2); //constructor: btBU_Simplex1to4  ( ::btBU_Simplex1to4::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void* btBU_Simplex1to4_new4(float* p0,float* p1,float* p2,float* p3); //constructor: btBU_Simplex1to4  ( ::btBU_Simplex1to4::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void btBU_Simplex1to4_free(void *c); void btBU_Simplex1to4_reset(void *c); //method: reset void ( ::btBU_Simplex1to4::* )(  ) +int btBU_Simplex1to4_getNumPlanes(void *c); //method: getNumPlanes int ( ::btBU_Simplex1to4::* )(  ) const+int btBU_Simplex1to4_getIndex(void *c,int p0); //method: getIndex int ( ::btBU_Simplex1to4::* )( int ) const+int btBU_Simplex1to4_getNumEdges(void *c); //method: getNumEdges int ( ::btBU_Simplex1to4::* )(  ) const+char const * btBU_Simplex1to4_getName(void *c); //method: getName char const * ( ::btBU_Simplex1to4::* )(  ) const+void btBU_Simplex1to4_getVertex(void *c,int p0,float* p1); //method: getVertex void ( ::btBU_Simplex1to4::* )( int,::btVector3 & ) const+void btBU_Simplex1to4_getEdge(void *c,int p0,float* p1,float* p2); //method: getEdge void ( ::btBU_Simplex1to4::* )( int,::btVector3 &,::btVector3 & ) const+void btBU_Simplex1to4_addVertex(void *c,float* p0); //method: addVertex void ( ::btBU_Simplex1to4::* )( ::btVector3 const & ) +int btBU_Simplex1to4_isInside(void *c,float* p0,float p1); //method: isInside bool ( ::btBU_Simplex1to4::* )( ::btVector3 const &,::btScalar ) const+void btBU_Simplex1to4_getPlane(void *c,float* p0,float* p1,int p2); //method: getPlane void ( ::btBU_Simplex1to4::* )( ::btVector3 &,::btVector3 &,int ) const+void btBU_Simplex1to4_getAabb(void *c,float* p0,float* p1,float* p2); //method: getAabb void ( ::btBU_Simplex1to4::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+int btBU_Simplex1to4_getNumVertices(void *c); //method: getNumVertices int ( ::btBU_Simplex1to4::* )(  ) const+void* btBoxShape_new(float* p0); //constructor: btBoxShape  ( ::btBoxShape::* )( ::btVector3 const & ) +void btBoxShape_free(void *c); void btBoxShape_calculateLocalInertia(void *c,float p0,float* p1); //method: calculateLocalInertia void ( ::btBoxShape::* )( ::btScalar,::btVector3 & ) const+int btBoxShape_getNumPlanes(void *c); //method: getNumPlanes int ( ::btBoxShape::* )(  ) const+void btBoxShape_localGetSupportingVertex(void *c,float* p0,float* ret); //method: localGetSupportingVertex ::btVector3 ( ::btBoxShape::* )( ::btVector3 const & ) const+//not supported method: batchedUnitVectorGetSupportingVertexWithoutMargin void ( ::btBoxShape::* )( ::btVector3 const *,::btVector3 *,int ) const+void btBoxShape_setLocalScaling(void *c,float* p0); //method: setLocalScaling void ( ::btBoxShape::* )( ::btVector3 const & ) +void btBoxShape_getPlaneEquation(void *c,float* p0,int p1); //method: getPlaneEquation void ( ::btBoxShape::* )( ::btVector4 &,int ) const+void btBoxShape_getPreferredPenetrationDirection(void *c,int p0,float* p1); //method: getPreferredPenetrationDirection void ( ::btBoxShape::* )( int,::btVector3 & ) const+int btBoxShape_getNumEdges(void *c); //method: getNumEdges int ( ::btBoxShape::* )(  ) const+char const * btBoxShape_getName(void *c); //method: getName char const * ( ::btBoxShape::* )(  ) const+void btBoxShape_getVertex(void *c,int p0,float* p1); //method: getVertex void ( ::btBoxShape::* )( int,::btVector3 & ) const+void btBoxShape_getEdge(void *c,int p0,float* p1,float* p2); //method: getEdge void ( ::btBoxShape::* )( int,::btVector3 &,::btVector3 & ) const+int btBoxShape_isInside(void *c,float* p0,float p1); //method: isInside bool ( ::btBoxShape::* )( ::btVector3 const &,::btScalar ) const+void btBoxShape_getPlane(void *c,float* p0,float* p1,int p2); //method: getPlane void ( ::btBoxShape::* )( ::btVector3 &,::btVector3 &,int ) const+void btBoxShape_getHalfExtentsWithoutMargin(void *c,float* ret); //method: getHalfExtentsWithoutMargin ::btVector3 const & ( ::btBoxShape::* )(  ) const+int btBoxShape_getNumPreferredPenetrationDirections(void *c); //method: getNumPreferredPenetrationDirections int ( ::btBoxShape::* )(  ) const+void btBoxShape_getAabb(void *c,float* p0,float* p1,float* p2); //method: getAabb void ( ::btBoxShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btBoxShape_setMargin(void *c,float p0); //method: setMargin void ( ::btBoxShape::* )( ::btScalar ) +int btBoxShape_getNumVertices(void *c); //method: getNumVertices int ( ::btBoxShape::* )(  ) const+void btBoxShape_getHalfExtentsWithMargin(void *c,float* ret); //method: getHalfExtentsWithMargin ::btVector3 ( ::btBoxShape::* )(  ) const+void btBoxShape_localGetSupportingVertexWithoutMargin(void *c,float* p0,float* ret); //method: localGetSupportingVertexWithoutMargin ::btVector3 ( ::btBoxShape::* )( ::btVector3 const & ) const+void* btBvhTriangleMeshShape_new0(void* p0,int p1,int p2); //constructor: btBvhTriangleMeshShape  ( ::btBvhTriangleMeshShape::* )( ::btStridingMeshInterface *,bool,bool ) +void* btBvhTriangleMeshShape_new1(void* p0,int p1,float* p2,float* p3,int p4); //constructor: btBvhTriangleMeshShape  ( ::btBvhTriangleMeshShape::* )( ::btStridingMeshInterface *,bool,::btVector3 const &,::btVector3 const &,bool ) +void btBvhTriangleMeshShape_free(void *c); int btBvhTriangleMeshShape_calculateSerializeBufferSize(void *c); //method: calculateSerializeBufferSize int ( ::btBvhTriangleMeshShape::* )(  ) const+void btBvhTriangleMeshShape_buildOptimizedBvh(void *c); //method: buildOptimizedBvh void ( ::btBvhTriangleMeshShape::* )(  ) +void btBvhTriangleMeshShape_setLocalScaling(void *c,float* p0); //method: setLocalScaling void ( ::btBvhTriangleMeshShape::* )( ::btVector3 const & ) +void btBvhTriangleMeshShape_performRaycast(void *c,void* p0,float* p1,float* p2); //method: performRaycast void ( ::btBvhTriangleMeshShape::* )( ::btTriangleCallback *,::btVector3 const &,::btVector3 const & ) +void btBvhTriangleMeshShape_setTriangleInfoMap(void *c,void* p0); //method: setTriangleInfoMap void ( ::btBvhTriangleMeshShape::* )( ::btTriangleInfoMap * ) +int btBvhTriangleMeshShape_usesQuantizedAabbCompression(void *c); //method: usesQuantizedAabbCompression bool ( ::btBvhTriangleMeshShape::* )(  ) const+char const * btBvhTriangleMeshShape_getName(void *c); //method: getName char const * ( ::btBvhTriangleMeshShape::* )(  ) const+//not supported method: serialize char const * ( ::btBvhTriangleMeshShape::* )( void *,::btSerializer * ) const+void* btBvhTriangleMeshShape_getTriangleInfoMap(void *c); //method: getTriangleInfoMap ::btTriangleInfoMap const * ( ::btBvhTriangleMeshShape::* )(  ) const+void* btBvhTriangleMeshShape_getTriangleInfoMap0(void *c); //method: getTriangleInfoMap ::btTriangleInfoMap const * ( ::btBvhTriangleMeshShape::* )(  ) const+void* btBvhTriangleMeshShape_getTriangleInfoMap1(void *c); //method: getTriangleInfoMap ::btTriangleInfoMap * ( ::btBvhTriangleMeshShape::* )(  ) +void btBvhTriangleMeshShape_serializeSingleTriangleInfoMap(void *c,void* p0); //method: serializeSingleTriangleInfoMap void ( ::btBvhTriangleMeshShape::* )( ::btSerializer * ) const+int btBvhTriangleMeshShape_getOwnsBvh(void *c); //method: getOwnsBvh bool ( ::btBvhTriangleMeshShape::* )(  ) const+void btBvhTriangleMeshShape_partialRefitTree(void *c,float* p0,float* p1); //method: partialRefitTree void ( ::btBvhTriangleMeshShape::* )( ::btVector3 const &,::btVector3 const & ) +void* btBvhTriangleMeshShape_getOptimizedBvh(void *c); //method: getOptimizedBvh ::btOptimizedBvh * ( ::btBvhTriangleMeshShape::* )(  ) +void btBvhTriangleMeshShape_processAllTriangles(void *c,void* p0,float* p1,float* p2); //method: processAllTriangles void ( ::btBvhTriangleMeshShape::* )( ::btTriangleCallback *,::btVector3 const &,::btVector3 const & ) const+void btBvhTriangleMeshShape_refitTree(void *c,float* p0,float* p1); //method: refitTree void ( ::btBvhTriangleMeshShape::* )( ::btVector3 const &,::btVector3 const & ) +void btBvhTriangleMeshShape_performConvexcast(void *c,void* p0,float* p1,float* p2,float* p3,float* p4); //method: performConvexcast void ( ::btBvhTriangleMeshShape::* )( ::btTriangleCallback *,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void btBvhTriangleMeshShape_serializeSingleBvh(void *c,void* p0); //method: serializeSingleBvh void ( ::btBvhTriangleMeshShape::* )( ::btSerializer * ) const+void btBvhTriangleMeshShape_setOptimizedBvh(void *c,void* p0,float* p1); //method: setOptimizedBvh void ( ::btBvhTriangleMeshShape::* )( ::btOptimizedBvh *,::btVector3 const & ) +void* btCapsuleShape_new(float p0,float p1); //constructor: btCapsuleShape  ( ::btCapsuleShape::* )( ::btScalar,::btScalar ) +void btCapsuleShape_free(void *c); void btCapsuleShape_calculateLocalInertia(void *c,float p0,float* p1); //method: calculateLocalInertia void ( ::btCapsuleShape::* )( ::btScalar,::btVector3 & ) const+int btCapsuleShape_calculateSerializeBufferSize(void *c); //method: calculateSerializeBufferSize int ( ::btCapsuleShape::* )(  ) const+//not supported method: batchedUnitVectorGetSupportingVertexWithoutMargin void ( ::btCapsuleShape::* )( ::btVector3 const *,::btVector3 *,int ) const+void btCapsuleShape_setLocalScaling(void *c,float* p0); //method: setLocalScaling void ( ::btCapsuleShape::* )( ::btVector3 const & ) +int btCapsuleShape_getUpAxis(void *c); //method: getUpAxis int ( ::btCapsuleShape::* )(  ) const+char const * btCapsuleShape_getName(void *c); //method: getName char const * ( ::btCapsuleShape::* )(  ) const+float btCapsuleShape_getHalfHeight(void *c); //method: getHalfHeight ::btScalar ( ::btCapsuleShape::* )(  ) const+void btCapsuleShape_setMargin(void *c,float p0); //method: setMargin void ( ::btCapsuleShape::* )( ::btScalar ) +void btCapsuleShape_getAabb(void *c,float* p0,float* p1,float* p2); //method: getAabb void ( ::btCapsuleShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+//not supported method: serialize char const * ( ::btCapsuleShape::* )( void *,::btSerializer * ) const+void btCapsuleShape_localGetSupportingVertexWithoutMargin(void *c,float* p0,float* ret); //method: localGetSupportingVertexWithoutMargin ::btVector3 ( ::btCapsuleShape::* )( ::btVector3 const & ) const+float btCapsuleShape_getRadius(void *c); //method: getRadius ::btScalar ( ::btCapsuleShape::* )(  ) const+void* btCapsuleShapeData_new(); //constructor: btCapsuleShapeData  ( ::btCapsuleShapeData::* )(  ) +void btCapsuleShapeData_free(void *c); // attribute not supported: //attribute: ::btConvexInternalShapeData btCapsuleShapeData->m_convexInternalShapeData+void btCapsuleShapeData_m_upAxis_set(void *c,int a); //attribute: int btCapsuleShapeData->m_upAxis+int btCapsuleShapeData_m_upAxis_get(void *c); //attribute: int btCapsuleShapeData->m_upAxis+// attribute not supported: //attribute: char[4] btCapsuleShapeData->m_padding+void* btCapsuleShapeX_new(float p0,float p1); //constructor: btCapsuleShapeX  ( ::btCapsuleShapeX::* )( ::btScalar,::btScalar ) +void btCapsuleShapeX_free(void *c); char const * btCapsuleShapeX_getName(void *c); //method: getName char const * ( ::btCapsuleShapeX::* )(  ) const+void* btCapsuleShapeZ_new(float p0,float p1); //constructor: btCapsuleShapeZ  ( ::btCapsuleShapeZ::* )( ::btScalar,::btScalar ) +void btCapsuleShapeZ_free(void *c); char const * btCapsuleShapeZ_getName(void *c); //method: getName char const * ( ::btCapsuleShapeZ::* )(  ) const+void* btCharIndexTripletData_new(); //constructor: btCharIndexTripletData  ( ::btCharIndexTripletData::* )(  ) +void btCharIndexTripletData_free(void *c); // attribute not supported: //attribute: unsigned char[3] btCharIndexTripletData->m_values+void btCharIndexTripletData_m_pad_set(void *c,char a); //attribute: char btCharIndexTripletData->m_pad+char btCharIndexTripletData_m_pad_get(void *c); //attribute: char btCharIndexTripletData->m_pad+void btCollisionShape_calculateLocalInertia(void *c,float p0,float* p1); //method: calculateLocalInertia void ( ::btCollisionShape::* )( ::btScalar,::btVector3 & ) const+//not supported method: setUserPointer void ( ::btCollisionShape::* )( void * ) +//not supported method: serialize char const * ( ::btCollisionShape::* )( void *,::btSerializer * ) const+void btCollisionShape_getLocalScaling(void *c,float* ret); //method: getLocalScaling ::btVector3 const & ( ::btCollisionShape::* )(  ) const+int btCollisionShape_calculateSerializeBufferSize(void *c); //method: calculateSerializeBufferSize int ( ::btCollisionShape::* )(  ) const+char const * btCollisionShape_getName(void *c); //method: getName char const * ( ::btCollisionShape::* )(  ) const+int btCollisionShape_isCompound(void *c); //method: isCompound bool ( ::btCollisionShape::* )(  ) const+int btCollisionShape_isPolyhedral(void *c); //method: isPolyhedral bool ( ::btCollisionShape::* )(  ) const+void btCollisionShape_setLocalScaling(void *c,float* p0); //method: setLocalScaling void ( ::btCollisionShape::* )( ::btVector3 const & ) +void btCollisionShape_getAabb(void *c,float* p0,float* p1,float* p2); //method: getAabb void ( ::btCollisionShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+float btCollisionShape_getContactBreakingThreshold(void *c,float p0); //method: getContactBreakingThreshold ::btScalar ( ::btCollisionShape::* )( ::btScalar ) const+int btCollisionShape_isConvex(void *c); //method: isConvex bool ( ::btCollisionShape::* )(  ) const+int btCollisionShape_isInfinite(void *c); //method: isInfinite bool ( ::btCollisionShape::* )(  ) const+//not supported method: getUserPointer void * ( ::btCollisionShape::* )(  ) const+int btCollisionShape_isNonMoving(void *c); //method: isNonMoving bool ( ::btCollisionShape::* )(  ) const+float btCollisionShape_getMargin(void *c); //method: getMargin ::btScalar ( ::btCollisionShape::* )(  ) const+void btCollisionShape_setMargin(void *c,float p0); //method: setMargin void ( ::btCollisionShape::* )( ::btScalar ) +int btCollisionShape_isConvex2d(void *c); //method: isConvex2d bool ( ::btCollisionShape::* )(  ) const+int btCollisionShape_isSoftBody(void *c); //method: isSoftBody bool ( ::btCollisionShape::* )(  ) const+void btCollisionShape_calculateTemporalAabb(void *c,float* p0,float* p1,float* p2,float p3,float* p4,float* p5); //method: calculateTemporalAabb void ( ::btCollisionShape::* )( ::btTransform const &,::btVector3 const &,::btVector3 const &,::btScalar,::btVector3 &,::btVector3 & ) const+int btCollisionShape_isConcave(void *c); //method: isConcave bool ( ::btCollisionShape::* )(  ) const+float btCollisionShape_getAngularMotionDisc(void *c); //method: getAngularMotionDisc ::btScalar ( ::btCollisionShape::* )(  ) const+void btCollisionShape_serializeSingleShape(void *c,void* p0); //method: serializeSingleShape void ( ::btCollisionShape::* )( ::btSerializer * ) const+//not supported method: getBoundingSphere void ( ::btCollisionShape::* )( ::btVector3 &,::btScalar & ) const+int btCollisionShape_getShapeType(void *c); //method: getShapeType int ( ::btCollisionShape::* )(  ) const+void* btCollisionShapeData_new(); //constructor: btCollisionShapeData  ( ::btCollisionShapeData::* )(  ) +void btCollisionShapeData_free(void *c); void btCollisionShapeData_m_name_set(void *c,char * a); //attribute: char * btCollisionShapeData->m_name+char * btCollisionShapeData_m_name_get(void *c); //attribute: char * btCollisionShapeData->m_name+void btCollisionShapeData_m_shapeType_set(void *c,int a); //attribute: int btCollisionShapeData->m_shapeType+int btCollisionShapeData_m_shapeType_get(void *c); //attribute: int btCollisionShapeData->m_shapeType+// attribute not supported: //attribute: char[4] btCollisionShapeData->m_padding+void* btCompoundShape_new(int p0); //constructor: btCompoundShape  ( ::btCompoundShape::* )( bool ) +void btCompoundShape_free(void *c); void btCompoundShape_calculateLocalInertia(void *c,float p0,float* p1); //method: calculateLocalInertia void ( ::btCompoundShape::* )( ::btScalar,::btVector3 & ) const+void* btCompoundShape_getDynamicAabbTree(void *c); //method: getDynamicAabbTree ::btDbvt const * ( ::btCompoundShape::* )(  ) const+void* btCompoundShape_getDynamicAabbTree0(void *c); //method: getDynamicAabbTree ::btDbvt const * ( ::btCompoundShape::* )(  ) const+void* btCompoundShape_getDynamicAabbTree1(void *c); //method: getDynamicAabbTree ::btDbvt * ( ::btCompoundShape::* )(  ) +int btCompoundShape_getUpdateRevision(void *c); //method: getUpdateRevision int ( ::btCompoundShape::* )(  ) const+//not supported method: serialize char const * ( ::btCompoundShape::* )( void *,::btSerializer * ) const+void btCompoundShape_getLocalScaling(void *c,float* ret); //method: getLocalScaling ::btVector3 const & ( ::btCompoundShape::* )(  ) const+void btCompoundShape_createAabbTreeFromChildren(void *c); //method: createAabbTreeFromChildren void ( ::btCompoundShape::* )(  ) +int btCompoundShape_calculateSerializeBufferSize(void *c); //method: calculateSerializeBufferSize int ( ::btCompoundShape::* )(  ) const+char const * btCompoundShape_getName(void *c); //method: getName char const * ( ::btCompoundShape::* )(  ) const+void btCompoundShape_setLocalScaling(void *c,float* p0); //method: setLocalScaling void ( ::btCompoundShape::* )( ::btVector3 const & ) +void btCompoundShape_getAabb(void *c,float* p0,float* p1,float* p2); //method: getAabb void ( ::btCompoundShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void* btCompoundShape_getChildShape(void *c,int p0); //method: getChildShape ::btCollisionShape * ( ::btCompoundShape::* )( int ) +void* btCompoundShape_getChildShape0(void *c,int p0); //method: getChildShape ::btCollisionShape * ( ::btCompoundShape::* )( int ) +void* btCompoundShape_getChildShape1(void *c,int p0); //method: getChildShape ::btCollisionShape const * ( ::btCompoundShape::* )( int ) const+void btCompoundShape_addChildShape(void *c,float* p0,void* p1); //method: addChildShape void ( ::btCompoundShape::* )( ::btTransform const &,::btCollisionShape * ) +void btCompoundShape_getChildTransform(void *c,int p0,float* ret); //method: getChildTransform ::btTransform & ( ::btCompoundShape::* )( int ) +void btCompoundShape_getChildTransform0(void *c,int p0,float* ret); //method: getChildTransform ::btTransform & ( ::btCompoundShape::* )( int ) +void btCompoundShape_getChildTransform1(void *c,int p0,float* ret); //method: getChildTransform ::btTransform const & ( ::btCompoundShape::* )( int ) const+void* btCompoundShape_getChildList(void *c); //method: getChildList ::btCompoundShapeChild * ( ::btCompoundShape::* )(  ) +float btCompoundShape_getMargin(void *c); //method: getMargin ::btScalar ( ::btCompoundShape::* )(  ) const+void btCompoundShape_setMargin(void *c,float p0); //method: setMargin void ( ::btCompoundShape::* )( ::btScalar ) +int btCompoundShape_getNumChildShapes(void *c); //method: getNumChildShapes int ( ::btCompoundShape::* )(  ) const+void btCompoundShape_removeChildShapeByIndex(void *c,int p0); //method: removeChildShapeByIndex void ( ::btCompoundShape::* )( int ) +void btCompoundShape_recalculateLocalAabb(void *c); //method: recalculateLocalAabb void ( ::btCompoundShape::* )(  ) +void btCompoundShape_updateChildTransform(void *c,int p0,float* p1,int p2); //method: updateChildTransform void ( ::btCompoundShape::* )( int,::btTransform const &,bool ) +//not supported method: calculatePrincipalAxisTransform void ( ::btCompoundShape::* )( ::btScalar *,::btTransform &,::btVector3 & ) const+void btCompoundShape_removeChildShape(void *c,void* p0); //method: removeChildShape void ( ::btCompoundShape::* )( ::btCollisionShape * ) +void* btCompoundShapeChild_new(); //constructor: btCompoundShapeChild  ( ::btCompoundShapeChild::* )(  ) +void btCompoundShapeChild_free(void *c); void btCompoundShapeChild_m_childMargin_set(void *c,float a); //attribute: ::btScalar btCompoundShapeChild->m_childMargin+float btCompoundShapeChild_m_childMargin_get(void *c); //attribute: ::btScalar btCompoundShapeChild->m_childMargin+void btCompoundShapeChild_m_childShape_set(void *c,void* a); //attribute: ::btCollisionShape * btCompoundShapeChild->m_childShape+// attribute getter not supported: //attribute: ::btCollisionShape * btCompoundShapeChild->m_childShape+void btCompoundShapeChild_m_childShapeType_set(void *c,int a); //attribute: int btCompoundShapeChild->m_childShapeType+int btCompoundShapeChild_m_childShapeType_get(void *c); //attribute: int btCompoundShapeChild->m_childShapeType+void btCompoundShapeChild_m_node_set(void *c,void* a); //attribute: ::btDbvtNode * btCompoundShapeChild->m_node+// attribute getter not supported: //attribute: ::btDbvtNode * btCompoundShapeChild->m_node+void btCompoundShapeChild_m_transform_set(void *c,float* a); //attribute: ::btTransform btCompoundShapeChild->m_transform+void btCompoundShapeChild_m_transform_get(void *c,float* a);+void* btCompoundShapeChildData_new(); //constructor: btCompoundShapeChildData  ( ::btCompoundShapeChildData::* )(  ) +void btCompoundShapeChildData_free(void *c); // attribute not supported: //attribute: ::btTransformFloatData btCompoundShapeChildData->m_transform+void btCompoundShapeChildData_m_childShape_set(void *c,void* a); //attribute: ::btCollisionShapeData * btCompoundShapeChildData->m_childShape+// attribute getter not supported: //attribute: ::btCollisionShapeData * btCompoundShapeChildData->m_childShape+void btCompoundShapeChildData_m_childShapeType_set(void *c,int a); //attribute: int btCompoundShapeChildData->m_childShapeType+int btCompoundShapeChildData_m_childShapeType_get(void *c); //attribute: int btCompoundShapeChildData->m_childShapeType+void btCompoundShapeChildData_m_childMargin_set(void *c,float a); //attribute: float btCompoundShapeChildData->m_childMargin+float btCompoundShapeChildData_m_childMargin_get(void *c); //attribute: float btCompoundShapeChildData->m_childMargin+void* btCompoundShapeData_new(); //constructor: btCompoundShapeData  ( ::btCompoundShapeData::* )(  ) +void btCompoundShapeData_free(void *c); // attribute not supported: //attribute: ::btCollisionShapeData btCompoundShapeData->m_collisionShapeData+void btCompoundShapeData_m_childShapePtr_set(void *c,void* a); //attribute: ::btCompoundShapeChildData * btCompoundShapeData->m_childShapePtr+// attribute getter not supported: //attribute: ::btCompoundShapeChildData * btCompoundShapeData->m_childShapePtr+void btCompoundShapeData_m_numChildShapes_set(void *c,int a); //attribute: int btCompoundShapeData->m_numChildShapes+int btCompoundShapeData_m_numChildShapes_get(void *c); //attribute: int btCompoundShapeData->m_numChildShapes+void btCompoundShapeData_m_collisionMargin_set(void *c,float a); //attribute: float btCompoundShapeData->m_collisionMargin+float btCompoundShapeData_m_collisionMargin_get(void *c); //attribute: float btCompoundShapeData->m_collisionMargin+void btConcaveShape_processAllTriangles(void *c,void* p0,float* p1,float* p2); //method: processAllTriangles void ( ::btConcaveShape::* )( ::btTriangleCallback *,::btVector3 const &,::btVector3 const & ) const+void btConcaveShape_setMargin(void *c,float p0); //method: setMargin void ( ::btConcaveShape::* )( ::btScalar ) +float btConcaveShape_getMargin(void *c); //method: getMargin ::btScalar ( ::btConcaveShape::* )(  ) const+void* btConeShape_new(float p0,float p1); //constructor: btConeShape  ( ::btConeShape::* )( ::btScalar,::btScalar ) +void btConeShape_free(void *c); void btConeShape_calculateLocalInertia(void *c,float p0,float* p1); //method: calculateLocalInertia void ( ::btConeShape::* )( ::btScalar,::btVector3 & ) const+void btConeShape_localGetSupportingVertex(void *c,float* p0,float* ret); //method: localGetSupportingVertex ::btVector3 ( ::btConeShape::* )( ::btVector3 const & ) const+//not supported method: batchedUnitVectorGetSupportingVertexWithoutMargin void ( ::btConeShape::* )( ::btVector3 const *,::btVector3 *,int ) const+int btConeShape_getConeUpIndex(void *c); //method: getConeUpIndex int ( ::btConeShape::* )(  ) const+char const * btConeShape_getName(void *c); //method: getName char const * ( ::btConeShape::* )(  ) const+float btConeShape_getHeight(void *c); //method: getHeight ::btScalar ( ::btConeShape::* )(  ) const+void btConeShape_setConeUpIndex(void *c,int p0); //method: setConeUpIndex void ( ::btConeShape::* )( int ) +void btConeShape_setLocalScaling(void *c,float* p0); //method: setLocalScaling void ( ::btConeShape::* )( ::btVector3 const & ) +void btConeShape_localGetSupportingVertexWithoutMargin(void *c,float* p0,float* ret); //method: localGetSupportingVertexWithoutMargin ::btVector3 ( ::btConeShape::* )( ::btVector3 const & ) const+float btConeShape_getRadius(void *c); //method: getRadius ::btScalar ( ::btConeShape::* )(  ) const+void* btConeShapeX_new(float p0,float p1); //constructor: btConeShapeX  ( ::btConeShapeX::* )( ::btScalar,::btScalar ) +void btConeShapeX_free(void *c); void* btConeShapeZ_new(float p0,float p1); //constructor: btConeShapeZ  ( ::btConeShapeZ::* )( ::btScalar,::btScalar ) +void btConeShapeZ_free(void *c); //not supported constructor: btConvexHullShape  ( ::btConvexHullShape::* )( ::btScalar const *,int,int ) +void btConvexHullShape_free(void *c); void btConvexHullShape_addPoint(void *c,float* p0); //method: addPoint void ( ::btConvexHullShape::* )( ::btVector3 const & ) +void btConvexHullShape_localGetSupportingVertex(void *c,float* p0,float* ret); //method: localGetSupportingVertex ::btVector3 ( ::btConvexHullShape::* )( ::btVector3 const & ) const+int btConvexHullShape_calculateSerializeBufferSize(void *c); //method: calculateSerializeBufferSize int ( ::btConvexHullShape::* )(  ) const+//not supported method: batchedUnitVectorGetSupportingVertexWithoutMargin void ( ::btConvexHullShape::* )( ::btVector3 const *,::btVector3 *,int ) const+void btConvexHullShape_getScaledPoint(void *c,int p0,float* ret); //method: getScaledPoint ::btVector3 ( ::btConvexHullShape::* )( int ) const+int btConvexHullShape_getNumPlanes(void *c); //method: getNumPlanes int ( ::btConvexHullShape::* )(  ) const+//not supported method: getPoints ::btVector3 const * ( ::btConvexHullShape::* )(  ) const+int btConvexHullShape_getNumEdges(void *c); //method: getNumEdges int ( ::btConvexHullShape::* )(  ) const+char const * btConvexHullShape_getName(void *c); //method: getName char const * ( ::btConvexHullShape::* )(  ) const+void btConvexHullShape_getVertex(void *c,int p0,float* p1); //method: getVertex void ( ::btConvexHullShape::* )( int,::btVector3 & ) const+void btConvexHullShape_getEdge(void *c,int p0,float* p1,float* p2); //method: getEdge void ( ::btConvexHullShape::* )( int,::btVector3 &,::btVector3 & ) const+void btConvexHullShape_localGetSupportingVertexWithoutMargin(void *c,float* p0,float* ret); //method: localGetSupportingVertexWithoutMargin ::btVector3 ( ::btConvexHullShape::* )( ::btVector3 const & ) const+int btConvexHullShape_isInside(void *c,float* p0,float p1); //method: isInside bool ( ::btConvexHullShape::* )( ::btVector3 const &,::btScalar ) const+void btConvexHullShape_getPlane(void *c,float* p0,float* p1,int p2); //method: getPlane void ( ::btConvexHullShape::* )( ::btVector3 &,::btVector3 &,int ) const+void btConvexHullShape_setLocalScaling(void *c,float* p0); //method: setLocalScaling void ( ::btConvexHullShape::* )( ::btVector3 const & ) +int btConvexHullShape_getNumVertices(void *c); //method: getNumVertices int ( ::btConvexHullShape::* )(  ) const+//not supported method: serialize char const * ( ::btConvexHullShape::* )( void *,::btSerializer * ) const+int btConvexHullShape_getNumPoints(void *c); //method: getNumPoints int ( ::btConvexHullShape::* )(  ) const+//not supported method: getUnscaledPoints ::btVector3 * ( ::btConvexHullShape::* )(  ) +//not supported method: getUnscaledPoints ::btVector3 * ( ::btConvexHullShape::* )(  ) +//not supported method: getUnscaledPoints ::btVector3 const * ( ::btConvexHullShape::* )(  ) const+void* btConvexHullShapeData_new(); //constructor: btConvexHullShapeData  ( ::btConvexHullShapeData::* )(  ) +void btConvexHullShapeData_free(void *c); // attribute not supported: //attribute: ::btConvexInternalShapeData btConvexHullShapeData->m_convexInternalShapeData+void btConvexHullShapeData_m_unscaledPointsFloatPtr_set(void *c,void* a); //attribute: ::btVector3FloatData * btConvexHullShapeData->m_unscaledPointsFloatPtr+// attribute getter not supported: //attribute: ::btVector3FloatData * btConvexHullShapeData->m_unscaledPointsFloatPtr+void btConvexHullShapeData_m_unscaledPointsDoublePtr_set(void *c,void* a); //attribute: ::btVector3DoubleData * btConvexHullShapeData->m_unscaledPointsDoublePtr+// attribute getter not supported: //attribute: ::btVector3DoubleData * btConvexHullShapeData->m_unscaledPointsDoublePtr+void btConvexHullShapeData_m_numUnscaledPoints_set(void *c,int a); //attribute: int btConvexHullShapeData->m_numUnscaledPoints+int btConvexHullShapeData_m_numUnscaledPoints_get(void *c); //attribute: int btConvexHullShapeData->m_numUnscaledPoints+// attribute not supported: //attribute: char[4] btConvexHullShapeData->m_padding3+void btConvexInternalAabbCachingShape_recalcLocalAabb(void *c); //method: recalcLocalAabb void ( ::btConvexInternalAabbCachingShape::* )(  ) +void btConvexInternalAabbCachingShape_setLocalScaling(void *c,float* p0); //method: setLocalScaling void ( ::btConvexInternalAabbCachingShape::* )( ::btVector3 const & ) +void btConvexInternalAabbCachingShape_getAabb(void *c,float* p0,float* p1,float* p2); //method: getAabb void ( ::btConvexInternalAabbCachingShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btConvexInternalShape_localGetSupportingVertex(void *c,float* p0,float* ret); //method: localGetSupportingVertex ::btVector3 ( ::btConvexInternalShape::* )( ::btVector3 const & ) const+int btConvexInternalShape_calculateSerializeBufferSize(void *c); //method: calculateSerializeBufferSize int ( ::btConvexInternalShape::* )(  ) const+void btConvexInternalShape_getImplicitShapeDimensions(void *c,float* ret); //method: getImplicitShapeDimensions ::btVector3 const & ( ::btConvexInternalShape::* )(  ) const+//not supported method: serialize char const * ( ::btConvexInternalShape::* )( void *,::btSerializer * ) const+void btConvexInternalShape_getLocalScalingNV(void *c,float* ret); //method: getLocalScalingNV ::btVector3 const & ( ::btConvexInternalShape::* )(  ) const+void btConvexInternalShape_getAabbSlow(void *c,float* p0,float* p1,float* p2); //method: getAabbSlow void ( ::btConvexInternalShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btConvexInternalShape_getLocalScaling(void *c,float* ret); //method: getLocalScaling ::btVector3 const & ( ::btConvexInternalShape::* )(  ) const+void btConvexInternalShape_getPreferredPenetrationDirection(void *c,int p0,float* p1); //method: getPreferredPenetrationDirection void ( ::btConvexInternalShape::* )( int,::btVector3 & ) const+void btConvexInternalShape_setLocalScaling(void *c,float* p0); //method: setLocalScaling void ( ::btConvexInternalShape::* )( ::btVector3 const & ) +int btConvexInternalShape_getNumPreferredPenetrationDirections(void *c); //method: getNumPreferredPenetrationDirections int ( ::btConvexInternalShape::* )(  ) const+void btConvexInternalShape_getAabb(void *c,float* p0,float* p1,float* p2); //method: getAabb void ( ::btConvexInternalShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btConvexInternalShape_setMargin(void *c,float p0); //method: setMargin void ( ::btConvexInternalShape::* )( ::btScalar ) +float btConvexInternalShape_getMarginNV(void *c); //method: getMarginNV ::btScalar ( ::btConvexInternalShape::* )(  ) const+float btConvexInternalShape_getMargin(void *c); //method: getMargin ::btScalar ( ::btConvexInternalShape::* )(  ) const+void btConvexInternalShape_setImplicitShapeDimensions(void *c,float* p0); //method: setImplicitShapeDimensions void ( ::btConvexInternalShape::* )( ::btVector3 const & ) +void* btConvexInternalShapeData_new(); //constructor: btConvexInternalShapeData  ( ::btConvexInternalShapeData::* )(  ) +void btConvexInternalShapeData_free(void *c); void btConvexInternalShapeData_m_collisionMargin_set(void *c,float a); //attribute: float btConvexInternalShapeData->m_collisionMargin+float btConvexInternalShapeData_m_collisionMargin_get(void *c); //attribute: float btConvexInternalShapeData->m_collisionMargin+// attribute not supported: //attribute: ::btCollisionShapeData btConvexInternalShapeData->m_collisionShapeData+// attribute not supported: //attribute: ::btVector3FloatData btConvexInternalShapeData->m_implicitShapeDimensions+// attribute not supported: //attribute: ::btVector3FloatData btConvexInternalShapeData->m_localScaling+void btConvexInternalShapeData_m_padding_set(void *c,int a); //attribute: int btConvexInternalShapeData->m_padding+int btConvexInternalShapeData_m_padding_get(void *c); //attribute: int btConvexInternalShapeData->m_padding+void btConvexShape_getAabbNonVirtual(void *c,float* p0,float* p1,float* p2); //method: getAabbNonVirtual void ( ::btConvexShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btConvexShape_localGetSupportingVertex(void *c,float* p0,float* ret); //method: localGetSupportingVertex ::btVector3 ( ::btConvexShape::* )( ::btVector3 const & ) const+//not supported method: batchedUnitVectorGetSupportingVertexWithoutMargin void ( ::btConvexShape::* )( ::btVector3 const *,::btVector3 *,int ) const+float btConvexShape_getMargin(void *c); //method: getMargin ::btScalar ( ::btConvexShape::* )(  ) const+void btConvexShape_localGetSupportVertexWithoutMarginNonVirtual(void *c,float* p0,float* ret); //method: localGetSupportVertexWithoutMarginNonVirtual ::btVector3 ( ::btConvexShape::* )( ::btVector3 const & ) const+void btConvexShape_getLocalScaling(void *c,float* ret); //method: getLocalScaling ::btVector3 const & ( ::btConvexShape::* )(  ) const+void btConvexShape_getPreferredPenetrationDirection(void *c,int p0,float* p1); //method: getPreferredPenetrationDirection void ( ::btConvexShape::* )( int,::btVector3 & ) const+void btConvexShape_setLocalScaling(void *c,float* p0); //method: setLocalScaling void ( ::btConvexShape::* )( ::btVector3 const & ) +void btConvexShape_getAabbSlow(void *c,float* p0,float* p1,float* p2); //method: getAabbSlow void ( ::btConvexShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btConvexShape_getAabb(void *c,float* p0,float* p1,float* p2); //method: getAabb void ( ::btConvexShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btConvexShape_setMargin(void *c,float p0); //method: setMargin void ( ::btConvexShape::* )( ::btScalar ) +int btConvexShape_getNumPreferredPenetrationDirections(void *c); //method: getNumPreferredPenetrationDirections int ( ::btConvexShape::* )(  ) const+void btConvexShape_localGetSupportVertexNonVirtual(void *c,float* p0,float* ret); //method: localGetSupportVertexNonVirtual ::btVector3 ( ::btConvexShape::* )( ::btVector3 const & ) const+void btConvexShape_localGetSupportingVertexWithoutMargin(void *c,float* p0,float* ret); //method: localGetSupportingVertexWithoutMargin ::btVector3 ( ::btConvexShape::* )( ::btVector3 const & ) const+float btConvexShape_getMarginNonVirtual(void *c); //method: getMarginNonVirtual ::btScalar ( ::btConvexShape::* )(  ) const+void* btConvexTriangleMeshShape_new(void* p0,int p1); //constructor: btConvexTriangleMeshShape  ( ::btConvexTriangleMeshShape::* )( ::btStridingMeshInterface *,bool ) +void btConvexTriangleMeshShape_free(void *c); int btConvexTriangleMeshShape_getNumPlanes(void *c); //method: getNumPlanes int ( ::btConvexTriangleMeshShape::* )(  ) const+void btConvexTriangleMeshShape_localGetSupportingVertex(void *c,float* p0,float* ret); //method: localGetSupportingVertex ::btVector3 ( ::btConvexTriangleMeshShape::* )( ::btVector3 const & ) const+//not supported method: batchedUnitVectorGetSupportingVertexWithoutMargin void ( ::btConvexTriangleMeshShape::* )( ::btVector3 const *,::btVector3 *,int ) const+int btConvexTriangleMeshShape_getNumEdges(void *c); //method: getNumEdges int ( ::btConvexTriangleMeshShape::* )(  ) const+char const * btConvexTriangleMeshShape_getName(void *c); //method: getName char const * ( ::btConvexTriangleMeshShape::* )(  ) const+void btConvexTriangleMeshShape_getVertex(void *c,int p0,float* p1); //method: getVertex void ( ::btConvexTriangleMeshShape::* )( int,::btVector3 & ) const+void btConvexTriangleMeshShape_getEdge(void *c,int p0,float* p1,float* p2); //method: getEdge void ( ::btConvexTriangleMeshShape::* )( int,::btVector3 &,::btVector3 & ) const+void btConvexTriangleMeshShape_getLocalScaling(void *c,float* ret); //method: getLocalScaling ::btVector3 const & ( ::btConvexTriangleMeshShape::* )(  ) const+int btConvexTriangleMeshShape_isInside(void *c,float* p0,float p1); //method: isInside bool ( ::btConvexTriangleMeshShape::* )( ::btVector3 const &,::btScalar ) const+void btConvexTriangleMeshShape_getPlane(void *c,float* p0,float* p1,int p2); //method: getPlane void ( ::btConvexTriangleMeshShape::* )( ::btVector3 &,::btVector3 &,int ) const+void btConvexTriangleMeshShape_setLocalScaling(void *c,float* p0); //method: setLocalScaling void ( ::btConvexTriangleMeshShape::* )( ::btVector3 const & ) +void* btConvexTriangleMeshShape_getMeshInterface(void *c); //method: getMeshInterface ::btStridingMeshInterface * ( ::btConvexTriangleMeshShape::* )(  ) +void* btConvexTriangleMeshShape_getMeshInterface0(void *c); //method: getMeshInterface ::btStridingMeshInterface * ( ::btConvexTriangleMeshShape::* )(  ) +void* btConvexTriangleMeshShape_getMeshInterface1(void *c); //method: getMeshInterface ::btStridingMeshInterface const * ( ::btConvexTriangleMeshShape::* )(  ) const+int btConvexTriangleMeshShape_getNumVertices(void *c); //method: getNumVertices int ( ::btConvexTriangleMeshShape::* )(  ) const+//not supported method: calculatePrincipalAxisTransform void ( ::btConvexTriangleMeshShape::* )( ::btTransform &,::btVector3 &,::btScalar & ) const+void btConvexTriangleMeshShape_localGetSupportingVertexWithoutMargin(void *c,float* p0,float* ret); //method: localGetSupportingVertexWithoutMargin ::btVector3 ( ::btConvexTriangleMeshShape::* )( ::btVector3 const & ) const+void* btCylinderShape_new(float* p0); //constructor: btCylinderShape  ( ::btCylinderShape::* )( ::btVector3 const & ) +void btCylinderShape_free(void *c); void btCylinderShape_calculateLocalInertia(void *c,float p0,float* p1); //method: calculateLocalInertia void ( ::btCylinderShape::* )( ::btScalar,::btVector3 & ) const+void btCylinderShape_localGetSupportingVertex(void *c,float* p0,float* ret); //method: localGetSupportingVertex ::btVector3 ( ::btCylinderShape::* )( ::btVector3 const & ) const+int btCylinderShape_calculateSerializeBufferSize(void *c); //method: calculateSerializeBufferSize int ( ::btCylinderShape::* )(  ) const+//not supported method: batchedUnitVectorGetSupportingVertexWithoutMargin void ( ::btCylinderShape::* )( ::btVector3 const *,::btVector3 *,int ) const+void btCylinderShape_setLocalScaling(void *c,float* p0); //method: setLocalScaling void ( ::btCylinderShape::* )( ::btVector3 const & ) +int btCylinderShape_getUpAxis(void *c); //method: getUpAxis int ( ::btCylinderShape::* )(  ) const+char const * btCylinderShape_getName(void *c); //method: getName char const * ( ::btCylinderShape::* )(  ) const+//not supported method: serialize char const * ( ::btCylinderShape::* )( void *,::btSerializer * ) const+void btCylinderShape_getHalfExtentsWithoutMargin(void *c,float* ret); //method: getHalfExtentsWithoutMargin ::btVector3 const & ( ::btCylinderShape::* )(  ) const+void btCylinderShape_getAabb(void *c,float* p0,float* p1,float* p2); //method: getAabb void ( ::btCylinderShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btCylinderShape_setMargin(void *c,float p0); //method: setMargin void ( ::btCylinderShape::* )( ::btScalar ) +void btCylinderShape_getHalfExtentsWithMargin(void *c,float* ret); //method: getHalfExtentsWithMargin ::btVector3 ( ::btCylinderShape::* )(  ) const+void btCylinderShape_localGetSupportingVertexWithoutMargin(void *c,float* p0,float* ret); //method: localGetSupportingVertexWithoutMargin ::btVector3 ( ::btCylinderShape::* )( ::btVector3 const & ) const+float btCylinderShape_getRadius(void *c); //method: getRadius ::btScalar ( ::btCylinderShape::* )(  ) const+void* btCylinderShapeData_new(); //constructor: btCylinderShapeData  ( ::btCylinderShapeData::* )(  ) +void btCylinderShapeData_free(void *c); // attribute not supported: //attribute: ::btConvexInternalShapeData btCylinderShapeData->m_convexInternalShapeData+void btCylinderShapeData_m_upAxis_set(void *c,int a); //attribute: int btCylinderShapeData->m_upAxis+int btCylinderShapeData_m_upAxis_get(void *c); //attribute: int btCylinderShapeData->m_upAxis+// attribute not supported: //attribute: char[4] btCylinderShapeData->m_padding+void* btCylinderShapeX_new(float* p0); //constructor: btCylinderShapeX  ( ::btCylinderShapeX::* )( ::btVector3 const & ) +void btCylinderShapeX_free(void *c); char const * btCylinderShapeX_getName(void *c); //method: getName char const * ( ::btCylinderShapeX::* )(  ) const+//not supported method: batchedUnitVectorGetSupportingVertexWithoutMargin void ( ::btCylinderShapeX::* )( ::btVector3 const *,::btVector3 *,int ) const+void btCylinderShapeX_localGetSupportingVertexWithoutMargin(void *c,float* p0,float* ret); //method: localGetSupportingVertexWithoutMargin ::btVector3 ( ::btCylinderShapeX::* )( ::btVector3 const & ) const+float btCylinderShapeX_getRadius(void *c); //method: getRadius ::btScalar ( ::btCylinderShapeX::* )(  ) const+void* btCylinderShapeZ_new(float* p0); //constructor: btCylinderShapeZ  ( ::btCylinderShapeZ::* )( ::btVector3 const & ) +void btCylinderShapeZ_free(void *c); char const * btCylinderShapeZ_getName(void *c); //method: getName char const * ( ::btCylinderShapeZ::* )(  ) const+//not supported method: batchedUnitVectorGetSupportingVertexWithoutMargin void ( ::btCylinderShapeZ::* )( ::btVector3 const *,::btVector3 *,int ) const+void btCylinderShapeZ_localGetSupportingVertexWithoutMargin(void *c,float* p0,float* ret); //method: localGetSupportingVertexWithoutMargin ::btVector3 ( ::btCylinderShapeZ::* )( ::btVector3 const & ) const+float btCylinderShapeZ_getRadius(void *c); //method: getRadius ::btScalar ( ::btCylinderShapeZ::* )(  ) const+void* btEmptyShape_new(); //constructor: btEmptyShape  ( ::btEmptyShape::* )(  ) +void btEmptyShape_free(void *c); void btEmptyShape_calculateLocalInertia(void *c,float p0,float* p1); //method: calculateLocalInertia void ( ::btEmptyShape::* )( ::btScalar,::btVector3 & ) const+char const * btEmptyShape_getName(void *c); //method: getName char const * ( ::btEmptyShape::* )(  ) const+void btEmptyShape_getLocalScaling(void *c,float* ret); //method: getLocalScaling ::btVector3 const & ( ::btEmptyShape::* )(  ) const+void btEmptyShape_setLocalScaling(void *c,float* p0); //method: setLocalScaling void ( ::btEmptyShape::* )( ::btVector3 const & ) +void btEmptyShape_getAabb(void *c,float* p0,float* p1,float* p2); //method: getAabb void ( ::btEmptyShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btEmptyShape_processAllTriangles(void *c,void* p0,float* p1,float* p2); //method: processAllTriangles void ( ::btEmptyShape::* )( ::btTriangleCallback *,::btVector3 const &,::btVector3 const & ) const+void* btIndexedMesh_new(); //constructor: btIndexedMesh  ( ::btIndexedMesh::* )(  ) +void btIndexedMesh_free(void *c); void btIndexedMesh_m_numTriangles_set(void *c,int a); //attribute: int btIndexedMesh->m_numTriangles+int btIndexedMesh_m_numTriangles_get(void *c); //attribute: int btIndexedMesh->m_numTriangles+// attribute not supported: //attribute: unsigned char const * btIndexedMesh->m_triangleIndexBase+void btIndexedMesh_m_triangleIndexStride_set(void *c,int a); //attribute: int btIndexedMesh->m_triangleIndexStride+int btIndexedMesh_m_triangleIndexStride_get(void *c); //attribute: int btIndexedMesh->m_triangleIndexStride+void btIndexedMesh_m_numVertices_set(void *c,int a); //attribute: int btIndexedMesh->m_numVertices+int btIndexedMesh_m_numVertices_get(void *c); //attribute: int btIndexedMesh->m_numVertices+// attribute not supported: //attribute: unsigned char const * btIndexedMesh->m_vertexBase+void btIndexedMesh_m_vertexStride_set(void *c,int a); //attribute: int btIndexedMesh->m_vertexStride+int btIndexedMesh_m_vertexStride_get(void *c); //attribute: int btIndexedMesh->m_vertexStride+// attribute not supported: //attribute: ::PHY_ScalarType btIndexedMesh->m_indexType+// attribute not supported: //attribute: ::PHY_ScalarType btIndexedMesh->m_vertexType+void* btIntIndexData_new(); //constructor: btIntIndexData  ( ::btIntIndexData::* )(  ) +void btIntIndexData_free(void *c); void btIntIndexData_m_value_set(void *c,int a); //attribute: int btIntIndexData->m_value+int btIntIndexData_m_value_get(void *c); //attribute: int btIntIndexData->m_value+//not supported method: internalProcessTriangleIndex void ( ::btInternalTriangleIndexCallback::* )( ::btVector3 *,int,int ) +void* btMeshPartData_new(); //constructor: btMeshPartData  ( ::btMeshPartData::* )(  ) +void btMeshPartData_free(void *c); void btMeshPartData_m_vertices3f_set(void *c,void* a); //attribute: ::btVector3FloatData * btMeshPartData->m_vertices3f+// attribute getter not supported: //attribute: ::btVector3FloatData * btMeshPartData->m_vertices3f+void btMeshPartData_m_vertices3d_set(void *c,void* a); //attribute: ::btVector3DoubleData * btMeshPartData->m_vertices3d+// attribute getter not supported: //attribute: ::btVector3DoubleData * btMeshPartData->m_vertices3d+void btMeshPartData_m_indices32_set(void *c,void* a); //attribute: ::btIntIndexData * btMeshPartData->m_indices32+// attribute getter not supported: //attribute: ::btIntIndexData * btMeshPartData->m_indices32+void btMeshPartData_m_3indices16_set(void *c,void* a); //attribute: ::btShortIntIndexTripletData * btMeshPartData->m_3indices16+// attribute getter not supported: //attribute: ::btShortIntIndexTripletData * btMeshPartData->m_3indices16+void btMeshPartData_m_3indices8_set(void *c,void* a); //attribute: ::btCharIndexTripletData * btMeshPartData->m_3indices8+// attribute getter not supported: //attribute: ::btCharIndexTripletData * btMeshPartData->m_3indices8+void btMeshPartData_m_indices16_set(void *c,void* a); //attribute: ::btShortIntIndexData * btMeshPartData->m_indices16+// attribute getter not supported: //attribute: ::btShortIntIndexData * btMeshPartData->m_indices16+void btMeshPartData_m_numTriangles_set(void *c,int a); //attribute: int btMeshPartData->m_numTriangles+int btMeshPartData_m_numTriangles_get(void *c); //attribute: int btMeshPartData->m_numTriangles+void btMeshPartData_m_numVertices_set(void *c,int a); //attribute: int btMeshPartData->m_numVertices+int btMeshPartData_m_numVertices_get(void *c); //attribute: int btMeshPartData->m_numVertices+//not supported constructor: btMultiSphereShape  ( ::btMultiSphereShape::* )( ::btVector3 const *,::btScalar const *,int ) +void btMultiSphereShape_free(void *c); void btMultiSphereShape_calculateLocalInertia(void *c,float p0,float* p1); //method: calculateLocalInertia void ( ::btMultiSphereShape::* )( ::btScalar,::btVector3 & ) const+int btMultiSphereShape_calculateSerializeBufferSize(void *c); //method: calculateSerializeBufferSize int ( ::btMultiSphereShape::* )(  ) const+//not supported method: batchedUnitVectorGetSupportingVertexWithoutMargin void ( ::btMultiSphereShape::* )( ::btVector3 const *,::btVector3 *,int ) const+int btMultiSphereShape_getSphereCount(void *c); //method: getSphereCount int ( ::btMultiSphereShape::* )(  ) const+char const * btMultiSphereShape_getName(void *c); //method: getName char const * ( ::btMultiSphereShape::* )(  ) const+//not supported method: serialize char const * ( ::btMultiSphereShape::* )( void *,::btSerializer * ) const+void btMultiSphereShape_getSpherePosition(void *c,int p0,float* ret); //method: getSpherePosition ::btVector3 const & ( ::btMultiSphereShape::* )( int ) const+float btMultiSphereShape_getSphereRadius(void *c,int p0); //method: getSphereRadius ::btScalar ( ::btMultiSphereShape::* )( int ) const+void btMultiSphereShape_localGetSupportingVertexWithoutMargin(void *c,float* p0,float* ret); //method: localGetSupportingVertexWithoutMargin ::btVector3 ( ::btMultiSphereShape::* )( ::btVector3 const & ) const+void* btMultiSphereShapeData_new(); //constructor: btMultiSphereShapeData  ( ::btMultiSphereShapeData::* )(  ) +void btMultiSphereShapeData_free(void *c); // attribute not supported: //attribute: ::btConvexInternalShapeData btMultiSphereShapeData->m_convexInternalShapeData+void btMultiSphereShapeData_m_localPositionArrayPtr_set(void *c,void* a); //attribute: ::btPositionAndRadius * btMultiSphereShapeData->m_localPositionArrayPtr+// attribute getter not supported: //attribute: ::btPositionAndRadius * btMultiSphereShapeData->m_localPositionArrayPtr+void btMultiSphereShapeData_m_localPositionArraySize_set(void *c,int a); //attribute: int btMultiSphereShapeData->m_localPositionArraySize+int btMultiSphereShapeData_m_localPositionArraySize_get(void *c); //attribute: int btMultiSphereShapeData->m_localPositionArraySize+// attribute not supported: //attribute: char[4] btMultiSphereShapeData->m_padding+void* btOptimizedBvh_new(); //constructor: btOptimizedBvh  ( ::btOptimizedBvh::* )(  ) +void btOptimizedBvh_free(void *c); void btOptimizedBvh_updateBvhNodes(void *c,void* p0,int p1,int p2,int p3); //method: updateBvhNodes void ( ::btOptimizedBvh::* )( ::btStridingMeshInterface *,int,int,int ) +//not supported method: serializeInPlace bool ( ::btOptimizedBvh::* )( void *,unsigned int,bool ) const+void btOptimizedBvh_refit(void *c,void* p0,float* p1,float* p2); //method: refit void ( ::btOptimizedBvh::* )( ::btStridingMeshInterface *,::btVector3 const &,::btVector3 const & ) +void btOptimizedBvh_build(void *c,void* p0,int p1,float* p2,float* p3); //method: build void ( ::btOptimizedBvh::* )( ::btStridingMeshInterface *,bool,::btVector3 const &,::btVector3 const & ) +void btOptimizedBvh_refitPartial(void *c,void* p0,float* p1,float* p2); //method: refitPartial void ( ::btOptimizedBvh::* )( ::btStridingMeshInterface *,::btVector3 const &,::btVector3 const & ) +//not supported method: deSerializeInPlace ::btOptimizedBvh * (*)( void *,unsigned int,bool )+void btPolyhedralConvexAabbCachingShape_recalcLocalAabb(void *c); //method: recalcLocalAabb void ( ::btPolyhedralConvexAabbCachingShape::* )(  ) +void btPolyhedralConvexAabbCachingShape_setLocalScaling(void *c,float* p0); //method: setLocalScaling void ( ::btPolyhedralConvexAabbCachingShape::* )( ::btVector3 const & ) +void btPolyhedralConvexAabbCachingShape_getNonvirtualAabb(void *c,float* p0,float* p1,float* p2,float p3); //method: getNonvirtualAabb void ( ::btPolyhedralConvexAabbCachingShape::* )( ::btTransform const &,::btVector3 &,::btVector3 &,::btScalar ) const+void btPolyhedralConvexAabbCachingShape_getAabb(void *c,float* p0,float* p1,float* p2); //method: getAabb void ( ::btPolyhedralConvexAabbCachingShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btPolyhedralConvexShape_calculateLocalInertia(void *c,float p0,float* p1); //method: calculateLocalInertia void ( ::btPolyhedralConvexShape::* )( ::btScalar,::btVector3 & ) const+int btPolyhedralConvexShape_getNumPlanes(void *c); //method: getNumPlanes int ( ::btPolyhedralConvexShape::* )(  ) const+//not supported method: batchedUnitVectorGetSupportingVertexWithoutMargin void ( ::btPolyhedralConvexShape::* )( ::btVector3 const *,::btVector3 *,int ) const+int btPolyhedralConvexShape_getNumEdges(void *c); //method: getNumEdges int ( ::btPolyhedralConvexShape::* )(  ) const+void btPolyhedralConvexShape_getVertex(void *c,int p0,float* p1); //method: getVertex void ( ::btPolyhedralConvexShape::* )( int,::btVector3 & ) const+void btPolyhedralConvexShape_getEdge(void *c,int p0,float* p1,float* p2); //method: getEdge void ( ::btPolyhedralConvexShape::* )( int,::btVector3 &,::btVector3 & ) const+int btPolyhedralConvexShape_isInside(void *c,float* p0,float p1); //method: isInside bool ( ::btPolyhedralConvexShape::* )( ::btVector3 const &,::btScalar ) const+void btPolyhedralConvexShape_getPlane(void *c,float* p0,float* p1,int p2); //method: getPlane void ( ::btPolyhedralConvexShape::* )( ::btVector3 &,::btVector3 &,int ) const+//not supported method: getConvexPolyhedron ::btConvexPolyhedron const * ( ::btPolyhedralConvexShape::* )(  ) const+int btPolyhedralConvexShape_initializePolyhedralFeatures(void *c); //method: initializePolyhedralFeatures bool ( ::btPolyhedralConvexShape::* )(  ) +int btPolyhedralConvexShape_getNumVertices(void *c); //method: getNumVertices int ( ::btPolyhedralConvexShape::* )(  ) const+void btPolyhedralConvexShape_localGetSupportingVertexWithoutMargin(void *c,float* p0,float* ret); //method: localGetSupportingVertexWithoutMargin ::btVector3 ( ::btPolyhedralConvexShape::* )( ::btVector3 const & ) const+void* btPositionAndRadius_new(); //constructor: btPositionAndRadius  ( ::btPositionAndRadius::* )(  ) +void btPositionAndRadius_free(void *c); // attribute not supported: //attribute: ::btVector3FloatData btPositionAndRadius->m_pos+void btPositionAndRadius_m_radius_set(void *c,float a); //attribute: float btPositionAndRadius->m_radius+float btPositionAndRadius_m_radius_get(void *c); //attribute: float btPositionAndRadius->m_radius+void* btScaledBvhTriangleMeshShape_new(void* p0,float* p1); //constructor: btScaledBvhTriangleMeshShape  ( ::btScaledBvhTriangleMeshShape::* )( ::btBvhTriangleMeshShape *,::btVector3 const & ) +void btScaledBvhTriangleMeshShape_free(void *c); void btScaledBvhTriangleMeshShape_calculateLocalInertia(void *c,float p0,float* p1); //method: calculateLocalInertia void ( ::btScaledBvhTriangleMeshShape::* )( ::btScalar,::btVector3 & ) const+void* btScaledBvhTriangleMeshShape_getChildShape(void *c); //method: getChildShape ::btBvhTriangleMeshShape * ( ::btScaledBvhTriangleMeshShape::* )(  ) +void* btScaledBvhTriangleMeshShape_getChildShape0(void *c); //method: getChildShape ::btBvhTriangleMeshShape * ( ::btScaledBvhTriangleMeshShape::* )(  ) +void* btScaledBvhTriangleMeshShape_getChildShape1(void *c); //method: getChildShape ::btBvhTriangleMeshShape const * ( ::btScaledBvhTriangleMeshShape::* )(  ) const+int btScaledBvhTriangleMeshShape_calculateSerializeBufferSize(void *c); //method: calculateSerializeBufferSize int ( ::btScaledBvhTriangleMeshShape::* )(  ) const+char const * btScaledBvhTriangleMeshShape_getName(void *c); //method: getName char const * ( ::btScaledBvhTriangleMeshShape::* )(  ) const+//not supported method: serialize char const * ( ::btScaledBvhTriangleMeshShape::* )( void *,::btSerializer * ) const+void btScaledBvhTriangleMeshShape_getLocalScaling(void *c,float* ret); //method: getLocalScaling ::btVector3 const & ( ::btScaledBvhTriangleMeshShape::* )(  ) const+void btScaledBvhTriangleMeshShape_setLocalScaling(void *c,float* p0); //method: setLocalScaling void ( ::btScaledBvhTriangleMeshShape::* )( ::btVector3 const & ) +void btScaledBvhTriangleMeshShape_getAabb(void *c,float* p0,float* p1,float* p2); //method: getAabb void ( ::btScaledBvhTriangleMeshShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btScaledBvhTriangleMeshShape_processAllTriangles(void *c,void* p0,float* p1,float* p2); //method: processAllTriangles void ( ::btScaledBvhTriangleMeshShape::* )( ::btTriangleCallback *,::btVector3 const &,::btVector3 const & ) const+void* btScaledTriangleMeshShapeData_new(); //constructor: btScaledTriangleMeshShapeData  ( ::btScaledTriangleMeshShapeData::* )(  ) +void btScaledTriangleMeshShapeData_free(void *c); // attribute not supported: //attribute: ::btTriangleMeshShapeData btScaledTriangleMeshShapeData->m_trimeshShapeData+// attribute not supported: //attribute: ::btVector3FloatData btScaledTriangleMeshShapeData->m_localScaling+void* btShortIntIndexData_new(); //constructor: btShortIntIndexData  ( ::btShortIntIndexData::* )(  ) +void btShortIntIndexData_free(void *c); // attribute not supported: //attribute: char[2] btShortIntIndexData->m_pad+void btShortIntIndexData_m_value_set(void *c,short int a); //attribute: short int btShortIntIndexData->m_value+short int btShortIntIndexData_m_value_get(void *c); //attribute: short int btShortIntIndexData->m_value+void* btShortIntIndexTripletData_new(); //constructor: btShortIntIndexTripletData  ( ::btShortIntIndexTripletData::* )(  ) +void btShortIntIndexTripletData_free(void *c); // attribute not supported: //attribute: char[2] btShortIntIndexTripletData->m_pad+// attribute not supported: //attribute: short int[3] btShortIntIndexTripletData->m_values+void* btSphereShape_new(float p0); //constructor: btSphereShape  ( ::btSphereShape::* )( ::btScalar ) +void btSphereShape_free(void *c); void btSphereShape_calculateLocalInertia(void *c,float p0,float* p1); //method: calculateLocalInertia void ( ::btSphereShape::* )( ::btScalar,::btVector3 & ) const+void btSphereShape_localGetSupportingVertex(void *c,float* p0,float* ret); //method: localGetSupportingVertex ::btVector3 ( ::btSphereShape::* )( ::btVector3 const & ) const+//not supported method: batchedUnitVectorGetSupportingVertexWithoutMargin void ( ::btSphereShape::* )( ::btVector3 const *,::btVector3 *,int ) const+char const * btSphereShape_getName(void *c); //method: getName char const * ( ::btSphereShape::* )(  ) const+float btSphereShape_getMargin(void *c); //method: getMargin ::btScalar ( ::btSphereShape::* )(  ) const+void btSphereShape_setMargin(void *c,float p0); //method: setMargin void ( ::btSphereShape::* )( ::btScalar ) +void btSphereShape_getAabb(void *c,float* p0,float* p1,float* p2); //method: getAabb void ( ::btSphereShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btSphereShape_setUnscaledRadius(void *c,float p0); //method: setUnscaledRadius void ( ::btSphereShape::* )( ::btScalar ) +void btSphereShape_localGetSupportingVertexWithoutMargin(void *c,float* p0,float* ret); //method: localGetSupportingVertexWithoutMargin ::btVector3 ( ::btSphereShape::* )( ::btVector3 const & ) const+float btSphereShape_getRadius(void *c); //method: getRadius ::btScalar ( ::btSphereShape::* )(  ) const+void* btStaticPlaneShape_new(float* p0,float p1); //constructor: btStaticPlaneShape  ( ::btStaticPlaneShape::* )( ::btVector3 const &,::btScalar ) +void btStaticPlaneShape_free(void *c); void btStaticPlaneShape_calculateLocalInertia(void *c,float p0,float* p1); //method: calculateLocalInertia void ( ::btStaticPlaneShape::* )( ::btScalar,::btVector3 & ) const+int btStaticPlaneShape_calculateSerializeBufferSize(void *c); //method: calculateSerializeBufferSize int ( ::btStaticPlaneShape::* )(  ) const+char const * btStaticPlaneShape_getName(void *c); //method: getName char const * ( ::btStaticPlaneShape::* )(  ) const+//not supported method: serialize char const * ( ::btStaticPlaneShape::* )( void *,::btSerializer * ) const+void btStaticPlaneShape_getLocalScaling(void *c,float* ret); //method: getLocalScaling ::btVector3 const & ( ::btStaticPlaneShape::* )(  ) const+void btStaticPlaneShape_getPlaneNormal(void *c,float* ret); //method: getPlaneNormal ::btVector3 const & ( ::btStaticPlaneShape::* )(  ) const+float btStaticPlaneShape_getPlaneConstant(void *c); //method: getPlaneConstant ::btScalar const & ( ::btStaticPlaneShape::* )(  ) const+void btStaticPlaneShape_setLocalScaling(void *c,float* p0); //method: setLocalScaling void ( ::btStaticPlaneShape::* )( ::btVector3 const & ) +void btStaticPlaneShape_getAabb(void *c,float* p0,float* p1,float* p2); //method: getAabb void ( ::btStaticPlaneShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btStaticPlaneShape_processAllTriangles(void *c,void* p0,float* p1,float* p2); //method: processAllTriangles void ( ::btStaticPlaneShape::* )( ::btTriangleCallback *,::btVector3 const &,::btVector3 const & ) const+void* btStaticPlaneShapeData_new(); //constructor: btStaticPlaneShapeData  ( ::btStaticPlaneShapeData::* )(  ) +void btStaticPlaneShapeData_free(void *c); // attribute not supported: //attribute: ::btCollisionShapeData btStaticPlaneShapeData->m_collisionShapeData+// attribute not supported: //attribute: ::btVector3FloatData btStaticPlaneShapeData->m_localScaling+// attribute not supported: //attribute: ::btVector3FloatData btStaticPlaneShapeData->m_planeNormal+void btStaticPlaneShapeData_m_planeConstant_set(void *c,float a); //attribute: float btStaticPlaneShapeData->m_planeConstant+float btStaticPlaneShapeData_m_planeConstant_get(void *c); //attribute: float btStaticPlaneShapeData->m_planeConstant+// attribute not supported: //attribute: char[4] btStaticPlaneShapeData->m_pad+//not supported method: getLockedReadOnlyVertexIndexBase void ( ::btStridingMeshInterface::* )( unsigned char const * *,int &,::PHY_ScalarType &,int &,unsigned char const * *,int &,int &,::PHY_ScalarType &,int ) const+int btStridingMeshInterface_calculateSerializeBufferSize(void *c); //method: calculateSerializeBufferSize int ( ::btStridingMeshInterface::* )(  ) const+void btStridingMeshInterface_calculateAabbBruteForce(void *c,float* p0,float* p1); //method: calculateAabbBruteForce void ( ::btStridingMeshInterface::* )( ::btVector3 &,::btVector3 & ) +//not supported method: serialize char const * ( ::btStridingMeshInterface::* )( void *,::btSerializer * ) const+void btStridingMeshInterface_preallocateVertices(void *c,int p0); //method: preallocateVertices void ( ::btStridingMeshInterface::* )( int ) +void btStridingMeshInterface_unLockVertexBase(void *c,int p0); //method: unLockVertexBase void ( ::btStridingMeshInterface::* )( int ) +void btStridingMeshInterface_getScaling(void *c,float* ret); //method: getScaling ::btVector3 const & ( ::btStridingMeshInterface::* )(  ) const+void btStridingMeshInterface_preallocateIndices(void *c,int p0); //method: preallocateIndices void ( ::btStridingMeshInterface::* )( int ) +void btStridingMeshInterface_setPremadeAabb(void *c,float* p0,float* p1); //method: setPremadeAabb void ( ::btStridingMeshInterface::* )( ::btVector3 const &,::btVector3 const & ) const+void btStridingMeshInterface_InternalProcessAllTriangles(void *c,void* p0,float* p1,float* p2); //method: InternalProcessAllTriangles void ( ::btStridingMeshInterface::* )( ::btInternalTriangleIndexCallback *,::btVector3 const &,::btVector3 const & ) const+//not supported method: getPremadeAabb void ( ::btStridingMeshInterface::* )( ::btVector3 *,::btVector3 * ) const+int btStridingMeshInterface_getNumSubParts(void *c); //method: getNumSubParts int ( ::btStridingMeshInterface::* )(  ) const+//not supported method: getLockedVertexIndexBase void ( ::btStridingMeshInterface::* )( unsigned char * *,int &,::PHY_ScalarType &,int &,unsigned char * *,int &,int &,::PHY_ScalarType &,int ) +int btStridingMeshInterface_hasPremadeAabb(void *c); //method: hasPremadeAabb bool ( ::btStridingMeshInterface::* )(  ) const+void btStridingMeshInterface_setScaling(void *c,float* p0); //method: setScaling void ( ::btStridingMeshInterface::* )( ::btVector3 const & ) +void btStridingMeshInterface_unLockReadOnlyVertexBase(void *c,int p0); //method: unLockReadOnlyVertexBase void ( ::btStridingMeshInterface::* )( int ) const+void* btStridingMeshInterfaceData_new(); //constructor: btStridingMeshInterfaceData  ( ::btStridingMeshInterfaceData::* )(  ) +void btStridingMeshInterfaceData_free(void *c); void btStridingMeshInterfaceData_m_meshPartsPtr_set(void *c,void* a); //attribute: ::btMeshPartData * btStridingMeshInterfaceData->m_meshPartsPtr+// attribute getter not supported: //attribute: ::btMeshPartData * btStridingMeshInterfaceData->m_meshPartsPtr+// attribute not supported: //attribute: ::btVector3FloatData btStridingMeshInterfaceData->m_scaling+void btStridingMeshInterfaceData_m_numMeshParts_set(void *c,int a); //attribute: int btStridingMeshInterfaceData->m_numMeshParts+int btStridingMeshInterfaceData_m_numMeshParts_get(void *c); //attribute: int btStridingMeshInterfaceData->m_numMeshParts+// attribute not supported: //attribute: char[4] btStridingMeshInterfaceData->m_padding+//not supported method: processTriangle void ( ::btTriangleCallback::* )( ::btVector3 *,int,int ) +void* btTriangleIndexVertexArray_new0(); //constructor: btTriangleIndexVertexArray  ( ::btTriangleIndexVertexArray::* )(  ) +//not supported constructor: btTriangleIndexVertexArray  ( ::btTriangleIndexVertexArray::* )( int,int *,int,int,::btScalar *,int ) +void btTriangleIndexVertexArray_free(void *c); //not supported method: getLockedReadOnlyVertexIndexBase void ( ::btTriangleIndexVertexArray::* )( unsigned char const * *,int &,::PHY_ScalarType &,int &,unsigned char const * *,int &,int &,::PHY_ScalarType &,int ) const+void btTriangleIndexVertexArray_preallocateIndices(void *c,int p0); //method: preallocateIndices void ( ::btTriangleIndexVertexArray::* )( int ) +void btTriangleIndexVertexArray_preallocateVertices(void *c,int p0); //method: preallocateVertices void ( ::btTriangleIndexVertexArray::* )( int ) +//not supported method: getIndexedMeshArray ::IndexedMeshArray & ( ::btTriangleIndexVertexArray::* )(  ) +//not supported method: getIndexedMeshArray ::IndexedMeshArray & ( ::btTriangleIndexVertexArray::* )(  ) +//not supported method: getIndexedMeshArray ::IndexedMeshArray const & ( ::btTriangleIndexVertexArray::* )(  ) const+void btTriangleIndexVertexArray_setPremadeAabb(void *c,float* p0,float* p1); //method: setPremadeAabb void ( ::btTriangleIndexVertexArray::* )( ::btVector3 const &,::btVector3 const & ) const+//not supported method: getPremadeAabb void ( ::btTriangleIndexVertexArray::* )( ::btVector3 *,::btVector3 * ) const+//not supported method: addIndexedMesh void ( ::btTriangleIndexVertexArray::* )( ::btIndexedMesh const &,::PHY_ScalarType ) +int btTriangleIndexVertexArray_getNumSubParts(void *c); //method: getNumSubParts int ( ::btTriangleIndexVertexArray::* )(  ) const+//not supported method: getLockedVertexIndexBase void ( ::btTriangleIndexVertexArray::* )( unsigned char * *,int &,::PHY_ScalarType &,int &,unsigned char * *,int &,int &,::PHY_ScalarType &,int ) +int btTriangleIndexVertexArray_hasPremadeAabb(void *c); //method: hasPremadeAabb bool ( ::btTriangleIndexVertexArray::* )(  ) const+void btTriangleIndexVertexArray_unLockVertexBase(void *c,int p0); //method: unLockVertexBase void ( ::btTriangleIndexVertexArray::* )( int ) +void btTriangleIndexVertexArray_unLockReadOnlyVertexBase(void *c,int p0); //method: unLockReadOnlyVertexBase void ( ::btTriangleIndexVertexArray::* )( int ) const+void* btTriangleInfo_new(); //constructor: btTriangleInfo  ( ::btTriangleInfo::* )(  ) +void btTriangleInfo_free(void *c); void btTriangleInfo_m_flags_set(void *c,int a); //attribute: int btTriangleInfo->m_flags+int btTriangleInfo_m_flags_get(void *c); //attribute: int btTriangleInfo->m_flags+void btTriangleInfo_m_edgeV0V1Angle_set(void *c,float a); //attribute: ::btScalar btTriangleInfo->m_edgeV0V1Angle+float btTriangleInfo_m_edgeV0V1Angle_get(void *c); //attribute: ::btScalar btTriangleInfo->m_edgeV0V1Angle+void btTriangleInfo_m_edgeV1V2Angle_set(void *c,float a); //attribute: ::btScalar btTriangleInfo->m_edgeV1V2Angle+float btTriangleInfo_m_edgeV1V2Angle_get(void *c); //attribute: ::btScalar btTriangleInfo->m_edgeV1V2Angle+void btTriangleInfo_m_edgeV2V0Angle_set(void *c,float a); //attribute: ::btScalar btTriangleInfo->m_edgeV2V0Angle+float btTriangleInfo_m_edgeV2V0Angle_get(void *c); //attribute: ::btScalar btTriangleInfo->m_edgeV2V0Angle+void* btTriangleInfoData_new(); //constructor: btTriangleInfoData  ( ::btTriangleInfoData::* )(  ) +void btTriangleInfoData_free(void *c); void btTriangleInfoData_m_flags_set(void *c,int a); //attribute: int btTriangleInfoData->m_flags+int btTriangleInfoData_m_flags_get(void *c); //attribute: int btTriangleInfoData->m_flags+void btTriangleInfoData_m_edgeV0V1Angle_set(void *c,float a); //attribute: float btTriangleInfoData->m_edgeV0V1Angle+float btTriangleInfoData_m_edgeV0V1Angle_get(void *c); //attribute: float btTriangleInfoData->m_edgeV0V1Angle+void btTriangleInfoData_m_edgeV1V2Angle_set(void *c,float a); //attribute: float btTriangleInfoData->m_edgeV1V2Angle+float btTriangleInfoData_m_edgeV1V2Angle_get(void *c); //attribute: float btTriangleInfoData->m_edgeV1V2Angle+void btTriangleInfoData_m_edgeV2V0Angle_set(void *c,float a); //attribute: float btTriangleInfoData->m_edgeV2V0Angle+float btTriangleInfoData_m_edgeV2V0Angle_get(void *c); //attribute: float btTriangleInfoData->m_edgeV2V0Angle+void* btTriangleInfoMap_new(); //constructor: btTriangleInfoMap  ( ::btTriangleInfoMap::* )(  ) +void btTriangleInfoMap_free(void *c); //not supported method: serialize char const * ( ::btTriangleInfoMap::* )( void *,::btSerializer * ) const+int btTriangleInfoMap_calculateSerializeBufferSize(void *c); //method: calculateSerializeBufferSize int ( ::btTriangleInfoMap::* )(  ) const+void btTriangleInfoMap_deSerialize(void *c,void* p0); //method: deSerialize void ( ::btTriangleInfoMap::* )( ::btTriangleInfoMapData & ) +void btTriangleInfoMap_m_convexEpsilon_set(void *c,float a); //attribute: ::btScalar btTriangleInfoMap->m_convexEpsilon+float btTriangleInfoMap_m_convexEpsilon_get(void *c); //attribute: ::btScalar btTriangleInfoMap->m_convexEpsilon+void btTriangleInfoMap_m_edgeDistanceThreshold_set(void *c,float a); //attribute: ::btScalar btTriangleInfoMap->m_edgeDistanceThreshold+float btTriangleInfoMap_m_edgeDistanceThreshold_get(void *c); //attribute: ::btScalar btTriangleInfoMap->m_edgeDistanceThreshold+void btTriangleInfoMap_m_equalVertexThreshold_set(void *c,float a); //attribute: ::btScalar btTriangleInfoMap->m_equalVertexThreshold+float btTriangleInfoMap_m_equalVertexThreshold_get(void *c); //attribute: ::btScalar btTriangleInfoMap->m_equalVertexThreshold+void btTriangleInfoMap_m_maxEdgeAngleThreshold_set(void *c,float a); //attribute: ::btScalar btTriangleInfoMap->m_maxEdgeAngleThreshold+float btTriangleInfoMap_m_maxEdgeAngleThreshold_get(void *c); //attribute: ::btScalar btTriangleInfoMap->m_maxEdgeAngleThreshold+void btTriangleInfoMap_m_planarEpsilon_set(void *c,float a); //attribute: ::btScalar btTriangleInfoMap->m_planarEpsilon+float btTriangleInfoMap_m_planarEpsilon_get(void *c); //attribute: ::btScalar btTriangleInfoMap->m_planarEpsilon+void btTriangleInfoMap_m_zeroAreaThreshold_set(void *c,float a); //attribute: ::btScalar btTriangleInfoMap->m_zeroAreaThreshold+float btTriangleInfoMap_m_zeroAreaThreshold_get(void *c); //attribute: ::btScalar btTriangleInfoMap->m_zeroAreaThreshold+void* btTriangleInfoMapData_new(); //constructor: btTriangleInfoMapData  ( ::btTriangleInfoMapData::* )(  ) +void btTriangleInfoMapData_free(void *c); void btTriangleInfoMapData_m_convexEpsilon_set(void *c,float a); //attribute: float btTriangleInfoMapData->m_convexEpsilon+float btTriangleInfoMapData_m_convexEpsilon_get(void *c); //attribute: float btTriangleInfoMapData->m_convexEpsilon+void btTriangleInfoMapData_m_edgeDistanceThreshold_set(void *c,float a); //attribute: float btTriangleInfoMapData->m_edgeDistanceThreshold+float btTriangleInfoMapData_m_edgeDistanceThreshold_get(void *c); //attribute: float btTriangleInfoMapData->m_edgeDistanceThreshold+void btTriangleInfoMapData_m_equalVertexThreshold_set(void *c,float a); //attribute: float btTriangleInfoMapData->m_equalVertexThreshold+float btTriangleInfoMapData_m_equalVertexThreshold_get(void *c); //attribute: float btTriangleInfoMapData->m_equalVertexThreshold+// attribute not supported: //attribute: int * btTriangleInfoMapData->m_hashTablePtr+void btTriangleInfoMapData_m_hashTableSize_set(void *c,int a); //attribute: int btTriangleInfoMapData->m_hashTableSize+int btTriangleInfoMapData_m_hashTableSize_get(void *c); //attribute: int btTriangleInfoMapData->m_hashTableSize+// attribute not supported: //attribute: int * btTriangleInfoMapData->m_keyArrayPtr+// attribute not supported: //attribute: int * btTriangleInfoMapData->m_nextPtr+void btTriangleInfoMapData_m_nextSize_set(void *c,int a); //attribute: int btTriangleInfoMapData->m_nextSize+int btTriangleInfoMapData_m_nextSize_get(void *c); //attribute: int btTriangleInfoMapData->m_nextSize+void btTriangleInfoMapData_m_numKeys_set(void *c,int a); //attribute: int btTriangleInfoMapData->m_numKeys+int btTriangleInfoMapData_m_numKeys_get(void *c); //attribute: int btTriangleInfoMapData->m_numKeys+void btTriangleInfoMapData_m_numValues_set(void *c,int a); //attribute: int btTriangleInfoMapData->m_numValues+int btTriangleInfoMapData_m_numValues_get(void *c); //attribute: int btTriangleInfoMapData->m_numValues+// attribute not supported: //attribute: char[4] btTriangleInfoMapData->m_padding+void btTriangleInfoMapData_m_planarEpsilon_set(void *c,float a); //attribute: float btTriangleInfoMapData->m_planarEpsilon+float btTriangleInfoMapData_m_planarEpsilon_get(void *c); //attribute: float btTriangleInfoMapData->m_planarEpsilon+void btTriangleInfoMapData_m_valueArrayPtr_set(void *c,void* a); //attribute: ::btTriangleInfoData * btTriangleInfoMapData->m_valueArrayPtr+// attribute getter not supported: //attribute: ::btTriangleInfoData * btTriangleInfoMapData->m_valueArrayPtr+void btTriangleInfoMapData_m_zeroAreaThreshold_set(void *c,float a); //attribute: float btTriangleInfoMapData->m_zeroAreaThreshold+float btTriangleInfoMapData_m_zeroAreaThreshold_get(void *c); //attribute: float btTriangleInfoMapData->m_zeroAreaThreshold+void* btTriangleMesh_new(int p0,int p1); //constructor: btTriangleMesh  ( ::btTriangleMesh::* )( bool,bool ) +void btTriangleMesh_free(void *c); void btTriangleMesh_preallocateIndices(void *c,int p0); //method: preallocateIndices void ( ::btTriangleMesh::* )( int ) +int btTriangleMesh_getNumTriangles(void *c); //method: getNumTriangles int ( ::btTriangleMesh::* )(  ) const+int btTriangleMesh_getUse32bitIndices(void *c); //method: getUse32bitIndices bool ( ::btTriangleMesh::* )(  ) const+void btTriangleMesh_addIndex(void *c,int p0); //method: addIndex void ( ::btTriangleMesh::* )( int ) +void btTriangleMesh_preallocateVertices(void *c,int p0); //method: preallocateVertices void ( ::btTriangleMesh::* )( int ) +int btTriangleMesh_findOrAddVertex(void *c,float* p0,int p1); //method: findOrAddVertex int ( ::btTriangleMesh::* )( ::btVector3 const &,bool ) +int btTriangleMesh_getUse4componentVertices(void *c); //method: getUse4componentVertices bool ( ::btTriangleMesh::* )(  ) const+void btTriangleMesh_addTriangle(void *c,float* p0,float* p1,float* p2,int p3); //method: addTriangle void ( ::btTriangleMesh::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,bool ) +void btTriangleMesh_m_weldingThreshold_set(void *c,float a); //attribute: ::btScalar btTriangleMesh->m_weldingThreshold+float btTriangleMesh_m_weldingThreshold_get(void *c); //attribute: ::btScalar btTriangleMesh->m_weldingThreshold+void btTriangleMeshShape_free(void *c); void btTriangleMeshShape_calculateLocalInertia(void *c,float p0,float* p1); //method: calculateLocalInertia void ( ::btTriangleMeshShape::* )( ::btScalar,::btVector3 & ) const+void btTriangleMeshShape_getLocalAabbMax(void *c,float* ret); //method: getLocalAabbMax ::btVector3 const & ( ::btTriangleMeshShape::* )(  ) const+void btTriangleMeshShape_localGetSupportingVertex(void *c,float* p0,float* ret); //method: localGetSupportingVertex ::btVector3 ( ::btTriangleMeshShape::* )( ::btVector3 const & ) const+char const * btTriangleMeshShape_getName(void *c); //method: getName char const * ( ::btTriangleMeshShape::* )(  ) const+void btTriangleMeshShape_getLocalScaling(void *c,float* ret); //method: getLocalScaling ::btVector3 const & ( ::btTriangleMeshShape::* )(  ) const+void btTriangleMeshShape_recalcLocalAabb(void *c); //method: recalcLocalAabb void ( ::btTriangleMeshShape::* )(  ) +void btTriangleMeshShape_setLocalScaling(void *c,float* p0); //method: setLocalScaling void ( ::btTriangleMeshShape::* )( ::btVector3 const & ) +void* btTriangleMeshShape_getMeshInterface(void *c); //method: getMeshInterface ::btStridingMeshInterface * ( ::btTriangleMeshShape::* )(  ) +void* btTriangleMeshShape_getMeshInterface0(void *c); //method: getMeshInterface ::btStridingMeshInterface * ( ::btTriangleMeshShape::* )(  ) +void* btTriangleMeshShape_getMeshInterface1(void *c); //method: getMeshInterface ::btStridingMeshInterface const * ( ::btTriangleMeshShape::* )(  ) const+void btTriangleMeshShape_getAabb(void *c,float* p0,float* p1,float* p2); //method: getAabb void ( ::btTriangleMeshShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btTriangleMeshShape_processAllTriangles(void *c,void* p0,float* p1,float* p2); //method: processAllTriangles void ( ::btTriangleMeshShape::* )( ::btTriangleCallback *,::btVector3 const &,::btVector3 const & ) const+void btTriangleMeshShape_localGetSupportingVertexWithoutMargin(void *c,float* p0,float* ret); //method: localGetSupportingVertexWithoutMargin ::btVector3 ( ::btTriangleMeshShape::* )( ::btVector3 const & ) const+void btTriangleMeshShape_getLocalAabbMin(void *c,float* ret); //method: getLocalAabbMin ::btVector3 const & ( ::btTriangleMeshShape::* )(  ) const+void* btTriangleMeshShapeData_new(); //constructor: btTriangleMeshShapeData  ( ::btTriangleMeshShapeData::* )(  ) +void btTriangleMeshShapeData_free(void *c); void btTriangleMeshShapeData_m_collisionMargin_set(void *c,float a); //attribute: float btTriangleMeshShapeData->m_collisionMargin+float btTriangleMeshShapeData_m_collisionMargin_get(void *c); //attribute: float btTriangleMeshShapeData->m_collisionMargin+// attribute not supported: //attribute: ::btCollisionShapeData btTriangleMeshShapeData->m_collisionShapeData+// attribute not supported: //attribute: ::btStridingMeshInterfaceData btTriangleMeshShapeData->m_meshInterface+// attribute not supported: //attribute: char[4] btTriangleMeshShapeData->m_pad3+void btTriangleMeshShapeData_m_quantizedDoubleBvh_set(void *c,void* a); //attribute: ::btQuantizedBvhDoubleData * btTriangleMeshShapeData->m_quantizedDoubleBvh+// attribute getter not supported: //attribute: ::btQuantizedBvhDoubleData * btTriangleMeshShapeData->m_quantizedDoubleBvh+void btTriangleMeshShapeData_m_quantizedFloatBvh_set(void *c,void* a); //attribute: ::btQuantizedBvhFloatData * btTriangleMeshShapeData->m_quantizedFloatBvh+// attribute getter not supported: //attribute: ::btQuantizedBvhFloatData * btTriangleMeshShapeData->m_quantizedFloatBvh+void btTriangleMeshShapeData_m_triangleInfoMap_set(void *c,void* a); //attribute: ::btTriangleInfoMapData * btTriangleMeshShapeData->m_triangleInfoMap+// attribute getter not supported: //attribute: ::btTriangleInfoMapData * btTriangleMeshShapeData->m_triangleInfoMap+void* btTriangleShape_new0(); //constructor: btTriangleShape  ( ::btTriangleShape::* )(  ) +void* btTriangleShape_new1(float* p0,float* p1,float* p2); //constructor: btTriangleShape  ( ::btTriangleShape::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void btTriangleShape_free(void *c); void btTriangleShape_getVertexPtr(void *c,int p0,float* ret); //method: getVertexPtr ::btVector3 & ( ::btTriangleShape::* )( int ) +void btTriangleShape_getVertexPtr0(void *c,int p0,float* ret); //method: getVertexPtr ::btVector3 & ( ::btTriangleShape::* )( int ) +void btTriangleShape_getVertexPtr1(void *c,int p0,float* ret); //method: getVertexPtr ::btVector3 const & ( ::btTriangleShape::* )( int ) const+int btTriangleShape_getNumPlanes(void *c); //method: getNumPlanes int ( ::btTriangleShape::* )(  ) const+//not supported method: batchedUnitVectorGetSupportingVertexWithoutMargin void ( ::btTriangleShape::* )( ::btVector3 const *,::btVector3 *,int ) const+void btTriangleShape_getPreferredPenetrationDirection(void *c,int p0,float* p1); //method: getPreferredPenetrationDirection void ( ::btTriangleShape::* )( int,::btVector3 & ) const+int btTriangleShape_getNumEdges(void *c); //method: getNumEdges int ( ::btTriangleShape::* )(  ) const+char const * btTriangleShape_getName(void *c); //method: getName char const * ( ::btTriangleShape::* )(  ) const+int btTriangleShape_getNumVertices(void *c); //method: getNumVertices int ( ::btTriangleShape::* )(  ) const+void btTriangleShape_getEdge(void *c,int p0,float* p1,float* p2); //method: getEdge void ( ::btTriangleShape::* )( int,::btVector3 &,::btVector3 & ) const+int btTriangleShape_isInside(void *c,float* p0,float p1); //method: isInside bool ( ::btTriangleShape::* )( ::btVector3 const &,::btScalar ) const+void btTriangleShape_getPlane(void *c,float* p0,float* p1,int p2); //method: getPlane void ( ::btTriangleShape::* )( ::btVector3 &,::btVector3 &,int ) const+int btTriangleShape_getNumPreferredPenetrationDirections(void *c); //method: getNumPreferredPenetrationDirections int ( ::btTriangleShape::* )(  ) const+void btTriangleShape_getAabb(void *c,float* p0,float* p1,float* p2); //method: getAabb void ( ::btTriangleShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btTriangleShape_getVertex(void *c,int p0,float* p1); //method: getVertex void ( ::btTriangleShape::* )( int,::btVector3 & ) const+void btTriangleShape_calcNormal(void *c,float* p0); //method: calcNormal void ( ::btTriangleShape::* )( ::btVector3 & ) const+void btTriangleShape_calculateLocalInertia(void *c,float p0,float* p1); //method: calculateLocalInertia void ( ::btTriangleShape::* )( ::btScalar,::btVector3 & ) const+void btTriangleShape_getPlaneEquation(void *c,int p0,float* p1,float* p2); //method: getPlaneEquation void ( ::btTriangleShape::* )( int,::btVector3 &,::btVector3 & ) const+void btTriangleShape_localGetSupportingVertexWithoutMargin(void *c,float* p0,float* ret); //method: localGetSupportingVertexWithoutMargin ::btVector3 ( ::btTriangleShape::* )( ::btVector3 const & ) const+// attribute not supported: //attribute: ::btVector3[3] btTriangleShape->m_vertices1+void* btUniformScalingShape_new(void* p0,float p1); //constructor: btUniformScalingShape  ( ::btUniformScalingShape::* )( ::btConvexShape *,::btScalar ) +void btUniformScalingShape_free(void *c); void btUniformScalingShape_calculateLocalInertia(void *c,float p0,float* p1); //method: calculateLocalInertia void ( ::btUniformScalingShape::* )( ::btScalar,::btVector3 & ) const+float btUniformScalingShape_getUniformScalingFactor(void *c); //method: getUniformScalingFactor ::btScalar ( ::btUniformScalingShape::* )(  ) const+void btUniformScalingShape_localGetSupportingVertex(void *c,float* p0,float* ret); //method: localGetSupportingVertex ::btVector3 ( ::btUniformScalingShape::* )( ::btVector3 const & ) const+//not supported method: batchedUnitVectorGetSupportingVertexWithoutMargin void ( ::btUniformScalingShape::* )( ::btVector3 const *,::btVector3 *,int ) const+char const * btUniformScalingShape_getName(void *c); //method: getName char const * ( ::btUniformScalingShape::* )(  ) const+void btUniformScalingShape_getAabbSlow(void *c,float* p0,float* p1,float* p2); //method: getAabbSlow void ( ::btUniformScalingShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btUniformScalingShape_getLocalScaling(void *c,float* ret); //method: getLocalScaling ::btVector3 const & ( ::btUniformScalingShape::* )(  ) const+void* btUniformScalingShape_getChildShape(void *c); //method: getChildShape ::btConvexShape * ( ::btUniformScalingShape::* )(  ) +void* btUniformScalingShape_getChildShape0(void *c); //method: getChildShape ::btConvexShape * ( ::btUniformScalingShape::* )(  ) +void* btUniformScalingShape_getChildShape1(void *c); //method: getChildShape ::btConvexShape const * ( ::btUniformScalingShape::* )(  ) const+void btUniformScalingShape_getPreferredPenetrationDirection(void *c,int p0,float* p1); //method: getPreferredPenetrationDirection void ( ::btUniformScalingShape::* )( int,::btVector3 & ) const+void btUniformScalingShape_setLocalScaling(void *c,float* p0); //method: setLocalScaling void ( ::btUniformScalingShape::* )( ::btVector3 const & ) +int btUniformScalingShape_getNumPreferredPenetrationDirections(void *c); //method: getNumPreferredPenetrationDirections int ( ::btUniformScalingShape::* )(  ) const+void btUniformScalingShape_getAabb(void *c,float* p0,float* p1,float* p2); //method: getAabb void ( ::btUniformScalingShape::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void btUniformScalingShape_setMargin(void *c,float p0); //method: setMargin void ( ::btUniformScalingShape::* )( ::btScalar ) +float btUniformScalingShape_getMargin(void *c); //method: getMargin ::btScalar ( ::btUniformScalingShape::* )(  ) const+void btUniformScalingShape_localGetSupportingVertexWithoutMargin(void *c,float* p0,float* ret); //method: localGetSupportingVertexWithoutMargin ::btVector3 ( ::btUniformScalingShape::* )( ::btVector3 const & ) const+void* bT_BOX_BOX_TRANSFORM_CACHE_new(); //constructor: BT_BOX_BOX_TRANSFORM_CACHE  ( ::BT_BOX_BOX_TRANSFORM_CACHE::* )(  ) +void bT_BOX_BOX_TRANSFORM_CACHE_free(void *c); void bT_BOX_BOX_TRANSFORM_CACHE_calc_from_full_invert(void *c,float* p0,float* p1); //method: calc_from_full_invert void ( ::BT_BOX_BOX_TRANSFORM_CACHE::* )( ::btTransform const &,::btTransform const & ) +void bT_BOX_BOX_TRANSFORM_CACHE_calc_from_homogenic(void *c,float* p0,float* p1); //method: calc_from_homogenic void ( ::BT_BOX_BOX_TRANSFORM_CACHE::* )( ::btTransform const &,::btTransform const & ) +void bT_BOX_BOX_TRANSFORM_CACHE_transform(void *c,float* p0,float* ret); //method: transform ::btVector3 ( ::BT_BOX_BOX_TRANSFORM_CACHE::* )( ::btVector3 const & ) const+void bT_BOX_BOX_TRANSFORM_CACHE_calc_absolute_matrix(void *c); //method: calc_absolute_matrix void ( ::BT_BOX_BOX_TRANSFORM_CACHE::* )(  ) +void bT_BOX_BOX_TRANSFORM_CACHE_m_T1to0_set(void *c,float* a); //attribute: ::btVector3 bT_BOX_BOX_TRANSFORM_CACHE->m_T1to0+void bT_BOX_BOX_TRANSFORM_CACHE_m_T1to0_get(void *c,float* a);+void bT_BOX_BOX_TRANSFORM_CACHE_m_R1to0_set(void *c,float* a); //attribute: ::btMatrix3x3 bT_BOX_BOX_TRANSFORM_CACHE->m_R1to0+void bT_BOX_BOX_TRANSFORM_CACHE_m_R1to0_get(void *c,float* a);+void bT_BOX_BOX_TRANSFORM_CACHE_m_AR_set(void *c,float* a); //attribute: ::btMatrix3x3 bT_BOX_BOX_TRANSFORM_CACHE->m_AR+void bT_BOX_BOX_TRANSFORM_CACHE_m_AR_get(void *c,float* a);+void* bT_QUANTIZED_BVH_NODE_new(); //constructor: BT_QUANTIZED_BVH_NODE  ( ::BT_QUANTIZED_BVH_NODE::* )(  ) +void bT_QUANTIZED_BVH_NODE_free(void *c); int bT_QUANTIZED_BVH_NODE_getEscapeIndex(void *c); //method: getEscapeIndex int ( ::BT_QUANTIZED_BVH_NODE::* )(  ) const+int bT_QUANTIZED_BVH_NODE_getDataIndex(void *c); //method: getDataIndex int ( ::BT_QUANTIZED_BVH_NODE::* )(  ) const+void bT_QUANTIZED_BVH_NODE_setEscapeIndex(void *c,int p0); //method: setEscapeIndex void ( ::BT_QUANTIZED_BVH_NODE::* )( int ) +void bT_QUANTIZED_BVH_NODE_setDataIndex(void *c,int p0); //method: setDataIndex void ( ::BT_QUANTIZED_BVH_NODE::* )( int ) +int bT_QUANTIZED_BVH_NODE_isLeafNode(void *c); //method: isLeafNode bool ( ::BT_QUANTIZED_BVH_NODE::* )(  ) const+//not supported method: testQuantizedBoxOverlapp bool ( ::BT_QUANTIZED_BVH_NODE::* )( short unsigned int *,short unsigned int * ) const+// attribute not supported: //attribute: short unsigned int[3] bT_QUANTIZED_BVH_NODE->m_quantizedAabbMin+// attribute not supported: //attribute: short unsigned int[3] bT_QUANTIZED_BVH_NODE->m_quantizedAabbMax+void bT_QUANTIZED_BVH_NODE_m_escapeIndexOrDataIndex_set(void *c,int a); //attribute: int bT_QUANTIZED_BVH_NODE->m_escapeIndexOrDataIndex+int bT_QUANTIZED_BVH_NODE_m_escapeIndexOrDataIndex_get(void *c); //attribute: int bT_QUANTIZED_BVH_NODE->m_escapeIndexOrDataIndex+void* btGImpactCompoundShape_CompoundPrimitiveManager_new0(void* p0); //constructor: CompoundPrimitiveManager  ( ::btGImpactCompoundShape::CompoundPrimitiveManager::* )( ::btGImpactCompoundShape * ) +void* btGImpactCompoundShape_CompoundPrimitiveManager_new1(); //constructor: CompoundPrimitiveManager  ( ::btGImpactCompoundShape::CompoundPrimitiveManager::* )(  ) +void btGImpactCompoundShape_CompoundPrimitiveManager_free(void *c); int btGImpactCompoundShape_CompoundPrimitiveManager_get_primitive_count(void *c); //method: get_primitive_count int ( ::btGImpactCompoundShape::CompoundPrimitiveManager::* )(  ) const+void btGImpactCompoundShape_CompoundPrimitiveManager_get_primitive_triangle(void *c,int p0,void* p1); //method: get_primitive_triangle void ( ::btGImpactCompoundShape::CompoundPrimitiveManager::* )( int,::btPrimitiveTriangle & ) const+void btGImpactCompoundShape_CompoundPrimitiveManager_get_primitive_box(void *c,int p0,void* p1); //method: get_primitive_box void ( ::btGImpactCompoundShape::CompoundPrimitiveManager::* )( int,::btAABB & ) const+int btGImpactCompoundShape_CompoundPrimitiveManager_is_trimesh(void *c); //method: is_trimesh bool ( ::btGImpactCompoundShape::CompoundPrimitiveManager::* )(  ) const+void btGImpactCompoundShape_CompoundPrimitiveManager_m_compoundShape_set(void *c,void* a); //attribute: ::btGImpactCompoundShape * btGImpactCompoundShape_CompoundPrimitiveManager->m_compoundShape+// attribute getter not supported: //attribute: ::btGImpactCompoundShape * btGImpactCompoundShape_CompoundPrimitiveManager->m_compoundShape+void* btGImpactCollisionAlgorithm_CreateFunc_new(); //constructor: CreateFunc  ( ::btGImpactCollisionAlgorithm::CreateFunc::* )(  ) +void btGImpactCollisionAlgorithm_CreateFunc_free(void *c); void* btGImpactCollisionAlgorithm_CreateFunc_CreateCollisionAlgorithm(void *c,void* p0,void* p1,void* p2); //method: CreateCollisionAlgorithm ::btCollisionAlgorithm * ( ::btGImpactCollisionAlgorithm::CreateFunc::* )( ::btCollisionAlgorithmConstructionInfo &,::btCollisionObject *,::btCollisionObject * ) +void* gIM_BVH_DATA_new(); //constructor: GIM_BVH_DATA  ( ::GIM_BVH_DATA::* )(  ) +void gIM_BVH_DATA_free(void *c); // attribute not supported: //attribute: ::btAABB gIM_BVH_DATA->m_bound+void gIM_BVH_DATA_m_data_set(void *c,int a); //attribute: int gIM_BVH_DATA->m_data+int gIM_BVH_DATA_m_data_get(void *c); //attribute: int gIM_BVH_DATA->m_data+void* gIM_BVH_DATA_ARRAY_new(); //constructor: GIM_BVH_DATA_ARRAY  ( ::GIM_BVH_DATA_ARRAY::* )(  ) +void gIM_BVH_DATA_ARRAY_free(void *c); void* gIM_BVH_TREE_NODE_new(); //constructor: GIM_BVH_TREE_NODE  ( ::GIM_BVH_TREE_NODE::* )(  ) +void gIM_BVH_TREE_NODE_free(void *c); void gIM_BVH_TREE_NODE_setDataIndex(void *c,int p0); //method: setDataIndex void ( ::GIM_BVH_TREE_NODE::* )( int ) +int gIM_BVH_TREE_NODE_getEscapeIndex(void *c); //method: getEscapeIndex int ( ::GIM_BVH_TREE_NODE::* )(  ) const+int gIM_BVH_TREE_NODE_getDataIndex(void *c); //method: getDataIndex int ( ::GIM_BVH_TREE_NODE::* )(  ) const+void gIM_BVH_TREE_NODE_setEscapeIndex(void *c,int p0); //method: setEscapeIndex void ( ::GIM_BVH_TREE_NODE::* )( int ) +int gIM_BVH_TREE_NODE_isLeafNode(void *c); //method: isLeafNode bool ( ::GIM_BVH_TREE_NODE::* )(  ) const+// attribute not supported: //attribute: ::btAABB gIM_BVH_TREE_NODE->m_bound+void* gIM_BVH_TREE_NODE_ARRAY_new(); //constructor: GIM_BVH_TREE_NODE_ARRAY  ( ::GIM_BVH_TREE_NODE_ARRAY::* )(  ) +void gIM_BVH_TREE_NODE_ARRAY_free(void *c); void* gIM_PAIR_new0(); //constructor: GIM_PAIR  ( ::GIM_PAIR::* )(  ) +void* gIM_PAIR_new1(int p0,int p1); //constructor: GIM_PAIR  ( ::GIM_PAIR::* )( int,int ) +void gIM_PAIR_free(void *c); void gIM_PAIR_m_index1_set(void *c,int a); //attribute: int gIM_PAIR->m_index1+int gIM_PAIR_m_index1_get(void *c); //attribute: int gIM_PAIR->m_index1+void gIM_PAIR_m_index2_set(void *c,int a); //attribute: int gIM_PAIR->m_index2+int gIM_PAIR_m_index2_get(void *c); //attribute: int gIM_PAIR->m_index2+void* gIM_QUANTIZED_BVH_NODE_ARRAY_new(); //constructor: GIM_QUANTIZED_BVH_NODE_ARRAY  ( ::GIM_QUANTIZED_BVH_NODE_ARRAY::* )(  ) +void gIM_QUANTIZED_BVH_NODE_ARRAY_free(void *c); void* gIM_TRIANGLE_CONTACT_new(); //constructor: GIM_TRIANGLE_CONTACT  ( ::GIM_TRIANGLE_CONTACT::* )(  ) +void gIM_TRIANGLE_CONTACT_free(void *c); //not supported method: merge_points void ( ::GIM_TRIANGLE_CONTACT::* )( ::btVector4 const &,::btScalar,::btVector3 const *,int ) +void gIM_TRIANGLE_CONTACT_copy_from(void *c,void* p0); //method: copy_from void ( ::GIM_TRIANGLE_CONTACT::* )( ::GIM_TRIANGLE_CONTACT const & ) +void gIM_TRIANGLE_CONTACT_m_penetration_depth_set(void *c,float a); //attribute: ::btScalar gIM_TRIANGLE_CONTACT->m_penetration_depth+float gIM_TRIANGLE_CONTACT_m_penetration_depth_get(void *c); //attribute: ::btScalar gIM_TRIANGLE_CONTACT->m_penetration_depth+void gIM_TRIANGLE_CONTACT_m_point_count_set(void *c,int a); //attribute: int gIM_TRIANGLE_CONTACT->m_point_count+int gIM_TRIANGLE_CONTACT_m_point_count_get(void *c); //attribute: int gIM_TRIANGLE_CONTACT->m_point_count+// attribute not supported: //attribute: ::btVector3[16] gIM_TRIANGLE_CONTACT->m_points+void gIM_TRIANGLE_CONTACT_m_separating_normal_set(void *c,float* a); //attribute: ::btVector4 gIM_TRIANGLE_CONTACT->m_separating_normal+void gIM_TRIANGLE_CONTACT_m_separating_normal_get(void *c,float* a);+void* btGImpactMeshShapePart_TrimeshPrimitiveManager_new0(); //constructor: TrimeshPrimitiveManager  ( ::btGImpactMeshShapePart::TrimeshPrimitiveManager::* )(  ) +void* btGImpactMeshShapePart_TrimeshPrimitiveManager_new1(void* p0,int p1); //constructor: TrimeshPrimitiveManager  ( ::btGImpactMeshShapePart::TrimeshPrimitiveManager::* )( ::btStridingMeshInterface *,int ) +void btGImpactMeshShapePart_TrimeshPrimitiveManager_free(void *c); int btGImpactMeshShapePart_TrimeshPrimitiveManager_get_vertex_count(void *c); //method: get_vertex_count int ( ::btGImpactMeshShapePart::TrimeshPrimitiveManager::* )(  ) const+void btGImpactMeshShapePart_TrimeshPrimitiveManager_get_vertex(void *c,int p0,float* p1); //method: get_vertex void ( ::btGImpactMeshShapePart::TrimeshPrimitiveManager::* )( int,::btVector3 & ) const+int btGImpactMeshShapePart_TrimeshPrimitiveManager_is_trimesh(void *c); //method: is_trimesh bool ( ::btGImpactMeshShapePart::TrimeshPrimitiveManager::* )(  ) const+void btGImpactMeshShapePart_TrimeshPrimitiveManager_lock(void *c); //method: lock void ( ::btGImpactMeshShapePart::TrimeshPrimitiveManager::* )(  ) +void btGImpactMeshShapePart_TrimeshPrimitiveManager_get_primitive_box(void *c,int p0,void* p1); //method: get_primitive_box void ( ::btGImpactMeshShapePart::TrimeshPrimitiveManager::* )( int,::btAABB & ) const+void btGImpactMeshShapePart_TrimeshPrimitiveManager_get_primitive_triangle(void *c,int p0,void* p1); //method: get_primitive_triangle void ( ::btGImpactMeshShapePart::TrimeshPrimitiveManager::* )( int,::btPrimitiveTriangle & ) const+void btGImpactMeshShapePart_TrimeshPrimitiveManager_unlock(void *c); //method: unlock void ( ::btGImpactMeshShapePart::TrimeshPrimitiveManager::* )(  ) +void btGImpactMeshShapePart_TrimeshPrimitiveManager_get_bullet_triangle(void *c,int p0,void* p1); //method: get_bullet_triangle void ( ::btGImpactMeshShapePart::TrimeshPrimitiveManager::* )( int,::btTriangleShapeEx & ) const+int btGImpactMeshShapePart_TrimeshPrimitiveManager_get_primitive_count(void *c); //method: get_primitive_count int ( ::btGImpactMeshShapePart::TrimeshPrimitiveManager::* )(  ) const+//not supported method: get_indices void ( ::btGImpactMeshShapePart::TrimeshPrimitiveManager::* )( int,int &,int &,int & ) const+void btGImpactMeshShapePart_TrimeshPrimitiveManager_m_margin_set(void *c,float a); //attribute: ::btScalar btGImpactMeshShapePart_TrimeshPrimitiveManager->m_margin+float btGImpactMeshShapePart_TrimeshPrimitiveManager_m_margin_get(void *c); //attribute: ::btScalar btGImpactMeshShapePart_TrimeshPrimitiveManager->m_margin+void btGImpactMeshShapePart_TrimeshPrimitiveManager_m_meshInterface_set(void *c,void* a); //attribute: ::btStridingMeshInterface * btGImpactMeshShapePart_TrimeshPrimitiveManager->m_meshInterface+// attribute getter not supported: //attribute: ::btStridingMeshInterface * btGImpactMeshShapePart_TrimeshPrimitiveManager->m_meshInterface+void btGImpactMeshShapePart_TrimeshPrimitiveManager_m_scale_set(void *c,float* a); //attribute: ::btVector3 btGImpactMeshShapePart_TrimeshPrimitiveManager->m_scale+void btGImpactMeshShapePart_TrimeshPrimitiveManager_m_scale_get(void *c,float* a);+void btGImpactMeshShapePart_TrimeshPrimitiveManager_m_part_set(void *c,int a); //attribute: int btGImpactMeshShapePart_TrimeshPrimitiveManager->m_part+int btGImpactMeshShapePart_TrimeshPrimitiveManager_m_part_get(void *c); //attribute: int btGImpactMeshShapePart_TrimeshPrimitiveManager->m_part+void btGImpactMeshShapePart_TrimeshPrimitiveManager_m_lock_count_set(void *c,int a); //attribute: int btGImpactMeshShapePart_TrimeshPrimitiveManager->m_lock_count+int btGImpactMeshShapePart_TrimeshPrimitiveManager_m_lock_count_get(void *c); //attribute: int btGImpactMeshShapePart_TrimeshPrimitiveManager->m_lock_count+// attribute not supported: //attribute: unsigned char const * btGImpactMeshShapePart_TrimeshPrimitiveManager->vertexbase+void btGImpactMeshShapePart_TrimeshPrimitiveManager_numverts_set(void *c,int a); //attribute: int btGImpactMeshShapePart_TrimeshPrimitiveManager->numverts+int btGImpactMeshShapePart_TrimeshPrimitiveManager_numverts_get(void *c); //attribute: int btGImpactMeshShapePart_TrimeshPrimitiveManager->numverts+// attribute not supported: //attribute: ::PHY_ScalarType btGImpactMeshShapePart_TrimeshPrimitiveManager->type+void btGImpactMeshShapePart_TrimeshPrimitiveManager_stride_set(void *c,int a); //attribute: int btGImpactMeshShapePart_TrimeshPrimitiveManager->stride+int btGImpactMeshShapePart_TrimeshPrimitiveManager_stride_get(void *c); //attribute: int btGImpactMeshShapePart_TrimeshPrimitiveManager->stride+// attribute not supported: //attribute: unsigned char const * btGImpactMeshShapePart_TrimeshPrimitiveManager->indexbase+void btGImpactMeshShapePart_TrimeshPrimitiveManager_indexstride_set(void *c,int a); //attribute: int btGImpactMeshShapePart_TrimeshPrimitiveManager->indexstride+int btGImpactMeshShapePart_TrimeshPrimitiveManager_indexstride_get(void *c); //attribute: int btGImpactMeshShapePart_TrimeshPrimitiveManager->indexstride+void btGImpactMeshShapePart_TrimeshPrimitiveManager_numfaces_set(void *c,int a); //attribute: int btGImpactMeshShapePart_TrimeshPrimitiveManager->numfaces+int btGImpactMeshShapePart_TrimeshPrimitiveManager_numfaces_get(void *c); //attribute: int btGImpactMeshShapePart_TrimeshPrimitiveManager->numfaces+// attribute not supported: //attribute: ::PHY_ScalarType btGImpactMeshShapePart_TrimeshPrimitiveManager->indicestype+void* btAABB_new0(); //constructor: btAABB  ( ::btAABB::* )(  ) +void* btAABB_new1(float* p0,float* p1,float* p2); //constructor: btAABB  ( ::btAABB::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void* btAABB_new2(float* p0,float* p1,float* p2,float p3); //constructor: btAABB  ( ::btAABB::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btScalar ) +void* btAABB_new3(void* p0,float p1); //constructor: btAABB  ( ::btAABB::* )( ::btAABB const &,::btScalar ) +void btAABB_free(void *c); int btAABB_overlapping_trans_conservative(void *c,void* p0,float* p1); //method: overlapping_trans_conservative bool ( ::btAABB::* )( ::btAABB const &,::btTransform & ) const+void btAABB_appy_transform(void *c,float* p0); //method: appy_transform void ( ::btAABB::* )( ::btTransform const & ) +void btAABB_find_intersection(void *c,void* p0,void* p1); //method: find_intersection void ( ::btAABB::* )( ::btAABB const &,::btAABB & ) const+int btAABB_collide_ray(void *c,float* p0,float* p1); //method: collide_ray bool ( ::btAABB::* )( ::btVector3 const &,::btVector3 const & ) const+int btAABB_overlapping_trans_cache(void *c,void* p0,void* p1,int p2); //method: overlapping_trans_cache bool ( ::btAABB::* )( ::btAABB const &,::BT_BOX_BOX_TRANSFORM_CACHE const &,bool ) const+void btAABB_get_center_extend(void *c,float* p0,float* p1); //method: get_center_extend void ( ::btAABB::* )( ::btVector3 &,::btVector3 & ) const+void btAABB_invalidate(void *c); //method: invalidate void ( ::btAABB::* )(  ) +int btAABB_has_collision(void *c,void* p0); //method: has_collision bool ( ::btAABB::* )( ::btAABB const & ) const+//not supported method: projection_interval void ( ::btAABB::* )( ::btVector3 const &,::btScalar &,::btScalar & ) const+void btAABB_appy_transform_trans_cache(void *c,void* p0); //method: appy_transform_trans_cache void ( ::btAABB::* )( ::BT_BOX_BOX_TRANSFORM_CACHE const & ) +void btAABB_calc_from_triangle_margin(void *c,float* p0,float* p1,float* p2,float p3); //method: calc_from_triangle_margin void ( ::btAABB::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btScalar ) +void btAABB_increment_margin(void *c,float p0); //method: increment_margin void ( ::btAABB::* )( ::btScalar ) +void btAABB_merge(void *c,void* p0); //method: merge void ( ::btAABB::* )( ::btAABB const & ) +int btAABB_collide_plane(void *c,float* p0); //method: collide_plane bool ( ::btAABB::* )( ::btVector4 const & ) const+//not supported method: plane_classify ::eBT_PLANE_INTERSECTION_TYPE ( ::btAABB::* )( ::btVector4 const & ) const+int btAABB_overlapping_trans_conservative2(void *c,void* p0,void* p1); //method: overlapping_trans_conservative2 bool ( ::btAABB::* )( ::btAABB const &,::BT_BOX_BOX_TRANSFORM_CACHE const & ) const+void btAABB_copy_with_margin(void *c,void* p0,float p1); //method: copy_with_margin void ( ::btAABB::* )( ::btAABB const &,::btScalar ) +int btAABB_collide_triangle_exact(void *c,float* p0,float* p1,float* p2,float* p3); //method: collide_triangle_exact bool ( ::btAABB::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector4 const & ) const+void btAABB_m_max_set(void *c,float* a); //attribute: ::btVector3 btAABB->m_max+void btAABB_m_max_get(void *c,float* a);+void btAABB_m_min_set(void *c,float* a); //attribute: ::btVector3 btAABB->m_min+void btAABB_m_min_get(void *c,float* a);+void* btBvhTree_new(); //constructor: btBvhTree  ( ::btBvhTree::* )(  ) +void btBvhTree_free(void *c); int btBvhTree_getNodeCount(void *c); //method: getNodeCount int ( ::btBvhTree::* )(  ) const+void btBvhTree_build_tree(void *c,void* p0); //method: build_tree void ( ::btBvhTree::* )( ::GIM_BVH_DATA_ARRAY & ) +void btBvhTree_setNodeBound(void *c,int p0,void* p1); //method: setNodeBound void ( ::btBvhTree::* )( int,::btAABB const & ) +int btBvhTree_getLeftNode(void *c,int p0); //method: getLeftNode int ( ::btBvhTree::* )( int ) const+int btBvhTree_getRightNode(void *c,int p0); //method: getRightNode int ( ::btBvhTree::* )( int ) const+void btBvhTree_clearNodes(void *c); //method: clearNodes void ( ::btBvhTree::* )(  ) +int btBvhTree_getEscapeNodeIndex(void *c,int p0); //method: getEscapeNodeIndex int ( ::btBvhTree::* )( int ) const+int btBvhTree_isLeafNode(void *c,int p0); //method: isLeafNode bool ( ::btBvhTree::* )( int ) const+void* btBvhTree_get_node_pointer(void *c,int p0); //method: get_node_pointer ::GIM_BVH_TREE_NODE const * ( ::btBvhTree::* )( int ) const+int btBvhTree_getNodeData(void *c,int p0); //method: getNodeData int ( ::btBvhTree::* )( int ) const+void btBvhTree_getNodeBound(void *c,int p0,void* p1); //method: getNodeBound void ( ::btBvhTree::* )( int,::btAABB & ) const+void* btGImpactBvh_new0(); //constructor: btGImpactBvh  ( ::btGImpactBvh::* )(  ) +void* btGImpactBvh_new1(void* p0); //constructor: btGImpactBvh  ( ::btGImpactBvh::* )( ::btPrimitiveManagerBase * ) +void btGImpactBvh_free(void *c); int btGImpactBvh_getNodeCount(void *c); //method: getNodeCount int ( ::btGImpactBvh::* )(  ) const+void btGImpactBvh_find_collision(void* p0,float* p1,void* p2,float* p3,void* p4); //method: find_collision void (*)( ::btGImpactBvh *,::btTransform const &,::btGImpactBvh *,::btTransform const &,::btPairSet & )+void btGImpactBvh_getNodeTriangle(void *c,int p0,void* p1); //method: getNodeTriangle void ( ::btGImpactBvh::* )( int,::btPrimitiveTriangle & ) const+int btGImpactBvh_hasHierarchy(void *c); //method: hasHierarchy bool ( ::btGImpactBvh::* )(  ) const+//not supported method: rayQuery bool ( ::btGImpactBvh::* )( ::btVector3 const &,::btVector3 const &,::btAlignedObjectArray<int> & ) const+int btGImpactBvh_getLeftNode(void *c,int p0); //method: getLeftNode int ( ::btGImpactBvh::* )( int ) const+int btGImpactBvh_getRightNode(void *c,int p0); //method: getRightNode int ( ::btGImpactBvh::* )( int ) const+//not supported method: boxQueryTrans bool ( ::btGImpactBvh::* )( ::btAABB const &,::btTransform const &,::btAlignedObjectArray<int> & ) const+void btGImpactBvh_update(void *c); //method: update void ( ::btGImpactBvh::* )(  ) +//not supported method: getGlobalBox ::btAABB ( ::btGImpactBvh::* )(  ) const+int btGImpactBvh_isTrimesh(void *c); //method: isTrimesh bool ( ::btGImpactBvh::* )(  ) const+void btGImpactBvh_setNodeBound(void *c,int p0,void* p1); //method: setNodeBound void ( ::btGImpactBvh::* )( int,::btAABB const & ) +void btGImpactBvh_setPrimitiveManager(void *c,void* p0); //method: setPrimitiveManager void ( ::btGImpactBvh::* )( ::btPrimitiveManagerBase * ) +int btGImpactBvh_getEscapeNodeIndex(void *c,int p0); //method: getEscapeNodeIndex int ( ::btGImpactBvh::* )( int ) const+int btGImpactBvh_isLeafNode(void *c,int p0); //method: isLeafNode bool ( ::btGImpactBvh::* )( int ) const+void* btGImpactBvh_getPrimitiveManager(void *c); //method: getPrimitiveManager ::btPrimitiveManagerBase * ( ::btGImpactBvh::* )(  ) const+void btGImpactBvh_buildSet(void *c); //method: buildSet void ( ::btGImpactBvh::* )(  ) +void* btGImpactBvh_get_node_pointer(void *c,int p0); //method: get_node_pointer ::GIM_BVH_TREE_NODE const * ( ::btGImpactBvh::* )( int ) const+int btGImpactBvh_getNodeData(void *c,int p0); //method: getNodeData int ( ::btGImpactBvh::* )( int ) const+void btGImpactBvh_getNodeBound(void *c,int p0,void* p1); //method: getNodeBound void ( ::btGImpactBvh::* )( int,::btAABB & ) const+//not supported method: boxQuery bool ( ::btGImpactBvh::* )( ::btAABB const &,::btAlignedObjectArray<int> & ) const+void* btGImpactCollisionAlgorithm_new(void* p0,void* p1,void* p2); //constructor: btGImpactCollisionAlgorithm  ( ::btGImpactCollisionAlgorithm::* )( ::btCollisionAlgorithmConstructionInfo const &,::btCollisionObject *,::btCollisionObject * ) +void btGImpactCollisionAlgorithm_free(void *c); int btGImpactCollisionAlgorithm_getPart1(void *c); //method: getPart1 int ( ::btGImpactCollisionAlgorithm::* )(  ) +int btGImpactCollisionAlgorithm_getPart0(void *c); //method: getPart0 int ( ::btGImpactCollisionAlgorithm::* )(  ) +void btGImpactCollisionAlgorithm_gimpact_vs_shape(void *c,void* p0,void* p1,void* p2,void* p3,int p4); //method: gimpact_vs_shape void ( ::btGImpactCollisionAlgorithm::* )( ::btCollisionObject *,::btCollisionObject *,::btGImpactShapeInterface *,::btCollisionShape *,bool ) +int btGImpactCollisionAlgorithm_getFace1(void *c); //method: getFace1 int ( ::btGImpactCollisionAlgorithm::* )(  ) +void btGImpactCollisionAlgorithm_gimpact_vs_concave(void *c,void* p0,void* p1,void* p2,void* p3,int p4); //method: gimpact_vs_concave void ( ::btGImpactCollisionAlgorithm::* )( ::btCollisionObject *,::btCollisionObject *,::btGImpactShapeInterface *,::btConcaveShape *,bool ) +void btGImpactCollisionAlgorithm_gimpact_vs_compoundshape(void *c,void* p0,void* p1,void* p2,void* p3,int p4); //method: gimpact_vs_compoundshape void ( ::btGImpactCollisionAlgorithm::* )( ::btCollisionObject *,::btCollisionObject *,::btGImpactShapeInterface *,::btCompoundShape *,bool ) +float btGImpactCollisionAlgorithm_calculateTimeOfImpact(void *c,void* p0,void* p1,void* p2,void* p3); //method: calculateTimeOfImpact ::btScalar ( ::btGImpactCollisionAlgorithm::* )( ::btCollisionObject *,::btCollisionObject *,::btDispatcherInfo const &,::btManifoldResult * ) +void btGImpactCollisionAlgorithm_processCollision(void *c,void* p0,void* p1,void* p2,void* p3); //method: processCollision void ( ::btGImpactCollisionAlgorithm::* )( ::btCollisionObject *,::btCollisionObject *,::btDispatcherInfo const &,::btManifoldResult * ) +void btGImpactCollisionAlgorithm_setFace1(void *c,int p0); //method: setFace1 void ( ::btGImpactCollisionAlgorithm::* )( int ) +void btGImpactCollisionAlgorithm_gimpact_vs_gimpact(void *c,void* p0,void* p1,void* p2,void* p3); //method: gimpact_vs_gimpact void ( ::btGImpactCollisionAlgorithm::* )( ::btCollisionObject *,::btCollisionObject *,::btGImpactShapeInterface *,::btGImpactShapeInterface * ) +//not supported method: getAllContactManifolds void ( ::btGImpactCollisionAlgorithm::* )( ::btManifoldArray & ) +void btGImpactCollisionAlgorithm_setFace0(void *c,int p0); //method: setFace0 void ( ::btGImpactCollisionAlgorithm::* )( int ) +void btGImpactCollisionAlgorithm_setPart1(void *c,int p0); //method: setPart1 void ( ::btGImpactCollisionAlgorithm::* )( int ) +void btGImpactCollisionAlgorithm_setPart0(void *c,int p0); //method: setPart0 void ( ::btGImpactCollisionAlgorithm::* )( int ) +void btGImpactCollisionAlgorithm_registerAlgorithm(void* p0); //method: registerAlgorithm void (*)( ::btCollisionDispatcher * )+int btGImpactCollisionAlgorithm_getFace0(void *c); //method: getFace0 int ( ::btGImpactCollisionAlgorithm::* )(  ) +void* btGImpactCompoundShape_new(int p0); //constructor: btGImpactCompoundShape  ( ::btGImpactCompoundShape::* )( bool ) +void btGImpactCompoundShape_free(void *c); void btGImpactCompoundShape_calculateLocalInertia(void *c,float p0,float* p1); //method: calculateLocalInertia void ( ::btGImpactCompoundShape::* )( ::btScalar,::btVector3 & ) const+void btGImpactCompoundShape_addChildShape(void *c,float* p0,void* p1); //method: addChildShape void ( ::btGImpactCompoundShape::* )( ::btTransform const &,::btCollisionShape * ) +void btGImpactCompoundShape_addChildShape0(void *c,float* p0,void* p1); //method: addChildShape void ( ::btGImpactCompoundShape::* )( ::btTransform const &,::btCollisionShape * ) +void btGImpactCompoundShape_addChildShape1(void *c,void* p0); //method: addChildShape void ( ::btGImpactCompoundShape::* )( ::btCollisionShape * ) +void* btGImpactCompoundShape_getCompoundPrimitiveManager(void *c); //method: getCompoundPrimitiveManager ::btGImpactCompoundShape::CompoundPrimitiveManager * ( ::btGImpactCompoundShape::* )(  ) +void btGImpactCompoundShape_setChildTransform(void *c,int p0,float* p1); //method: setChildTransform void ( ::btGImpactCompoundShape::* )( int,::btTransform const & ) +void btGImpactCompoundShape_getChildTransform(void *c,int p0,float* ret); //method: getChildTransform ::btTransform ( ::btGImpactCompoundShape::* )( int ) const+void btGImpactCompoundShape_getBulletTetrahedron(void *c,int p0,void* p1); //method: getBulletTetrahedron void ( ::btGImpactCompoundShape::* )( int,::btTetrahedronShapeEx & ) const+char const * btGImpactCompoundShape_getName(void *c); //method: getName char const * ( ::btGImpactCompoundShape::* )(  ) const+int btGImpactCompoundShape_needsRetrieveTetrahedrons(void *c); //method: needsRetrieveTetrahedrons bool ( ::btGImpactCompoundShape::* )(  ) const+void* btGImpactCompoundShape_getChildShape(void *c,int p0); //method: getChildShape ::btCollisionShape * ( ::btGImpactCompoundShape::* )( int ) +void* btGImpactCompoundShape_getChildShape0(void *c,int p0); //method: getChildShape ::btCollisionShape * ( ::btGImpactCompoundShape::* )( int ) +void* btGImpactCompoundShape_getChildShape1(void *c,int p0); //method: getChildShape ::btCollisionShape const * ( ::btGImpactCompoundShape::* )( int ) const+void btGImpactCompoundShape_getBulletTriangle(void *c,int p0,void* p1); //method: getBulletTriangle void ( ::btGImpactCompoundShape::* )( int,::btTriangleShapeEx & ) const+int btGImpactCompoundShape_needsRetrieveTriangles(void *c); //method: needsRetrieveTriangles bool ( ::btGImpactCompoundShape::* )(  ) const+int btGImpactCompoundShape_childrenHasTransform(void *c); //method: childrenHasTransform bool ( ::btGImpactCompoundShape::* )(  ) const+int btGImpactCompoundShape_getNumChildShapes(void *c); //method: getNumChildShapes int ( ::btGImpactCompoundShape::* )(  ) const+void* btGImpactCompoundShape_getPrimitiveManager(void *c); //method: getPrimitiveManager ::btPrimitiveManagerBase const * ( ::btGImpactCompoundShape::* )(  ) const+void btGImpactCompoundShape_getChildAabb(void *c,int p0,float* p1,float* p2,float* p3); //method: getChildAabb void ( ::btGImpactCompoundShape::* )( int,::btTransform const &,::btVector3 &,::btVector3 & ) const+//not supported method: getGImpactShapeType ::eGIMPACT_SHAPE_TYPE ( ::btGImpactCompoundShape::* )(  ) const+void* btGImpactMeshShape_new(void* p0); //constructor: btGImpactMeshShape  ( ::btGImpactMeshShape::* )( ::btStridingMeshInterface * ) +void btGImpactMeshShape_free(void *c); void btGImpactMeshShape_calculateLocalInertia(void *c,float p0,float* p1); //method: calculateLocalInertia void ( ::btGImpactMeshShape::* )( ::btScalar,::btVector3 & ) const+void btGImpactMeshShape_setLocalScaling(void *c,float* p0); //method: setLocalScaling void ( ::btGImpactMeshShape::* )( ::btVector3 const & ) +void btGImpactMeshShape_setChildTransform(void *c,int p0,float* p1); //method: setChildTransform void ( ::btGImpactMeshShape::* )( int,::btTransform const & ) +void* btGImpactMeshShape_getMeshInterface(void *c); //method: getMeshInterface ::btStridingMeshInterface * ( ::btGImpactMeshShape::* )(  ) +void* btGImpactMeshShape_getMeshInterface0(void *c); //method: getMeshInterface ::btStridingMeshInterface * ( ::btGImpactMeshShape::* )(  ) +void* btGImpactMeshShape_getMeshInterface1(void *c); //method: getMeshInterface ::btStridingMeshInterface const * ( ::btGImpactMeshShape::* )(  ) const+void* btGImpactMeshShape_getPrimitiveManager(void *c); //method: getPrimitiveManager ::btPrimitiveManagerBase const * ( ::btGImpactMeshShape::* )(  ) const+void btGImpactMeshShape_processAllTriangles(void *c,void* p0,float* p1,float* p2); //method: processAllTriangles void ( ::btGImpactMeshShape::* )( ::btTriangleCallback *,::btVector3 const &,::btVector3 const & ) const+int btGImpactMeshShape_getMeshPartCount(void *c); //method: getMeshPartCount int ( ::btGImpactMeshShape::* )(  ) const+int btGImpactMeshShape_calculateSerializeBufferSize(void *c); //method: calculateSerializeBufferSize int ( ::btGImpactMeshShape::* )(  ) const+void btGImpactMeshShape_rayTest(void *c,float* p0,float* p1,void* p2); //method: rayTest void ( ::btGImpactMeshShape::* )( ::btVector3 const &,::btVector3 const &,::btCollisionWorld::RayResultCallback & ) const+char const * btGImpactMeshShape_getName(void *c); //method: getName char const * ( ::btGImpactMeshShape::* )(  ) const+void btGImpactMeshShape_getBulletTriangle(void *c,int p0,void* p1); //method: getBulletTriangle void ( ::btGImpactMeshShape::* )( int,::btTriangleShapeEx & ) const+void* btGImpactMeshShape_getMeshPart(void *c,int p0); //method: getMeshPart ::btGImpactMeshShapePart * ( ::btGImpactMeshShape::* )( int ) +void* btGImpactMeshShape_getMeshPart0(void *c,int p0); //method: getMeshPart ::btGImpactMeshShapePart * ( ::btGImpactMeshShape::* )( int ) +void* btGImpactMeshShape_getMeshPart1(void *c,int p0); //method: getMeshPart ::btGImpactMeshShapePart const * ( ::btGImpactMeshShape::* )( int ) const+int btGImpactMeshShape_needsRetrieveTriangles(void *c); //method: needsRetrieveTriangles bool ( ::btGImpactMeshShape::* )(  ) const+int btGImpactMeshShape_childrenHasTransform(void *c); //method: childrenHasTransform bool ( ::btGImpactMeshShape::* )(  ) const+void* btGImpactMeshShape_getChildShape(void *c,int p0); //method: getChildShape ::btCollisionShape * ( ::btGImpactMeshShape::* )( int ) +void* btGImpactMeshShape_getChildShape0(void *c,int p0); //method: getChildShape ::btCollisionShape * ( ::btGImpactMeshShape::* )( int ) +void* btGImpactMeshShape_getChildShape1(void *c,int p0); //method: getChildShape ::btCollisionShape const * ( ::btGImpactMeshShape::* )( int ) const+//not supported method: serialize char const * ( ::btGImpactMeshShape::* )( void *,::btSerializer * ) const+void btGImpactMeshShape_getChildTransform(void *c,int p0,float* ret); //method: getChildTransform ::btTransform ( ::btGImpactMeshShape::* )( int ) const+void btGImpactMeshShape_lockChildShapes(void *c); //method: lockChildShapes void ( ::btGImpactMeshShape::* )(  ) const+void btGImpactMeshShape_setMargin(void *c,float p0); //method: setMargin void ( ::btGImpactMeshShape::* )( ::btScalar ) +int btGImpactMeshShape_getNumChildShapes(void *c); //method: getNumChildShapes int ( ::btGImpactMeshShape::* )(  ) const+void btGImpactMeshShape_getChildAabb(void *c,int p0,float* p1,float* p2,float* p3); //method: getChildAabb void ( ::btGImpactMeshShape::* )( int,::btTransform const &,::btVector3 &,::btVector3 & ) const+void btGImpactMeshShape_getBulletTetrahedron(void *c,int p0,void* p1); //method: getBulletTetrahedron void ( ::btGImpactMeshShape::* )( int,::btTetrahedronShapeEx & ) const+int btGImpactMeshShape_needsRetrieveTetrahedrons(void *c); //method: needsRetrieveTetrahedrons bool ( ::btGImpactMeshShape::* )(  ) const+void btGImpactMeshShape_unlockChildShapes(void *c); //method: unlockChildShapes void ( ::btGImpactMeshShape::* )(  ) const+void btGImpactMeshShape_postUpdate(void *c); //method: postUpdate void ( ::btGImpactMeshShape::* )(  ) +//not supported method: getGImpactShapeType ::eGIMPACT_SHAPE_TYPE ( ::btGImpactMeshShape::* )(  ) const+void* btGImpactMeshShapeData_new(); //constructor: btGImpactMeshShapeData  ( ::btGImpactMeshShapeData::* )(  ) +void btGImpactMeshShapeData_free(void *c); // attribute not supported: //attribute: ::btCollisionShapeData btGImpactMeshShapeData->m_collisionShapeData+// attribute not supported: //attribute: ::btStridingMeshInterfaceData btGImpactMeshShapeData->m_meshInterface+// attribute not supported: //attribute: ::btVector3FloatData btGImpactMeshShapeData->m_localScaling+void btGImpactMeshShapeData_m_collisionMargin_set(void *c,float a); //attribute: float btGImpactMeshShapeData->m_collisionMargin+float btGImpactMeshShapeData_m_collisionMargin_get(void *c); //attribute: float btGImpactMeshShapeData->m_collisionMargin+void btGImpactMeshShapeData_m_gimpactSubType_set(void *c,int a); //attribute: int btGImpactMeshShapeData->m_gimpactSubType+int btGImpactMeshShapeData_m_gimpactSubType_get(void *c); //attribute: int btGImpactMeshShapeData->m_gimpactSubType+void* btGImpactMeshShapePart_new0(); //constructor: btGImpactMeshShapePart  ( ::btGImpactMeshShapePart::* )(  ) +void* btGImpactMeshShapePart_new1(void* p0,int p1); //constructor: btGImpactMeshShapePart  ( ::btGImpactMeshShapePart::* )( ::btStridingMeshInterface *,int ) +void btGImpactMeshShapePart_free(void *c); void btGImpactMeshShapePart_calculateLocalInertia(void *c,float p0,float* p1); //method: calculateLocalInertia void ( ::btGImpactMeshShapePart::* )( ::btScalar,::btVector3 & ) const+void btGImpactMeshShapePart_setChildTransform(void *c,int p0,float* p1); //method: setChildTransform void ( ::btGImpactMeshShapePart::* )( int,::btTransform const & ) +void btGImpactMeshShapePart_getLocalScaling(void *c,float* ret); //method: getLocalScaling ::btVector3 const & ( ::btGImpactMeshShapePart::* )(  ) const+void btGImpactMeshShapePart_getVertex(void *c,int p0,float* p1); //method: getVertex void ( ::btGImpactMeshShapePart::* )( int,::btVector3 & ) const+void btGImpactMeshShapePart_processAllTriangles(void *c,void* p0,float* p1,float* p2); //method: processAllTriangles void ( ::btGImpactMeshShapePart::* )( ::btTriangleCallback *,::btVector3 const &,::btVector3 const & ) const+char const * btGImpactMeshShapePart_getName(void *c); //method: getName char const * ( ::btGImpactMeshShapePart::* )(  ) const+void btGImpactMeshShapePart_getBulletTriangle(void *c,int p0,void* p1); //method: getBulletTriangle void ( ::btGImpactMeshShapePart::* )( int,::btTriangleShapeEx & ) const+void btGImpactMeshShapePart_setLocalScaling(void *c,float* p0); //method: setLocalScaling void ( ::btGImpactMeshShapePart::* )( ::btVector3 const & ) +int btGImpactMeshShapePart_getPart(void *c); //method: getPart int ( ::btGImpactMeshShapePart::* )(  ) const+int btGImpactMeshShapePart_childrenHasTransform(void *c); //method: childrenHasTransform bool ( ::btGImpactMeshShapePart::* )(  ) const+int btGImpactMeshShapePart_needsRetrieveTriangles(void *c); //method: needsRetrieveTriangles bool ( ::btGImpactMeshShapePart::* )(  ) const+void* btGImpactMeshShapePart_getChildShape(void *c,int p0); //method: getChildShape ::btCollisionShape * ( ::btGImpactMeshShapePart::* )( int ) +void* btGImpactMeshShapePart_getChildShape0(void *c,int p0); //method: getChildShape ::btCollisionShape * ( ::btGImpactMeshShapePart::* )( int ) +void* btGImpactMeshShapePart_getChildShape1(void *c,int p0); //method: getChildShape ::btCollisionShape const * ( ::btGImpactMeshShapePart::* )( int ) const+void btGImpactMeshShapePart_getChildTransform(void *c,int p0,float* ret); //method: getChildTransform ::btTransform ( ::btGImpactMeshShapePart::* )( int ) const+void btGImpactMeshShapePart_lockChildShapes(void *c); //method: lockChildShapes void ( ::btGImpactMeshShapePart::* )(  ) const+float btGImpactMeshShapePart_getMargin(void *c); //method: getMargin ::btScalar ( ::btGImpactMeshShapePart::* )(  ) const+void btGImpactMeshShapePart_setMargin(void *c,float p0); //method: setMargin void ( ::btGImpactMeshShapePart::* )( ::btScalar ) +void* btGImpactMeshShapePart_getPrimitiveManager(void *c); //method: getPrimitiveManager ::btPrimitiveManagerBase const * ( ::btGImpactMeshShapePart::* )(  ) const+int btGImpactMeshShapePart_getNumChildShapes(void *c); //method: getNumChildShapes int ( ::btGImpactMeshShapePart::* )(  ) const+void btGImpactMeshShapePart_getBulletTetrahedron(void *c,int p0,void* p1); //method: getBulletTetrahedron void ( ::btGImpactMeshShapePart::* )( int,::btTetrahedronShapeEx & ) const+void* btGImpactMeshShapePart_getTrimeshPrimitiveManager(void *c); //method: getTrimeshPrimitiveManager ::btGImpactMeshShapePart::TrimeshPrimitiveManager * ( ::btGImpactMeshShapePart::* )(  ) +int btGImpactMeshShapePart_needsRetrieveTetrahedrons(void *c); //method: needsRetrieveTetrahedrons bool ( ::btGImpactMeshShapePart::* )(  ) const+void btGImpactMeshShapePart_unlockChildShapes(void *c); //method: unlockChildShapes void ( ::btGImpactMeshShapePart::* )(  ) const+//not supported method: getGImpactShapeType ::eGIMPACT_SHAPE_TYPE ( ::btGImpactMeshShapePart::* )(  ) const+int btGImpactMeshShapePart_getVertexCount(void *c); //method: getVertexCount int ( ::btGImpactMeshShapePart::* )(  ) const+void* btGImpactQuantizedBvh_new0(); //constructor: btGImpactQuantizedBvh  ( ::btGImpactQuantizedBvh::* )(  ) +void* btGImpactQuantizedBvh_new1(void* p0); //constructor: btGImpactQuantizedBvh  ( ::btGImpactQuantizedBvh::* )( ::btPrimitiveManagerBase * ) +void btGImpactQuantizedBvh_free(void *c); int btGImpactQuantizedBvh_getNodeCount(void *c); //method: getNodeCount int ( ::btGImpactQuantizedBvh::* )(  ) const+void btGImpactQuantizedBvh_find_collision(void* p0,float* p1,void* p2,float* p3,void* p4); //method: find_collision void (*)( ::btGImpactQuantizedBvh *,::btTransform const &,::btGImpactQuantizedBvh *,::btTransform const &,::btPairSet & )+void btGImpactQuantizedBvh_getNodeTriangle(void *c,int p0,void* p1); //method: getNodeTriangle void ( ::btGImpactQuantizedBvh::* )( int,::btPrimitiveTriangle & ) const+int btGImpactQuantizedBvh_hasHierarchy(void *c); //method: hasHierarchy bool ( ::btGImpactQuantizedBvh::* )(  ) const+//not supported method: rayQuery bool ( ::btGImpactQuantizedBvh::* )( ::btVector3 const &,::btVector3 const &,::btAlignedObjectArray<int> & ) const+int btGImpactQuantizedBvh_getLeftNode(void *c,int p0); //method: getLeftNode int ( ::btGImpactQuantizedBvh::* )( int ) const+int btGImpactQuantizedBvh_getRightNode(void *c,int p0); //method: getRightNode int ( ::btGImpactQuantizedBvh::* )( int ) const+//not supported method: boxQueryTrans bool ( ::btGImpactQuantizedBvh::* )( ::btAABB const &,::btTransform const &,::btAlignedObjectArray<int> & ) const+void btGImpactQuantizedBvh_update(void *c); //method: update void ( ::btGImpactQuantizedBvh::* )(  ) +//not supported method: getGlobalBox ::btAABB ( ::btGImpactQuantizedBvh::* )(  ) const+int btGImpactQuantizedBvh_isTrimesh(void *c); //method: isTrimesh bool ( ::btGImpactQuantizedBvh::* )(  ) const+void btGImpactQuantizedBvh_setNodeBound(void *c,int p0,void* p1); //method: setNodeBound void ( ::btGImpactQuantizedBvh::* )( int,::btAABB const & ) +void btGImpactQuantizedBvh_setPrimitiveManager(void *c,void* p0); //method: setPrimitiveManager void ( ::btGImpactQuantizedBvh::* )( ::btPrimitiveManagerBase * ) +int btGImpactQuantizedBvh_getEscapeNodeIndex(void *c,int p0); //method: getEscapeNodeIndex int ( ::btGImpactQuantizedBvh::* )( int ) const+int btGImpactQuantizedBvh_isLeafNode(void *c,int p0); //method: isLeafNode bool ( ::btGImpactQuantizedBvh::* )( int ) const+void* btGImpactQuantizedBvh_getPrimitiveManager(void *c); //method: getPrimitiveManager ::btPrimitiveManagerBase * ( ::btGImpactQuantizedBvh::* )(  ) const+void btGImpactQuantizedBvh_buildSet(void *c); //method: buildSet void ( ::btGImpactQuantizedBvh::* )(  ) +void* btGImpactQuantizedBvh_get_node_pointer(void *c,int p0); //method: get_node_pointer ::BT_QUANTIZED_BVH_NODE const * ( ::btGImpactQuantizedBvh::* )( int ) const+int btGImpactQuantizedBvh_getNodeData(void *c,int p0); //method: getNodeData int ( ::btGImpactQuantizedBvh::* )( int ) const+void btGImpactQuantizedBvh_getNodeBound(void *c,int p0,void* p1); //method: getNodeBound void ( ::btGImpactQuantizedBvh::* )( int,::btAABB & ) const+//not supported method: boxQuery bool ( ::btGImpactQuantizedBvh::* )( ::btAABB const &,::btAlignedObjectArray<int> & ) const+void btGImpactShapeInterface_getPrimitiveTriangle(void *c,int p0,void* p1); //method: getPrimitiveTriangle void ( ::btGImpactShapeInterface::* )( int,::btPrimitiveTriangle & ) const+void btGImpactShapeInterface_setChildTransform(void *c,int p0,float* p1); //method: setChildTransform void ( ::btGImpactShapeInterface::* )( int,::btTransform const & ) +void btGImpactShapeInterface_getLocalScaling(void *c,float* ret); //method: getLocalScaling ::btVector3 const & ( ::btGImpactShapeInterface::* )(  ) const+void* btGImpactShapeInterface_getLocalBox(void *c); //method: getLocalBox ::btAABB const & ( ::btGImpactShapeInterface::* )(  ) +void* btGImpactShapeInterface_getPrimitiveManager(void *c); //method: getPrimitiveManager ::btPrimitiveManagerBase const * ( ::btGImpactShapeInterface::* )(  ) const+void btGImpactShapeInterface_processAllTriangles(void *c,void* p0,float* p1,float* p2); //method: processAllTriangles void ( ::btGImpactShapeInterface::* )( ::btTriangleCallback *,::btVector3 const &,::btVector3 const & ) const+int btGImpactShapeInterface_hasBoxSet(void *c); //method: hasBoxSet bool ( ::btGImpactShapeInterface::* )(  ) const+void btGImpactShapeInterface_rayTest(void *c,float* p0,float* p1,void* p2); //method: rayTest void ( ::btGImpactShapeInterface::* )( ::btVector3 const &,::btVector3 const &,::btCollisionWorld::RayResultCallback & ) const+void* btGImpactShapeInterface_getBoxSet(void *c); //method: getBoxSet ::btGImpactBoxSet * ( ::btGImpactShapeInterface::* )(  ) +void btGImpactShapeInterface_getBulletTriangle(void *c,int p0,void* p1); //method: getBulletTriangle void ( ::btGImpactShapeInterface::* )( int,::btTriangleShapeEx & ) const+void btGImpactShapeInterface_setLocalScaling(void *c,float* p0); //method: setLocalScaling void ( ::btGImpactShapeInterface::* )( ::btVector3 const & ) +int btGImpactShapeInterface_needsRetrieveTriangles(void *c); //method: needsRetrieveTriangles bool ( ::btGImpactShapeInterface::* )(  ) const+int btGImpactShapeInterface_childrenHasTransform(void *c); //method: childrenHasTransform bool ( ::btGImpactShapeInterface::* )(  ) const+void btGImpactShapeInterface_getAabb(void *c,float* p0,float* p1,float* p2); //method: getAabb void ( ::btGImpactShapeInterface::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void* btGImpactShapeInterface_getChildShape(void *c,int p0); //method: getChildShape ::btCollisionShape * ( ::btGImpactShapeInterface::* )( int ) +void* btGImpactShapeInterface_getChildShape0(void *c,int p0); //method: getChildShape ::btCollisionShape * ( ::btGImpactShapeInterface::* )( int ) +void* btGImpactShapeInterface_getChildShape1(void *c,int p0); //method: getChildShape ::btCollisionShape const * ( ::btGImpactShapeInterface::* )( int ) const+void btGImpactShapeInterface_getChildTransform(void *c,int p0,float* ret); //method: getChildTransform ::btTransform ( ::btGImpactShapeInterface::* )( int ) const+void btGImpactShapeInterface_lockChildShapes(void *c); //method: lockChildShapes void ( ::btGImpactShapeInterface::* )(  ) const+void btGImpactShapeInterface_setMargin(void *c,float p0); //method: setMargin void ( ::btGImpactShapeInterface::* )( ::btScalar ) +int btGImpactShapeInterface_getNumChildShapes(void *c); //method: getNumChildShapes int ( ::btGImpactShapeInterface::* )(  ) const+void btGImpactShapeInterface_getChildAabb(void *c,int p0,float* p1,float* p2,float* p3); //method: getChildAabb void ( ::btGImpactShapeInterface::* )( int,::btTransform const &,::btVector3 &,::btVector3 & ) const+int btGImpactShapeInterface_getShapeType(void *c); //method: getShapeType int ( ::btGImpactShapeInterface::* )(  ) const+void btGImpactShapeInterface_getBulletTetrahedron(void *c,int p0,void* p1); //method: getBulletTetrahedron void ( ::btGImpactShapeInterface::* )( int,::btTetrahedronShapeEx & ) const+int btGImpactShapeInterface_needsRetrieveTetrahedrons(void *c); //method: needsRetrieveTetrahedrons bool ( ::btGImpactShapeInterface::* )(  ) const+void btGImpactShapeInterface_unlockChildShapes(void *c); //method: unlockChildShapes void ( ::btGImpactShapeInterface::* )(  ) const+void btGImpactShapeInterface_postUpdate(void *c); //method: postUpdate void ( ::btGImpactShapeInterface::* )(  ) +void btGImpactShapeInterface_updateBound(void *c); //method: updateBound void ( ::btGImpactShapeInterface::* )(  ) +//not supported method: getGImpactShapeType ::eGIMPACT_SHAPE_TYPE ( ::btGImpactShapeInterface::* )(  ) const+void* btPairSet_new(); //constructor: btPairSet  ( ::btPairSet::* )(  ) +void btPairSet_free(void *c); void btPairSet_push_pair_inv(void *c,int p0,int p1); //method: push_pair_inv void ( ::btPairSet::* )( int,int ) +void btPairSet_push_pair(void *c,int p0,int p1); //method: push_pair void ( ::btPairSet::* )( int,int ) +void btPrimitiveManagerBase_get_primitive_box(void *c,int p0,void* p1); //method: get_primitive_box void ( ::btPrimitiveManagerBase::* )( int,::btAABB & ) const+void btPrimitiveManagerBase_get_primitive_triangle(void *c,int p0,void* p1); //method: get_primitive_triangle void ( ::btPrimitiveManagerBase::* )( int,::btPrimitiveTriangle & ) const+int btPrimitiveManagerBase_is_trimesh(void *c); //method: is_trimesh bool ( ::btPrimitiveManagerBase::* )(  ) const+int btPrimitiveManagerBase_get_primitive_count(void *c); //method: get_primitive_count int ( ::btPrimitiveManagerBase::* )(  ) const+void* btPrimitiveTriangle_new(); //constructor: btPrimitiveTriangle  ( ::btPrimitiveTriangle::* )(  ) +void btPrimitiveTriangle_free(void *c); //not supported method: clip_triangle int ( ::btPrimitiveTriangle::* )( ::btPrimitiveTriangle &,::btVector3 * ) +void btPrimitiveTriangle_get_edge_plane(void *c,int p0,float* p1); //method: get_edge_plane void ( ::btPrimitiveTriangle::* )( int,::btVector4 & ) const+int btPrimitiveTriangle_overlap_test_conservative(void *c,void* p0); //method: overlap_test_conservative bool ( ::btPrimitiveTriangle::* )( ::btPrimitiveTriangle const & ) +void btPrimitiveTriangle_buildTriPlane(void *c); //method: buildTriPlane void ( ::btPrimitiveTriangle::* )(  ) +void btPrimitiveTriangle_applyTransform(void *c,float* p0); //method: applyTransform void ( ::btPrimitiveTriangle::* )( ::btTransform const & ) +int btPrimitiveTriangle_find_triangle_collision_clip_method(void *c,void* p0,void* p1); //method: find_triangle_collision_clip_method bool ( ::btPrimitiveTriangle::* )( ::btPrimitiveTriangle &,::GIM_TRIANGLE_CONTACT & ) +void btPrimitiveTriangle_m_dummy_set(void *c,float a); //attribute: ::btScalar btPrimitiveTriangle->m_dummy+float btPrimitiveTriangle_m_dummy_get(void *c); //attribute: ::btScalar btPrimitiveTriangle->m_dummy+void btPrimitiveTriangle_m_margin_set(void *c,float a); //attribute: ::btScalar btPrimitiveTriangle->m_margin+float btPrimitiveTriangle_m_margin_get(void *c); //attribute: ::btScalar btPrimitiveTriangle->m_margin+void btPrimitiveTriangle_m_plane_set(void *c,float* a); //attribute: ::btVector4 btPrimitiveTriangle->m_plane+void btPrimitiveTriangle_m_plane_get(void *c,float* a);+// attribute not supported: //attribute: ::btVector3[3] btPrimitiveTriangle->m_vertices+void* btQuantizedBvhTree_new(); //constructor: btQuantizedBvhTree  ( ::btQuantizedBvhTree::* )(  ) +void btQuantizedBvhTree_free(void *c); int btQuantizedBvhTree_getNodeCount(void *c); //method: getNodeCount int ( ::btQuantizedBvhTree::* )(  ) const+void btQuantizedBvhTree_build_tree(void *c,void* p0); //method: build_tree void ( ::btQuantizedBvhTree::* )( ::GIM_BVH_DATA_ARRAY & ) +int btQuantizedBvhTree_getLeftNode(void *c,int p0); //method: getLeftNode int ( ::btQuantizedBvhTree::* )( int ) const+void btQuantizedBvhTree_setNodeBound(void *c,int p0,void* p1); //method: setNodeBound void ( ::btQuantizedBvhTree::* )( int,::btAABB const & ) +void btQuantizedBvhTree_getNodeBound(void *c,int p0,void* p1); //method: getNodeBound void ( ::btQuantizedBvhTree::* )( int,::btAABB & ) const+int btQuantizedBvhTree_getRightNode(void *c,int p0); //method: getRightNode int ( ::btQuantizedBvhTree::* )( int ) const+void btQuantizedBvhTree_clearNodes(void *c); //method: clearNodes void ( ::btQuantizedBvhTree::* )(  ) +int btQuantizedBvhTree_getEscapeNodeIndex(void *c,int p0); //method: getEscapeNodeIndex int ( ::btQuantizedBvhTree::* )( int ) const+int btQuantizedBvhTree_isLeafNode(void *c,int p0); //method: isLeafNode bool ( ::btQuantizedBvhTree::* )( int ) const+void* btQuantizedBvhTree_get_node_pointer(void *c,int p0); //method: get_node_pointer ::BT_QUANTIZED_BVH_NODE const * ( ::btQuantizedBvhTree::* )( int ) const+//not supported method: testQuantizedBoxOverlapp bool ( ::btQuantizedBvhTree::* )( int,short unsigned int *,short unsigned int * ) const+int btQuantizedBvhTree_getNodeData(void *c,int p0); //method: getNodeData int ( ::btQuantizedBvhTree::* )( int ) const+//not supported method: quantizePoint void ( ::btQuantizedBvhTree::* )( short unsigned int *,::btVector3 const & ) const+void* btTetrahedronShapeEx_new(); //constructor: btTetrahedronShapeEx  ( ::btTetrahedronShapeEx::* )(  ) +void btTetrahedronShapeEx_free(void *c); void btTetrahedronShapeEx_setVertices(void *c,float* p0,float* p1,float* p2,float* p3); //method: setVertices void ( ::btTetrahedronShapeEx::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void* btTriangleShapeEx_new0(); //constructor: btTriangleShapeEx  ( ::btTriangleShapeEx::* )(  ) +void* btTriangleShapeEx_new1(float* p0,float* p1,float* p2); //constructor: btTriangleShapeEx  ( ::btTriangleShapeEx::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void btTriangleShapeEx_free(void *c); int btTriangleShapeEx_overlap_test_conservative(void *c,void* p0); //method: overlap_test_conservative bool ( ::btTriangleShapeEx::* )( ::btTriangleShapeEx const & ) +void btTriangleShapeEx_buildTriPlane(void *c,float* p0); //method: buildTriPlane void ( ::btTriangleShapeEx::* )( ::btVector4 & ) const+void btTriangleShapeEx_applyTransform(void *c,float* p0); //method: applyTransform void ( ::btTriangleShapeEx::* )( ::btTransform const & ) +void btTriangleShapeEx_getAabb(void *c,float* p0,float* p1,float* p2); //method: getAabb void ( ::btTriangleShapeEx::* )( ::btTransform const &,::btVector3 &,::btVector3 & ) const+void* btDbvt_IClone_new(); //constructor: IClone  ( ::btDbvt::IClone::* )(  ) +void btDbvt_IClone_free(void *c); void btDbvt_IClone_CloneLeaf(void *c,void* p0); //method: CloneLeaf void ( ::btDbvt::IClone::* )( ::btDbvtNode * ) +void* btDbvt_ICollide_new(); //constructor: ICollide  ( ::btDbvt::ICollide::* )(  ) +void btDbvt_ICollide_free(void *c); void btDbvt_ICollide_Process(void *c,void* p0,void* p1); //method: Process void ( ::btDbvt::ICollide::* )( ::btDbvtNode const *,::btDbvtNode const * ) +void btDbvt_ICollide_Process0(void *c,void* p0,void* p1); //method: Process void ( ::btDbvt::ICollide::* )( ::btDbvtNode const *,::btDbvtNode const * ) +void btDbvt_ICollide_Process1(void *c,void* p0); //method: Process void ( ::btDbvt::ICollide::* )( ::btDbvtNode const * ) +void btDbvt_ICollide_Process2(void *c,void* p0,float p1); //method: Process void ( ::btDbvt::ICollide::* )( ::btDbvtNode const *,::btScalar ) +int btDbvt_ICollide_AllLeaves(void *c,void* p0); //method: AllLeaves bool ( ::btDbvt::ICollide::* )( ::btDbvtNode const * ) +int btDbvt_ICollide_Descent(void *c,void* p0); //method: Descent bool ( ::btDbvt::ICollide::* )( ::btDbvtNode const * ) +void btDbvt_IWriter_WriteLeaf(void *c,void* p0,int p1,int p2); //method: WriteLeaf void ( ::btDbvt::IWriter::* )( ::btDbvtNode const *,int,int ) +void btDbvt_IWriter_WriteNode(void *c,void* p0,int p1,int p2,int p3,int p4); //method: WriteNode void ( ::btDbvt::IWriter::* )( ::btDbvtNode const *,int,int,int,int ) +void btDbvt_IWriter_Prepare(void *c,void* p0,int p1); //method: Prepare void ( ::btDbvt::IWriter::* )( ::btDbvtNode const *,int ) +void* bt32BitAxisSweep3_new(float* p0,float* p1,unsigned int p2,void* p3,int p4); //constructor: bt32BitAxisSweep3  ( ::bt32BitAxisSweep3::* )( ::btVector3 const &,::btVector3 const &,unsigned int,::btOverlappingPairCache *,bool ) +void bt32BitAxisSweep3_free(void *c); void* btAxisSweep3_new(float* p0,float* p1,short unsigned int p2,void* p3,int p4); //constructor: btAxisSweep3  ( ::btAxisSweep3::* )( ::btVector3 const &,::btVector3 const &,short unsigned int,::btOverlappingPairCache *,bool ) +void btAxisSweep3_free(void *c); int btBroadphaseAabbCallback_process(void *c,void* p0); //method: process bool ( ::btBroadphaseAabbCallback::* )( ::btBroadphaseProxy const * ) +void btBroadphaseInterface_rayTest(void *c,float* p0,float* p1,void* p2,float* p3,float* p4); //method: rayTest void ( ::btBroadphaseInterface::* )( ::btVector3 const &,::btVector3 const &,::btBroadphaseRayCallback &,::btVector3 const &,::btVector3 const & ) +void btBroadphaseInterface_setAabb(void *c,void* p0,float* p1,float* p2,void* p3); //method: setAabb void ( ::btBroadphaseInterface::* )( ::btBroadphaseProxy *,::btVector3 const &,::btVector3 const &,::btDispatcher * ) +void btBroadphaseInterface_getBroadphaseAabb(void *c,float* p0,float* p1); //method: getBroadphaseAabb void ( ::btBroadphaseInterface::* )( ::btVector3 &,::btVector3 & ) const+void btBroadphaseInterface_resetPool(void *c,void* p0); //method: resetPool void ( ::btBroadphaseInterface::* )( ::btDispatcher * ) +void btBroadphaseInterface_calculateOverlappingPairs(void *c,void* p0); //method: calculateOverlappingPairs void ( ::btBroadphaseInterface::* )( ::btDispatcher * ) +void btBroadphaseInterface_printStats(void *c); //method: printStats void ( ::btBroadphaseInterface::* )(  ) +void btBroadphaseInterface_getAabb(void *c,void* p0,float* p1,float* p2); //method: getAabb void ( ::btBroadphaseInterface::* )( ::btBroadphaseProxy *,::btVector3 &,::btVector3 & ) const+void btBroadphaseInterface_aabbTest(void *c,float* p0,float* p1,void* p2); //method: aabbTest void ( ::btBroadphaseInterface::* )( ::btVector3 const &,::btVector3 const &,::btBroadphaseAabbCallback & ) +//not supported method: createProxy ::btBroadphaseProxy * ( ::btBroadphaseInterface::* )( ::btVector3 const &,::btVector3 const &,int,void *,short int,short int,::btDispatcher *,void * ) +void* btBroadphaseInterface_getOverlappingPairCache(void *c); //method: getOverlappingPairCache ::btOverlappingPairCache * ( ::btBroadphaseInterface::* )(  ) +void* btBroadphaseInterface_getOverlappingPairCache0(void *c); //method: getOverlappingPairCache ::btOverlappingPairCache * ( ::btBroadphaseInterface::* )(  ) +void* btBroadphaseInterface_getOverlappingPairCache1(void *c); //method: getOverlappingPairCache ::btOverlappingPairCache const * ( ::btBroadphaseInterface::* )(  ) const+void btBroadphaseInterface_destroyProxy(void *c,void* p0,void* p1); //method: destroyProxy void ( ::btBroadphaseInterface::* )( ::btBroadphaseProxy *,::btDispatcher * ) +void* btBroadphasePair_new0(); //constructor: btBroadphasePair  ( ::btBroadphasePair::* )(  ) +void* btBroadphasePair_new1(void* p0,void* p1); //constructor: btBroadphasePair  ( ::btBroadphasePair::* )( ::btBroadphaseProxy &,::btBroadphaseProxy & ) +void btBroadphasePair_free(void *c); void btBroadphasePair_m_pProxy0_set(void *c,void* a); //attribute: ::btBroadphaseProxy * btBroadphasePair->m_pProxy0+// attribute getter not supported: //attribute: ::btBroadphaseProxy * btBroadphasePair->m_pProxy0+void btBroadphasePair_m_pProxy1_set(void *c,void* a); //attribute: ::btBroadphaseProxy * btBroadphasePair->m_pProxy1+// attribute getter not supported: //attribute: ::btBroadphaseProxy * btBroadphasePair->m_pProxy1+void btBroadphasePair_m_algorithm_set(void *c,void* a); //attribute: ::btCollisionAlgorithm * btBroadphasePair->m_algorithm+// attribute getter not supported: //attribute: ::btCollisionAlgorithm * btBroadphasePair->m_algorithm+// attribute not supported: //attribute: ::btBroadphasePair btBroadphasePair->+void* btBroadphasePairSortPredicate_new(); //constructor: btBroadphasePairSortPredicate  ( ::btBroadphasePairSortPredicate::* )(  ) +void btBroadphasePairSortPredicate_free(void *c); void* btBroadphaseProxy_new0(); //constructor: btBroadphaseProxy  ( ::btBroadphaseProxy::* )(  ) +//not supported constructor: btBroadphaseProxy  ( ::btBroadphaseProxy::* )( ::btVector3 const &,::btVector3 const &,void *,short int,short int,void * ) +void btBroadphaseProxy_free(void *c); int btBroadphaseProxy_isConvex(int p0); //method: isConvex bool (*)( int )+int btBroadphaseProxy_isInfinite(int p0); //method: isInfinite bool (*)( int )+int btBroadphaseProxy_getUid(void *c); //method: getUid int ( ::btBroadphaseProxy::* )(  ) const+int btBroadphaseProxy_isConcave(int p0); //method: isConcave bool (*)( int )+int btBroadphaseProxy_isNonMoving(int p0); //method: isNonMoving bool (*)( int )+int btBroadphaseProxy_isCompound(int p0); //method: isCompound bool (*)( int )+int btBroadphaseProxy_isPolyhedral(int p0); //method: isPolyhedral bool (*)( int )+int btBroadphaseProxy_isConvex2d(int p0); //method: isConvex2d bool (*)( int )+int btBroadphaseProxy_isSoftBody(int p0); //method: isSoftBody bool (*)( int )+void btBroadphaseProxy_m_aabbMax_set(void *c,float* a); //attribute: ::btVector3 btBroadphaseProxy->m_aabbMax+void btBroadphaseProxy_m_aabbMax_get(void *c,float* a);+void btBroadphaseProxy_m_aabbMin_set(void *c,float* a); //attribute: ::btVector3 btBroadphaseProxy->m_aabbMin+void btBroadphaseProxy_m_aabbMin_get(void *c,float* a);+// attribute not supported: //attribute: void * btBroadphaseProxy->m_clientObject+void btBroadphaseProxy_m_collisionFilterGroup_set(void *c,short int a); //attribute: short int btBroadphaseProxy->m_collisionFilterGroup+short int btBroadphaseProxy_m_collisionFilterGroup_get(void *c); //attribute: short int btBroadphaseProxy->m_collisionFilterGroup+void btBroadphaseProxy_m_collisionFilterMask_set(void *c,short int a); //attribute: short int btBroadphaseProxy->m_collisionFilterMask+short int btBroadphaseProxy_m_collisionFilterMask_get(void *c); //attribute: short int btBroadphaseProxy->m_collisionFilterMask+// attribute not supported: //attribute: void * btBroadphaseProxy->m_multiSapParentProxy+void btBroadphaseProxy_m_uniqueId_set(void *c,int a); //attribute: int btBroadphaseProxy->m_uniqueId+int btBroadphaseProxy_m_uniqueId_get(void *c); //attribute: int btBroadphaseProxy->m_uniqueId+void btBroadphaseRayCallback_m_lambda_max_set(void *c,float a); //attribute: ::btScalar btBroadphaseRayCallback->m_lambda_max+float btBroadphaseRayCallback_m_lambda_max_get(void *c); //attribute: ::btScalar btBroadphaseRayCallback->m_lambda_max+void btBroadphaseRayCallback_m_rayDirectionInverse_set(void *c,float* a); //attribute: ::btVector3 btBroadphaseRayCallback->m_rayDirectionInverse+void btBroadphaseRayCallback_m_rayDirectionInverse_get(void *c,float* a);+// attribute not supported: //attribute: unsigned int[3] btBroadphaseRayCallback->m_signs+void* btBvhSubtreeInfo_new(); //constructor: btBvhSubtreeInfo  ( ::btBvhSubtreeInfo::* )(  ) +void btBvhSubtreeInfo_free(void *c); void btBvhSubtreeInfo_setAabbFromQuantizeNode(void *c,void* p0); //method: setAabbFromQuantizeNode void ( ::btBvhSubtreeInfo::* )( ::btQuantizedBvhNode const & ) +// attribute not supported: //attribute: short unsigned int[3] btBvhSubtreeInfo->m_quantizedAabbMin+// attribute not supported: //attribute: short unsigned int[3] btBvhSubtreeInfo->m_quantizedAabbMax+void btBvhSubtreeInfo_m_rootNodeIndex_set(void *c,int a); //attribute: int btBvhSubtreeInfo->m_rootNodeIndex+int btBvhSubtreeInfo_m_rootNodeIndex_get(void *c); //attribute: int btBvhSubtreeInfo->m_rootNodeIndex+void btBvhSubtreeInfo_m_subtreeSize_set(void *c,int a); //attribute: int btBvhSubtreeInfo->m_subtreeSize+int btBvhSubtreeInfo_m_subtreeSize_get(void *c); //attribute: int btBvhSubtreeInfo->m_subtreeSize+// attribute not supported: //attribute: int[3] btBvhSubtreeInfo->m_padding+void* btBvhSubtreeInfoData_new(); //constructor: btBvhSubtreeInfoData  ( ::btBvhSubtreeInfoData::* )(  ) +void btBvhSubtreeInfoData_free(void *c); void btBvhSubtreeInfoData_m_rootNodeIndex_set(void *c,int a); //attribute: int btBvhSubtreeInfoData->m_rootNodeIndex+int btBvhSubtreeInfoData_m_rootNodeIndex_get(void *c); //attribute: int btBvhSubtreeInfoData->m_rootNodeIndex+void btBvhSubtreeInfoData_m_subtreeSize_set(void *c,int a); //attribute: int btBvhSubtreeInfoData->m_subtreeSize+int btBvhSubtreeInfoData_m_subtreeSize_get(void *c); //attribute: int btBvhSubtreeInfoData->m_subtreeSize+// attribute not supported: //attribute: short unsigned int[3] btBvhSubtreeInfoData->m_quantizedAabbMin+// attribute not supported: //attribute: short unsigned int[3] btBvhSubtreeInfoData->m_quantizedAabbMax+//not supported method: getAllContactManifolds void ( ::btCollisionAlgorithm::* )( ::btManifoldArray & ) +float btCollisionAlgorithm_calculateTimeOfImpact(void *c,void* p0,void* p1,void* p2,void* p3); //method: calculateTimeOfImpact ::btScalar ( ::btCollisionAlgorithm::* )( ::btCollisionObject *,::btCollisionObject *,::btDispatcherInfo const &,::btManifoldResult * ) +void btCollisionAlgorithm_processCollision(void *c,void* p0,void* p1,void* p2,void* p3); //method: processCollision void ( ::btCollisionAlgorithm::* )( ::btCollisionObject *,::btCollisionObject *,::btDispatcherInfo const &,::btManifoldResult * ) +void* btCollisionAlgorithmConstructionInfo_new0(); //constructor: btCollisionAlgorithmConstructionInfo  ( ::btCollisionAlgorithmConstructionInfo::* )(  ) +void* btCollisionAlgorithmConstructionInfo_new1(void* p0,int p1); //constructor: btCollisionAlgorithmConstructionInfo  ( ::btCollisionAlgorithmConstructionInfo::* )( ::btDispatcher *,int ) +void btCollisionAlgorithmConstructionInfo_free(void *c); void btCollisionAlgorithmConstructionInfo_m_dispatcher1_set(void *c,void* a); //attribute: ::btDispatcher * btCollisionAlgorithmConstructionInfo->m_dispatcher1+// attribute getter not supported: //attribute: ::btDispatcher * btCollisionAlgorithmConstructionInfo->m_dispatcher1+void btCollisionAlgorithmConstructionInfo_m_manifold_set(void *c,void* a); //attribute: ::btPersistentManifold * btCollisionAlgorithmConstructionInfo->m_manifold+// attribute getter not supported: //attribute: ::btPersistentManifold * btCollisionAlgorithmConstructionInfo->m_manifold+void* btDbvt_new(); //constructor: btDbvt  ( ::btDbvt::* )(  ) +void btDbvt_free(void *c); //not supported method: nearest int (*)( int const *,::btDbvt::sStkNPS const *,::btScalar,int,int )+void btDbvt_enumLeaves(void* p0,void* p1); //method: enumLeaves void (*)( ::btDbvtNode const *,::btDbvt::ICollide & )+void btDbvt_optimizeIncremental(void *c,int p0); //method: optimizeIncremental void ( ::btDbvt::* )( int ) +void btDbvt_rayTest(void* p0,float* p1,float* p2,void* p3); //method: rayTest void (*)( ::btDbvtNode const *,::btVector3 const &,::btVector3 const &,::btDbvt::ICollide & )+void btDbvt_optimizeTopDown(void *c,int p0); //method: optimizeTopDown void ( ::btDbvt::* )( int ) +void btDbvt_enumNodes(void* p0,void* p1); //method: enumNodes void (*)( ::btDbvtNode const *,::btDbvt::ICollide & )+void btDbvt_write(void *c,void* p0); //method: write void ( ::btDbvt::* )( ::btDbvt::IWriter * ) const+//not supported method: allocate int (*)( ::btAlignedObjectArray<int> &,::btAlignedObjectArray<btDbvt::sStkNPS> &,::btDbvt::sStkNPS const & )+int btDbvt_empty(void *c); //method: empty bool ( ::btDbvt::* )(  ) const+void btDbvt_collideTV(void *c,void* p0,void* p1,void* p2); //method: collideTV void ( ::btDbvt::* )( ::btDbvtNode const *,::btDbvtVolume const &,::btDbvt::ICollide & ) +void btDbvt_collideTU(void* p0,void* p1); //method: collideTU void (*)( ::btDbvtNode const *,::btDbvt::ICollide & )+void btDbvt_collideTT(void *c,void* p0,void* p1,void* p2); //method: collideTT void ( ::btDbvt::* )( ::btDbvtNode const *,::btDbvtNode const *,::btDbvt::ICollide & ) +void btDbvt_collideTTpersistentStack(void *c,void* p0,void* p1,void* p2); //method: collideTTpersistentStack void ( ::btDbvt::* )( ::btDbvtNode const *,::btDbvtNode const *,::btDbvt::ICollide & ) +void btDbvt_clone(void *c,void* p0,void* p1); //method: clone void ( ::btDbvt::* )( ::btDbvt &,::btDbvt::IClone * ) const+void btDbvt_benchmark(); //method: benchmark void (*)(  )+void btDbvt_update(void *c,void* p0,int p1); //method: update void ( ::btDbvt::* )( ::btDbvtNode *,int ) +void btDbvt_update0(void *c,void* p0,int p1); //method: update void ( ::btDbvt::* )( ::btDbvtNode *,int ) +void btDbvt_update1(void *c,void* p0,void* p1); //method: update void ( ::btDbvt::* )( ::btDbvtNode *,::btDbvtVolume & ) +int btDbvt_update2(void *c,void* p0,void* p1,float* p2,float p3); //method: update bool ( ::btDbvt::* )( ::btDbvtNode *,::btDbvtVolume &,::btVector3 const &,::btScalar ) +int btDbvt_update3(void *c,void* p0,void* p1,float* p2); //method: update bool ( ::btDbvt::* )( ::btDbvtNode *,::btDbvtVolume &,::btVector3 const & ) +int btDbvt_update4(void *c,void* p0,void* p1,float p2); //method: update bool ( ::btDbvt::* )( ::btDbvtNode *,::btDbvtVolume &,::btScalar ) +int btDbvt_countLeaves(void* p0); //method: countLeaves int (*)( ::btDbvtNode const * )+//not supported method: collideOCL void (*)( ::btDbvtNode const *,::btVector3 const *,::btScalar const *,::btVector3 const &,int,::btDbvt::ICollide &,bool )+//not supported method: insert ::btDbvtNode * ( ::btDbvt::* )( ::btDbvtVolume const &,void * ) +//not supported method: collideKDOP void (*)( ::btDbvtNode const *,::btVector3 const *,::btScalar const *,int,::btDbvt::ICollide & )+//not supported method: extractLeaves void (*)( ::btDbvtNode const *,::btAlignedObjectArray<btDbvtNode const*> & )+void btDbvt_remove(void *c,void* p0); //method: remove void ( ::btDbvt::* )( ::btDbvtNode * ) +//not supported method: rayTestInternal void ( ::btDbvt::* )( ::btDbvtNode const *,::btVector3 const &,::btVector3 const &,::btVector3 const &,unsigned int *,::btScalar,::btVector3 const &,::btVector3 const &,::btDbvt::ICollide & ) const+int btDbvt_maxdepth(void* p0); //method: maxdepth int (*)( ::btDbvtNode const * )+void btDbvt_clear(void *c); //method: clear void ( ::btDbvt::* )(  ) +void btDbvt_optimizeBottomUp(void *c); //method: optimizeBottomUp void ( ::btDbvt::* )(  ) +void btDbvt_m_free_set(void *c,void* a); //attribute: ::btDbvtNode * btDbvt->m_free+// attribute getter not supported: //attribute: ::btDbvtNode * btDbvt->m_free+void btDbvt_m_leaves_set(void *c,int a); //attribute: int btDbvt->m_leaves+int btDbvt_m_leaves_get(void *c); //attribute: int btDbvt->m_leaves+void btDbvt_m_lkhd_set(void *c,int a); //attribute: int btDbvt->m_lkhd+int btDbvt_m_lkhd_get(void *c); //attribute: int btDbvt->m_lkhd+void btDbvt_m_opath_set(void *c,unsigned int a); //attribute: unsigned int btDbvt->m_opath+unsigned int btDbvt_m_opath_get(void *c); //attribute: unsigned int btDbvt->m_opath+void btDbvt_m_root_set(void *c,void* a); //attribute: ::btDbvtNode * btDbvt->m_root+// attribute getter not supported: //attribute: ::btDbvtNode * btDbvt->m_root+// attribute not supported: //attribute: ::btAlignedObjectArray<btDbvt::sStkNN> btDbvt->m_stkStack+void* btDbvtAabbMm_new(); //constructor: btDbvtAabbMm  ( ::btDbvtAabbMm::* )(  ) +void btDbvtAabbMm_free(void *c); void btDbvtAabbMm_SignedExpand(void *c,float* p0); //method: SignedExpand void ( ::btDbvtAabbMm::* )( ::btVector3 const & ) +void btDbvtAabbMm_Extents(void *c,float* ret); //method: Extents ::btVector3 ( ::btDbvtAabbMm::* )(  ) const+void btDbvtAabbMm_Center(void *c,float* ret); //method: Center ::btVector3 ( ::btDbvtAabbMm::* )(  ) const+void btDbvtAabbMm_Lengths(void *c,float* ret); //method: Lengths ::btVector3 ( ::btDbvtAabbMm::* )(  ) const+void btDbvtAabbMm_Maxs(void *c,float* ret); //method: Maxs ::btVector3 const & ( ::btDbvtAabbMm::* )(  ) const+//not supported method: FromCE ::btDbvtAabbMm (*)( ::btVector3 const &,::btVector3 const & )+//not supported method: FromMM ::btDbvtAabbMm (*)( ::btVector3 const &,::btVector3 const & )+float btDbvtAabbMm_ProjectMinimum(void *c,float* p0,unsigned int p1); //method: ProjectMinimum ::btScalar ( ::btDbvtAabbMm::* )( ::btVector3 const &,unsigned int ) const+int btDbvtAabbMm_Classify(void *c,float* p0,float p1,int p2); //method: Classify int ( ::btDbvtAabbMm::* )( ::btVector3 const &,::btScalar,int ) const+int btDbvtAabbMm_Contain(void *c,void* p0); //method: Contain bool ( ::btDbvtAabbMm::* )( ::btDbvtAabbMm const & ) const+void btDbvtAabbMm_Mins(void *c,float* ret); //method: Mins ::btVector3 const & ( ::btDbvtAabbMm::* )(  ) const+//not supported method: FromCR ::btDbvtAabbMm (*)( ::btVector3 const &,::btScalar )+void btDbvtAabbMm_Expand(void *c,float* p0); //method: Expand void ( ::btDbvtAabbMm::* )( ::btVector3 const & ) +//not supported method: FromPoints ::btDbvtAabbMm (*)( ::btVector3 const *,int )+//not supported method: FromPoints ::btDbvtAabbMm (*)( ::btVector3 const *,int )+//not supported method: FromPoints ::btDbvtAabbMm (*)( ::btVector3 const * *,int )+void* btDbvtBroadphase_new(void* p0); //constructor: btDbvtBroadphase  ( ::btDbvtBroadphase::* )( ::btOverlappingPairCache * ) +void btDbvtBroadphase_free(void *c); void btDbvtBroadphase_rayTest(void *c,float* p0,float* p1,void* p2,float* p3,float* p4); //method: rayTest void ( ::btDbvtBroadphase::* )( ::btVector3 const &,::btVector3 const &,::btBroadphaseRayCallback &,::btVector3 const &,::btVector3 const & ) +void btDbvtBroadphase_performDeferredRemoval(void *c,void* p0); //method: performDeferredRemoval void ( ::btDbvtBroadphase::* )( ::btDispatcher * ) +void btDbvtBroadphase_setAabb(void *c,void* p0,float* p1,float* p2,void* p3); //method: setAabb void ( ::btDbvtBroadphase::* )( ::btBroadphaseProxy *,::btVector3 const &,::btVector3 const &,::btDispatcher * ) +void* btDbvtBroadphase_getOverlappingPairCache(void *c); //method: getOverlappingPairCache ::btOverlappingPairCache * ( ::btDbvtBroadphase::* )(  ) +void* btDbvtBroadphase_getOverlappingPairCache0(void *c); //method: getOverlappingPairCache ::btOverlappingPairCache * ( ::btDbvtBroadphase::* )(  ) +void* btDbvtBroadphase_getOverlappingPairCache1(void *c); //method: getOverlappingPairCache ::btOverlappingPairCache const * ( ::btDbvtBroadphase::* )(  ) const+void btDbvtBroadphase_setVelocityPrediction(void *c,float p0); //method: setVelocityPrediction void ( ::btDbvtBroadphase::* )( ::btScalar ) +void btDbvtBroadphase_benchmark(void* p0); //method: benchmark void (*)( ::btBroadphaseInterface * )+void btDbvtBroadphase_collide(void *c,void* p0); //method: collide void ( ::btDbvtBroadphase::* )( ::btDispatcher * ) +void btDbvtBroadphase_resetPool(void *c,void* p0); //method: resetPool void ( ::btDbvtBroadphase::* )( ::btDispatcher * ) +float btDbvtBroadphase_getVelocityPrediction(void *c); //method: getVelocityPrediction ::btScalar ( ::btDbvtBroadphase::* )(  ) const+void btDbvtBroadphase_calculateOverlappingPairs(void *c,void* p0); //method: calculateOverlappingPairs void ( ::btDbvtBroadphase::* )( ::btDispatcher * ) +void btDbvtBroadphase_setAabbForceUpdate(void *c,void* p0,float* p1,float* p2,void* p3); //method: setAabbForceUpdate void ( ::btDbvtBroadphase::* )( ::btBroadphaseProxy *,::btVector3 const &,::btVector3 const &,::btDispatcher * ) +void btDbvtBroadphase_getBroadphaseAabb(void *c,float* p0,float* p1); //method: getBroadphaseAabb void ( ::btDbvtBroadphase::* )( ::btVector3 &,::btVector3 & ) const+void btDbvtBroadphase_printStats(void *c); //method: printStats void ( ::btDbvtBroadphase::* )(  ) +void btDbvtBroadphase_getAabb(void *c,void* p0,float* p1,float* p2); //method: getAabb void ( ::btDbvtBroadphase::* )( ::btBroadphaseProxy *,::btVector3 &,::btVector3 & ) const+void btDbvtBroadphase_aabbTest(void *c,float* p0,float* p1,void* p2); //method: aabbTest void ( ::btDbvtBroadphase::* )( ::btVector3 const &,::btVector3 const &,::btBroadphaseAabbCallback & ) +//not supported method: createProxy ::btBroadphaseProxy * ( ::btDbvtBroadphase::* )( ::btVector3 const &,::btVector3 const &,int,void *,short int,short int,::btDispatcher *,void * ) +void btDbvtBroadphase_optimize(void *c); //method: optimize void ( ::btDbvtBroadphase::* )(  ) +void btDbvtBroadphase_destroyProxy(void *c,void* p0,void* p1); //method: destroyProxy void ( ::btDbvtBroadphase::* )( ::btBroadphaseProxy *,::btDispatcher * ) +// attribute not supported: //attribute: ::btDbvt[2] btDbvtBroadphase->m_sets+// attribute not supported: //attribute: ::btDbvtProxy *[3] btDbvtBroadphase->m_stageRoots+void btDbvtBroadphase_m_paircache_set(void *c,void* a); //attribute: ::btOverlappingPairCache * btDbvtBroadphase->m_paircache+// attribute getter not supported: //attribute: ::btOverlappingPairCache * btDbvtBroadphase->m_paircache+void btDbvtBroadphase_m_prediction_set(void *c,float a); //attribute: ::btScalar btDbvtBroadphase->m_prediction+float btDbvtBroadphase_m_prediction_get(void *c); //attribute: ::btScalar btDbvtBroadphase->m_prediction+void btDbvtBroadphase_m_stageCurrent_set(void *c,int a); //attribute: int btDbvtBroadphase->m_stageCurrent+int btDbvtBroadphase_m_stageCurrent_get(void *c); //attribute: int btDbvtBroadphase->m_stageCurrent+void btDbvtBroadphase_m_fupdates_set(void *c,int a); //attribute: int btDbvtBroadphase->m_fupdates+int btDbvtBroadphase_m_fupdates_get(void *c); //attribute: int btDbvtBroadphase->m_fupdates+void btDbvtBroadphase_m_dupdates_set(void *c,int a); //attribute: int btDbvtBroadphase->m_dupdates+int btDbvtBroadphase_m_dupdates_get(void *c); //attribute: int btDbvtBroadphase->m_dupdates+void btDbvtBroadphase_m_cupdates_set(void *c,int a); //attribute: int btDbvtBroadphase->m_cupdates+int btDbvtBroadphase_m_cupdates_get(void *c); //attribute: int btDbvtBroadphase->m_cupdates+void btDbvtBroadphase_m_newpairs_set(void *c,int a); //attribute: int btDbvtBroadphase->m_newpairs+int btDbvtBroadphase_m_newpairs_get(void *c); //attribute: int btDbvtBroadphase->m_newpairs+void btDbvtBroadphase_m_fixedleft_set(void *c,int a); //attribute: int btDbvtBroadphase->m_fixedleft+int btDbvtBroadphase_m_fixedleft_get(void *c); //attribute: int btDbvtBroadphase->m_fixedleft+void btDbvtBroadphase_m_updates_call_set(void *c,unsigned int a); //attribute: unsigned int btDbvtBroadphase->m_updates_call+unsigned int btDbvtBroadphase_m_updates_call_get(void *c); //attribute: unsigned int btDbvtBroadphase->m_updates_call+void btDbvtBroadphase_m_updates_done_set(void *c,unsigned int a); //attribute: unsigned int btDbvtBroadphase->m_updates_done+unsigned int btDbvtBroadphase_m_updates_done_get(void *c); //attribute: unsigned int btDbvtBroadphase->m_updates_done+void btDbvtBroadphase_m_updates_ratio_set(void *c,float a); //attribute: ::btScalar btDbvtBroadphase->m_updates_ratio+float btDbvtBroadphase_m_updates_ratio_get(void *c); //attribute: ::btScalar btDbvtBroadphase->m_updates_ratio+void btDbvtBroadphase_m_pid_set(void *c,int a); //attribute: int btDbvtBroadphase->m_pid+int btDbvtBroadphase_m_pid_get(void *c); //attribute: int btDbvtBroadphase->m_pid+void btDbvtBroadphase_m_cid_set(void *c,int a); //attribute: int btDbvtBroadphase->m_cid+int btDbvtBroadphase_m_cid_get(void *c); //attribute: int btDbvtBroadphase->m_cid+void btDbvtBroadphase_m_gid_set(void *c,int a); //attribute: int btDbvtBroadphase->m_gid+int btDbvtBroadphase_m_gid_get(void *c); //attribute: int btDbvtBroadphase->m_gid+void btDbvtBroadphase_m_releasepaircache_set(void *c,int a); //attribute: bool btDbvtBroadphase->m_releasepaircache+int btDbvtBroadphase_m_releasepaircache_get(void *c); //attribute: bool btDbvtBroadphase->m_releasepaircache+void btDbvtBroadphase_m_deferedcollide_set(void *c,int a); //attribute: bool btDbvtBroadphase->m_deferedcollide+int btDbvtBroadphase_m_deferedcollide_get(void *c); //attribute: bool btDbvtBroadphase->m_deferedcollide+void btDbvtBroadphase_m_needcleanup_set(void *c,int a); //attribute: bool btDbvtBroadphase->m_needcleanup+int btDbvtBroadphase_m_needcleanup_get(void *c); //attribute: bool btDbvtBroadphase->m_needcleanup+void* btDbvtNode_new(); //constructor: btDbvtNode  ( ::btDbvtNode::* )(  ) +void btDbvtNode_free(void *c); int btDbvtNode_isinternal(void *c); //method: isinternal bool ( ::btDbvtNode::* )(  ) const+int btDbvtNode_isleaf(void *c); //method: isleaf bool ( ::btDbvtNode::* )(  ) const+// attribute not supported: //attribute: ::btDbvtNode btDbvtNode->+void btDbvtNode_parent_set(void *c,void* a); //attribute: ::btDbvtNode * btDbvtNode->parent+// attribute getter not supported: //attribute: ::btDbvtNode * btDbvtNode->parent+// attribute not supported: //attribute: ::btDbvtVolume btDbvtNode->volume+//not supported constructor: btDbvtProxy  ( ::btDbvtProxy::* )( ::btVector3 const &,::btVector3 const &,void *,short int,short int ) +void btDbvtProxy_free(void *c); void btDbvtProxy_leaf_set(void *c,void* a); //attribute: ::btDbvtNode * btDbvtProxy->leaf+// attribute getter not supported: //attribute: ::btDbvtNode * btDbvtProxy->leaf+// attribute not supported: //attribute: ::btDbvtProxy *[2] btDbvtProxy->links+void btDbvtProxy_stage_set(void *c,int a); //attribute: int btDbvtProxy->stage+int btDbvtProxy_stage_get(void *c); //attribute: int btDbvtProxy->stage+//not supported method: allocateCollisionAlgorithm void * ( ::btDispatcher::* )( int ) +void btDispatcher_releaseManifold(void *c,void* p0); //method: releaseManifold void ( ::btDispatcher::* )( ::btPersistentManifold * ) +int btDispatcher_getNumManifolds(void *c); //method: getNumManifolds int ( ::btDispatcher::* )(  ) const+void btDispatcher_clearManifold(void *c,void* p0); //method: clearManifold void ( ::btDispatcher::* )( ::btPersistentManifold * ) +//not supported method: freeCollisionAlgorithm void ( ::btDispatcher::* )( void * ) +//not supported method: getInternalManifoldPointer ::btPersistentManifold * * ( ::btDispatcher::* )(  ) +void* btDispatcher_findAlgorithm(void *c,void* p0,void* p1,void* p2); //method: findAlgorithm ::btCollisionAlgorithm * ( ::btDispatcher::* )( ::btCollisionObject *,::btCollisionObject *,::btPersistentManifold * ) +int btDispatcher_needsResponse(void *c,void* p0,void* p1); //method: needsResponse bool ( ::btDispatcher::* )( ::btCollisionObject *,::btCollisionObject * ) +//not supported method: getNewManifold ::btPersistentManifold * ( ::btDispatcher::* )( void *,void * ) +void btDispatcher_dispatchAllCollisionPairs(void *c,void* p0,void* p1,void* p2); //method: dispatchAllCollisionPairs void ( ::btDispatcher::* )( ::btOverlappingPairCache *,::btDispatcherInfo const &,::btDispatcher * ) +//not supported method: getInternalManifoldPool ::btPoolAllocator * ( ::btDispatcher::* )(  ) +//not supported method: getInternalManifoldPool ::btPoolAllocator * ( ::btDispatcher::* )(  ) +//not supported method: getInternalManifoldPool ::btPoolAllocator const * ( ::btDispatcher::* )(  ) const+int btDispatcher_needsCollision(void *c,void* p0,void* p1); //method: needsCollision bool ( ::btDispatcher::* )( ::btCollisionObject *,::btCollisionObject * ) +void* btDispatcher_getManifoldByIndexInternal(void *c,int p0); //method: getManifoldByIndexInternal ::btPersistentManifold * ( ::btDispatcher::* )( int ) +void* btDispatcherInfo_new(); //constructor: btDispatcherInfo  ( ::btDispatcherInfo::* )(  ) +void btDispatcherInfo_free(void *c); void btDispatcherInfo_m_allowedCcdPenetration_set(void *c,float a); //attribute: ::btScalar btDispatcherInfo->m_allowedCcdPenetration+float btDispatcherInfo_m_allowedCcdPenetration_get(void *c); //attribute: ::btScalar btDispatcherInfo->m_allowedCcdPenetration+void btDispatcherInfo_m_convexConservativeDistanceThreshold_set(void *c,float a); //attribute: ::btScalar btDispatcherInfo->m_convexConservativeDistanceThreshold+float btDispatcherInfo_m_convexConservativeDistanceThreshold_get(void *c); //attribute: ::btScalar btDispatcherInfo->m_convexConservativeDistanceThreshold+void btDispatcherInfo_m_debugDraw_set(void *c,void* a); //attribute: ::btIDebugDraw * btDispatcherInfo->m_debugDraw+// attribute getter not supported: //attribute: ::btIDebugDraw * btDispatcherInfo->m_debugDraw+void btDispatcherInfo_m_dispatchFunc_set(void *c,int a); //attribute: int btDispatcherInfo->m_dispatchFunc+int btDispatcherInfo_m_dispatchFunc_get(void *c); //attribute: int btDispatcherInfo->m_dispatchFunc+void btDispatcherInfo_m_enableSPU_set(void *c,int a); //attribute: bool btDispatcherInfo->m_enableSPU+int btDispatcherInfo_m_enableSPU_get(void *c); //attribute: bool btDispatcherInfo->m_enableSPU+void btDispatcherInfo_m_enableSatConvex_set(void *c,int a); //attribute: bool btDispatcherInfo->m_enableSatConvex+int btDispatcherInfo_m_enableSatConvex_get(void *c); //attribute: bool btDispatcherInfo->m_enableSatConvex+void btDispatcherInfo_m_stackAllocator_set(void *c,void* a); //attribute: ::btStackAlloc * btDispatcherInfo->m_stackAllocator+// attribute getter not supported: //attribute: ::btStackAlloc * btDispatcherInfo->m_stackAllocator+void btDispatcherInfo_m_stepCount_set(void *c,int a); //attribute: int btDispatcherInfo->m_stepCount+int btDispatcherInfo_m_stepCount_get(void *c); //attribute: int btDispatcherInfo->m_stepCount+void btDispatcherInfo_m_timeOfImpact_set(void *c,float a); //attribute: ::btScalar btDispatcherInfo->m_timeOfImpact+float btDispatcherInfo_m_timeOfImpact_get(void *c); //attribute: ::btScalar btDispatcherInfo->m_timeOfImpact+void btDispatcherInfo_m_timeStep_set(void *c,float a); //attribute: ::btScalar btDispatcherInfo->m_timeStep+float btDispatcherInfo_m_timeStep_get(void *c); //attribute: ::btScalar btDispatcherInfo->m_timeStep+void btDispatcherInfo_m_useContinuous_set(void *c,int a); //attribute: bool btDispatcherInfo->m_useContinuous+int btDispatcherInfo_m_useContinuous_get(void *c); //attribute: bool btDispatcherInfo->m_useContinuous+void btDispatcherInfo_m_useConvexConservativeDistanceUtil_set(void *c,int a); //attribute: bool btDispatcherInfo->m_useConvexConservativeDistanceUtil+int btDispatcherInfo_m_useConvexConservativeDistanceUtil_get(void *c); //attribute: bool btDispatcherInfo->m_useConvexConservativeDistanceUtil+void btDispatcherInfo_m_useEpa_set(void *c,int a); //attribute: bool btDispatcherInfo->m_useEpa+int btDispatcherInfo_m_useEpa_get(void *c); //attribute: bool btDispatcherInfo->m_useEpa+void* btHashedOverlappingPairCache_new(); //constructor: btHashedOverlappingPairCache  ( ::btHashedOverlappingPairCache::* )(  ) +void btHashedOverlappingPairCache_free(void *c); void* btHashedOverlappingPairCache_getOverlapFilterCallback(void *c); //method: getOverlapFilterCallback ::btOverlapFilterCallback * ( ::btHashedOverlappingPairCache::* )(  ) +void* btHashedOverlappingPairCache_addOverlappingPair(void *c,void* p0,void* p1); //method: addOverlappingPair ::btBroadphasePair * ( ::btHashedOverlappingPairCache::* )( ::btBroadphaseProxy *,::btBroadphaseProxy * ) +void btHashedOverlappingPairCache_removeOverlappingPairsContainingProxy(void *c,void* p0,void* p1); //method: removeOverlappingPairsContainingProxy void ( ::btHashedOverlappingPairCache::* )( ::btBroadphaseProxy *,::btDispatcher * ) +int btHashedOverlappingPairCache_needsBroadphaseCollision(void *c,void* p0,void* p1); //method: needsBroadphaseCollision bool ( ::btHashedOverlappingPairCache::* )( ::btBroadphaseProxy *,::btBroadphaseProxy * ) const+//not supported method: getOverlappingPairArray ::btBroadphasePairArray & ( ::btHashedOverlappingPairCache::* )(  ) +//not supported method: getOverlappingPairArray ::btBroadphasePairArray & ( ::btHashedOverlappingPairCache::* )(  ) +//not supported method: getOverlappingPairArray ::btBroadphasePairArray const & ( ::btHashedOverlappingPairCache::* )(  ) const+void* btHashedOverlappingPairCache_findPair(void *c,void* p0,void* p1); //method: findPair ::btBroadphasePair * ( ::btHashedOverlappingPairCache::* )( ::btBroadphaseProxy *,::btBroadphaseProxy * ) +void btHashedOverlappingPairCache_cleanProxyFromPairs(void *c,void* p0,void* p1); //method: cleanProxyFromPairs void ( ::btHashedOverlappingPairCache::* )( ::btBroadphaseProxy *,::btDispatcher * ) +void btHashedOverlappingPairCache_cleanOverlappingPair(void *c,void* p0,void* p1); //method: cleanOverlappingPair void ( ::btHashedOverlappingPairCache::* )( ::btBroadphasePair &,::btDispatcher * ) +int btHashedOverlappingPairCache_getNumOverlappingPairs(void *c); //method: getNumOverlappingPairs int ( ::btHashedOverlappingPairCache::* )(  ) const+//not supported method: removeOverlappingPair void * ( ::btHashedOverlappingPairCache::* )( ::btBroadphaseProxy *,::btBroadphaseProxy *,::btDispatcher * ) +int btHashedOverlappingPairCache_GetCount(void *c); //method: GetCount int ( ::btHashedOverlappingPairCache::* )(  ) const+void btHashedOverlappingPairCache_processAllOverlappingPairs(void *c,void* p0,void* p1); //method: processAllOverlappingPairs void ( ::btHashedOverlappingPairCache::* )( ::btOverlapCallback *,::btDispatcher * ) +void* btHashedOverlappingPairCache_getOverlappingPairArrayPtr(void *c); //method: getOverlappingPairArrayPtr ::btBroadphasePair * ( ::btHashedOverlappingPairCache::* )(  ) +void* btHashedOverlappingPairCache_getOverlappingPairArrayPtr0(void *c); //method: getOverlappingPairArrayPtr ::btBroadphasePair * ( ::btHashedOverlappingPairCache::* )(  ) +void* btHashedOverlappingPairCache_getOverlappingPairArrayPtr1(void *c); //method: getOverlappingPairArrayPtr ::btBroadphasePair const * ( ::btHashedOverlappingPairCache::* )(  ) const+void btHashedOverlappingPairCache_setOverlapFilterCallback(void *c,void* p0); //method: setOverlapFilterCallback void ( ::btHashedOverlappingPairCache::* )( ::btOverlapFilterCallback * ) +void btMultiSapBroadphase_addToChildBroadphase(void *c,void* p0,void* p1,void* p2); //method: addToChildBroadphase void ( ::btMultiSapBroadphase::* )( ::btMultiSapBroadphase::btMultiSapProxy *,::btBroadphaseProxy *,::btBroadphaseInterface * ) +void btMultiSapBroadphase_rayTest(void *c,float* p0,float* p1,void* p2,float* p3,float* p4); //method: rayTest void ( ::btMultiSapBroadphase::* )( ::btVector3 const &,::btVector3 const &,::btBroadphaseRayCallback &,::btVector3 const &,::btVector3 const & ) +void btMultiSapBroadphase_setAabb(void *c,void* p0,float* p1,float* p2,void* p3); //method: setAabb void ( ::btMultiSapBroadphase::* )( ::btBroadphaseProxy *,::btVector3 const &,::btVector3 const &,::btDispatcher * ) +void* btMultiSapBroadphase_getOverlappingPairCache(void *c); //method: getOverlappingPairCache ::btOverlappingPairCache * ( ::btMultiSapBroadphase::* )(  ) +void* btMultiSapBroadphase_getOverlappingPairCache0(void *c); //method: getOverlappingPairCache ::btOverlappingPairCache * ( ::btMultiSapBroadphase::* )(  ) +void* btMultiSapBroadphase_getOverlappingPairCache1(void *c); //method: getOverlappingPairCache ::btOverlappingPairCache const * ( ::btMultiSapBroadphase::* )(  ) const+//not supported method: quicksort void ( ::btMultiSapBroadphase::* )( ::btBroadphasePairArray &,int,int ) +void btMultiSapBroadphase_buildTree(void *c,float* p0,float* p1); //method: buildTree void ( ::btMultiSapBroadphase::* )( ::btVector3 const &,::btVector3 const & ) +void btMultiSapBroadphase_resetPool(void *c,void* p0); //method: resetPool void ( ::btMultiSapBroadphase::* )( ::btDispatcher * ) +void btMultiSapBroadphase_calculateOverlappingPairs(void *c,void* p0); //method: calculateOverlappingPairs void ( ::btMultiSapBroadphase::* )( ::btDispatcher * ) +int btMultiSapBroadphase_testAabbOverlap(void *c,void* p0,void* p1); //method: testAabbOverlap bool ( ::btMultiSapBroadphase::* )( ::btBroadphaseProxy *,::btBroadphaseProxy * ) +void btMultiSapBroadphase_getAabb(void *c,void* p0,float* p1,float* p2); //method: getAabb void ( ::btMultiSapBroadphase::* )( ::btBroadphaseProxy *,::btVector3 &,::btVector3 & ) const+//not supported method: getBroadphaseArray ::btSapBroadphaseArray & ( ::btMultiSapBroadphase::* )(  ) +//not supported method: getBroadphaseArray ::btSapBroadphaseArray & ( ::btMultiSapBroadphase::* )(  ) +//not supported method: getBroadphaseArray ::btSapBroadphaseArray const & ( ::btMultiSapBroadphase::* )(  ) const+//not supported method: createProxy ::btBroadphaseProxy * ( ::btMultiSapBroadphase::* )( ::btVector3 const &,::btVector3 const &,int,void *,short int,short int,::btDispatcher *,void * ) +void btMultiSapBroadphase_printStats(void *c); //method: printStats void ( ::btMultiSapBroadphase::* )(  ) +void btMultiSapBroadphase_getBroadphaseAabb(void *c,float* p0,float* p1); //method: getBroadphaseAabb void ( ::btMultiSapBroadphase::* )( ::btVector3 &,::btVector3 & ) const+void btMultiSapBroadphase_destroyProxy(void *c,void* p0,void* p1); //method: destroyProxy void ( ::btMultiSapBroadphase::* )( ::btBroadphaseProxy *,::btDispatcher * ) +//not supported constructor: btMultiSapProxy  ( ::btMultiSapBroadphase::btMultiSapProxy::* )( ::btVector3 const &,::btVector3 const &,int,void *,short int,short int ) +void btMultiSapBroadphase_btMultiSapProxy_free(void *c); void btMultiSapBroadphase_btMultiSapProxy_m_aabbMax_set(void *c,float* a); //attribute: ::btVector3 btMultiSapBroadphase_btMultiSapProxy->m_aabbMax+void btMultiSapBroadphase_btMultiSapProxy_m_aabbMax_get(void *c,float* a);+void btMultiSapBroadphase_btMultiSapProxy_m_aabbMin_set(void *c,float* a); //attribute: ::btVector3 btMultiSapBroadphase_btMultiSapProxy->m_aabbMin+void btMultiSapBroadphase_btMultiSapProxy_m_aabbMin_get(void *c,float* a);+// attribute not supported: //attribute: ::btAlignedObjectArray<btMultiSapBroadphase::btBridgeProxy*> btMultiSapBroadphase_btMultiSapProxy->m_bridgeProxies+void btMultiSapBroadphase_btMultiSapProxy_m_shapeType_set(void *c,int a); //attribute: int btMultiSapBroadphase_btMultiSapProxy->m_shapeType+int btMultiSapBroadphase_btMultiSapProxy_m_shapeType_get(void *c); //attribute: int btMultiSapBroadphase_btMultiSapProxy->m_shapeType+void btNodeOverlapCallback_processNode(void *c,int p0,int p1); //method: processNode void ( ::btNodeOverlapCallback::* )( int,int ) +void* btNullPairCache_new(); //constructor: btNullPairCache  ( ::btNullPairCache::* )(  ) +void btNullPairCache_free(void *c); void btNullPairCache_sortOverlappingPairs(void *c,void* p0); //method: sortOverlappingPairs void ( ::btNullPairCache::* )( ::btDispatcher * ) +void btNullPairCache_setInternalGhostPairCallback(void *c,void* p0); //method: setInternalGhostPairCallback void ( ::btNullPairCache::* )( ::btOverlappingPairCallback * ) +void* btNullPairCache_addOverlappingPair(void *c,void* p0,void* p1); //method: addOverlappingPair ::btBroadphasePair * ( ::btNullPairCache::* )( ::btBroadphaseProxy *,::btBroadphaseProxy * ) +void btNullPairCache_removeOverlappingPairsContainingProxy(void *c,void* p0,void* p1); //method: removeOverlappingPairsContainingProxy void ( ::btNullPairCache::* )( ::btBroadphaseProxy *,::btDispatcher * ) +int btNullPairCache_hasDeferredRemoval(void *c); //method: hasDeferredRemoval bool ( ::btNullPairCache::* )(  ) +//not supported method: getOverlappingPairArray ::btBroadphasePairArray & ( ::btNullPairCache::* )(  ) +void* btNullPairCache_findPair(void *c,void* p0,void* p1); //method: findPair ::btBroadphasePair * ( ::btNullPairCache::* )( ::btBroadphaseProxy *,::btBroadphaseProxy * ) +void btNullPairCache_cleanProxyFromPairs(void *c,void* p0,void* p1); //method: cleanProxyFromPairs void ( ::btNullPairCache::* )( ::btBroadphaseProxy *,::btDispatcher * ) +void btNullPairCache_cleanOverlappingPair(void *c,void* p0,void* p1); //method: cleanOverlappingPair void ( ::btNullPairCache::* )( ::btBroadphasePair &,::btDispatcher * ) +int btNullPairCache_getNumOverlappingPairs(void *c); //method: getNumOverlappingPairs int ( ::btNullPairCache::* )(  ) const+//not supported method: removeOverlappingPair void * ( ::btNullPairCache::* )( ::btBroadphaseProxy *,::btBroadphaseProxy *,::btDispatcher * ) +void btNullPairCache_setOverlapFilterCallback(void *c,void* p0); //method: setOverlapFilterCallback void ( ::btNullPairCache::* )( ::btOverlapFilterCallback * ) +void* btNullPairCache_getOverlappingPairArrayPtr(void *c); //method: getOverlappingPairArrayPtr ::btBroadphasePair * ( ::btNullPairCache::* )(  ) +void* btNullPairCache_getOverlappingPairArrayPtr0(void *c); //method: getOverlappingPairArrayPtr ::btBroadphasePair * ( ::btNullPairCache::* )(  ) +void* btNullPairCache_getOverlappingPairArrayPtr1(void *c); //method: getOverlappingPairArrayPtr ::btBroadphasePair const * ( ::btNullPairCache::* )(  ) const+void btNullPairCache_processAllOverlappingPairs(void *c,void* p0,void* p1); //method: processAllOverlappingPairs void ( ::btNullPairCache::* )( ::btOverlapCallback *,::btDispatcher * ) +void* btOptimizedBvhNode_new(); //constructor: btOptimizedBvhNode  ( ::btOptimizedBvhNode::* )(  ) +void btOptimizedBvhNode_free(void *c); void btOptimizedBvhNode_m_aabbMinOrg_set(void *c,float* a); //attribute: ::btVector3 btOptimizedBvhNode->m_aabbMinOrg+void btOptimizedBvhNode_m_aabbMinOrg_get(void *c,float* a);+void btOptimizedBvhNode_m_aabbMaxOrg_set(void *c,float* a); //attribute: ::btVector3 btOptimizedBvhNode->m_aabbMaxOrg+void btOptimizedBvhNode_m_aabbMaxOrg_get(void *c,float* a);+void btOptimizedBvhNode_m_escapeIndex_set(void *c,int a); //attribute: int btOptimizedBvhNode->m_escapeIndex+int btOptimizedBvhNode_m_escapeIndex_get(void *c); //attribute: int btOptimizedBvhNode->m_escapeIndex+void btOptimizedBvhNode_m_subPart_set(void *c,int a); //attribute: int btOptimizedBvhNode->m_subPart+int btOptimizedBvhNode_m_subPart_get(void *c); //attribute: int btOptimizedBvhNode->m_subPart+void btOptimizedBvhNode_m_triangleIndex_set(void *c,int a); //attribute: int btOptimizedBvhNode->m_triangleIndex+int btOptimizedBvhNode_m_triangleIndex_get(void *c); //attribute: int btOptimizedBvhNode->m_triangleIndex+// attribute not supported: //attribute: int[5] btOptimizedBvhNode->m_padding+void* btOptimizedBvhNodeDoubleData_new(); //constructor: btOptimizedBvhNodeDoubleData  ( ::btOptimizedBvhNodeDoubleData::* )(  ) +void btOptimizedBvhNodeDoubleData_free(void *c); // attribute not supported: //attribute: ::btVector3DoubleData btOptimizedBvhNodeDoubleData->m_aabbMinOrg+// attribute not supported: //attribute: ::btVector3DoubleData btOptimizedBvhNodeDoubleData->m_aabbMaxOrg+void btOptimizedBvhNodeDoubleData_m_escapeIndex_set(void *c,int a); //attribute: int btOptimizedBvhNodeDoubleData->m_escapeIndex+int btOptimizedBvhNodeDoubleData_m_escapeIndex_get(void *c); //attribute: int btOptimizedBvhNodeDoubleData->m_escapeIndex+void btOptimizedBvhNodeDoubleData_m_subPart_set(void *c,int a); //attribute: int btOptimizedBvhNodeDoubleData->m_subPart+int btOptimizedBvhNodeDoubleData_m_subPart_get(void *c); //attribute: int btOptimizedBvhNodeDoubleData->m_subPart+void btOptimizedBvhNodeDoubleData_m_triangleIndex_set(void *c,int a); //attribute: int btOptimizedBvhNodeDoubleData->m_triangleIndex+int btOptimizedBvhNodeDoubleData_m_triangleIndex_get(void *c); //attribute: int btOptimizedBvhNodeDoubleData->m_triangleIndex+// attribute not supported: //attribute: char[4] btOptimizedBvhNodeDoubleData->m_pad+void* btOptimizedBvhNodeFloatData_new(); //constructor: btOptimizedBvhNodeFloatData  ( ::btOptimizedBvhNodeFloatData::* )(  ) +void btOptimizedBvhNodeFloatData_free(void *c); // attribute not supported: //attribute: ::btVector3FloatData btOptimizedBvhNodeFloatData->m_aabbMinOrg+// attribute not supported: //attribute: ::btVector3FloatData btOptimizedBvhNodeFloatData->m_aabbMaxOrg+void btOptimizedBvhNodeFloatData_m_escapeIndex_set(void *c,int a); //attribute: int btOptimizedBvhNodeFloatData->m_escapeIndex+int btOptimizedBvhNodeFloatData_m_escapeIndex_get(void *c); //attribute: int btOptimizedBvhNodeFloatData->m_escapeIndex+void btOptimizedBvhNodeFloatData_m_subPart_set(void *c,int a); //attribute: int btOptimizedBvhNodeFloatData->m_subPart+int btOptimizedBvhNodeFloatData_m_subPart_get(void *c); //attribute: int btOptimizedBvhNodeFloatData->m_subPart+void btOptimizedBvhNodeFloatData_m_triangleIndex_set(void *c,int a); //attribute: int btOptimizedBvhNodeFloatData->m_triangleIndex+int btOptimizedBvhNodeFloatData_m_triangleIndex_get(void *c); //attribute: int btOptimizedBvhNodeFloatData->m_triangleIndex+// attribute not supported: //attribute: char[4] btOptimizedBvhNodeFloatData->m_pad+int btOverlapCallback_processOverlap(void *c,void* p0); //method: processOverlap bool ( ::btOverlapCallback::* )( ::btBroadphasePair & ) +int btOverlapFilterCallback_needBroadphaseCollision(void *c,void* p0,void* p1); //method: needBroadphaseCollision bool ( ::btOverlapFilterCallback::* )( ::btBroadphaseProxy *,::btBroadphaseProxy * ) const+void btOverlappingPairCache_sortOverlappingPairs(void *c,void* p0); //method: sortOverlappingPairs void ( ::btOverlappingPairCache::* )( ::btDispatcher * ) +void btOverlappingPairCache_setInternalGhostPairCallback(void *c,void* p0); //method: setInternalGhostPairCallback void ( ::btOverlappingPairCache::* )( ::btOverlappingPairCallback * ) +void btOverlappingPairCache_setOverlapFilterCallback(void *c,void* p0); //method: setOverlapFilterCallback void ( ::btOverlappingPairCache::* )( ::btOverlapFilterCallback * ) +//not supported method: getOverlappingPairArray ::btBroadphasePairArray & ( ::btOverlappingPairCache::* )(  ) +void* btOverlappingPairCache_findPair(void *c,void* p0,void* p1); //method: findPair ::btBroadphasePair * ( ::btOverlappingPairCache::* )( ::btBroadphaseProxy *,::btBroadphaseProxy * ) +void btOverlappingPairCache_cleanProxyFromPairs(void *c,void* p0,void* p1); //method: cleanProxyFromPairs void ( ::btOverlappingPairCache::* )( ::btBroadphaseProxy *,::btDispatcher * ) +void btOverlappingPairCache_cleanOverlappingPair(void *c,void* p0,void* p1); //method: cleanOverlappingPair void ( ::btOverlappingPairCache::* )( ::btBroadphasePair &,::btDispatcher * ) +int btOverlappingPairCache_getNumOverlappingPairs(void *c); //method: getNumOverlappingPairs int ( ::btOverlappingPairCache::* )(  ) const+void btOverlappingPairCache_processAllOverlappingPairs(void *c,void* p0,void* p1); //method: processAllOverlappingPairs void ( ::btOverlappingPairCache::* )( ::btOverlapCallback *,::btDispatcher * ) +void* btOverlappingPairCache_getOverlappingPairArrayPtr(void *c); //method: getOverlappingPairArrayPtr ::btBroadphasePair * ( ::btOverlappingPairCache::* )(  ) +void* btOverlappingPairCache_getOverlappingPairArrayPtr0(void *c); //method: getOverlappingPairArrayPtr ::btBroadphasePair * ( ::btOverlappingPairCache::* )(  ) +void* btOverlappingPairCache_getOverlappingPairArrayPtr1(void *c); //method: getOverlappingPairArrayPtr ::btBroadphasePair const * ( ::btOverlappingPairCache::* )(  ) const+int btOverlappingPairCache_hasDeferredRemoval(void *c); //method: hasDeferredRemoval bool ( ::btOverlappingPairCache::* )(  ) +void* btOverlappingPairCallback_addOverlappingPair(void *c,void* p0,void* p1); //method: addOverlappingPair ::btBroadphasePair * ( ::btOverlappingPairCallback::* )( ::btBroadphaseProxy *,::btBroadphaseProxy * ) +//not supported method: removeOverlappingPair void * ( ::btOverlappingPairCallback::* )( ::btBroadphaseProxy *,::btBroadphaseProxy *,::btDispatcher * ) +void btOverlappingPairCallback_removeOverlappingPairsContainingProxy(void *c,void* p0,void* p1); //method: removeOverlappingPairsContainingProxy void ( ::btOverlappingPairCallback::* )( ::btBroadphaseProxy *,::btDispatcher * ) +void* btQuantizedBvh_new(); //constructor: btQuantizedBvh  ( ::btQuantizedBvh::* )(  ) +void btQuantizedBvh_free(void *c); unsigned int btQuantizedBvh_getAlignmentSerializationPadding(); //method: getAlignmentSerializationPadding unsigned int (*)(  )+//not supported method: getQuantizedNodeArray ::QuantizedNodeArray & ( ::btQuantizedBvh::* )(  ) +//not supported method: setTraversalMode void ( ::btQuantizedBvh::* )( ::btQuantizedBvh::btTraversalMode ) +void btQuantizedBvh_buildInternal(void *c); //method: buildInternal void ( ::btQuantizedBvh::* )(  ) +//not supported method: quantize void ( ::btQuantizedBvh::* )( short unsigned int *,::btVector3 const &,int ) const+void btQuantizedBvh_deSerializeFloat(void *c,void* p0); //method: deSerializeFloat void ( ::btQuantizedBvh::* )( ::btQuantizedBvhFloatData & ) +int btQuantizedBvh_isQuantized(void *c); //method: isQuantized bool ( ::btQuantizedBvh::* )(  ) +//not supported method: getSubtreeInfoArray ::BvhSubtreeInfoArray & ( ::btQuantizedBvh::* )(  ) +//not supported method: quantizeWithClamp void ( ::btQuantizedBvh::* )( short unsigned int *,::btVector3 const &,int ) const+//not supported method: unQuantize ::btVector3 ( ::btQuantizedBvh::* )( short unsigned int const * ) const+//not supported method: getLeafNodeArray ::QuantizedNodeArray & ( ::btQuantizedBvh::* )(  ) +void btQuantizedBvh_setQuantizationValues(void *c,float* p0,float* p1,float p2); //method: setQuantizationValues void ( ::btQuantizedBvh::* )( ::btVector3 const &,::btVector3 const &,::btScalar ) +void btQuantizedBvh_reportAabbOverlappingNodex(void *c,void* p0,float* p1,float* p2); //method: reportAabbOverlappingNodex void ( ::btQuantizedBvh::* )( ::btNodeOverlapCallback *,::btVector3 const &,::btVector3 const & ) const+void btQuantizedBvh_reportBoxCastOverlappingNodex(void *c,void* p0,float* p1,float* p2,float* p3,float* p4); //method: reportBoxCastOverlappingNodex void ( ::btQuantizedBvh::* )( ::btNodeOverlapCallback *,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const & ) const+unsigned int btQuantizedBvh_calculateSerializeBufferSize(void *c); //method: calculateSerializeBufferSize unsigned int ( ::btQuantizedBvh::* )(  ) const+void btQuantizedBvh_reportRayOverlappingNodex(void *c,void* p0,float* p1,float* p2); //method: reportRayOverlappingNodex void ( ::btQuantizedBvh::* )( ::btNodeOverlapCallback *,::btVector3 const &,::btVector3 const & ) const+//not supported method: serialize bool ( ::btQuantizedBvh::* )( void *,unsigned int,bool ) const+//not supported method: serialize bool ( ::btQuantizedBvh::* )( void *,unsigned int,bool ) const+//not supported method: serialize char const * ( ::btQuantizedBvh::* )( void *,::btSerializer * ) const+void btQuantizedBvh_deSerializeDouble(void *c,void* p0); //method: deSerializeDouble void ( ::btQuantizedBvh::* )( ::btQuantizedBvhDoubleData & ) +int btQuantizedBvh_calculateSerializeBufferSizeNew(void *c); //method: calculateSerializeBufferSizeNew int ( ::btQuantizedBvh::* )(  ) const+//not supported method: deSerializeInPlace ::btQuantizedBvh * (*)( void *,unsigned int,bool )+void* btQuantizedBvhDoubleData_new(); //constructor: btQuantizedBvhDoubleData  ( ::btQuantizedBvhDoubleData::* )(  ) +void btQuantizedBvhDoubleData_free(void *c); // attribute not supported: //attribute: ::btVector3DoubleData btQuantizedBvhDoubleData->m_bvhAabbMax+// attribute not supported: //attribute: ::btVector3DoubleData btQuantizedBvhDoubleData->m_bvhAabbMin+// attribute not supported: //attribute: ::btVector3DoubleData btQuantizedBvhDoubleData->m_bvhQuantization+void btQuantizedBvhDoubleData_m_contiguousNodesPtr_set(void *c,void* a); //attribute: ::btOptimizedBvhNodeDoubleData * btQuantizedBvhDoubleData->m_contiguousNodesPtr+// attribute getter not supported: //attribute: ::btOptimizedBvhNodeDoubleData * btQuantizedBvhDoubleData->m_contiguousNodesPtr+void btQuantizedBvhDoubleData_m_curNodeIndex_set(void *c,int a); //attribute: int btQuantizedBvhDoubleData->m_curNodeIndex+int btQuantizedBvhDoubleData_m_curNodeIndex_get(void *c); //attribute: int btQuantizedBvhDoubleData->m_curNodeIndex+void btQuantizedBvhDoubleData_m_numContiguousLeafNodes_set(void *c,int a); //attribute: int btQuantizedBvhDoubleData->m_numContiguousLeafNodes+int btQuantizedBvhDoubleData_m_numContiguousLeafNodes_get(void *c); //attribute: int btQuantizedBvhDoubleData->m_numContiguousLeafNodes+void btQuantizedBvhDoubleData_m_numQuantizedContiguousNodes_set(void *c,int a); //attribute: int btQuantizedBvhDoubleData->m_numQuantizedContiguousNodes+int btQuantizedBvhDoubleData_m_numQuantizedContiguousNodes_get(void *c); //attribute: int btQuantizedBvhDoubleData->m_numQuantizedContiguousNodes+void btQuantizedBvhDoubleData_m_numSubtreeHeaders_set(void *c,int a); //attribute: int btQuantizedBvhDoubleData->m_numSubtreeHeaders+int btQuantizedBvhDoubleData_m_numSubtreeHeaders_get(void *c); //attribute: int btQuantizedBvhDoubleData->m_numSubtreeHeaders+void btQuantizedBvhDoubleData_m_quantizedContiguousNodesPtr_set(void *c,void* a); //attribute: ::btQuantizedBvhNodeData * btQuantizedBvhDoubleData->m_quantizedContiguousNodesPtr+// attribute getter not supported: //attribute: ::btQuantizedBvhNodeData * btQuantizedBvhDoubleData->m_quantizedContiguousNodesPtr+void btQuantizedBvhDoubleData_m_subTreeInfoPtr_set(void *c,void* a); //attribute: ::btBvhSubtreeInfoData * btQuantizedBvhDoubleData->m_subTreeInfoPtr+// attribute getter not supported: //attribute: ::btBvhSubtreeInfoData * btQuantizedBvhDoubleData->m_subTreeInfoPtr+void btQuantizedBvhDoubleData_m_traversalMode_set(void *c,int a); //attribute: int btQuantizedBvhDoubleData->m_traversalMode+int btQuantizedBvhDoubleData_m_traversalMode_get(void *c); //attribute: int btQuantizedBvhDoubleData->m_traversalMode+void btQuantizedBvhDoubleData_m_useQuantization_set(void *c,int a); //attribute: int btQuantizedBvhDoubleData->m_useQuantization+int btQuantizedBvhDoubleData_m_useQuantization_get(void *c); //attribute: int btQuantizedBvhDoubleData->m_useQuantization+void* btQuantizedBvhFloatData_new(); //constructor: btQuantizedBvhFloatData  ( ::btQuantizedBvhFloatData::* )(  ) +void btQuantizedBvhFloatData_free(void *c); // attribute not supported: //attribute: ::btVector3FloatData btQuantizedBvhFloatData->m_bvhAabbMax+// attribute not supported: //attribute: ::btVector3FloatData btQuantizedBvhFloatData->m_bvhAabbMin+// attribute not supported: //attribute: ::btVector3FloatData btQuantizedBvhFloatData->m_bvhQuantization+void btQuantizedBvhFloatData_m_contiguousNodesPtr_set(void *c,void* a); //attribute: ::btOptimizedBvhNodeFloatData * btQuantizedBvhFloatData->m_contiguousNodesPtr+// attribute getter not supported: //attribute: ::btOptimizedBvhNodeFloatData * btQuantizedBvhFloatData->m_contiguousNodesPtr+void btQuantizedBvhFloatData_m_curNodeIndex_set(void *c,int a); //attribute: int btQuantizedBvhFloatData->m_curNodeIndex+int btQuantizedBvhFloatData_m_curNodeIndex_get(void *c); //attribute: int btQuantizedBvhFloatData->m_curNodeIndex+void btQuantizedBvhFloatData_m_numContiguousLeafNodes_set(void *c,int a); //attribute: int btQuantizedBvhFloatData->m_numContiguousLeafNodes+int btQuantizedBvhFloatData_m_numContiguousLeafNodes_get(void *c); //attribute: int btQuantizedBvhFloatData->m_numContiguousLeafNodes+void btQuantizedBvhFloatData_m_numQuantizedContiguousNodes_set(void *c,int a); //attribute: int btQuantizedBvhFloatData->m_numQuantizedContiguousNodes+int btQuantizedBvhFloatData_m_numQuantizedContiguousNodes_get(void *c); //attribute: int btQuantizedBvhFloatData->m_numQuantizedContiguousNodes+void btQuantizedBvhFloatData_m_numSubtreeHeaders_set(void *c,int a); //attribute: int btQuantizedBvhFloatData->m_numSubtreeHeaders+int btQuantizedBvhFloatData_m_numSubtreeHeaders_get(void *c); //attribute: int btQuantizedBvhFloatData->m_numSubtreeHeaders+void btQuantizedBvhFloatData_m_quantizedContiguousNodesPtr_set(void *c,void* a); //attribute: ::btQuantizedBvhNodeData * btQuantizedBvhFloatData->m_quantizedContiguousNodesPtr+// attribute getter not supported: //attribute: ::btQuantizedBvhNodeData * btQuantizedBvhFloatData->m_quantizedContiguousNodesPtr+void btQuantizedBvhFloatData_m_subTreeInfoPtr_set(void *c,void* a); //attribute: ::btBvhSubtreeInfoData * btQuantizedBvhFloatData->m_subTreeInfoPtr+// attribute getter not supported: //attribute: ::btBvhSubtreeInfoData * btQuantizedBvhFloatData->m_subTreeInfoPtr+void btQuantizedBvhFloatData_m_traversalMode_set(void *c,int a); //attribute: int btQuantizedBvhFloatData->m_traversalMode+int btQuantizedBvhFloatData_m_traversalMode_get(void *c); //attribute: int btQuantizedBvhFloatData->m_traversalMode+void btQuantizedBvhFloatData_m_useQuantization_set(void *c,int a); //attribute: int btQuantizedBvhFloatData->m_useQuantization+int btQuantizedBvhFloatData_m_useQuantization_get(void *c); //attribute: int btQuantizedBvhFloatData->m_useQuantization+void* btQuantizedBvhNode_new(); //constructor: btQuantizedBvhNode  ( ::btQuantizedBvhNode::* )(  ) +void btQuantizedBvhNode_free(void *c); int btQuantizedBvhNode_getEscapeIndex(void *c); //method: getEscapeIndex int ( ::btQuantizedBvhNode::* )(  ) const+int btQuantizedBvhNode_getTriangleIndex(void *c); //method: getTriangleIndex int ( ::btQuantizedBvhNode::* )(  ) const+int btQuantizedBvhNode_getPartId(void *c); //method: getPartId int ( ::btQuantizedBvhNode::* )(  ) const+int btQuantizedBvhNode_isLeafNode(void *c); //method: isLeafNode bool ( ::btQuantizedBvhNode::* )(  ) const+void btQuantizedBvhNode_m_escapeIndexOrTriangleIndex_set(void *c,int a); //attribute: int btQuantizedBvhNode->m_escapeIndexOrTriangleIndex+int btQuantizedBvhNode_m_escapeIndexOrTriangleIndex_get(void *c); //attribute: int btQuantizedBvhNode->m_escapeIndexOrTriangleIndex+// attribute not supported: //attribute: short unsigned int[3] btQuantizedBvhNode->m_quantizedAabbMax+// attribute not supported: //attribute: short unsigned int[3] btQuantizedBvhNode->m_quantizedAabbMin+void* btQuantizedBvhNodeData_new(); //constructor: btQuantizedBvhNodeData  ( ::btQuantizedBvhNodeData::* )(  ) +void btQuantizedBvhNodeData_free(void *c); void btQuantizedBvhNodeData_m_escapeIndexOrTriangleIndex_set(void *c,int a); //attribute: int btQuantizedBvhNodeData->m_escapeIndexOrTriangleIndex+int btQuantizedBvhNodeData_m_escapeIndexOrTriangleIndex_get(void *c); //attribute: int btQuantizedBvhNodeData->m_escapeIndexOrTriangleIndex+// attribute not supported: //attribute: short unsigned int[3] btQuantizedBvhNodeData->m_quantizedAabbMax+// attribute not supported: //attribute: short unsigned int[3] btQuantizedBvhNodeData->m_quantizedAabbMin+void* btSimpleBroadphase_new(int p0,void* p1); //constructor: btSimpleBroadphase  ( ::btSimpleBroadphase::* )( int,::btOverlappingPairCache * ) +void btSimpleBroadphase_free(void *c); void btSimpleBroadphase_rayTest(void *c,float* p0,float* p1,void* p2,float* p3,float* p4); //method: rayTest void ( ::btSimpleBroadphase::* )( ::btVector3 const &,::btVector3 const &,::btBroadphaseRayCallback &,::btVector3 const &,::btVector3 const & ) +void btSimpleBroadphase_setAabb(void *c,void* p0,float* p1,float* p2,void* p3); //method: setAabb void ( ::btSimpleBroadphase::* )( ::btBroadphaseProxy *,::btVector3 const &,::btVector3 const &,::btDispatcher * ) +void* btSimpleBroadphase_getOverlappingPairCache(void *c); //method: getOverlappingPairCache ::btOverlappingPairCache * ( ::btSimpleBroadphase::* )(  ) +void* btSimpleBroadphase_getOverlappingPairCache0(void *c); //method: getOverlappingPairCache ::btOverlappingPairCache * ( ::btSimpleBroadphase::* )(  ) +void* btSimpleBroadphase_getOverlappingPairCache1(void *c); //method: getOverlappingPairCache ::btOverlappingPairCache const * ( ::btSimpleBroadphase::* )(  ) const+void btSimpleBroadphase_calculateOverlappingPairs(void *c,void* p0); //method: calculateOverlappingPairs void ( ::btSimpleBroadphase::* )( ::btDispatcher * ) +int btSimpleBroadphase_testAabbOverlap(void *c,void* p0,void* p1); //method: testAabbOverlap bool ( ::btSimpleBroadphase::* )( ::btBroadphaseProxy *,::btBroadphaseProxy * ) +void btSimpleBroadphase_getAabb(void *c,void* p0,float* p1,float* p2); //method: getAabb void ( ::btSimpleBroadphase::* )( ::btBroadphaseProxy *,::btVector3 &,::btVector3 & ) const+void btSimpleBroadphase_aabbTest(void *c,float* p0,float* p1,void* p2); //method: aabbTest void ( ::btSimpleBroadphase::* )( ::btVector3 const &,::btVector3 const &,::btBroadphaseAabbCallback & ) +//not supported method: createProxy ::btBroadphaseProxy * ( ::btSimpleBroadphase::* )( ::btVector3 const &,::btVector3 const &,int,void *,short int,short int,::btDispatcher *,void * ) +void btSimpleBroadphase_printStats(void *c); //method: printStats void ( ::btSimpleBroadphase::* )(  ) +int btSimpleBroadphase_aabbOverlap(void* p0,void* p1); //method: aabbOverlap bool (*)( ::btSimpleBroadphaseProxy *,::btSimpleBroadphaseProxy * )+void btSimpleBroadphase_getBroadphaseAabb(void *c,float* p0,float* p1); //method: getBroadphaseAabb void ( ::btSimpleBroadphase::* )( ::btVector3 &,::btVector3 & ) const+void btSimpleBroadphase_destroyProxy(void *c,void* p0,void* p1); //method: destroyProxy void ( ::btSimpleBroadphase::* )( ::btBroadphaseProxy *,::btDispatcher * ) +void* btSimpleBroadphaseProxy_new0(); //constructor: btSimpleBroadphaseProxy  ( ::btSimpleBroadphaseProxy::* )(  ) +//not supported constructor: btSimpleBroadphaseProxy  ( ::btSimpleBroadphaseProxy::* )( ::btVector3 const &,::btVector3 const &,int,void *,short int,short int,void * ) +void btSimpleBroadphaseProxy_free(void *c); int btSimpleBroadphaseProxy_GetNextFree(void *c); //method: GetNextFree int ( ::btSimpleBroadphaseProxy::* )(  ) const+void btSimpleBroadphaseProxy_SetNextFree(void *c,int p0); //method: SetNextFree void ( ::btSimpleBroadphaseProxy::* )( int ) +void btSimpleBroadphaseProxy_m_nextFree_set(void *c,int a); //attribute: int btSimpleBroadphaseProxy->m_nextFree+int btSimpleBroadphaseProxy_m_nextFree_get(void *c); //attribute: int btSimpleBroadphaseProxy->m_nextFree+void* btSortedOverlappingPairCache_new(); //constructor: btSortedOverlappingPairCache  ( ::btSortedOverlappingPairCache::* )(  ) +void btSortedOverlappingPairCache_free(void *c); void btSortedOverlappingPairCache_sortOverlappingPairs(void *c,void* p0); //method: sortOverlappingPairs void ( ::btSortedOverlappingPairCache::* )( ::btDispatcher * ) +void btSortedOverlappingPairCache_setInternalGhostPairCallback(void *c,void* p0); //method: setInternalGhostPairCallback void ( ::btSortedOverlappingPairCache::* )( ::btOverlappingPairCallback * ) +void* btSortedOverlappingPairCache_getOverlapFilterCallback(void *c); //method: getOverlapFilterCallback ::btOverlapFilterCallback * ( ::btSortedOverlappingPairCache::* )(  ) +void* btSortedOverlappingPairCache_addOverlappingPair(void *c,void* p0,void* p1); //method: addOverlappingPair ::btBroadphasePair * ( ::btSortedOverlappingPairCache::* )( ::btBroadphaseProxy *,::btBroadphaseProxy * ) +void btSortedOverlappingPairCache_removeOverlappingPairsContainingProxy(void *c,void* p0,void* p1); //method: removeOverlappingPairsContainingProxy void ( ::btSortedOverlappingPairCache::* )( ::btBroadphaseProxy *,::btDispatcher * ) +int btSortedOverlappingPairCache_needsBroadphaseCollision(void *c,void* p0,void* p1); //method: needsBroadphaseCollision bool ( ::btSortedOverlappingPairCache::* )( ::btBroadphaseProxy *,::btBroadphaseProxy * ) const+int btSortedOverlappingPairCache_hasDeferredRemoval(void *c); //method: hasDeferredRemoval bool ( ::btSortedOverlappingPairCache::* )(  ) +//not supported method: getOverlappingPairArray ::btBroadphasePairArray & ( ::btSortedOverlappingPairCache::* )(  ) +//not supported method: getOverlappingPairArray ::btBroadphasePairArray & ( ::btSortedOverlappingPairCache::* )(  ) +//not supported method: getOverlappingPairArray ::btBroadphasePairArray const & ( ::btSortedOverlappingPairCache::* )(  ) const+void* btSortedOverlappingPairCache_findPair(void *c,void* p0,void* p1); //method: findPair ::btBroadphasePair * ( ::btSortedOverlappingPairCache::* )( ::btBroadphaseProxy *,::btBroadphaseProxy * ) +void btSortedOverlappingPairCache_cleanProxyFromPairs(void *c,void* p0,void* p1); //method: cleanProxyFromPairs void ( ::btSortedOverlappingPairCache::* )( ::btBroadphaseProxy *,::btDispatcher * ) +void btSortedOverlappingPairCache_cleanOverlappingPair(void *c,void* p0,void* p1); //method: cleanOverlappingPair void ( ::btSortedOverlappingPairCache::* )( ::btBroadphasePair &,::btDispatcher * ) +int btSortedOverlappingPairCache_getNumOverlappingPairs(void *c); //method: getNumOverlappingPairs int ( ::btSortedOverlappingPairCache::* )(  ) const+//not supported method: removeOverlappingPair void * ( ::btSortedOverlappingPairCache::* )( ::btBroadphaseProxy *,::btBroadphaseProxy *,::btDispatcher * ) +void btSortedOverlappingPairCache_processAllOverlappingPairs(void *c,void* p0,void* p1); //method: processAllOverlappingPairs void ( ::btSortedOverlappingPairCache::* )( ::btOverlapCallback *,::btDispatcher * ) +void* btSortedOverlappingPairCache_getOverlappingPairArrayPtr(void *c); //method: getOverlappingPairArrayPtr ::btBroadphasePair * ( ::btSortedOverlappingPairCache::* )(  ) +void* btSortedOverlappingPairCache_getOverlappingPairArrayPtr0(void *c); //method: getOverlappingPairArrayPtr ::btBroadphasePair * ( ::btSortedOverlappingPairCache::* )(  ) +void* btSortedOverlappingPairCache_getOverlappingPairArrayPtr1(void *c); //method: getOverlappingPairArrayPtr ::btBroadphasePair const * ( ::btSortedOverlappingPairCache::* )(  ) const+void btSortedOverlappingPairCache_setOverlapFilterCallback(void *c,void* p0); //method: setOverlapFilterCallback void ( ::btSortedOverlappingPairCache::* )( ::btOverlapFilterCallback * ) +void* btDbvt_sStkCLN_new(void* p0,void* p1); //constructor: sStkCLN  ( ::btDbvt::sStkCLN::* )( ::btDbvtNode const *,::btDbvtNode * ) +void btDbvt_sStkCLN_free(void *c); void btDbvt_sStkCLN_node_set(void *c,void* a); //attribute: ::btDbvtNode const * btDbvt_sStkCLN->node+// attribute getter not supported: //attribute: ::btDbvtNode const * btDbvt_sStkCLN->node+void btDbvt_sStkCLN_parent_set(void *c,void* a); //attribute: ::btDbvtNode * btDbvt_sStkCLN->parent+// attribute getter not supported: //attribute: ::btDbvtNode * btDbvt_sStkCLN->parent+void* btDbvt_sStkNN_new0(); //constructor: sStkNN  ( ::btDbvt::sStkNN::* )(  ) +void* btDbvt_sStkNN_new1(void* p0,void* p1); //constructor: sStkNN  ( ::btDbvt::sStkNN::* )( ::btDbvtNode const *,::btDbvtNode const * ) +void btDbvt_sStkNN_free(void *c); void btDbvt_sStkNN_a_set(void *c,void* a); //attribute: ::btDbvtNode const * btDbvt_sStkNN->a+// attribute getter not supported: //attribute: ::btDbvtNode const * btDbvt_sStkNN->a+void btDbvt_sStkNN_b_set(void *c,void* a); //attribute: ::btDbvtNode const * btDbvt_sStkNN->b+// attribute getter not supported: //attribute: ::btDbvtNode const * btDbvt_sStkNN->b+void* btDbvt_sStkNP_new(void* p0,unsigned int p1); //constructor: sStkNP  ( ::btDbvt::sStkNP::* )( ::btDbvtNode const *,unsigned int ) +void btDbvt_sStkNP_free(void *c); void btDbvt_sStkNP_mask_set(void *c,int a); //attribute: int btDbvt_sStkNP->mask+int btDbvt_sStkNP_mask_get(void *c); //attribute: int btDbvt_sStkNP->mask+void btDbvt_sStkNP_node_set(void *c,void* a); //attribute: ::btDbvtNode const * btDbvt_sStkNP->node+// attribute getter not supported: //attribute: ::btDbvtNode const * btDbvt_sStkNP->node+void* btDbvt_sStkNPS_new0(); //constructor: sStkNPS  ( ::btDbvt::sStkNPS::* )(  ) +void* btDbvt_sStkNPS_new1(void* p0,unsigned int p1,float p2); //constructor: sStkNPS  ( ::btDbvt::sStkNPS::* )( ::btDbvtNode const *,unsigned int,::btScalar ) +void btDbvt_sStkNPS_free(void *c); void btDbvt_sStkNPS_mask_set(void *c,int a); //attribute: int btDbvt_sStkNPS->mask+int btDbvt_sStkNPS_mask_get(void *c); //attribute: int btDbvt_sStkNPS->mask+void btDbvt_sStkNPS_node_set(void *c,void* a); //attribute: ::btDbvtNode const * btDbvt_sStkNPS->node+// attribute getter not supported: //attribute: ::btDbvtNode const * btDbvt_sStkNPS->node+void btDbvt_sStkNPS_value_set(void *c,float a); //attribute: ::btScalar btDbvt_sStkNPS->value+float btDbvt_sStkNPS_value_get(void *c); //attribute: ::btScalar btDbvt_sStkNPS->value+void* btDiscreteCollisionDetectorInterface_ClosestPointInput_new(); //constructor: ClosestPointInput  ( ::btDiscreteCollisionDetectorInterface::ClosestPointInput::* )(  ) +void btDiscreteCollisionDetectorInterface_ClosestPointInput_free(void *c); void btDiscreteCollisionDetectorInterface_ClosestPointInput_m_transformA_set(void *c,float* a); //attribute: ::btTransform btDiscreteCollisionDetectorInterface_ClosestPointInput->m_transformA+void btDiscreteCollisionDetectorInterface_ClosestPointInput_m_transformA_get(void *c,float* a);+void btDiscreteCollisionDetectorInterface_ClosestPointInput_m_transformB_set(void *c,float* a); //attribute: ::btTransform btDiscreteCollisionDetectorInterface_ClosestPointInput->m_transformB+void btDiscreteCollisionDetectorInterface_ClosestPointInput_m_transformB_get(void *c,float* a);+void btDiscreteCollisionDetectorInterface_ClosestPointInput_m_maximumDistanceSquared_set(void *c,float a); //attribute: ::btScalar btDiscreteCollisionDetectorInterface_ClosestPointInput->m_maximumDistanceSquared+float btDiscreteCollisionDetectorInterface_ClosestPointInput_m_maximumDistanceSquared_get(void *c); //attribute: ::btScalar btDiscreteCollisionDetectorInterface_ClosestPointInput->m_maximumDistanceSquared+void btDiscreteCollisionDetectorInterface_ClosestPointInput_m_stackAlloc_set(void *c,void* a); //attribute: ::btStackAlloc * btDiscreteCollisionDetectorInterface_ClosestPointInput->m_stackAlloc+// attribute getter not supported: //attribute: ::btStackAlloc * btDiscreteCollisionDetectorInterface_ClosestPointInput->m_stackAlloc+void btDiscreteCollisionDetectorInterface_Result_setShapeIdentifiersB(void *c,int p0,int p1); //method: setShapeIdentifiersB void ( ::btDiscreteCollisionDetectorInterface::Result::* )( int,int ) +void btDiscreteCollisionDetectorInterface_Result_setShapeIdentifiersA(void *c,int p0,int p1); //method: setShapeIdentifiersA void ( ::btDiscreteCollisionDetectorInterface::Result::* )( int,int ) +void btDiscreteCollisionDetectorInterface_Result_addContactPoint(void *c,float* p0,float* p1,float p2); //method: addContactPoint void ( ::btDiscreteCollisionDetectorInterface::Result::* )( ::btVector3 const &,::btVector3 const &,::btScalar ) +void* btConstraintRow_new(); //constructor: btConstraintRow  ( ::btConstraintRow::* )(  ) +void btConstraintRow_free(void *c); // attribute not supported: //attribute: ::btScalar[3] btConstraintRow->m_normal+void btConstraintRow_m_rhs_set(void *c,float a); //attribute: ::btScalar btConstraintRow->m_rhs+float btConstraintRow_m_rhs_get(void *c); //attribute: ::btScalar btConstraintRow->m_rhs+void btConstraintRow_m_jacDiagInv_set(void *c,float a); //attribute: ::btScalar btConstraintRow->m_jacDiagInv+float btConstraintRow_m_jacDiagInv_get(void *c); //attribute: ::btScalar btConstraintRow->m_jacDiagInv+void btConstraintRow_m_lowerLimit_set(void *c,float a); //attribute: ::btScalar btConstraintRow->m_lowerLimit+float btConstraintRow_m_lowerLimit_get(void *c); //attribute: ::btScalar btConstraintRow->m_lowerLimit+void btConstraintRow_m_upperLimit_set(void *c,float a); //attribute: ::btScalar btConstraintRow->m_upperLimit+float btConstraintRow_m_upperLimit_get(void *c); //attribute: ::btScalar btConstraintRow->m_upperLimit+void btConstraintRow_m_accumImpulse_set(void *c,float a); //attribute: ::btScalar btConstraintRow->m_accumImpulse+float btConstraintRow_m_accumImpulse_get(void *c); //attribute: ::btScalar btConstraintRow->m_accumImpulse+void btDiscreteCollisionDetectorInterface_getClosestPoints(void *c,void* p0,void* p1,void* p2,int p3); //method: getClosestPoints void ( ::btDiscreteCollisionDetectorInterface::* )( ::btDiscreteCollisionDetectorInterface::ClosestPointInput const &,::btDiscreteCollisionDetectorInterface::Result &,::btIDebugDraw *,bool ) +void* btGjkEpaSolver2_new(); //constructor: btGjkEpaSolver2  ( ::btGjkEpaSolver2::* )(  ) +void btGjkEpaSolver2_free(void *c); int btGjkEpaSolver2_StackSizeRequirement(); //method: StackSizeRequirement int (*)(  )+int btGjkEpaSolver2_Distance(void* p0,float* p1,void* p2,float* p3,float* p4,void* p5); //method: Distance bool (*)( ::btConvexShape const *,::btTransform const &,::btConvexShape const *,::btTransform const &,::btVector3 const &,::btGjkEpaSolver2::sResults & )+int btGjkEpaSolver2_Penetration(void* p0,float* p1,void* p2,float* p3,float* p4,void* p5,int p6); //method: Penetration bool (*)( ::btConvexShape const *,::btTransform const &,::btConvexShape const *,::btTransform const &,::btVector3 const &,::btGjkEpaSolver2::sResults &,bool )+float btGjkEpaSolver2_SignedDistance(float* p0,float p1,void* p2,float* p3,void* p4); //method: SignedDistance ::btScalar (*)( ::btVector3 const &,::btScalar,::btConvexShape const *,::btTransform const &,::btGjkEpaSolver2::sResults & )+float btGjkEpaSolver2_SignedDistance0(float* p0,float p1,void* p2,float* p3,void* p4); //method: SignedDistance ::btScalar (*)( ::btVector3 const &,::btScalar,::btConvexShape const *,::btTransform const &,::btGjkEpaSolver2::sResults & )+int btGjkEpaSolver2_SignedDistance1(void* p0,float* p1,void* p2,float* p3,float* p4,void* p5); //method: SignedDistance bool (*)( ::btConvexShape const *,::btTransform const &,::btConvexShape const *,::btTransform const &,::btVector3 const &,::btGjkEpaSolver2::sResults & )+//not supported constructor: btGjkPairDetector  ( ::btGjkPairDetector::* )( ::btConvexShape const *,::btConvexShape const *,::btVoronoiSimplexSolver *,::btConvexPenetrationDepthSolver * ) +//not supported constructor: btGjkPairDetector  ( ::btGjkPairDetector::* )( ::btConvexShape const *,::btConvexShape const *,int,int,::btScalar,::btScalar,::btVoronoiSimplexSolver *,::btConvexPenetrationDepthSolver * ) +void btGjkPairDetector_free(void *c); void btGjkPairDetector_setCachedSeperatingAxis(void *c,float* p0); //method: setCachedSeperatingAxis void ( ::btGjkPairDetector::* )( ::btVector3 const & ) +void btGjkPairDetector_getCachedSeparatingAxis(void *c,float* ret); //method: getCachedSeparatingAxis ::btVector3 const & ( ::btGjkPairDetector::* )(  ) const+//not supported method: setPenetrationDepthSolver void ( ::btGjkPairDetector::* )( ::btConvexPenetrationDepthSolver * ) +void btGjkPairDetector_getClosestPoints(void *c,void* p0,void* p1,void* p2,int p3); //method: getClosestPoints void ( ::btGjkPairDetector::* )( ::btDiscreteCollisionDetectorInterface::ClosestPointInput const &,::btDiscreteCollisionDetectorInterface::Result &,::btIDebugDraw *,bool ) +void btGjkPairDetector_setMinkowskiA(void *c,void* p0); //method: setMinkowskiA void ( ::btGjkPairDetector::* )( ::btConvexShape * ) +void btGjkPairDetector_setMinkowskiB(void *c,void* p0); //method: setMinkowskiB void ( ::btGjkPairDetector::* )( ::btConvexShape * ) +void btGjkPairDetector_setIgnoreMargin(void *c,int p0); //method: setIgnoreMargin void ( ::btGjkPairDetector::* )( bool ) +void btGjkPairDetector_getClosestPointsNonVirtual(void *c,void* p0,void* p1,void* p2); //method: getClosestPointsNonVirtual void ( ::btGjkPairDetector::* )( ::btDiscreteCollisionDetectorInterface::ClosestPointInput const &,::btDiscreteCollisionDetectorInterface::Result &,::btIDebugDraw * ) +float btGjkPairDetector_getCachedSeparatingDistance(void *c); //method: getCachedSeparatingDistance ::btScalar ( ::btGjkPairDetector::* )(  ) const+void btGjkPairDetector_m_lastUsedMethod_set(void *c,int a); //attribute: int btGjkPairDetector->m_lastUsedMethod+int btGjkPairDetector_m_lastUsedMethod_get(void *c); //attribute: int btGjkPairDetector->m_lastUsedMethod+void btGjkPairDetector_m_curIter_set(void *c,int a); //attribute: int btGjkPairDetector->m_curIter+int btGjkPairDetector_m_curIter_get(void *c); //attribute: int btGjkPairDetector->m_curIter+void btGjkPairDetector_m_degenerateSimplex_set(void *c,int a); //attribute: int btGjkPairDetector->m_degenerateSimplex+int btGjkPairDetector_m_degenerateSimplex_get(void *c); //attribute: int btGjkPairDetector->m_degenerateSimplex+void btGjkPairDetector_m_catchDegeneracies_set(void *c,int a); //attribute: int btGjkPairDetector->m_catchDegeneracies+int btGjkPairDetector_m_catchDegeneracies_get(void *c); //attribute: int btGjkPairDetector->m_catchDegeneracies+void* btManifoldPoint_new0(); //constructor: btManifoldPoint  ( ::btManifoldPoint::* )(  ) +void* btManifoldPoint_new1(float* p0,float* p1,float* p2,float p3); //constructor: btManifoldPoint  ( ::btManifoldPoint::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btScalar ) +void btManifoldPoint_free(void *c); void btManifoldPoint_setDistance(void *c,float p0); //method: setDistance void ( ::btManifoldPoint::* )( ::btScalar ) +int btManifoldPoint_getLifeTime(void *c); //method: getLifeTime int ( ::btManifoldPoint::* )(  ) const+float btManifoldPoint_getDistance(void *c); //method: getDistance ::btScalar ( ::btManifoldPoint::* )(  ) const+float btManifoldPoint_getAppliedImpulse(void *c); //method: getAppliedImpulse ::btScalar ( ::btManifoldPoint::* )(  ) const+void btManifoldPoint_getPositionWorldOnB(void *c,float* ret); //method: getPositionWorldOnB ::btVector3 const & ( ::btManifoldPoint::* )(  ) const+void btManifoldPoint_getPositionWorldOnA(void *c,float* ret); //method: getPositionWorldOnA ::btVector3 const & ( ::btManifoldPoint::* )(  ) const+void btManifoldPoint_m_localPointA_set(void *c,float* a); //attribute: ::btVector3 btManifoldPoint->m_localPointA+void btManifoldPoint_m_localPointA_get(void *c,float* a);+void btManifoldPoint_m_localPointB_set(void *c,float* a); //attribute: ::btVector3 btManifoldPoint->m_localPointB+void btManifoldPoint_m_localPointB_get(void *c,float* a);+void btManifoldPoint_m_positionWorldOnB_set(void *c,float* a); //attribute: ::btVector3 btManifoldPoint->m_positionWorldOnB+void btManifoldPoint_m_positionWorldOnB_get(void *c,float* a);+void btManifoldPoint_m_positionWorldOnA_set(void *c,float* a); //attribute: ::btVector3 btManifoldPoint->m_positionWorldOnA+void btManifoldPoint_m_positionWorldOnA_get(void *c,float* a);+void btManifoldPoint_m_normalWorldOnB_set(void *c,float* a); //attribute: ::btVector3 btManifoldPoint->m_normalWorldOnB+void btManifoldPoint_m_normalWorldOnB_get(void *c,float* a);+void btManifoldPoint_m_distance1_set(void *c,float a); //attribute: ::btScalar btManifoldPoint->m_distance1+float btManifoldPoint_m_distance1_get(void *c); //attribute: ::btScalar btManifoldPoint->m_distance1+void btManifoldPoint_m_combinedFriction_set(void *c,float a); //attribute: ::btScalar btManifoldPoint->m_combinedFriction+float btManifoldPoint_m_combinedFriction_get(void *c); //attribute: ::btScalar btManifoldPoint->m_combinedFriction+void btManifoldPoint_m_combinedRestitution_set(void *c,float a); //attribute: ::btScalar btManifoldPoint->m_combinedRestitution+float btManifoldPoint_m_combinedRestitution_get(void *c); //attribute: ::btScalar btManifoldPoint->m_combinedRestitution+void btManifoldPoint_m_partId0_set(void *c,int a); //attribute: int btManifoldPoint->m_partId0+int btManifoldPoint_m_partId0_get(void *c); //attribute: int btManifoldPoint->m_partId0+void btManifoldPoint_m_partId1_set(void *c,int a); //attribute: int btManifoldPoint->m_partId1+int btManifoldPoint_m_partId1_get(void *c); //attribute: int btManifoldPoint->m_partId1+void btManifoldPoint_m_index0_set(void *c,int a); //attribute: int btManifoldPoint->m_index0+int btManifoldPoint_m_index0_get(void *c); //attribute: int btManifoldPoint->m_index0+void btManifoldPoint_m_index1_set(void *c,int a); //attribute: int btManifoldPoint->m_index1+int btManifoldPoint_m_index1_get(void *c); //attribute: int btManifoldPoint->m_index1+// attribute not supported: //attribute: void * btManifoldPoint->m_userPersistentData+void btManifoldPoint_m_appliedImpulse_set(void *c,float a); //attribute: ::btScalar btManifoldPoint->m_appliedImpulse+float btManifoldPoint_m_appliedImpulse_get(void *c); //attribute: ::btScalar btManifoldPoint->m_appliedImpulse+void btManifoldPoint_m_lateralFrictionInitialized_set(void *c,int a); //attribute: bool btManifoldPoint->m_lateralFrictionInitialized+int btManifoldPoint_m_lateralFrictionInitialized_get(void *c); //attribute: bool btManifoldPoint->m_lateralFrictionInitialized+void btManifoldPoint_m_appliedImpulseLateral1_set(void *c,float a); //attribute: ::btScalar btManifoldPoint->m_appliedImpulseLateral1+float btManifoldPoint_m_appliedImpulseLateral1_get(void *c); //attribute: ::btScalar btManifoldPoint->m_appliedImpulseLateral1+void btManifoldPoint_m_appliedImpulseLateral2_set(void *c,float a); //attribute: ::btScalar btManifoldPoint->m_appliedImpulseLateral2+float btManifoldPoint_m_appliedImpulseLateral2_get(void *c); //attribute: ::btScalar btManifoldPoint->m_appliedImpulseLateral2+void btManifoldPoint_m_contactMotion1_set(void *c,float a); //attribute: ::btScalar btManifoldPoint->m_contactMotion1+float btManifoldPoint_m_contactMotion1_get(void *c); //attribute: ::btScalar btManifoldPoint->m_contactMotion1+void btManifoldPoint_m_contactMotion2_set(void *c,float a); //attribute: ::btScalar btManifoldPoint->m_contactMotion2+float btManifoldPoint_m_contactMotion2_get(void *c); //attribute: ::btScalar btManifoldPoint->m_contactMotion2+void btManifoldPoint_m_contactCFM1_set(void *c,float a); //attribute: ::btScalar btManifoldPoint->m_contactCFM1+float btManifoldPoint_m_contactCFM1_get(void *c); //attribute: ::btScalar btManifoldPoint->m_contactCFM1+void btManifoldPoint_m_contactCFM2_set(void *c,float a); //attribute: ::btScalar btManifoldPoint->m_contactCFM2+float btManifoldPoint_m_contactCFM2_get(void *c); //attribute: ::btScalar btManifoldPoint->m_contactCFM2+void btManifoldPoint_m_lifeTime_set(void *c,int a); //attribute: int btManifoldPoint->m_lifeTime+int btManifoldPoint_m_lifeTime_get(void *c); //attribute: int btManifoldPoint->m_lifeTime+void btManifoldPoint_m_lateralFrictionDir1_set(void *c,float* a); //attribute: ::btVector3 btManifoldPoint->m_lateralFrictionDir1+void btManifoldPoint_m_lateralFrictionDir1_get(void *c,float* a);+void btManifoldPoint_m_lateralFrictionDir2_set(void *c,float* a); //attribute: ::btVector3 btManifoldPoint->m_lateralFrictionDir2+void btManifoldPoint_m_lateralFrictionDir2_get(void *c,float* a);+// attribute not supported: //attribute: ::btConstraintRow[3] btManifoldPoint->mConstraintRow+void* btPersistentManifold_new0(); //constructor: btPersistentManifold  ( ::btPersistentManifold::* )(  ) +//not supported constructor: btPersistentManifold  ( ::btPersistentManifold::* )( void *,void *,int,::btScalar,::btScalar ) +void btPersistentManifold_free(void *c); //not supported method: setBodies void ( ::btPersistentManifold::* )( void *,void * ) +void btPersistentManifold_replaceContactPoint(void *c,void* p0,int p1); //method: replaceContactPoint void ( ::btPersistentManifold::* )( ::btManifoldPoint const &,int ) +void btPersistentManifold_clearUserCache(void *c,void* p0); //method: clearUserCache void ( ::btPersistentManifold::* )( ::btManifoldPoint & ) +//not supported method: getBody1 void * ( ::btPersistentManifold::* )(  ) +//not supported method: getBody1 void * ( ::btPersistentManifold::* )(  ) +//not supported method: getBody1 void const * ( ::btPersistentManifold::* )(  ) const+float btPersistentManifold_getContactProcessingThreshold(void *c); //method: getContactProcessingThreshold ::btScalar ( ::btPersistentManifold::* )(  ) const+void btPersistentManifold_clearManifold(void *c); //method: clearManifold void ( ::btPersistentManifold::* )(  ) +int btPersistentManifold_getNumContacts(void *c); //method: getNumContacts int ( ::btPersistentManifold::* )(  ) const+//not supported method: getBody0 void * ( ::btPersistentManifold::* )(  ) +//not supported method: getBody0 void * ( ::btPersistentManifold::* )(  ) +//not supported method: getBody0 void const * ( ::btPersistentManifold::* )(  ) const+int btPersistentManifold_addManifoldPoint(void *c,void* p0); //method: addManifoldPoint int ( ::btPersistentManifold::* )( ::btManifoldPoint const & ) +int btPersistentManifold_getCacheEntry(void *c,void* p0); //method: getCacheEntry int ( ::btPersistentManifold::* )( ::btManifoldPoint const & ) const+int btPersistentManifold_validContactDistance(void *c,void* p0); //method: validContactDistance bool ( ::btPersistentManifold::* )( ::btManifoldPoint const & ) const+void btPersistentManifold_removeContactPoint(void *c,int p0); //method: removeContactPoint void ( ::btPersistentManifold::* )( int ) +void* btPersistentManifold_getContactPoint(void *c,int p0); //method: getContactPoint ::btManifoldPoint const & ( ::btPersistentManifold::* )( int ) const+void* btPersistentManifold_getContactPoint0(void *c,int p0); //method: getContactPoint ::btManifoldPoint const & ( ::btPersistentManifold::* )( int ) const+void* btPersistentManifold_getContactPoint1(void *c,int p0); //method: getContactPoint ::btManifoldPoint & ( ::btPersistentManifold::* )( int ) +void btPersistentManifold_refreshContactPoints(void *c,float* p0,float* p1); //method: refreshContactPoints void ( ::btPersistentManifold::* )( ::btTransform const &,::btTransform const & ) +float btPersistentManifold_getContactBreakingThreshold(void *c); //method: getContactBreakingThreshold ::btScalar ( ::btPersistentManifold::* )(  ) const+void btPersistentManifold_m_companionIdA_set(void *c,int a); //attribute: int btPersistentManifold->m_companionIdA+int btPersistentManifold_m_companionIdA_get(void *c); //attribute: int btPersistentManifold->m_companionIdA+void btPersistentManifold_m_companionIdB_set(void *c,int a); //attribute: int btPersistentManifold->m_companionIdB+int btPersistentManifold_m_companionIdB_get(void *c); //attribute: int btPersistentManifold->m_companionIdB+void btPersistentManifold_m_index1a_set(void *c,int a); //attribute: int btPersistentManifold->m_index1a+int btPersistentManifold_m_index1a_get(void *c); //attribute: int btPersistentManifold->m_index1a+void btStorageResult_addContactPoint(void *c,float* p0,float* p1,float p2); //method: addContactPoint void ( ::btStorageResult::* )( ::btVector3 const &,::btVector3 const &,::btScalar ) +void btStorageResult_m_normalOnSurfaceB_set(void *c,float* a); //attribute: ::btVector3 btStorageResult->m_normalOnSurfaceB+void btStorageResult_m_normalOnSurfaceB_get(void *c,float* a);+void btStorageResult_m_closestPointInB_set(void *c,float* a); //attribute: ::btVector3 btStorageResult->m_closestPointInB+void btStorageResult_m_closestPointInB_get(void *c,float* a);+void btStorageResult_m_distance_set(void *c,float a); //attribute: ::btScalar btStorageResult->m_distance+float btStorageResult_m_distance_get(void *c); //attribute: ::btScalar btStorageResult->m_distance+void* btSubSimplexClosestResult_new(); //constructor: btSubSimplexClosestResult  ( ::btSubSimplexClosestResult::* )(  ) +void btSubSimplexClosestResult_free(void *c); void btSubSimplexClosestResult_reset(void *c); //method: reset void ( ::btSubSimplexClosestResult::* )(  ) +int btSubSimplexClosestResult_isValid(void *c); //method: isValid bool ( ::btSubSimplexClosestResult::* )(  ) +void btSubSimplexClosestResult_setBarycentricCoordinates(void *c,float p0,float p1,float p2,float p3); //method: setBarycentricCoordinates void ( ::btSubSimplexClosestResult::* )( ::btScalar,::btScalar,::btScalar,::btScalar ) +void btSubSimplexClosestResult_m_closestPointOnSimplex_set(void *c,float* a); //attribute: ::btVector3 btSubSimplexClosestResult->m_closestPointOnSimplex+void btSubSimplexClosestResult_m_closestPointOnSimplex_get(void *c,float* a);+// attribute not supported: //attribute: ::btUsageBitfield btSubSimplexClosestResult->m_usedVertices+// attribute not supported: //attribute: ::btScalar[4] btSubSimplexClosestResult->m_barycentricCoords+void btSubSimplexClosestResult_m_degenerate_set(void *c,int a); //attribute: bool btSubSimplexClosestResult->m_degenerate+int btSubSimplexClosestResult_m_degenerate_get(void *c); //attribute: bool btSubSimplexClosestResult->m_degenerate+void* btUsageBitfield_new(); //constructor: btUsageBitfield  ( ::btUsageBitfield::* )(  ) +void btUsageBitfield_free(void *c); void btUsageBitfield_reset(void *c); //method: reset void ( ::btUsageBitfield::* )(  ) +void btUsageBitfield_unused1_set(void *c,short unsigned int a); //attribute: short unsigned int btUsageBitfield->unused1+short unsigned int btUsageBitfield_unused1_get(void *c); //attribute: short unsigned int btUsageBitfield->unused1+void btUsageBitfield_unused2_set(void *c,short unsigned int a); //attribute: short unsigned int btUsageBitfield->unused2+short unsigned int btUsageBitfield_unused2_get(void *c); //attribute: short unsigned int btUsageBitfield->unused2+void btUsageBitfield_unused3_set(void *c,short unsigned int a); //attribute: short unsigned int btUsageBitfield->unused3+short unsigned int btUsageBitfield_unused3_get(void *c); //attribute: short unsigned int btUsageBitfield->unused3+void btUsageBitfield_unused4_set(void *c,short unsigned int a); //attribute: short unsigned int btUsageBitfield->unused4+short unsigned int btUsageBitfield_unused4_get(void *c); //attribute: short unsigned int btUsageBitfield->unused4+void btUsageBitfield_usedVertexA_set(void *c,short unsigned int a); //attribute: short unsigned int btUsageBitfield->usedVertexA+short unsigned int btUsageBitfield_usedVertexA_get(void *c); //attribute: short unsigned int btUsageBitfield->usedVertexA+void btUsageBitfield_usedVertexB_set(void *c,short unsigned int a); //attribute: short unsigned int btUsageBitfield->usedVertexB+short unsigned int btUsageBitfield_usedVertexB_get(void *c); //attribute: short unsigned int btUsageBitfield->usedVertexB+void btUsageBitfield_usedVertexC_set(void *c,short unsigned int a); //attribute: short unsigned int btUsageBitfield->usedVertexC+short unsigned int btUsageBitfield_usedVertexC_get(void *c); //attribute: short unsigned int btUsageBitfield->usedVertexC+void btUsageBitfield_usedVertexD_set(void *c,short unsigned int a); //attribute: short unsigned int btUsageBitfield->usedVertexD+short unsigned int btUsageBitfield_usedVertexD_get(void *c); //attribute: short unsigned int btUsageBitfield->usedVertexD+void* btVoronoiSimplexSolver_new(); //constructor: btVoronoiSimplexSolver  ( ::btVoronoiSimplexSolver::* )(  ) +void btVoronoiSimplexSolver_free(void *c); void btVoronoiSimplexSolver_reset(void *c); //method: reset void ( ::btVoronoiSimplexSolver::* )(  ) +int btVoronoiSimplexSolver_updateClosestVectorAndPoints(void *c); //method: updateClosestVectorAndPoints bool ( ::btVoronoiSimplexSolver::* )(  ) +void btVoronoiSimplexSolver_setEqualVertexThreshold(void *c,float p0); //method: setEqualVertexThreshold void ( ::btVoronoiSimplexSolver::* )( ::btScalar ) +int btVoronoiSimplexSolver_inSimplex(void *c,float* p0); //method: inSimplex bool ( ::btVoronoiSimplexSolver::* )( ::btVector3 const & ) +int btVoronoiSimplexSolver_closest(void *c,float* p0); //method: closest bool ( ::btVoronoiSimplexSolver::* )( ::btVector3 & ) +int btVoronoiSimplexSolver_closestPtPointTetrahedron(void *c,float* p0,float* p1,float* p2,float* p3,float* p4,void* p5); //method: closestPtPointTetrahedron bool ( ::btVoronoiSimplexSolver::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btSubSimplexClosestResult & ) +int btVoronoiSimplexSolver_closestPtPointTriangle(void *c,float* p0,float* p1,float* p2,float* p3,void* p4); //method: closestPtPointTriangle bool ( ::btVoronoiSimplexSolver::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btSubSimplexClosestResult & ) +int btVoronoiSimplexSolver_pointOutsideOfPlane(void *c,float* p0,float* p1,float* p2,float* p3,float* p4); //method: pointOutsideOfPlane int ( ::btVoronoiSimplexSolver::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const &,::btVector3 const & ) +int btVoronoiSimplexSolver_emptySimplex(void *c); //method: emptySimplex bool ( ::btVoronoiSimplexSolver::* )(  ) const+//not supported method: getSimplex int ( ::btVoronoiSimplexSolver::* )( ::btVector3 *,::btVector3 *,::btVector3 * ) const+float btVoronoiSimplexSolver_maxVertex(void *c); //method: maxVertex ::btScalar ( ::btVoronoiSimplexSolver::* )(  ) +void btVoronoiSimplexSolver_addVertex(void *c,float* p0,float* p1,float* p2); //method: addVertex void ( ::btVoronoiSimplexSolver::* )( ::btVector3 const &,::btVector3 const &,::btVector3 const & ) +void btVoronoiSimplexSolver_reduceVertices(void *c,void* p0); //method: reduceVertices void ( ::btVoronoiSimplexSolver::* )( ::btUsageBitfield const & ) +void btVoronoiSimplexSolver_backup_closest(void *c,float* p0); //method: backup_closest void ( ::btVoronoiSimplexSolver::* )( ::btVector3 & ) +void btVoronoiSimplexSolver_removeVertex(void *c,int p0); //method: removeVertex void ( ::btVoronoiSimplexSolver::* )( int ) +float btVoronoiSimplexSolver_getEqualVertexThreshold(void *c); //method: getEqualVertexThreshold ::btScalar ( ::btVoronoiSimplexSolver::* )(  ) const+void btVoronoiSimplexSolver_compute_points(void *c,float* p0,float* p1); //method: compute_points void ( ::btVoronoiSimplexSolver::* )( ::btVector3 &,::btVector3 & ) +int btVoronoiSimplexSolver_fullSimplex(void *c); //method: fullSimplex bool ( ::btVoronoiSimplexSolver::* )(  ) const+int btVoronoiSimplexSolver_numVertices(void *c); //method: numVertices int ( ::btVoronoiSimplexSolver::* )(  ) const+// attribute not supported: //attribute: ::btSubSimplexClosestResult btVoronoiSimplexSolver->m_cachedBC+void btVoronoiSimplexSolver_m_cachedP1_set(void *c,float* a); //attribute: ::btVector3 btVoronoiSimplexSolver->m_cachedP1+void btVoronoiSimplexSolver_m_cachedP1_get(void *c,float* a);+void btVoronoiSimplexSolver_m_cachedP2_set(void *c,float* a); //attribute: ::btVector3 btVoronoiSimplexSolver->m_cachedP2+void btVoronoiSimplexSolver_m_cachedP2_get(void *c,float* a);+void btVoronoiSimplexSolver_m_cachedV_set(void *c,float* a); //attribute: ::btVector3 btVoronoiSimplexSolver->m_cachedV+void btVoronoiSimplexSolver_m_cachedV_get(void *c,float* a);+void btVoronoiSimplexSolver_m_cachedValidClosest_set(void *c,int a); //attribute: bool btVoronoiSimplexSolver->m_cachedValidClosest+int btVoronoiSimplexSolver_m_cachedValidClosest_get(void *c); //attribute: bool btVoronoiSimplexSolver->m_cachedValidClosest+void btVoronoiSimplexSolver_m_equalVertexThreshold_set(void *c,float a); //attribute: ::btScalar btVoronoiSimplexSolver->m_equalVertexThreshold+float btVoronoiSimplexSolver_m_equalVertexThreshold_get(void *c); //attribute: ::btScalar btVoronoiSimplexSolver->m_equalVertexThreshold+void btVoronoiSimplexSolver_m_lastW_set(void *c,float* a); //attribute: ::btVector3 btVoronoiSimplexSolver->m_lastW+void btVoronoiSimplexSolver_m_lastW_get(void *c,float* a);+void btVoronoiSimplexSolver_m_needsUpdate_set(void *c,int a); //attribute: bool btVoronoiSimplexSolver->m_needsUpdate+int btVoronoiSimplexSolver_m_needsUpdate_get(void *c); //attribute: bool btVoronoiSimplexSolver->m_needsUpdate+void btVoronoiSimplexSolver_m_numVertices_set(void *c,int a); //attribute: int btVoronoiSimplexSolver->m_numVertices+int btVoronoiSimplexSolver_m_numVertices_get(void *c); //attribute: int btVoronoiSimplexSolver->m_numVertices+// attribute not supported: //attribute: ::btVector3[5] btVoronoiSimplexSolver->m_simplexPointsP+// attribute not supported: //attribute: ::btVector3[5] btVoronoiSimplexSolver->m_simplexPointsQ+// attribute not supported: //attribute: ::btVector3[5] btVoronoiSimplexSolver->m_simplexVectorW+void* btGjkEpaSolver2_sResults_new(); //constructor: sResults  ( ::btGjkEpaSolver2::sResults::* )(  ) +void btGjkEpaSolver2_sResults_free(void *c); void btGjkEpaSolver2_sResults_distance_set(void *c,float a); //attribute: ::btScalar btGjkEpaSolver2_sResults->distance+float btGjkEpaSolver2_sResults_distance_get(void *c); //attribute: ::btScalar btGjkEpaSolver2_sResults->distance+void btGjkEpaSolver2_sResults_normal_set(void *c,float* a); //attribute: ::btVector3 btGjkEpaSolver2_sResults->normal+void btGjkEpaSolver2_sResults_normal_get(void *c,float* a);+// attribute not supported: //attribute: ::btGjkEpaSolver2::sResults::eStatus btGjkEpaSolver2_sResults->status+// attribute not supported: //attribute: ::btVector3[2] btGjkEpaSolver2_sResults->witnesses+void* btCollisionWorld_AllHitsRayResultCallback_new(float* p0,float* p1); //constructor: AllHitsRayResultCallback  ( ::btCollisionWorld::AllHitsRayResultCallback::* )( ::btVector3 const &,::btVector3 const & ) +void btCollisionWorld_AllHitsRayResultCallback_free(void *c); float btCollisionWorld_AllHitsRayResultCallback_addSingleResult(void *c,void* p0,int p1); //method: addSingleResult ::btScalar ( ::btCollisionWorld::AllHitsRayResultCallback::* )( ::btCollisionWorld::LocalRayResult &,bool ) +// attribute not supported: //attribute: ::btAlignedObjectArray<btCollisionObject*> btCollisionWorld_AllHitsRayResultCallback->m_collisionObjects+// attribute not supported: //attribute: ::btAlignedObjectArray<float> btCollisionWorld_AllHitsRayResultCallback->m_hitFractions+// attribute not supported: //attribute: ::btAlignedObjectArray<btVector3> btCollisionWorld_AllHitsRayResultCallback->m_hitNormalWorld+// attribute not supported: //attribute: ::btAlignedObjectArray<btVector3> btCollisionWorld_AllHitsRayResultCallback->m_hitPointWorld+void btCollisionWorld_AllHitsRayResultCallback_m_rayFromWorld_set(void *c,float* a); //attribute: ::btVector3 btCollisionWorld_AllHitsRayResultCallback->m_rayFromWorld+void btCollisionWorld_AllHitsRayResultCallback_m_rayFromWorld_get(void *c,float* a);+void btCollisionWorld_AllHitsRayResultCallback_m_rayToWorld_set(void *c,float* a); //attribute: ::btVector3 btCollisionWorld_AllHitsRayResultCallback->m_rayToWorld+void btCollisionWorld_AllHitsRayResultCallback_m_rayToWorld_get(void *c,float* a);+void* btCollisionWorld_ClosestConvexResultCallback_new(float* p0,float* p1); //constructor: ClosestConvexResultCallback  ( ::btCollisionWorld::ClosestConvexResultCallback::* )( ::btVector3 const &,::btVector3 const & ) +void btCollisionWorld_ClosestConvexResultCallback_free(void *c); float btCollisionWorld_ClosestConvexResultCallback_addSingleResult(void *c,void* p0,int p1); //method: addSingleResult ::btScalar ( ::btCollisionWorld::ClosestConvexResultCallback::* )( ::btCollisionWorld::LocalConvexResult &,bool ) +void btCollisionWorld_ClosestConvexResultCallback_m_convexFromWorld_set(void *c,float* a); //attribute: ::btVector3 btCollisionWorld_ClosestConvexResultCallback->m_convexFromWorld+void btCollisionWorld_ClosestConvexResultCallback_m_convexFromWorld_get(void *c,float* a);+void btCollisionWorld_ClosestConvexResultCallback_m_convexToWorld_set(void *c,float* a); //attribute: ::btVector3 btCollisionWorld_ClosestConvexResultCallback->m_convexToWorld+void btCollisionWorld_ClosestConvexResultCallback_m_convexToWorld_get(void *c,float* a);+void btCollisionWorld_ClosestConvexResultCallback_m_hitCollisionObject_set(void *c,void* a); //attribute: ::btCollisionObject * btCollisionWorld_ClosestConvexResultCallback->m_hitCollisionObject+// attribute getter not supported: //attribute: ::btCollisionObject * btCollisionWorld_ClosestConvexResultCallback->m_hitCollisionObject+void btCollisionWorld_ClosestConvexResultCallback_m_hitNormalWorld_set(void *c,float* a); //attribute: ::btVector3 btCollisionWorld_ClosestConvexResultCallback->m_hitNormalWorld+void btCollisionWorld_ClosestConvexResultCallback_m_hitNormalWorld_get(void *c,float* a);+void btCollisionWorld_ClosestConvexResultCallback_m_hitPointWorld_set(void *c,float* a); //attribute: ::btVector3 btCollisionWorld_ClosestConvexResultCallback->m_hitPointWorld+void btCollisionWorld_ClosestConvexResultCallback_m_hitPointWorld_get(void *c,float* a);+void* btCollisionWorld_ClosestRayResultCallback_new(float* p0,float* p1); //constructor: ClosestRayResultCallback  ( ::btCollisionWorld::ClosestRayResultCallback::* )( ::btVector3 const &,::btVector3 const & ) +void btCollisionWorld_ClosestRayResultCallback_free(void *c); float btCollisionWorld_ClosestRayResultCallback_addSingleResult(void *c,void* p0,int p1); //method: addSingleResult ::btScalar ( ::btCollisionWorld::ClosestRayResultCallback::* )( ::btCollisionWorld::LocalRayResult &,bool ) +void btCollisionWorld_ClosestRayResultCallback_m_hitNormalWorld_set(void *c,float* a); //attribute: ::btVector3 btCollisionWorld_ClosestRayResultCallback->m_hitNormalWorld+void btCollisionWorld_ClosestRayResultCallback_m_hitNormalWorld_get(void *c,float* a);+void btCollisionWorld_ClosestRayResultCallback_m_hitPointWorld_set(void *c,float* a); //attribute: ::btVector3 btCollisionWorld_ClosestRayResultCallback->m_hitPointWorld+void btCollisionWorld_ClosestRayResultCallback_m_hitPointWorld_get(void *c,float* a);+void btCollisionWorld_ClosestRayResultCallback_m_rayFromWorld_set(void *c,float* a); //attribute: ::btVector3 btCollisionWorld_ClosestRayResultCallback->m_rayFromWorld+void btCollisionWorld_ClosestRayResultCallback_m_rayFromWorld_get(void *c,float* a);+void btCollisionWorld_ClosestRayResultCallback_m_rayToWorld_set(void *c,float* a); //attribute: ::btVector3 btCollisionWorld_ClosestRayResultCallback->m_rayToWorld+void btCollisionWorld_ClosestRayResultCallback_m_rayToWorld_get(void *c,float* a);+float btCollisionWorld_ContactResultCallback_addSingleResult(void *c,void* p0,void* p1,int p2,int p3,void* p4,int p5,int p6); //method: addSingleResult ::btScalar ( ::btCollisionWorld::ContactResultCallback::* )( ::btManifoldPoint &,::btCollisionObject const *,int,int,::btCollisionObject const *,int,int ) +int btCollisionWorld_ContactResultCallback_needsCollision(void *c,void* p0); //method: needsCollision bool ( ::btCollisionWorld::ContactResultCallback::* )( ::btBroadphaseProxy * ) const+void btCollisionWorld_ContactResultCallback_m_collisionFilterGroup_set(void *c,short int a); //attribute: short int btCollisionWorld_ContactResultCallback->m_collisionFilterGroup+short int btCollisionWorld_ContactResultCallback_m_collisionFilterGroup_get(void *c); //attribute: short int btCollisionWorld_ContactResultCallback->m_collisionFilterGroup+void btCollisionWorld_ContactResultCallback_m_collisionFilterMask_set(void *c,short int a); //attribute: short int btCollisionWorld_ContactResultCallback->m_collisionFilterMask+short int btCollisionWorld_ContactResultCallback_m_collisionFilterMask_get(void *c); //attribute: short int btCollisionWorld_ContactResultCallback->m_collisionFilterMask+float btCollisionWorld_ConvexResultCallback_addSingleResult(void *c,void* p0,int p1); //method: addSingleResult ::btScalar ( ::btCollisionWorld::ConvexResultCallback::* )( ::btCollisionWorld::LocalConvexResult &,bool ) +int btCollisionWorld_ConvexResultCallback_needsCollision(void *c,void* p0); //method: needsCollision bool ( ::btCollisionWorld::ConvexResultCallback::* )( ::btBroadphaseProxy * ) const+int btCollisionWorld_ConvexResultCallback_hasHit(void *c); //method: hasHit bool ( ::btCollisionWorld::ConvexResultCallback::* )(  ) const+void btCollisionWorld_ConvexResultCallback_m_closestHitFraction_set(void *c,float a); //attribute: ::btScalar btCollisionWorld_ConvexResultCallback->m_closestHitFraction+float btCollisionWorld_ConvexResultCallback_m_closestHitFraction_get(void *c); //attribute: ::btScalar btCollisionWorld_ConvexResultCallback->m_closestHitFraction+void btCollisionWorld_ConvexResultCallback_m_collisionFilterGroup_set(void *c,short int a); //attribute: short int btCollisionWorld_ConvexResultCallback->m_collisionFilterGroup+short int btCollisionWorld_ConvexResultCallback_m_collisionFilterGroup_get(void *c); //attribute: short int btCollisionWorld_ConvexResultCallback->m_collisionFilterGroup+void btCollisionWorld_ConvexResultCallback_m_collisionFilterMask_set(void *c,short int a); //attribute: short int btCollisionWorld_ConvexResultCallback->m_collisionFilterMask+short int btCollisionWorld_ConvexResultCallback_m_collisionFilterMask_get(void *c); //attribute: short int btCollisionWorld_ConvexResultCallback->m_collisionFilterMask+void* btSphereSphereCollisionAlgorithm_CreateFunc_new(); //constructor: CreateFunc  ( ::btSphereSphereCollisionAlgorithm::CreateFunc::* )(  ) +void btSphereSphereCollisionAlgorithm_CreateFunc_free(void *c); void* btSphereSphereCollisionAlgorithm_CreateFunc_CreateCollisionAlgorithm(void *c,void* p0,void* p1,void* p2); //method: CreateCollisionAlgorithm ::btCollisionAlgorithm * ( ::btSphereSphereCollisionAlgorithm::CreateFunc::* )( ::btCollisionAlgorithmConstructionInfo &,::btCollisionObject *,::btCollisionObject * ) +//not supported constructor: CreateFunc  ( ::btConvexConvexAlgorithm::CreateFunc::* )( ::btVoronoiSimplexSolver *,::btConvexPenetrationDepthSolver * ) +void btConvexConvexAlgorithm_CreateFunc_free(void *c); void* btConvexConvexAlgorithm_CreateFunc_CreateCollisionAlgorithm(void *c,void* p0,void* p1,void* p2); //method: CreateCollisionAlgorithm ::btCollisionAlgorithm * ( ::btConvexConvexAlgorithm::CreateFunc::* )( ::btCollisionAlgorithmConstructionInfo &,::btCollisionObject *,::btCollisionObject * ) +// attribute not supported: //attribute: ::btConvexPenetrationDepthSolver * btConvexConvexAlgorithm_CreateFunc->m_pdSolver+void btConvexConvexAlgorithm_CreateFunc_m_simplexSolver_set(void *c,void* a); //attribute: ::btVoronoiSimplexSolver * btConvexConvexAlgorithm_CreateFunc->m_simplexSolver+// attribute getter not supported: //attribute: ::btVoronoiSimplexSolver * btConvexConvexAlgorithm_CreateFunc->m_simplexSolver+void btConvexConvexAlgorithm_CreateFunc_m_numPerturbationIterations_set(void *c,int a); //attribute: int btConvexConvexAlgorithm_CreateFunc->m_numPerturbationIterations+int btConvexConvexAlgorithm_CreateFunc_m_numPerturbationIterations_get(void *c); //attribute: int btConvexConvexAlgorithm_CreateFunc->m_numPerturbationIterations+void btConvexConvexAlgorithm_CreateFunc_m_minimumPointsPerturbationThreshold_set(void *c,int a); //attribute: int btConvexConvexAlgorithm_CreateFunc->m_minimumPointsPerturbationThreshold+int btConvexConvexAlgorithm_CreateFunc_m_minimumPointsPerturbationThreshold_get(void *c); //attribute: int btConvexConvexAlgorithm_CreateFunc->m_minimumPointsPerturbationThreshold+void* btCollisionWorld_LocalConvexResult_new(void* p0,void* p1,float* p2,float* p3,float p4); //constructor: LocalConvexResult  ( ::btCollisionWorld::LocalConvexResult::* )( ::btCollisionObject *,::btCollisionWorld::LocalShapeInfo *,::btVector3 const &,::btVector3 const &,::btScalar ) +void btCollisionWorld_LocalConvexResult_free(void *c); void btCollisionWorld_LocalConvexResult_m_hitCollisionObject_set(void *c,void* a); //attribute: ::btCollisionObject * btCollisionWorld_LocalConvexResult->m_hitCollisionObject+// attribute getter not supported: //attribute: ::btCollisionObject * btCollisionWorld_LocalConvexResult->m_hitCollisionObject+void btCollisionWorld_LocalConvexResult_m_hitFraction_set(void *c,float a); //attribute: ::btScalar btCollisionWorld_LocalConvexResult->m_hitFraction+float btCollisionWorld_LocalConvexResult_m_hitFraction_get(void *c); //attribute: ::btScalar btCollisionWorld_LocalConvexResult->m_hitFraction+void btCollisionWorld_LocalConvexResult_m_hitNormalLocal_set(void *c,float* a); //attribute: ::btVector3 btCollisionWorld_LocalConvexResult->m_hitNormalLocal+void btCollisionWorld_LocalConvexResult_m_hitNormalLocal_get(void *c,float* a);+void btCollisionWorld_LocalConvexResult_m_hitPointLocal_set(void *c,float* a); //attribute: ::btVector3 btCollisionWorld_LocalConvexResult->m_hitPointLocal+void btCollisionWorld_LocalConvexResult_m_hitPointLocal_get(void *c,float* a);+void btCollisionWorld_LocalConvexResult_m_localShapeInfo_set(void *c,void* a); //attribute: ::btCollisionWorld::LocalShapeInfo * btCollisionWorld_LocalConvexResult->m_localShapeInfo+// attribute getter not supported: //attribute: ::btCollisionWorld::LocalShapeInfo * btCollisionWorld_LocalConvexResult->m_localShapeInfo+void* btCollisionWorld_LocalRayResult_new(void* p0,void* p1,float* p2,float p3); //constructor: LocalRayResult  ( ::btCollisionWorld::LocalRayResult::* )( ::btCollisionObject *,::btCollisionWorld::LocalShapeInfo *,::btVector3 const &,::btScalar ) +void btCollisionWorld_LocalRayResult_free(void *c); void btCollisionWorld_LocalRayResult_m_collisionObject_set(void *c,void* a); //attribute: ::btCollisionObject * btCollisionWorld_LocalRayResult->m_collisionObject+// attribute getter not supported: //attribute: ::btCollisionObject * btCollisionWorld_LocalRayResult->m_collisionObject+void btCollisionWorld_LocalRayResult_m_hitFraction_set(void *c,float a); //attribute: ::btScalar btCollisionWorld_LocalRayResult->m_hitFraction+float btCollisionWorld_LocalRayResult_m_hitFraction_get(void *c); //attribute: ::btScalar btCollisionWorld_LocalRayResult->m_hitFraction+void btCollisionWorld_LocalRayResult_m_hitNormalLocal_set(void *c,float* a); //attribute: ::btVector3 btCollisionWorld_LocalRayResult->m_hitNormalLocal+void btCollisionWorld_LocalRayResult_m_hitNormalLocal_get(void *c,float* a);+void btCollisionWorld_LocalRayResult_m_localShapeInfo_set(void *c,void* a); //attribute: ::btCollisionWorld::LocalShapeInfo * btCollisionWorld_LocalRayResult->m_localShapeInfo+// attribute getter not supported: //attribute: ::btCollisionWorld::LocalShapeInfo * btCollisionWorld_LocalRayResult->m_localShapeInfo+void* btCollisionWorld_LocalShapeInfo_new(); //constructor: LocalShapeInfo  ( ::btCollisionWorld::LocalShapeInfo::* )(  ) +void btCollisionWorld_LocalShapeInfo_free(void *c); void btCollisionWorld_LocalShapeInfo_m_shapePart_set(void *c,int a); //attribute: int btCollisionWorld_LocalShapeInfo->m_shapePart+int btCollisionWorld_LocalShapeInfo_m_shapePart_get(void *c); //attribute: int btCollisionWorld_LocalShapeInfo->m_shapePart+void btCollisionWorld_LocalShapeInfo_m_triangleIndex_set(void *c,int a); //attribute: int btCollisionWorld_LocalShapeInfo->m_triangleIndex+int btCollisionWorld_LocalShapeInfo_m_triangleIndex_get(void *c); //attribute: int btCollisionWorld_LocalShapeInfo->m_triangleIndex+float btCollisionWorld_RayResultCallback_addSingleResult(void *c,void* p0,int p1); //method: addSingleResult ::btScalar ( ::btCollisionWorld::RayResultCallback::* )( ::btCollisionWorld::LocalRayResult &,bool ) +int btCollisionWorld_RayResultCallback_needsCollision(void *c,void* p0); //method: needsCollision bool ( ::btCollisionWorld::RayResultCallback::* )( ::btBroadphaseProxy * ) const+int btCollisionWorld_RayResultCallback_hasHit(void *c); //method: hasHit bool ( ::btCollisionWorld::RayResultCallback::* )(  ) const+void btCollisionWorld_RayResultCallback_m_closestHitFraction_set(void *c,float a); //attribute: ::btScalar btCollisionWorld_RayResultCallback->m_closestHitFraction+float btCollisionWorld_RayResultCallback_m_closestHitFraction_get(void *c); //attribute: ::btScalar btCollisionWorld_RayResultCallback->m_closestHitFraction+void btCollisionWorld_RayResultCallback_m_collisionFilterGroup_set(void *c,short int a); //attribute: short int btCollisionWorld_RayResultCallback->m_collisionFilterGroup+short int btCollisionWorld_RayResultCallback_m_collisionFilterGroup_get(void *c); //attribute: short int btCollisionWorld_RayResultCallback->m_collisionFilterGroup+void btCollisionWorld_RayResultCallback_m_collisionFilterMask_set(void *c,short int a); //attribute: short int btCollisionWorld_RayResultCallback->m_collisionFilterMask+short int btCollisionWorld_RayResultCallback_m_collisionFilterMask_get(void *c); //attribute: short int btCollisionWorld_RayResultCallback->m_collisionFilterMask+void btCollisionWorld_RayResultCallback_m_collisionObject_set(void *c,void* a); //attribute: ::btCollisionObject * btCollisionWorld_RayResultCallback->m_collisionObject+// attribute getter not supported: //attribute: ::btCollisionObject * btCollisionWorld_RayResultCallback->m_collisionObject+void btCollisionWorld_RayResultCallback_m_flags_set(void *c,unsigned int a); //attribute: unsigned int btCollisionWorld_RayResultCallback->m_flags+unsigned int btCollisionWorld_RayResultCallback_m_flags_get(void *c); //attribute: unsigned int btCollisionWorld_RayResultCallback->m_flags+void* btCollisionAlgorithmCreateFunc_new(); //constructor: btCollisionAlgorithmCreateFunc  ( ::btCollisionAlgorithmCreateFunc::* )(  ) +void btCollisionAlgorithmCreateFunc_free(void *c); void* btCollisionAlgorithmCreateFunc_CreateCollisionAlgorithm(void *c,void* p0,void* p1,void* p2); //method: CreateCollisionAlgorithm ::btCollisionAlgorithm * ( ::btCollisionAlgorithmCreateFunc::* )( ::btCollisionAlgorithmConstructionInfo &,::btCollisionObject *,::btCollisionObject * ) +void btCollisionAlgorithmCreateFunc_m_swapped_set(void *c,int a); //attribute: bool btCollisionAlgorithmCreateFunc->m_swapped+int btCollisionAlgorithmCreateFunc_m_swapped_get(void *c); //attribute: bool btCollisionAlgorithmCreateFunc->m_swapped+//not supported method: getPersistentManifoldPool ::btPoolAllocator * ( ::btCollisionConfiguration::* )(  ) +void* btCollisionConfiguration_getStackAllocator(void *c); //method: getStackAllocator ::btStackAlloc * ( ::btCollisionConfiguration::* )(  ) +//not supported method: getCollisionAlgorithmPool ::btPoolAllocator * ( ::btCollisionConfiguration::* )(  ) +void* btCollisionConfiguration_getCollisionAlgorithmCreateFunc(void *c,int p0,int p1); //method: getCollisionAlgorithmCreateFunc ::btCollisionAlgorithmCreateFunc * ( ::btCollisionConfiguration::* )( int,int ) +void* btCollisionDispatcher_new(void* p0); //constructor: btCollisionDispatcher  ( ::btCollisionDispatcher::* )( ::btCollisionConfiguration * ) +void btCollisionDispatcher_free(void *c); //not supported method: allocateCollisionAlgorithm void * ( ::btCollisionDispatcher::* )( int ) +int btCollisionDispatcher_getDispatcherFlags(void *c); //method: getDispatcherFlags int ( ::btCollisionDispatcher::* )(  ) const+void* btCollisionDispatcher_getCollisionConfiguration(void *c); //method: getCollisionConfiguration ::btCollisionConfiguration * ( ::btCollisionDispatcher::* )(  ) +void* btCollisionDispatcher_getCollisionConfiguration0(void *c); //method: getCollisionConfiguration ::btCollisionConfiguration * ( ::btCollisionDispatcher::* )(  ) +void* btCollisionDispatcher_getCollisionConfiguration1(void *c); //method: getCollisionConfiguration ::btCollisionConfiguration const * ( ::btCollisionDispatcher::* )(  ) const+void btCollisionDispatcher_setDispatcherFlags(void *c,int p0); //method: setDispatcherFlags void ( ::btCollisionDispatcher::* )( int ) +void btCollisionDispatcher_releaseManifold(void *c,void* p0); //method: releaseManifold void ( ::btCollisionDispatcher::* )( ::btPersistentManifold * ) +void btCollisionDispatcher_setCollisionConfiguration(void *c,void* p0); //method: setCollisionConfiguration void ( ::btCollisionDispatcher::* )( ::btCollisionConfiguration * ) +int btCollisionDispatcher_getNumManifolds(void *c); //method: getNumManifolds int ( ::btCollisionDispatcher::* )(  ) const+void btCollisionDispatcher_clearManifold(void *c,void* p0); //method: clearManifold void ( ::btCollisionDispatcher::* )( ::btPersistentManifold * ) +//not supported method: freeCollisionAlgorithm void ( ::btCollisionDispatcher::* )( void * ) +//not supported method: getInternalManifoldPointer ::btPersistentManifold * * ( ::btCollisionDispatcher::* )(  ) +void btCollisionDispatcher_registerCollisionCreateFunc(void *c,int p0,int p1,void* p2); //method: registerCollisionCreateFunc void ( ::btCollisionDispatcher::* )( int,int,::btCollisionAlgorithmCreateFunc * ) +void btCollisionDispatcher_defaultNearCallback(void* p0,void* p1,void* p2); //method: defaultNearCallback void (*)( ::btBroadphasePair &,::btCollisionDispatcher &,::btDispatcherInfo const & )+//not supported method: getNearCallback ::btNearCallback ( ::btCollisionDispatcher::* )(  ) const+void* btCollisionDispatcher_findAlgorithm(void *c,void* p0,void* p1,void* p2); //method: findAlgorithm ::btCollisionAlgorithm * ( ::btCollisionDispatcher::* )( ::btCollisionObject *,::btCollisionObject *,::btPersistentManifold * ) +int btCollisionDispatcher_needsResponse(void *c,void* p0,void* p1); //method: needsResponse bool ( ::btCollisionDispatcher::* )( ::btCollisionObject *,::btCollisionObject * ) +//not supported method: getNewManifold ::btPersistentManifold * ( ::btCollisionDispatcher::* )( void *,void * ) +void btCollisionDispatcher_dispatchAllCollisionPairs(void *c,void* p0,void* p1,void* p2); //method: dispatchAllCollisionPairs void ( ::btCollisionDispatcher::* )( ::btOverlappingPairCache *,::btDispatcherInfo const &,::btDispatcher * ) +//not supported method: getInternalManifoldPool ::btPoolAllocator * ( ::btCollisionDispatcher::* )(  ) +//not supported method: getInternalManifoldPool ::btPoolAllocator * ( ::btCollisionDispatcher::* )(  ) +//not supported method: getInternalManifoldPool ::btPoolAllocator const * ( ::btCollisionDispatcher::* )(  ) const+int btCollisionDispatcher_needsCollision(void *c,void* p0,void* p1); //method: needsCollision bool ( ::btCollisionDispatcher::* )( ::btCollisionObject *,::btCollisionObject * ) +void* btCollisionDispatcher_getManifoldByIndexInternal(void *c,int p0); //method: getManifoldByIndexInternal ::btPersistentManifold * ( ::btCollisionDispatcher::* )( int ) +void* btCollisionDispatcher_getManifoldByIndexInternal0(void *c,int p0); //method: getManifoldByIndexInternal ::btPersistentManifold * ( ::btCollisionDispatcher::* )( int ) +void* btCollisionDispatcher_getManifoldByIndexInternal1(void *c,int p0); //method: getManifoldByIndexInternal ::btPersistentManifold const * ( ::btCollisionDispatcher::* )( int ) const+//not supported method: setNearCallback void ( ::btCollisionDispatcher::* )( ::btNearCallback ) +void* btCollisionObject_new(); //constructor: btCollisionObject  ( ::btCollisionObject::* )(  ) +void btCollisionObject_free(void *c); float btCollisionObject_getCcdSquareMotionThreshold(void *c); //method: getCcdSquareMotionThreshold ::btScalar ( ::btCollisionObject::* )(  ) const+void btCollisionObject_activate(void *c,int p0); //method: activate void ( ::btCollisionObject::* )( bool ) +void btCollisionObject_setInterpolationLinearVelocity(void *c,float* p0); //method: setInterpolationLinearVelocity void ( ::btCollisionObject::* )( ::btVector3 const & ) +float btCollisionObject_getFriction(void *c); //method: getFriction ::btScalar ( ::btCollisionObject::* )(  ) const+void btCollisionObject_setCompanionId(void *c,int p0); //method: setCompanionId void ( ::btCollisionObject::* )( int ) +void btCollisionObject_setInterpolationAngularVelocity(void *c,float* p0); //method: setInterpolationAngularVelocity void ( ::btCollisionObject::* )( ::btVector3 const & ) +//not supported method: serialize char const * ( ::btCollisionObject::* )( void *,::btSerializer * ) const+void btCollisionObject_setWorldTransform(void *c,float* p0); //method: setWorldTransform void ( ::btCollisionObject::* )( ::btTransform const & ) +int btCollisionObject_getCompanionId(void *c); //method: getCompanionId int ( ::btCollisionObject::* )(  ) const+//not supported method: internalSetExtensionPointer void ( ::btCollisionObject::* )( void * ) +void btCollisionObject_setContactProcessingThreshold(void *c,float p0); //method: setContactProcessingThreshold void ( ::btCollisionObject::* )( ::btScalar ) +void btCollisionObject_setInterpolationWorldTransform(void *c,float* p0); //method: setInterpolationWorldTransform void ( ::btCollisionObject::* )( ::btTransform const & ) +void btCollisionObject_getInterpolationLinearVelocity(void *c,float* ret); //method: getInterpolationLinearVelocity ::btVector3 const & ( ::btCollisionObject::* )(  ) const+int btCollisionObject_mergesSimulationIslands(void *c); //method: mergesSimulationIslands bool ( ::btCollisionObject::* )(  ) const+void btCollisionObject_setCollisionShape(void *c,void* p0); //method: setCollisionShape void ( ::btCollisionObject::* )( ::btCollisionShape * ) +void btCollisionObject_setCcdMotionThreshold(void *c,float p0); //method: setCcdMotionThreshold void ( ::btCollisionObject::* )( ::btScalar ) +int btCollisionObject_getIslandTag(void *c); //method: getIslandTag int ( ::btCollisionObject::* )(  ) const+int btCollisionObject_calculateSerializeBufferSize(void *c); //method: calculateSerializeBufferSize int ( ::btCollisionObject::* )(  ) const+float btCollisionObject_getCcdMotionThreshold(void *c); //method: getCcdMotionThreshold ::btScalar ( ::btCollisionObject::* )(  ) const+//not supported method: setUserPointer void ( ::btCollisionObject::* )( void * ) +int btCollisionObject_checkCollideWith(void *c,void* p0); //method: checkCollideWith bool ( ::btCollisionObject::* )( ::btCollisionObject * ) +void btCollisionObject_getAnisotropicFriction(void *c,float* ret); //method: getAnisotropicFriction ::btVector3 const & ( ::btCollisionObject::* )(  ) const+void btCollisionObject_getInterpolationAngularVelocity(void *c,float* ret); //method: getInterpolationAngularVelocity ::btVector3 const & ( ::btCollisionObject::* )(  ) const+void btCollisionObject_forceActivationState(void *c,int p0); //method: forceActivationState void ( ::btCollisionObject::* )( int ) +int btCollisionObject_isStaticObject(void *c); //method: isStaticObject bool ( ::btCollisionObject::* )(  ) const+void btCollisionObject_setFriction(void *c,float p0); //method: setFriction void ( ::btCollisionObject::* )( ::btScalar ) +void btCollisionObject_getInterpolationWorldTransform(void *c,float* ret); //method: getInterpolationWorldTransform ::btTransform const & ( ::btCollisionObject::* )(  ) const+void btCollisionObject_getInterpolationWorldTransform0(void *c,float* ret); //method: getInterpolationWorldTransform ::btTransform const & ( ::btCollisionObject::* )(  ) const+void btCollisionObject_getInterpolationWorldTransform1(void *c,float* ret); //method: getInterpolationWorldTransform ::btTransform & ( ::btCollisionObject::* )(  ) +void btCollisionObject_setIslandTag(void *c,int p0); //method: setIslandTag void ( ::btCollisionObject::* )( int ) +void btCollisionObject_setHitFraction(void *c,float p0); //method: setHitFraction void ( ::btCollisionObject::* )( ::btScalar ) +void btCollisionObject_serializeSingleObject(void *c,void* p0); //method: serializeSingleObject void ( ::btCollisionObject::* )( ::btSerializer * ) const+int btCollisionObject_getCollisionFlags(void *c); //method: getCollisionFlags int ( ::btCollisionObject::* )(  ) const+float btCollisionObject_getDeactivationTime(void *c); //method: getDeactivationTime ::btScalar ( ::btCollisionObject::* )(  ) const+void* btCollisionObject_getCollisionShape(void *c); //method: getCollisionShape ::btCollisionShape const * ( ::btCollisionObject::* )(  ) const+void* btCollisionObject_getCollisionShape0(void *c); //method: getCollisionShape ::btCollisionShape const * ( ::btCollisionObject::* )(  ) const+void* btCollisionObject_getCollisionShape1(void *c); //method: getCollisionShape ::btCollisionShape * ( ::btCollisionObject::* )(  ) +void btCollisionObject_setAnisotropicFriction(void *c,float* p0); //method: setAnisotropicFriction void ( ::btCollisionObject::* )( ::btVector3 const & ) +void* btCollisionObject_getBroadphaseHandle(void *c); //method: getBroadphaseHandle ::btBroadphaseProxy * ( ::btCollisionObject::* )(  ) +void* btCollisionObject_getBroadphaseHandle0(void *c); //method: getBroadphaseHandle ::btBroadphaseProxy * ( ::btCollisionObject::* )(  ) +void* btCollisionObject_getBroadphaseHandle1(void *c); //method: getBroadphaseHandle ::btBroadphaseProxy const * ( ::btCollisionObject::* )(  ) const+//not supported method: getUserPointer void * ( ::btCollisionObject::* )(  ) const+void btCollisionObject_setCcdSweptSphereRadius(void *c,float p0); //method: setCcdSweptSphereRadius void ( ::btCollisionObject::* )( ::btScalar ) +void btCollisionObject_getWorldTransform(void *c,float* ret); //method: getWorldTransform ::btTransform & ( ::btCollisionObject::* )(  ) +void btCollisionObject_getWorldTransform0(void *c,float* ret); //method: getWorldTransform ::btTransform & ( ::btCollisionObject::* )(  ) +void btCollisionObject_getWorldTransform1(void *c,float* ret); //method: getWorldTransform ::btTransform const & ( ::btCollisionObject::* )(  ) const+void btCollisionObject_setCollisionFlags(void *c,int p0); //method: setCollisionFlags void ( ::btCollisionObject::* )( int ) +void btCollisionObject_internalSetTemporaryCollisionShape(void *c,void* p0); //method: internalSetTemporaryCollisionShape void ( ::btCollisionObject::* )( ::btCollisionShape * ) +float btCollisionObject_getHitFraction(void *c); //method: getHitFraction ::btScalar ( ::btCollisionObject::* )(  ) const+int btCollisionObject_isActive(void *c); //method: isActive bool ( ::btCollisionObject::* )(  ) const+void btCollisionObject_setActivationState(void *c,int p0); //method: setActivationState void ( ::btCollisionObject::* )( int ) +int btCollisionObject_getInternalType(void *c); //method: getInternalType int ( ::btCollisionObject::* )(  ) const+int btCollisionObject_getActivationState(void *c); //method: getActivationState int ( ::btCollisionObject::* )(  ) const+int btCollisionObject_hasContactResponse(void *c); //method: hasContactResponse bool ( ::btCollisionObject::* )(  ) const+void* btCollisionObject_getRootCollisionShape(void *c); //method: getRootCollisionShape ::btCollisionShape const * ( ::btCollisionObject::* )(  ) const+void* btCollisionObject_getRootCollisionShape0(void *c); //method: getRootCollisionShape ::btCollisionShape const * ( ::btCollisionObject::* )(  ) const+void* btCollisionObject_getRootCollisionShape1(void *c); //method: getRootCollisionShape ::btCollisionShape * ( ::btCollisionObject::* )(  ) +float btCollisionObject_getRestitution(void *c); //method: getRestitution ::btScalar ( ::btCollisionObject::* )(  ) const+float btCollisionObject_getCcdSweptSphereRadius(void *c); //method: getCcdSweptSphereRadius ::btScalar ( ::btCollisionObject::* )(  ) const+float btCollisionObject_getContactProcessingThreshold(void *c); //method: getContactProcessingThreshold ::btScalar ( ::btCollisionObject::* )(  ) const+void btCollisionObject_setDeactivationTime(void *c,float p0); //method: setDeactivationTime void ( ::btCollisionObject::* )( ::btScalar ) +//not supported method: internalGetExtensionPointer void * ( ::btCollisionObject::* )(  ) const+int btCollisionObject_isStaticOrKinematicObject(void *c); //method: isStaticOrKinematicObject bool ( ::btCollisionObject::* )(  ) const+void btCollisionObject_setRestitution(void *c,float p0); //method: setRestitution void ( ::btCollisionObject::* )( ::btScalar ) +int btCollisionObject_hasAnisotropicFriction(void *c); //method: hasAnisotropicFriction bool ( ::btCollisionObject::* )(  ) const+void btCollisionObject_setBroadphaseHandle(void *c,void* p0); //method: setBroadphaseHandle void ( ::btCollisionObject::* )( ::btBroadphaseProxy * ) +int btCollisionObject_isKinematicObject(void *c); //method: isKinematicObject bool ( ::btCollisionObject::* )(  ) const+void* btCollisionObjectDoubleData_new(); //constructor: btCollisionObjectDoubleData  ( ::btCollisionObjectDoubleData::* )(  ) +void btCollisionObjectDoubleData_free(void *c); void btCollisionObjectDoubleData_m_activationState1_set(void *c,int a); //attribute: int btCollisionObjectDoubleData->m_activationState1+int btCollisionObjectDoubleData_m_activationState1_get(void *c); //attribute: int btCollisionObjectDoubleData->m_activationState1+// attribute not supported: //attribute: ::btVector3DoubleData btCollisionObjectDoubleData->m_anisotropicFriction+// attribute not supported: //attribute: void * btCollisionObjectDoubleData->m_broadphaseHandle+void btCollisionObjectDoubleData_m_ccdMotionThreshold_set(void *c,double a); //attribute: double btCollisionObjectDoubleData->m_ccdMotionThreshold+double btCollisionObjectDoubleData_m_ccdMotionThreshold_get(void *c); //attribute: double btCollisionObjectDoubleData->m_ccdMotionThreshold+void btCollisionObjectDoubleData_m_ccdSweptSphereRadius_set(void *c,double a); //attribute: double btCollisionObjectDoubleData->m_ccdSweptSphereRadius+double btCollisionObjectDoubleData_m_ccdSweptSphereRadius_get(void *c); //attribute: double btCollisionObjectDoubleData->m_ccdSweptSphereRadius+void btCollisionObjectDoubleData_m_checkCollideWith_set(void *c,int a); //attribute: int btCollisionObjectDoubleData->m_checkCollideWith+int btCollisionObjectDoubleData_m_checkCollideWith_get(void *c); //attribute: int btCollisionObjectDoubleData->m_checkCollideWith+void btCollisionObjectDoubleData_m_collisionFlags_set(void *c,int a); //attribute: int btCollisionObjectDoubleData->m_collisionFlags+int btCollisionObjectDoubleData_m_collisionFlags_get(void *c); //attribute: int btCollisionObjectDoubleData->m_collisionFlags+// attribute not supported: //attribute: void * btCollisionObjectDoubleData->m_collisionShape+void btCollisionObjectDoubleData_m_companionId_set(void *c,int a); //attribute: int btCollisionObjectDoubleData->m_companionId+int btCollisionObjectDoubleData_m_companionId_get(void *c); //attribute: int btCollisionObjectDoubleData->m_companionId+void btCollisionObjectDoubleData_m_contactProcessingThreshold_set(void *c,double a); //attribute: double btCollisionObjectDoubleData->m_contactProcessingThreshold+double btCollisionObjectDoubleData_m_contactProcessingThreshold_get(void *c); //attribute: double btCollisionObjectDoubleData->m_contactProcessingThreshold+void btCollisionObjectDoubleData_m_deactivationTime_set(void *c,double a); //attribute: double btCollisionObjectDoubleData->m_deactivationTime+double btCollisionObjectDoubleData_m_deactivationTime_get(void *c); //attribute: double btCollisionObjectDoubleData->m_deactivationTime+void btCollisionObjectDoubleData_m_friction_set(void *c,double a); //attribute: double btCollisionObjectDoubleData->m_friction+double btCollisionObjectDoubleData_m_friction_get(void *c); //attribute: double btCollisionObjectDoubleData->m_friction+void btCollisionObjectDoubleData_m_hasAnisotropicFriction_set(void *c,int a); //attribute: int btCollisionObjectDoubleData->m_hasAnisotropicFriction+int btCollisionObjectDoubleData_m_hasAnisotropicFriction_get(void *c); //attribute: int btCollisionObjectDoubleData->m_hasAnisotropicFriction+void btCollisionObjectDoubleData_m_hitFraction_set(void *c,double a); //attribute: double btCollisionObjectDoubleData->m_hitFraction+double btCollisionObjectDoubleData_m_hitFraction_get(void *c); //attribute: double btCollisionObjectDoubleData->m_hitFraction+void btCollisionObjectDoubleData_m_internalType_set(void *c,int a); //attribute: int btCollisionObjectDoubleData->m_internalType+int btCollisionObjectDoubleData_m_internalType_get(void *c); //attribute: int btCollisionObjectDoubleData->m_internalType+// attribute not supported: //attribute: ::btVector3DoubleData btCollisionObjectDoubleData->m_interpolationAngularVelocity+// attribute not supported: //attribute: ::btVector3DoubleData btCollisionObjectDoubleData->m_interpolationLinearVelocity+// attribute not supported: //attribute: ::btTransformDoubleData btCollisionObjectDoubleData->m_interpolationWorldTransform+void btCollisionObjectDoubleData_m_islandTag1_set(void *c,int a); //attribute: int btCollisionObjectDoubleData->m_islandTag1+int btCollisionObjectDoubleData_m_islandTag1_get(void *c); //attribute: int btCollisionObjectDoubleData->m_islandTag1+void btCollisionObjectDoubleData_m_name_set(void *c,char * a); //attribute: char * btCollisionObjectDoubleData->m_name+char * btCollisionObjectDoubleData_m_name_get(void *c); //attribute: char * btCollisionObjectDoubleData->m_name+// attribute not supported: //attribute: char[4] btCollisionObjectDoubleData->m_padding+void btCollisionObjectDoubleData_m_restitution_set(void *c,double a); //attribute: double btCollisionObjectDoubleData->m_restitution+double btCollisionObjectDoubleData_m_restitution_get(void *c); //attribute: double btCollisionObjectDoubleData->m_restitution+void btCollisionObjectDoubleData_m_rootCollisionShape_set(void *c,void* a); //attribute: ::btCollisionShapeData * btCollisionObjectDoubleData->m_rootCollisionShape+// attribute getter not supported: //attribute: ::btCollisionShapeData * btCollisionObjectDoubleData->m_rootCollisionShape+// attribute not supported: //attribute: ::btTransformDoubleData btCollisionObjectDoubleData->m_worldTransform+void* btCollisionObjectFloatData_new(); //constructor: btCollisionObjectFloatData  ( ::btCollisionObjectFloatData::* )(  ) +void btCollisionObjectFloatData_free(void *c); void btCollisionObjectFloatData_m_activationState1_set(void *c,int a); //attribute: int btCollisionObjectFloatData->m_activationState1+int btCollisionObjectFloatData_m_activationState1_get(void *c); //attribute: int btCollisionObjectFloatData->m_activationState1+// attribute not supported: //attribute: ::btVector3FloatData btCollisionObjectFloatData->m_anisotropicFriction+// attribute not supported: //attribute: void * btCollisionObjectFloatData->m_broadphaseHandle+void btCollisionObjectFloatData_m_ccdMotionThreshold_set(void *c,float a); //attribute: float btCollisionObjectFloatData->m_ccdMotionThreshold+float btCollisionObjectFloatData_m_ccdMotionThreshold_get(void *c); //attribute: float btCollisionObjectFloatData->m_ccdMotionThreshold+void btCollisionObjectFloatData_m_ccdSweptSphereRadius_set(void *c,float a); //attribute: float btCollisionObjectFloatData->m_ccdSweptSphereRadius+float btCollisionObjectFloatData_m_ccdSweptSphereRadius_get(void *c); //attribute: float btCollisionObjectFloatData->m_ccdSweptSphereRadius+void btCollisionObjectFloatData_m_checkCollideWith_set(void *c,int a); //attribute: int btCollisionObjectFloatData->m_checkCollideWith+int btCollisionObjectFloatData_m_checkCollideWith_get(void *c); //attribute: int btCollisionObjectFloatData->m_checkCollideWith+void btCollisionObjectFloatData_m_collisionFlags_set(void *c,int a); //attribute: int btCollisionObjectFloatData->m_collisionFlags+int btCollisionObjectFloatData_m_collisionFlags_get(void *c); //attribute: int btCollisionObjectFloatData->m_collisionFlags+// attribute not supported: //attribute: void * btCollisionObjectFloatData->m_collisionShape+void btCollisionObjectFloatData_m_companionId_set(void *c,int a); //attribute: int btCollisionObjectFloatData->m_companionId+int btCollisionObjectFloatData_m_companionId_get(void *c); //attribute: int btCollisionObjectFloatData->m_companionId+void btCollisionObjectFloatData_m_contactProcessingThreshold_set(void *c,float a); //attribute: float btCollisionObjectFloatData->m_contactProcessingThreshold+float btCollisionObjectFloatData_m_contactProcessingThreshold_get(void *c); //attribute: float btCollisionObjectFloatData->m_contactProcessingThreshold+void btCollisionObjectFloatData_m_deactivationTime_set(void *c,float a); //attribute: float btCollisionObjectFloatData->m_deactivationTime+float btCollisionObjectFloatData_m_deactivationTime_get(void *c); //attribute: float btCollisionObjectFloatData->m_deactivationTime+void btCollisionObjectFloatData_m_friction_set(void *c,float a); //attribute: float btCollisionObjectFloatData->m_friction+float btCollisionObjectFloatData_m_friction_get(void *c); //attribute: float btCollisionObjectFloatData->m_friction+void btCollisionObjectFloatData_m_hasAnisotropicFriction_set(void *c,int a); //attribute: int btCollisionObjectFloatData->m_hasAnisotropicFriction+int btCollisionObjectFloatData_m_hasAnisotropicFriction_get(void *c); //attribute: int btCollisionObjectFloatData->m_hasAnisotropicFriction+void btCollisionObjectFloatData_m_hitFraction_set(void *c,float a); //attribute: float btCollisionObjectFloatData->m_hitFraction+float btCollisionObjectFloatData_m_hitFraction_get(void *c); //attribute: float btCollisionObjectFloatData->m_hitFraction+void btCollisionObjectFloatData_m_internalType_set(void *c,int a); //attribute: int btCollisionObjectFloatData->m_internalType+int btCollisionObjectFloatData_m_internalType_get(void *c); //attribute: int btCollisionObjectFloatData->m_internalType+// attribute not supported: //attribute: ::btVector3FloatData btCollisionObjectFloatData->m_interpolationAngularVelocity+// attribute not supported: //attribute: ::btVector3FloatData btCollisionObjectFloatData->m_interpolationLinearVelocity+// attribute not supported: //attribute: ::btTransformFloatData btCollisionObjectFloatData->m_interpolationWorldTransform+void btCollisionObjectFloatData_m_islandTag1_set(void *c,int a); //attribute: int btCollisionObjectFloatData->m_islandTag1+int btCollisionObjectFloatData_m_islandTag1_get(void *c); //attribute: int btCollisionObjectFloatData->m_islandTag1+void btCollisionObjectFloatData_m_name_set(void *c,char * a); //attribute: char * btCollisionObjectFloatData->m_name+char * btCollisionObjectFloatData_m_name_get(void *c); //attribute: char * btCollisionObjectFloatData->m_name+void btCollisionObjectFloatData_m_restitution_set(void *c,float a); //attribute: float btCollisionObjectFloatData->m_restitution+float btCollisionObjectFloatData_m_restitution_get(void *c); //attribute: float btCollisionObjectFloatData->m_restitution+void btCollisionObjectFloatData_m_rootCollisionShape_set(void *c,void* a); //attribute: ::btCollisionShapeData * btCollisionObjectFloatData->m_rootCollisionShape+// attribute getter not supported: //attribute: ::btCollisionShapeData * btCollisionObjectFloatData->m_rootCollisionShape+// attribute not supported: //attribute: ::btTransformFloatData btCollisionObjectFloatData->m_worldTransform+void* btCollisionWorld_new(void* p0,void* p1,void* p2); //constructor: btCollisionWorld  ( ::btCollisionWorld::* )( ::btDispatcher *,::btBroadphaseInterface *,::btCollisionConfiguration * ) +void btCollisionWorld_free(void *c); void btCollisionWorld_setBroadphase(void *c,void* p0); //method: setBroadphase void ( ::btCollisionWorld::* )( ::btBroadphaseInterface * ) +void btCollisionWorld_serialize(void *c,void* p0); //method: serialize void ( ::btCollisionWorld::* )( ::btSerializer * ) +void* btCollisionWorld_getDispatcher(void *c); //method: getDispatcher ::btDispatcher * ( ::btCollisionWorld::* )(  ) +void* btCollisionWorld_getDispatcher0(void *c); //method: getDispatcher ::btDispatcher * ( ::btCollisionWorld::* )(  ) +void* btCollisionWorld_getDispatcher1(void *c); //method: getDispatcher ::btDispatcher const * ( ::btCollisionWorld::* )(  ) const+void* btCollisionWorld_getDispatchInfo(void *c); //method: getDispatchInfo ::btDispatcherInfo & ( ::btCollisionWorld::* )(  ) +void* btCollisionWorld_getDispatchInfo0(void *c); //method: getDispatchInfo ::btDispatcherInfo & ( ::btCollisionWorld::* )(  ) +void* btCollisionWorld_getDispatchInfo1(void *c); //method: getDispatchInfo ::btDispatcherInfo const & ( ::btCollisionWorld::* )(  ) const+void* btCollisionWorld_getDebugDrawer(void *c); //method: getDebugDrawer ::btIDebugDraw * ( ::btCollisionWorld::* )(  ) +void btCollisionWorld_performDiscreteCollisionDetection(void *c); //method: performDiscreteCollisionDetection void ( ::btCollisionWorld::* )(  ) +//not supported method: getCollisionObjectArray ::btCollisionObjectArray & ( ::btCollisionWorld::* )(  ) +//not supported method: getCollisionObjectArray ::btCollisionObjectArray & ( ::btCollisionWorld::* )(  ) +//not supported method: getCollisionObjectArray ::btCollisionObjectArray const & ( ::btCollisionWorld::* )(  ) const+void btCollisionWorld_debugDrawObject(void *c,float* p0,void* p1,float* p2); //method: debugDrawObject void ( ::btCollisionWorld::* )( ::btTransform const &,::btCollisionShape const *,::btVector3 const & ) +void btCollisionWorld_rayTest(void *c,float* p0,float* p1,void* p2); //method: rayTest void ( ::btCollisionWorld::* )( ::btVector3 const &,::btVector3 const &,::btCollisionWorld::RayResultCallback & ) const+void btCollisionWorld_addCollisionObject(void *c,void* p0,short int p1,short int p2); //method: addCollisionObject void ( ::btCollisionWorld::* )( ::btCollisionObject *,short int,short int ) +void btCollisionWorld_setForceUpdateAllAabbs(void *c,int p0); //method: setForceUpdateAllAabbs void ( ::btCollisionWorld::* )( bool ) +void btCollisionWorld_contactTest(void *c,void* p0,void* p1); //method: contactTest void ( ::btCollisionWorld::* )( ::btCollisionObject *,::btCollisionWorld::ContactResultCallback & ) +int btCollisionWorld_getForceUpdateAllAabbs(void *c); //method: getForceUpdateAllAabbs bool ( ::btCollisionWorld::* )(  ) const+void btCollisionWorld_updateAabbs(void *c); //method: updateAabbs void ( ::btCollisionWorld::* )(  ) +void btCollisionWorld_setDebugDrawer(void *c,void* p0); //method: setDebugDrawer void ( ::btCollisionWorld::* )( ::btIDebugDraw * ) +void btCollisionWorld_debugDrawWorld(void *c); //method: debugDrawWorld void ( ::btCollisionWorld::* )(  ) +void btCollisionWorld_convexSweepTest(void *c,void* p0,float* p1,float* p2,void* p3,float p4); //method: convexSweepTest void ( ::btCollisionWorld::* )( ::btConvexShape const *,::btTransform const &,::btTransform const &,::btCollisionWorld::ConvexResultCallback &,::btScalar ) const+int btCollisionWorld_getNumCollisionObjects(void *c); //method: getNumCollisionObjects int ( ::btCollisionWorld::* )(  ) const+void btCollisionWorld_contactPairTest(void *c,void* p0,void* p1,void* p2); //method: contactPairTest void ( ::btCollisionWorld::* )( ::btCollisionObject *,::btCollisionObject *,::btCollisionWorld::ContactResultCallback & ) +void* btCollisionWorld_getBroadphase(void *c); //method: getBroadphase ::btBroadphaseInterface const * ( ::btCollisionWorld::* )(  ) const+void* btCollisionWorld_getBroadphase0(void *c); //method: getBroadphase ::btBroadphaseInterface const * ( ::btCollisionWorld::* )(  ) const+void* btCollisionWorld_getBroadphase1(void *c); //method: getBroadphase ::btBroadphaseInterface * ( ::btCollisionWorld::* )(  ) +void btCollisionWorld_rayTestSingle(float* p0,float* p1,void* p2,void* p3,float* p4,void* p5); //method: rayTestSingle void (*)( ::btTransform const &,::btTransform const &,::btCollisionObject *,::btCollisionShape const *,::btTransform const &,::btCollisionWorld::RayResultCallback & )+void btCollisionWorld_objectQuerySingle(void* p0,float* p1,float* p2,void* p3,void* p4,float* p5,void* p6,float p7); //method: objectQuerySingle void (*)( ::btConvexShape const *,::btTransform const &,::btTransform const &,::btCollisionObject *,::btCollisionShape const *,::btTransform const &,::btCollisionWorld::ConvexResultCallback &,::btScalar )+void btCollisionWorld_updateSingleAabb(void *c,void* p0); //method: updateSingleAabb void ( ::btCollisionWorld::* )( ::btCollisionObject * ) +void* btCollisionWorld_getPairCache(void *c); //method: getPairCache ::btOverlappingPairCache * ( ::btCollisionWorld::* )(  ) +void btCollisionWorld_removeCollisionObject(void *c,void* p0); //method: removeCollisionObject void ( ::btCollisionWorld::* )( ::btCollisionObject * ) +//not supported constructor: btConvexConvexAlgorithm  ( ::btConvexConvexAlgorithm::* )( ::btPersistentManifold *,::btCollisionAlgorithmConstructionInfo const &,::btCollisionObject *,::btCollisionObject *,::btVoronoiSimplexSolver *,::btConvexPenetrationDepthSolver *,int,int ) +void btConvexConvexAlgorithm_free(void *c); //not supported method: getAllContactManifolds void ( ::btConvexConvexAlgorithm::* )( ::btManifoldArray & ) +float btConvexConvexAlgorithm_calculateTimeOfImpact(void *c,void* p0,void* p1,void* p2,void* p3); //method: calculateTimeOfImpact ::btScalar ( ::btConvexConvexAlgorithm::* )( ::btCollisionObject *,::btCollisionObject *,::btDispatcherInfo const &,::btManifoldResult * ) +void btConvexConvexAlgorithm_setLowLevelOfDetail(void *c,int p0); //method: setLowLevelOfDetail void ( ::btConvexConvexAlgorithm::* )( bool ) +void btConvexConvexAlgorithm_processCollision(void *c,void* p0,void* p1,void* p2,void* p3); //method: processCollision void ( ::btConvexConvexAlgorithm::* )( ::btCollisionObject *,::btCollisionObject *,::btDispatcherInfo const &,::btManifoldResult * ) +void* btConvexConvexAlgorithm_getManifold(void *c); //method: getManifold ::btPersistentManifold const * ( ::btConvexConvexAlgorithm::* )(  ) +void* btDefaultCollisionConfiguration_new(void* p0); //constructor: btDefaultCollisionConfiguration  ( ::btDefaultCollisionConfiguration::* )( ::btDefaultCollisionConstructionInfo const & ) +void btDefaultCollisionConfiguration_free(void *c); void* btDefaultCollisionConfiguration_getStackAllocator(void *c); //method: getStackAllocator ::btStackAlloc * ( ::btDefaultCollisionConfiguration::* )(  ) +//not supported method: getPersistentManifoldPool ::btPoolAllocator * ( ::btDefaultCollisionConfiguration::* )(  ) +void* btDefaultCollisionConfiguration_getSimplexSolver(void *c); //method: getSimplexSolver ::btVoronoiSimplexSolver * ( ::btDefaultCollisionConfiguration::* )(  ) +void btDefaultCollisionConfiguration_setConvexConvexMultipointIterations(void *c,int p0,int p1); //method: setConvexConvexMultipointIterations void ( ::btDefaultCollisionConfiguration::* )( int,int ) +//not supported method: getCollisionAlgorithmPool ::btPoolAllocator * ( ::btDefaultCollisionConfiguration::* )(  ) +void* btDefaultCollisionConfiguration_getCollisionAlgorithmCreateFunc(void *c,int p0,int p1); //method: getCollisionAlgorithmCreateFunc ::btCollisionAlgorithmCreateFunc * ( ::btDefaultCollisionConfiguration::* )( int,int ) +void* btDefaultCollisionConstructionInfo_new(); //constructor: btDefaultCollisionConstructionInfo  ( ::btDefaultCollisionConstructionInfo::* )(  ) +void btDefaultCollisionConstructionInfo_free(void *c); // attribute not supported: //attribute: ::btPoolAllocator * btDefaultCollisionConstructionInfo->m_collisionAlgorithmPool+void btDefaultCollisionConstructionInfo_m_customCollisionAlgorithmMaxElementSize_set(void *c,int a); //attribute: int btDefaultCollisionConstructionInfo->m_customCollisionAlgorithmMaxElementSize+int btDefaultCollisionConstructionInfo_m_customCollisionAlgorithmMaxElementSize_get(void *c); //attribute: int btDefaultCollisionConstructionInfo->m_customCollisionAlgorithmMaxElementSize+void btDefaultCollisionConstructionInfo_m_defaultMaxCollisionAlgorithmPoolSize_set(void *c,int a); //attribute: int btDefaultCollisionConstructionInfo->m_defaultMaxCollisionAlgorithmPoolSize+int btDefaultCollisionConstructionInfo_m_defaultMaxCollisionAlgorithmPoolSize_get(void *c); //attribute: int btDefaultCollisionConstructionInfo->m_defaultMaxCollisionAlgorithmPoolSize+void btDefaultCollisionConstructionInfo_m_defaultMaxPersistentManifoldPoolSize_set(void *c,int a); //attribute: int btDefaultCollisionConstructionInfo->m_defaultMaxPersistentManifoldPoolSize+int btDefaultCollisionConstructionInfo_m_defaultMaxPersistentManifoldPoolSize_get(void *c); //attribute: int btDefaultCollisionConstructionInfo->m_defaultMaxPersistentManifoldPoolSize+void btDefaultCollisionConstructionInfo_m_defaultStackAllocatorSize_set(void *c,int a); //attribute: int btDefaultCollisionConstructionInfo->m_defaultStackAllocatorSize+int btDefaultCollisionConstructionInfo_m_defaultStackAllocatorSize_get(void *c); //attribute: int btDefaultCollisionConstructionInfo->m_defaultStackAllocatorSize+// attribute not supported: //attribute: ::btPoolAllocator * btDefaultCollisionConstructionInfo->m_persistentManifoldPool+void btDefaultCollisionConstructionInfo_m_stackAlloc_set(void *c,void* a); //attribute: ::btStackAlloc * btDefaultCollisionConstructionInfo->m_stackAlloc+// attribute getter not supported: //attribute: ::btStackAlloc * btDefaultCollisionConstructionInfo->m_stackAlloc+void btDefaultCollisionConstructionInfo_m_useEpaPenetrationAlgorithm_set(void *c,int a); //attribute: int btDefaultCollisionConstructionInfo->m_useEpaPenetrationAlgorithm+int btDefaultCollisionConstructionInfo_m_useEpaPenetrationAlgorithm_get(void *c); //attribute: int btDefaultCollisionConstructionInfo->m_useEpaPenetrationAlgorithm+void* btManifoldResult_new0(); //constructor: btManifoldResult  ( ::btManifoldResult::* )(  ) +void* btManifoldResult_new1(void* p0,void* p1); //constructor: btManifoldResult  ( ::btManifoldResult::* )( ::btCollisionObject *,::btCollisionObject * ) +void btManifoldResult_free(void *c); void* btManifoldResult_getPersistentManifold(void *c); //method: getPersistentManifold ::btPersistentManifold const * ( ::btManifoldResult::* )(  ) const+void* btManifoldResult_getPersistentManifold0(void *c); //method: getPersistentManifold ::btPersistentManifold const * ( ::btManifoldResult::* )(  ) const+void* btManifoldResult_getPersistentManifold1(void *c); //method: getPersistentManifold ::btPersistentManifold * ( ::btManifoldResult::* )(  ) +void* btManifoldResult_getBody0Internal(void *c); //method: getBody0Internal ::btCollisionObject const * ( ::btManifoldResult::* )(  ) const+void btManifoldResult_addContactPoint(void *c,float* p0,float* p1,float p2); //method: addContactPoint void ( ::btManifoldResult::* )( ::btVector3 const &,::btVector3 const &,::btScalar ) +void* btManifoldResult_getBody1Internal(void *c); //method: getBody1Internal ::btCollisionObject const * ( ::btManifoldResult::* )(  ) const+void btManifoldResult_setShapeIdentifiersB(void *c,int p0,int p1); //method: setShapeIdentifiersB void ( ::btManifoldResult::* )( int,int ) +void btManifoldResult_setShapeIdentifiersA(void *c,int p0,int p1); //method: setShapeIdentifiersA void ( ::btManifoldResult::* )( int,int ) +void btManifoldResult_refreshContactPoints(void *c); //method: refreshContactPoints void ( ::btManifoldResult::* )(  ) +void btManifoldResult_setPersistentManifold(void *c,void* p0); //method: setPersistentManifold void ( ::btManifoldResult::* )( ::btPersistentManifold * ) +void* btSphereSphereCollisionAlgorithm_new0(void* p0,void* p1,void* p2,void* p3); //constructor: btSphereSphereCollisionAlgorithm  ( ::btSphereSphereCollisionAlgorithm::* )( ::btPersistentManifold *,::btCollisionAlgorithmConstructionInfo const &,::btCollisionObject *,::btCollisionObject * ) +void* btSphereSphereCollisionAlgorithm_new1(void* p0); //constructor: btSphereSphereCollisionAlgorithm  ( ::btSphereSphereCollisionAlgorithm::* )( ::btCollisionAlgorithmConstructionInfo const & ) +void btSphereSphereCollisionAlgorithm_free(void *c); //not supported method: getAllContactManifolds void ( ::btSphereSphereCollisionAlgorithm::* )( ::btManifoldArray & ) +float btSphereSphereCollisionAlgorithm_calculateTimeOfImpact(void *c,void* p0,void* p1,void* p2,void* p3); //method: calculateTimeOfImpact ::btScalar ( ::btSphereSphereCollisionAlgorithm::* )( ::btCollisionObject *,::btCollisionObject *,::btDispatcherInfo const &,::btManifoldResult * ) +void btSphereSphereCollisionAlgorithm_processCollision(void *c,void* p0,void* p1,void* p2,void* p3); //method: processCollision void ( ::btSphereSphereCollisionAlgorithm::* )( ::btCollisionObject *,::btCollisionObject *,::btDispatcherInfo const &,::btManifoldResult * ) +#ifdef __cplusplus+} +#endif
+ cbits/GLDebugDrawer.cpp view
@@ -0,0 +1,156 @@+//think different+#if defined(__APPLE__) && !defined (VMDMESA)+#include <OpenGL/gl.h>+#include <OpenGL/glu.h>+#else+#ifdef _WINDOWS+#include <windows.h>+#include <GL/gl.h>+#include <GL/glu.h>+#else+#include <GL/gl.h>+#include <GL/glu.h>+#endif //_WINDOWS+#endif //APPLE++#include "GLDebugDrawer.h"++#include <stdio.h> //printf debugging++btGLDebugDrawer::btGLDebugDrawer()+:m_debugMode(0)+{++}++void	btGLDebugDrawer::drawLine(const btVector3& from,const btVector3& to,const btVector3& fromColor, const btVector3& toColor)+{+    //printf("btGLDebugDrawer::drawLine\n");+	glBegin(GL_LINES);+		glColor3f(fromColor.getX(), fromColor.getY(), fromColor.getZ());+		glVertex3d(from.getX(), from.getY(), from.getZ());+		glColor3f(toColor.getX(), toColor.getY(), toColor.getZ());+		glVertex3d(to.getX(), to.getY(), to.getZ());+	glEnd();+}++void	btGLDebugDrawer::drawLine(const btVector3& from,const btVector3& to,const btVector3& color)+{+	drawLine(from,to,color,color);+}++void btGLDebugDrawer::drawSphere (const btVector3& p, btScalar radius, const btVector3& color)+{+    //printf("btGLDebugDrawer::drawSphere\n");+	glColor4f (color.getX(), color.getY(), color.getZ(), btScalar(1.0f));+	glPushMatrix ();+	glTranslatef (p.getX(), p.getY(), p.getZ());++	int lats = 5;+	int longs = 5;++	int i, j;+	for(i = 0; i <= lats; i++) {+		btScalar lat0 = SIMD_PI * (-btScalar(0.5) + (btScalar) (i - 1) / lats);+		btScalar z0  = radius*sin(lat0);+		btScalar zr0 =  radius*cos(lat0);++		btScalar lat1 = SIMD_PI * (-btScalar(0.5) + (btScalar) i / lats);+		btScalar z1 = radius*sin(lat1);+		btScalar zr1 = radius*cos(lat1);++		glBegin(GL_QUAD_STRIP);+		for(j = 0; j <= longs; j++) {+			btScalar lng = 2 * SIMD_PI * (btScalar) (j - 1) / longs;+			btScalar x = cos(lng);+			btScalar y = sin(lng);++			glNormal3f(x * zr0, y * zr0, z0);+			glVertex3f(x * zr0, y * zr0, z0);+			glNormal3f(x * zr1, y * zr1, z1);+			glVertex3f(x * zr1, y * zr1, z1);+		}+		glEnd();+	}++	glPopMatrix();+}++void btGLDebugDrawer::drawBox (const btVector3& boxMin, const btVector3& boxMax, const btVector3& color, btScalar alpha)+{+    //printf("btGLDebugDrawer::drawBox\n");+	btVector3 halfExtent = (boxMax - boxMin) * btScalar(0.5f);+	btVector3 center = (boxMax + boxMin) * btScalar(0.5f);+	//glEnable(GL_BLEND);     // Turn blending On+	//glBlendFunc(GL_SRC_ALPHA, GL_ONE);+	glColor4f (color.getX(), color.getY(), color.getZ(), alpha);+	glPushMatrix ();+	glTranslatef (center.getX(), center.getY(), center.getZ());+	glScaled(2*halfExtent[0], 2*halfExtent[1], 2*halfExtent[2]);+//	glutSolidCube(1.0);+	glPopMatrix ();+	//glDisable(GL_BLEND);+}++void	btGLDebugDrawer::drawTriangle(const btVector3& a,const btVector3& b,const btVector3& c,const btVector3& color,btScalar alpha)+{+    //printf("btGLDebugDrawer::drawTriangle\n");+//	if (m_debugMode > 0)+	{+		const btVector3	n=btCross(b-a,c-a).normalized();+		glBegin(GL_TRIANGLES);		+		glColor4f(color.getX(), color.getY(), color.getZ(),alpha);+		glNormal3d(n.getX(),n.getY(),n.getZ());+		glVertex3d(a.getX(),a.getY(),a.getZ());+		glVertex3d(b.getX(),b.getY(),b.getZ());+		glVertex3d(c.getX(),c.getY(),c.getZ());+		glEnd();+	}+}++void	btGLDebugDrawer::setDebugMode(int debugMode)+{+	m_debugMode = debugMode;++}++void	btGLDebugDrawer::draw3dText(const btVector3& location,const char* textString)+{+    //printf("btGLDebugDrawer::draw3dText\n");+	glRasterPos3f(location.x(),  location.y(),  location.z());+	//BMF_DrawString(BMF_GetFont(BMF_kHelvetica10),textString);+}++void	btGLDebugDrawer::reportErrorWarning(const char* warningString)+{+	printf("%s\n",warningString);+}++void	btGLDebugDrawer::drawContactPoint(const btVector3& pointOnB,const btVector3& normalOnB,btScalar distance,int lifeTime,const btVector3& color)+{+    //printf("btGLDebugDrawer::drawContactPoint\n");+	{+		btVector3 to=pointOnB+normalOnB*distance;+		const btVector3&from = pointOnB;+		glColor4f(color.getX(), color.getY(), color.getZ(),1.f);+		//glColor4f(0,0,0,1.f);++		glBegin(GL_LINES);+		glVertex3d(from.getX(), from.getY(), from.getZ());+		glVertex3d(to.getX(), to.getY(), to.getZ());+		glEnd();++		+		glRasterPos3f(from.x(),  from.y(),  from.z());+		char buf[12];+		sprintf(buf," %d",lifeTime);+		//BMF_DrawString(BMF_GetFont(BMF_kHelvetica10),buf);+++	}+}+++++
+ cbits/HaskellBulletAPI.h view
@@ -0,0 +1,50 @@+#define USE_PTHREADS 1++// Collision+// Dynamics+#include "btBulletDynamicsCommon.h"++// Gimpact+#include "BulletCollision/Gimpact/btGImpactShape.h"+#include "BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h"++// MultiThreaded+/*+#include "BulletMultiThreaded/SpuGatheringCollisionDispatcher.h"+#include "BulletMultiThreaded/PlatformDefinitions.h"++//#ifdef USE_LIBSPE2+//#include "BulletMultiThreaded/SpuLibspe2Support.h"+//#elif defined (_WIN32)+//#include "BulletMultiThreaded/Win32ThreadSupport.h"+//#include "BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.h"++//#elif defined (USE_PTHREADS)++#include "BulletMultiThreaded/PosixThreadSupport.h"+#include "BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.h"++//#else+//other platforms run the parallel code sequentially (until pthread support or other parallel implementation is added)++//#include "BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.h"+//#endif //USE_LIBSPE2++#include "BulletMultiThreaded/btParallelConstraintSolver.h"+#include "BulletMultiThreaded/SequentialThreadSupport.h"+*/++// SoftBody+#include "BulletSoftBody/btSoftBody.h"+#include "BulletSoftBody/btSoftRigidDynamicsWorld.h"+#include "BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h"+#include "BulletSoftBody/btSoftBodyHelpers.h"++#include "GLDebugDrawer.h"++//ConvexDecomposition+//#include "ConvexBuilder.h"++//GimpactUtils+//BulletFileLoader+//BulletWorldImporter
− cbits/bullet.cpp
@@ -1,436 +0,0 @@-/*-Bullet Continuous Collision Detection and Physics Library C API modifications-Copyright (c) 2009 Csaba Hruska--Bullet Continuous Collision Detection and Physics Library-Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/--This software is provided 'as-is', without any express or implied warranty.-In no event will the authors be held liable for any damages arising from the use of this software.-Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions:--1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.-2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.-3. This notice may not be removed or altered from any source distribution.-*/--#include "bullet.h"-#include "btBulletDynamicsCommon.h"-#include "LinearMath/btAlignedAllocator.h"----#include "LinearMath/btVector3.h"-#include "LinearMath/btScalar.h"	-#include "LinearMath/btMatrix3x3.h"-#include "LinearMath/btTransform.h"-#include "BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h"-#include "BulletCollision/CollisionShapes/btTriangleShape.h"--#include "BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h"-#include "BulletCollision/NarrowPhaseCollision/btPointCollector.h"-#include "BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h"-#include "BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h"-#include "BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h"-#include "BulletCollision/NarrowPhaseCollision/btGjkEpa2.h"-#include "BulletCollision/CollisionShapes/btMinkowskiSumShape.h"-#include "BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h"-#include "BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h"-#include "BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h"-#include "LinearMath/btStackAlloc.h"--#include "BulletCollision/Gimpact/btGImpactShape.h"-#include "BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h"--/*-	Create and Delete a Physics SDK	-*/--struct	btPhysicsSdk-{--//	btDispatcher*				m_dispatcher;-//	btOverlappingPairCache*		m_pairCache;-//	btConstraintSolver*			m_constraintSolver--	btVector3	m_worldAabbMin;-	btVector3	m_worldAabbMax;---	//todo: version, hardware/optimization settings etc?-	btPhysicsSdk()-		:m_worldAabbMin(-1000,-1000,-1000),-		m_worldAabbMax(1000,1000,1000)-	{--	}--	-};--plPhysicsSdkHandle	plNewBulletSdk()-{-	void* mem = btAlignedAlloc(sizeof(btPhysicsSdk),16);-	return (plPhysicsSdkHandle)new (mem)btPhysicsSdk;-}--void		plDeletePhysicsSdk(plPhysicsSdkHandle	physicsSdk)-{-	btPhysicsSdk* phys = reinterpret_cast<btPhysicsSdk*>(physicsSdk);-	btAlignedFree(phys);	-}---/* Dynamics World */-plDynamicsWorldHandle plCreateDynamicsWorld(plPhysicsSdkHandle physicsSdkHandle)-{-	btPhysicsSdk* physicsSdk = reinterpret_cast<btPhysicsSdk*>(physicsSdkHandle);-	void* mem = btAlignedAlloc(sizeof(btDefaultCollisionConfiguration),16);-	btDefaultCollisionConfiguration* collisionConfiguration = new (mem)btDefaultCollisionConfiguration();-	mem = btAlignedAlloc(sizeof(btCollisionDispatcher),16);-	btCollisionDispatcher*      dispatcher = new (mem)btCollisionDispatcher(collisionConfiguration);-	mem = btAlignedAlloc(sizeof(btAxisSweep3),16);-	btBroadphaseInterface*		pairCache = new (mem)btAxisSweep3(physicsSdk->m_worldAabbMin,physicsSdk->m_worldAabbMax);-	mem = btAlignedAlloc(sizeof(btSequentialImpulseConstraintSolver),16);-	btConstraintSolver*			constraintSolver = new(mem) btSequentialImpulseConstraintSolver();--    //register algorithm-	btGImpactCollisionAlgorithm::registerAlgorithm(dispatcher);--	mem = btAlignedAlloc(sizeof(btDiscreteDynamicsWorld),16);-	return (plDynamicsWorldHandle) new (mem)btDiscreteDynamicsWorld(dispatcher,pairCache,constraintSolver,collisionConfiguration);-}-void           plDeleteDynamicsWorld(plDynamicsWorldHandle world)-{-	//todo: also clean up the other allocations, axisSweep, pairCache,dispatcher,constraintSolver,collisionConfiguration-	btDynamicsWorld* dynamicsWorld = reinterpret_cast< btDynamicsWorld* >(world);-	btAlignedFree(dynamicsWorld);-}--void	plStepSimulation(plDynamicsWorldHandle world,	plReal	timeStep)-{-	btDynamicsWorld* dynamicsWorld = reinterpret_cast< btDynamicsWorld* >(world);-	btAssert(dynamicsWorld);-	dynamicsWorld->stepSimulation(timeStep);-}--void plAddRigidBody(plDynamicsWorldHandle world, plRigidBodyHandle object)-{-	btDynamicsWorld* dynamicsWorld = reinterpret_cast< btDynamicsWorld* >(world);-	btAssert(dynamicsWorld);-	btRigidBody* body = reinterpret_cast< btRigidBody* >(object);-	btAssert(body);--	dynamicsWorld->addRigidBody(body);-}--void plRemoveRigidBody(plDynamicsWorldHandle world, plRigidBodyHandle object)-{-	btDynamicsWorld* dynamicsWorld = reinterpret_cast< btDynamicsWorld* >(world);-	btAssert(dynamicsWorld);-	btRigidBody* body = reinterpret_cast< btRigidBody* >(object);-	btAssert(body);--	dynamicsWorld->removeRigidBody(body);-}--/* Rigid Body  */--plRigidBodyHandle plCreateRigidBody(	void* user_data,  float mass, plCollisionShapeHandle cshape )-{-	btTransform trans;-	trans.setIdentity();-	btVector3 localInertia(0,0,0);-	btCollisionShape* shape = reinterpret_cast<btCollisionShape*>( cshape);-	btAssert(shape);-	if (mass)-	{-		shape->calculateLocalInertia(mass,localInertia);-	}-	void* mem = btAlignedAlloc(sizeof(btRigidBody),16);-	btRigidBody::btRigidBodyConstructionInfo rbci(mass, 0,shape,localInertia);-	btRigidBody* body = new (mem)btRigidBody(rbci);-	body->setWorldTransform(trans);-	body->setUserPointer(user_data);-	return (plRigidBodyHandle) body;-}--void plDeleteRigidBody(plRigidBodyHandle cbody)-{-	btRigidBody* body = reinterpret_cast< btRigidBody* >(cbody);-	btAssert(body);-	btAlignedFree( body);-}---/* Collision Shape definition */--plCollisionShapeHandle plNewSphereShape(plReal radius)-{-	void* mem = btAlignedAlloc(sizeof(btSphereShape),16);-	return (plCollisionShapeHandle) new (mem)btSphereShape(radius);-	-}-	-plCollisionShapeHandle plNewBoxShape(plReal x, plReal y, plReal z)-{-	void* mem = btAlignedAlloc(sizeof(btBoxShape),16);-	return (plCollisionShapeHandle) new (mem)btBoxShape(btVector3(x,y,z));-}--plCollisionShapeHandle plNewCapsuleShape(plReal radius, plReal height)-{-	//capsule is convex hull of 2 spheres, so use btMultiSphereShape-	-	const int numSpheres = 2;-	btVector3 positions[numSpheres] = {btVector3(0,height,0),btVector3(0,-height,0)};-	btScalar radi[numSpheres] = {radius,radius};-	void* mem = btAlignedAlloc(sizeof(btMultiSphereShape),16);-	return (plCollisionShapeHandle) new (mem)btMultiSphereShape(positions,radi,numSpheres);-}-plCollisionShapeHandle plNewConeShape(plReal radius, plReal height)-{-	void* mem = btAlignedAlloc(sizeof(btConeShape),16);-	return (plCollisionShapeHandle) new (mem)btConeShape(radius,height);-}--plCollisionShapeHandle plNewCylinderShape(plReal radius, plReal height)-{-	void* mem = btAlignedAlloc(sizeof(btCylinderShape),16);-	return (plCollisionShapeHandle) new (mem)btCylinderShape(btVector3(radius,height,radius));-}--/* Convex Meshes */-plCollisionShapeHandle plNewConvexHullShape()-{-	void* mem = btAlignedAlloc(sizeof(btConvexHullShape),16);-	return (plCollisionShapeHandle) new (mem)btConvexHullShape();-}---/* Concave static triangle meshes */-plMeshInterfaceHandle plNewMeshInterface()-{-	void* mem = btAlignedAlloc(sizeof(btTriangleMesh),16);-	return (plMeshInterfaceHandle) new (mem)btTriangleMesh();-}--void plAddTriangle(plMeshInterfaceHandle meshHandle, plVector3 v0,plVector3 v1,plVector3 v2, int rmDup)-{-	btTriangleMesh* triangleMesh = reinterpret_cast<btTriangleMesh*>(meshHandle);-    triangleMesh->addTriangle(btVector3(v0[0],v0[1],v0[2]),btVector3(v1[0],v1[1],v1[2]),btVector3(v2[0],v2[1],v2[2]),rmDup != 0);-}--plCollisionShapeHandle plNewStaticTriangleMeshShape(plMeshInterfaceHandle meshHandle)-{-	btTriangleMesh* triangleMesh = reinterpret_cast<btTriangleMesh*>(meshHandle);-	void* mem = btAlignedAlloc(sizeof(btBvhTriangleMeshShape),16);-	return (plCollisionShapeHandle) new (mem)btBvhTriangleMeshShape(triangleMesh,true);-}--plCollisionShapeHandle plNewGimpactTriangleMeshShape(plMeshInterfaceHandle meshHandle)-{-	btTriangleMesh* triangleMesh = reinterpret_cast<btTriangleMesh*>(meshHandle);-	void* mem = btAlignedAlloc(sizeof(btGImpactMeshShape),16);-    btGImpactMeshShape* trimesh = new (mem)btGImpactMeshShape(triangleMesh);-	trimesh->updateBound();-	return (plCollisionShapeHandle) mem;-}--plCollisionShapeHandle plNewConvexTriangleMeshShape(plMeshInterfaceHandle meshHandle)-{-	btTriangleMesh* triangleMesh = reinterpret_cast<btTriangleMesh*>(meshHandle);-	void* mem = btAlignedAlloc(sizeof(btConvexTriangleMeshShape),16);-	return (plCollisionShapeHandle) new (mem)btConvexTriangleMeshShape(triangleMesh);-}--plCollisionShapeHandle plNewCompoundShape()-{-	void* mem = btAlignedAlloc(sizeof(btCompoundShape),16);-	return (plCollisionShapeHandle) new (mem)btCompoundShape();-}--void	plAddChildShape(plCollisionShapeHandle compoundShapeHandle,plCollisionShapeHandle childShapeHandle, plVector3 childPos,plQuaternion childOrn)-{-	btCollisionShape* colShape = reinterpret_cast<btCollisionShape*>(compoundShapeHandle);-	btAssert(colShape->getShapeType() == COMPOUND_SHAPE_PROXYTYPE);-	btCompoundShape* compoundShape = reinterpret_cast<btCompoundShape*>(colShape);-	btCollisionShape* childShape = reinterpret_cast<btCollisionShape*>(childShapeHandle);-	btTransform	localTrans;-	localTrans.setIdentity();-	localTrans.setOrigin(btVector3(childPos[0],childPos[1],childPos[2]));-	localTrans.setRotation(btQuaternion(childOrn[0],childOrn[1],childOrn[2],childOrn[3]));-	compoundShape->addChildShape(localTrans,childShape);-}--void plSetEuler(plReal yaw,plReal pitch,plReal roll, plQuaternion orient)-{-	btQuaternion orn;-	orn.setEuler(yaw,pitch,roll);-	orient[0] = orn.getX();-	orient[1] = orn.getY();-	orient[2] = orn.getZ();-	orient[3] = orn.getW();--}-----void		plAddVertex(plCollisionShapeHandle cshape, plReal x,plReal y,plReal z)-{-	btCollisionShape* colShape = reinterpret_cast<btCollisionShape*>( cshape);-	(void)colShape;-	btAssert(colShape->getShapeType()==CONVEX_HULL_SHAPE_PROXYTYPE);-	btConvexHullShape* convexHullShape = reinterpret_cast<btConvexHullShape*>( cshape);-	convexHullShape->addPoint(btVector3(x,y,z));--}--void plDeleteShape(plCollisionShapeHandle cshape)-{-	btCollisionShape* shape = reinterpret_cast<btCollisionShape*>( cshape);-	btAssert(shape);-	btAlignedFree(shape);-}-void plSetScaling(plCollisionShapeHandle cshape, plVector3 cscaling)-{-	btCollisionShape* shape = reinterpret_cast<btCollisionShape*>( cshape);-	btAssert(shape);-	btVector3 scaling(cscaling[0],cscaling[1],cscaling[2]);-	shape->setLocalScaling(scaling);	-}--void plSetPosition(plRigidBodyHandle object, const plVector3 position)-{-	btRigidBody* body = reinterpret_cast< btRigidBody* >(object);-	btAssert(body);-	btVector3 pos(position[0],position[1],position[2]);-	btTransform worldTrans = body->getWorldTransform();-	worldTrans.setOrigin(pos);-	body->setWorldTransform(worldTrans);-}--void plSetOrientation(plRigidBodyHandle object, const plQuaternion orientation)-{-	btRigidBody* body = reinterpret_cast< btRigidBody* >(object);-	btAssert(body);-	btQuaternion orn(orientation[0],orientation[1],orientation[2],orientation[3]);-	btTransform worldTrans = body->getWorldTransform();-	worldTrans.setRotation(orn);-	body->setWorldTransform(worldTrans);-}--void	plSetOpenGLMatrix(plRigidBodyHandle object, plReal* matrix)-{-	btRigidBody* body = reinterpret_cast< btRigidBody* >(object);-	btAssert(body);-	btTransform& worldTrans = body->getWorldTransform();-	worldTrans.setFromOpenGLMatrix(matrix);-}--void	plGetOpenGLMatrix(plRigidBodyHandle object, plReal* matrix)-{-	btRigidBody* body = reinterpret_cast< btRigidBody* >(object);-	btAssert(body);-	body->getWorldTransform().getOpenGLMatrix(matrix);--}--void	plGetPosition(plRigidBodyHandle object,plVector3 position)-{-	btRigidBody* body = reinterpret_cast< btRigidBody* >(object);-	btAssert(body);-	const btVector3& pos = body->getWorldTransform().getOrigin();-	position[0] = pos.getX();-	position[1] = pos.getY();-	position[2] = pos.getZ();-}--void plGetOrientation(plRigidBodyHandle object,plQuaternion orientation)-{-	btRigidBody* body = reinterpret_cast< btRigidBody* >(object);-	btAssert(body);-	const btQuaternion& orn = body->getWorldTransform().getRotation();-	orientation[0] = orn.getX();-	orientation[1] = orn.getY();-	orientation[2] = orn.getZ();-	orientation[3] = orn.getW();-}----//plRigidBodyHandle plRayCast(plDynamicsWorldHandle world, const plVector3 rayStart, const plVector3 rayEnd, plVector3 hitpoint, plVector3 normal);--//	extern  plRigidBodyHandle plObjectCast(plDynamicsWorldHandle world, const plVector3 rayStart, const plVector3 rayEnd, plVector3 hitpoint, plVector3 normal);--double plNearestPoints(float p1[3], float p2[3], float p3[3], float q1[3], float q2[3], float q3[3], float *pa, float *pb, float normal[3])-{-	btVector3 vp(p1[0], p1[1], p1[2]);-	btTriangleShape trishapeA(vp, -				  btVector3(p2[0], p2[1], p2[2]), -				  btVector3(p3[0], p3[1], p3[2]));-	trishapeA.setMargin(0.000001f);-	btVector3 vq(q1[0], q1[1], q1[2]);-	btTriangleShape trishapeB(vq, -				  btVector3(q2[0], q2[1], q2[2]), -				  btVector3(q3[0], q3[1], q3[2]));-	trishapeB.setMargin(0.000001f);-	-	// btVoronoiSimplexSolver sGjkSimplexSolver;-	// btGjkEpaPenetrationDepthSolver penSolverPtr;	-	-	static btSimplexSolverInterface sGjkSimplexSolver;-	sGjkSimplexSolver.reset();-	-	static btGjkEpaPenetrationDepthSolver Solver0;-	static btMinkowskiPenetrationDepthSolver Solver1;-		-	btConvexPenetrationDepthSolver* Solver = NULL;-	-	Solver = &Solver1;	-		-	btGjkPairDetector convexConvex(&trishapeA ,&trishapeB,&sGjkSimplexSolver,Solver);-	-	convexConvex.m_catchDegeneracies = 1;-	-	// btGjkPairDetector convexConvex(&trishapeA ,&trishapeB,&sGjkSimplexSolver,0);-	-	btPointCollector gjkOutput;-	btGjkPairDetector::ClosestPointInput input;-	-	btStackAlloc gStackAlloc(1024*1024*2);- -	input.m_stackAlloc = &gStackAlloc;-	-	btTransform tr;-	tr.setIdentity();-	-	input.m_transformA = tr;-	input.m_transformB = tr;-	-	convexConvex.getClosestPoints(input, gjkOutput, 0);-	-	-	if (gjkOutput.m_hasResult)-	{-		-		pb[0] = pa[0] = gjkOutput.m_pointInWorld[0];-		pb[1] = pa[1] = gjkOutput.m_pointInWorld[1];-		pb[2] = pa[2] = gjkOutput.m_pointInWorld[2];--		pb[0]+= gjkOutput.m_normalOnBInWorld[0] * gjkOutput.m_distance;-		pb[1]+= gjkOutput.m_normalOnBInWorld[1] * gjkOutput.m_distance;-		pb[2]+= gjkOutput.m_normalOnBInWorld[2] * gjkOutput.m_distance;-		-		normal[0] = gjkOutput.m_normalOnBInWorld[0];-		normal[1] = gjkOutput.m_normalOnBInWorld[1];-		normal[2] = gjkOutput.m_normalOnBInWorld[2];--		return gjkOutput.m_distance;-	}-	return -1.0f;	-}-
− cbits/bullet.h
@@ -1,174 +0,0 @@-/*-Bullet Continuous Collision Detection and Physics Library C API modifications-Copyright (c) 2009 Csaba Hruska--Bullet Continuous Collision Detection and Physics Library-Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/--This software is provided 'as-is', without any express or implied warranty.-In no event will the authors be held liable for any damages arising from the use of this software.-Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions:--1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.-2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.-3. This notice may not be removed or altered from any source distribution.-*/--#ifndef BULLET_C_API_H-#define BULLET_C_API_H--#define PL_DECLARE_HANDLE(name) typedef struct name##__ { int unused; } *name--#ifdef BT_USE_DOUBLE_PRECISION-typedef double	plReal;-#else-typedef float	plReal;-#endif--typedef plReal	plVector3[3];-typedef plReal	plQuaternion[4];--#ifdef __cplusplus-extern "C" { -#endif--/**	Particular physics SDK (C-API) */-	PL_DECLARE_HANDLE(plPhysicsSdkHandle);--/** 	Dynamics world, belonging to some physics SDK (C-API)*/-	PL_DECLARE_HANDLE(plDynamicsWorldHandle);--/** Rigid Body that can be part of a Dynamics World (C-API)*/	-	PL_DECLARE_HANDLE(plRigidBodyHandle);--/** 	Collision Shape/Geometry, property of a Rigid Body (C-API)*/-	PL_DECLARE_HANDLE(plCollisionShapeHandle);--/** Constraint for Rigid Bodies (C-API)*/-	PL_DECLARE_HANDLE(plConstraintHandle);--/** Triangle Mesh interface (C-API)*/-	PL_DECLARE_HANDLE(plMeshInterfaceHandle);--/** Broadphase Scene/Proxy Handles (C-API)*/-	PL_DECLARE_HANDLE(plCollisionBroadphaseHandle);-	PL_DECLARE_HANDLE(plBroadphaseProxyHandle);-	PL_DECLARE_HANDLE(plCollisionWorldHandle);--/**-	Create and Delete a Physics SDK	-*/--	extern	plPhysicsSdkHandle	plNewBulletSdk(); //this could be also another sdk, like ODE, PhysX etc.-	extern	void		plDeletePhysicsSdk(plPhysicsSdkHandle	physicsSdk);--/** Collision World, not strictly necessary, you can also just create a Dynamics World with Rigid Bodies which internally manages the Collision World with Collision Objects */--	typedef void(*btBroadphaseCallback)(void* clientData, void* object1,void* object2);--	extern plCollisionBroadphaseHandle	plCreateSapBroadphase(btBroadphaseCallback beginCallback,btBroadphaseCallback endCallback);--	extern void	plDestroyBroadphase(plCollisionBroadphaseHandle bp);--	extern 	plBroadphaseProxyHandle plCreateProxy(plCollisionBroadphaseHandle bp, void* clientData, plReal minX,plReal minY,plReal minZ, plReal maxX,plReal maxY, plReal maxZ);--	extern void plDestroyProxy(plCollisionBroadphaseHandle bp, plBroadphaseProxyHandle proxyHandle);--	extern void plSetBoundingBox(plBroadphaseProxyHandle proxyHandle, plReal minX,plReal minY,plReal minZ, plReal maxX,plReal maxY, plReal maxZ);--/* todo: add pair cache support with queries like add/remove/find pair */-	-	extern plCollisionWorldHandle plCreateCollisionWorld(plPhysicsSdkHandle physicsSdk);--/* todo: add/remove objects */-	--/* Dynamics World */--	extern  plDynamicsWorldHandle plCreateDynamicsWorld(plPhysicsSdkHandle physicsSdk);--	extern  void           plDeleteDynamicsWorld(plDynamicsWorldHandle world);--	extern	void	plStepSimulation(plDynamicsWorldHandle,	plReal	timeStep);--	extern  void plAddRigidBody(plDynamicsWorldHandle world, plRigidBodyHandle object);--	extern  void plRemoveRigidBody(plDynamicsWorldHandle world, plRigidBodyHandle object);---/* Rigid Body  */--	extern  plRigidBodyHandle plCreateRigidBody(	void* user_data,  float mass, plCollisionShapeHandle cshape );--	extern  void plDeleteRigidBody(plRigidBodyHandle body);---/* Collision Shape definition */--	extern  plCollisionShapeHandle plNewSphereShape(plReal radius);-	extern  plCollisionShapeHandle plNewBoxShape(plReal x, plReal y, plReal z);-	extern  plCollisionShapeHandle plNewCapsuleShape(plReal radius, plReal height);	-	extern  plCollisionShapeHandle plNewConeShape(plReal radius, plReal height);-	extern  plCollisionShapeHandle plNewCylinderShape(plReal radius, plReal height);-	extern	plCollisionShapeHandle plNewCompoundShape();-	extern	void	plAddChildShape(plCollisionShapeHandle compoundShape,plCollisionShapeHandle childShape, plVector3 childPos,plQuaternion childOrn);--	extern  void plDeleteShape(plCollisionShapeHandle shape);--	/* Convex Meshes */-    extern  plCollisionShapeHandle          plNewConvexHullShape();-    extern  void                            plAddVertex(plCollisionShapeHandle convexHull, plReal x,plReal y,plReal z);-    /* Concave static triangle meshes */-    extern  plMeshInterfaceHandle           plNewMeshInterface();-    extern  void                            plAddTriangle(plMeshInterfaceHandle meshHandle, plVector3 v0,plVector3 v1,plVector3 v2, int rmDup);-    extern  plCollisionShapeHandle          plNewStaticTriangleMeshShape(plMeshInterfaceHandle);-    extern  plCollisionShapeHandle          plNewGimpactTriangleMeshShape(plMeshInterfaceHandle);-    extern  plCollisionShapeHandle          plNewConvexTriangleMeshShape(plMeshInterfaceHandle);--	extern  void plSetScaling(plCollisionShapeHandle shape, plVector3 scaling);--/* SOLID has Response Callback/Table/Management */-/* PhysX has Triggers, User Callbacks and filtering */-/* ODE has the typedef void dNearCallback (void *data, dGeomID o1, dGeomID o2); */--/*	typedef void plUpdatedPositionCallback(void* userData, plRigidBodyHandle	rbHandle, plVector3 pos); */-/*	typedef void plUpdatedOrientationCallback(void* userData, plRigidBodyHandle	rbHandle, plQuaternion orientation); */--	/* get world transform */-	extern void	plGetOpenGLMatrix(plRigidBodyHandle object, plReal* matrix);-	extern void	plGetPosition(plRigidBodyHandle object,plVector3 position);-	extern void plGetOrientation(plRigidBodyHandle object,plQuaternion orientation);--	/* set world transform (position/orientation) */-	extern  void plSetPosition(plRigidBodyHandle object, const plVector3 position);-	extern  void plSetOrientation(plRigidBodyHandle object, const plQuaternion orientation);-	extern	void plSetEuler(plReal yaw,plReal pitch,plReal roll, plQuaternion orient);-	extern	void plSetOpenGLMatrix(plRigidBodyHandle object, plReal* matrix);--	typedef struct plRayCastResult {-		plRigidBodyHandle		m_body;  -		plCollisionShapeHandle	m_shape; 		-		plVector3				m_positionWorld; 		-		plVector3				m_normalWorld;-	} plRayCastResult;--	extern  int plRayCast(plDynamicsWorldHandle world, const plVector3 rayStart, const plVector3 rayEnd, plRayCastResult res);--	/* Sweep API */--	/* extern  plRigidBodyHandle plObjectCast(plDynamicsWorldHandle world, const plVector3 rayStart, const plVector3 rayEnd, plVector3 hitpoint, plVector3 normal); */--	/* Continuous Collision Detection API */-	-	// needed for source/blender/blenkernel/intern/collision.c-	double plNearestPoints(float p1[3], float p2[3], float p3[3], float q1[3], float q2[3], float q3[3], float *pa, float *pb, float normal[3]);--#ifdef __cplusplus-}-#endif---#endif //BULLET_C_API_H-