bueno, hasta el día de hoy ya tenemos todas estas funciones en bennu
//Inicialización
{"CPINITCHIPMUNK" , "", TYPE_INT, modcpInitChipmunk},
//Funciones matemáticas
{"CPFLERP" , "FFF", TYPE_FLOAT, modcpflerp},
{"CPFCLAMP" , "FFF", TYPE_FLOAT, modcpfclamp},
{"CPFLERPCONST" , "FFF", TYPE_FLOAT, modcpflerpconst},
//{"CPV" , "FF",TYPE_, modcpv},
//OPERACIONES CON VECTORES
{"CPVEQL" , "PP", TYPE_INT, modcpveql},
{"CPVADD" , "PPP", TYPE_INT, modcpvadd},
{"CPVSUB" , "PPP", TYPE_INT, modcpvsub},
{"CPVNEG" , "PP", TYPE_INT, modcpvneg},
{"CPVMULT" , "PFP", TYPE_INT, modcpvmult},
{"CPVPERP" , "PP", TYPE_INT, modcpvperp},
{"CPVRPERP" , "PP", TYPE_INT, modcpvrperp},
{"CPVNORMALIZE" , "PP", TYPE_INT, modcpvnormalize},
{"CPVNORMALIZE_SAFE" , "PP", TYPE_INT, modcpvnormalize_safe},
{"CPVPROJECT" , "PPP", TYPE_INT, modcpvproject},
{"CPVROTATE" , "PPP", TYPE_INT, modcpvrotate},
{"CPVUNROTATE" , "PPP", TYPE_INT, modcpvunrotate},
{"CPVFORANGLE" , "FP", TYPE_INT, modcpvforangle},
{"CPVCLAMP" , "PFP", TYPE_INT, modcpvclamp},
{"CPVNORMALIZE" , "P", TYPE_INT, modcpvnormalize},
{"CPVLERP" , "PPFP", TYPE_INT, modcpvlerp},
{"CPVLERPCONST" , "PPFP", TYPE_INT, modcpvlerpconst},
{"CPVSLERP" , "PPFP", TYPE_INT, modcpvslerp},
{"CPVSLERPCONST" , "PPFP", TYPE_INT, modcpvslerpconst},
{"CPVNEAR" , "PPF", TYPE_INT, modcpvnear},
{"CPVDOT" , "PP", TYPE_FLOAT, modcpvdot},
{"CPVCROSS" , "PP", TYPE_FLOAT, modcpvcross},
{"CPVLENGTH" , "P", TYPE_FLOAT, modcpvlength},
{"CPVLENGTHSQ" , "P", TYPE_FLOAT, modcpvlengthsq},
{"CPVTOANGLE" , "P", TYPE_FLOAT, modcpvtoangle},
{"CPVDISTSQ" , "PP", TYPE_FLOAT, modcpvdistsq},
{"CPVDIST" , "PP", TYPE_FLOAT, modcpvdist},
{"CPVSTR" , "P", TYPE_STRING, modcpvstr},
//cpBB
{"CPBBWRAPVECT" , "PPP", TYPE_INT, modcpBBWrapVect},
{"CPBBCLAMPVECT" , "PPP", TYPE_INT, modcpBBClampVect},
{"CPBBEXPAND" , "PPP", TYPE_INT, modcpBBexpand},
{"CPBBCONTAINSVECT" , "PP", TYPE_INT, modcpBBcontainsVect},
{"CPBBMERGE" , "PPP", TYPE_INT, modcpBBmerge},
{"CPBBCONTAINSBB" , "PP", TYPE_INT, modcpBBcontainsBB},
{"CPBBINTERSECTS" , "PP", TYPE_INT, modcpBBintersects},
{"CPBBNEW" , "FFFFP", TYPE_INT, modcpBBNew},
//cpBody
{"DEFCPBODYP" , "IIP", TYPE_INT, modDefcpBody},
{"DEFCPBODYF" , "IIF", TYPE_INT, modDefcpBody},
{"DEFCPBODYI" , "III", TYPE_INT, modDefcpBody},
{"CPBODYNEW" , "PF", TYPE_INT, modcpBodyNew},
{"CPBODYNEW" , "P", TYPE_INT, modcpBodyNewInfinity},
{"CPBODYNEW" , "", TYPE_INT, modcpBodyNewInfinityInf},
{"GETBODY" , "P", TYPE_INT, modgetBody},
{"CPBODYLOCAL2WORLD" , "PPP", TYPE_INT, modcpBodyLocal2World},
{"MODGETECPBODY" , "II", TYPE_FLOAT, modGetEcpBody},
{"MODGETECPBODY" , "IIP", TYPE_INT, modGetEcpBody},
{"CPBODYALLOC" , "", TYPE_INT, modcpBodyAlloc},
{"CPBODYINIT" , "IFF", TYPE_INT, modcpBodyInit},
{"CPBODYDESTROY" , "I", TYPE_INT, modcpBodyDestroy},
{"CPBODYFREE" , "I", TYPE_INT, modcpBodyFree},
{"CPBODYINITSTATIC" , "I", TYPE_INT, modcpBodyInitStatic},
{"CPBODYNEWSTATIC" , "", TYPE_INT, modcpBodyNewStatic},
{"CPMOMENTFORCIRCLE" , "FFFP", TYPE_FLOAT, modcpMomentForCircle},
{"CPMOMENTFORSEGMENT" , "FPP", TYPE_FLOAT, modcpMomentForSegment},
{"CPMOMENTFORPOLY" , "FIPP", TYPE_FLOAT, modcpMomentForPoly},
{"CPMOMENTFORBOX" , "FFF", TYPE_FLOAT, modcpMomentForBox},
{"CPAREAFORCIRCLE" , "FF", TYPE_FLOAT, modcpAreaForCircle},
{"CPAREAFORSEGMENT" , "PPF", TYPE_FLOAT, modcpAreaForSegment},
{"CPAREAFORPOLY" , "IP", TYPE_FLOAT, modcpAreaForPoly},
{"CPBODYSETMASS" , "IF", TYPE_INT, modcpBodySetMass},
{"CPBODYSETMOMENT" , "IF", TYPE_INT, modcpBodySetMoment},
{"CPBODYSETANGLE" , "IF", TYPE_INT, modcpBodySetAngle},
{"CPBODYUPDATEPOSITION" , "IF", TYPE_INT, modcpBodyUpdatePosition},
{"CPBODYRESETFORCES" , "I", TYPE_INT, modcpBodyResetForces},
{"CPBODYISSLEEPING" , "I", TYPE_INT, modcpBodyIsSleeping},
{"CPBODYSLEEP" , "I", TYPE_INT, modcpBodySleep},
{"CPBODYACTIVATE" , "I", TYPE_INT, modcpBodyActivate},
{"CPBODYISSTATIC" , "I", TYPE_INT, modcpBodyIsStatic},
{"CPBODYISROGUE" , "I", TYPE_INT, modcpBodyIsRogue},
{"CPBODYSLEEPWITHGROUP" , "II", TYPE_INT, modcpBodySleepWithGroup},
{"CPBODYAPPLYFORCE" , "IPP", TYPE_INT, modcpBodyApplyForce},
{"CPBODYAPPLYIMPULSE" , "IPP", TYPE_INT, modcpBodyApplyImpulse},
{"CPBODYWORLD2LOCAL" , "IPP", TYPE_INT, modcpBodyWorld2Local},
{"CPBODYSLEW" , "IPF", TYPE_INT, modcpBodySlew},
{"CPBODYUPDATEVELOCITY" , "IPFF", TYPE_INT, modcpBodyUpdateVelocity},
//cpShape
{"CPSEGMENTSHAPENEW" , "PPPF", TYPE_INT, modcpSegmentShapeNew},
{"DEFCPSHAPEI" , "III", TYPE_INT, modDefcpShape},
{"DEFCPSHAPEF" , "IIF", TYPE_INT, modDefcpShape},
{"DEFCPSHAPEP" , "IIP", TYPE_INT, modDefcpShape},
{"CPPOLYSHAPEGETVERT" , "PIP", TYPE_INT, modcpPolyShapeGetVert},
{"CPPOLYSHAPENEW" , "IIPP", TYPE_INT, modcpPolyShapeNew},
{"CPCIRCLESHAPENEW" , "IFP", TYPE_INT, modcpCircleShapeNew},
{"CPSEGMENTSHAPEINIT" , "IIPPF", TYPE_INT, cpSegmentShapeInit},
{"CPCIRCLESHAPEINIT" , "IIFP", TYPE_INT, modcpCircleShapeInit},
{"CPPOLYSHAPEINIT" , "IIIPP", TYPE_INT, modcpPolyShapeInit},
{"CPRECENTERPOLY" , "IP", TYPE_INT, modcpRecenterPoly},
{"CPCENTROIDFORPOLY" , "IPP", TYPE_INT, modcpCentroidForPoly},
{"CPSEGMENTSHAPEGETRADIUS" , "I", TYPE_FLOAT, modcpSegmentShapeGetRadius},
{"CPCIRCLESHAPEGETRADIUS" , "I", TYPE_FLOAT, modcpCircleShapeGetRadius},
{"CPSEGMENTSHAPEGETNORMAL" , "IP", TYPE_INT, modcpSegmentShapeGetNormal},
{"CPCIRCLESHAPEGETOFFSET" , "IP", TYPE_INT, modcpCircleShapeGetOffset},
{"CPSEGMENTSHAPEGETA" , "IP", TYPE_INT, modcpSegmentShapeGetA},
{"CPPOLYSHAPEALLOC" , "", TYPE_INT, modcpPolyShapeAlloc},
{"CPSEGMENTSHAPEALLOC" , "", TYPE_INT, modcpSegmentShapeAlloc},
{"CPCIRCLESHAPEALLOC" , "", TYPE_INT, modcpCircleShapeAlloc},
{"CPPOLYSHAPEGETNUMVERTS" , "I", TYPE_INT, modcpPolyShapeGetNumVerts},
{"CPSHAPECACHEBB" , "I", TYPE_INT, modcpShapeCacheBB},
{"CPRESETSHAPEIDCOUNTER" , "", TYPE_INT, modcpResetShapeIdCounter},
{"MODCPSHAPEFREE" , "I", TYPE_INT, modcpShapeFree},
{"CPSHAPEDESTROY" , "I", TYPE_INT, modcpShapeDestroy},
//cpSpace
{"CPSPACEALLOC" , "", TYPE_INT, modcpSpaceAlloc},
{"CPSPACEINIT" , "P", TYPE_INT, modcpSpaceInit},
{"CPSPACEFREECHILDREN" , "P", TYPE_INT, modcpSpaceFreeChildren},
{"CPSPACEDESTROY" , "P", TYPE_INT, modcpSpaceDestroy},
{"CPSPACENEW" , "", TYPE_INT, modcpSpaceNew},
{"CPSPACEFREE" , "P", TYPE_INT, modcpSpaceFree},
{"DEFSPACEF" , "PIF", TYPE_INT, modDefSpace},
{"DEFSPACEI" , "PII", TYPE_INT, modDefSpace},
{"DEFSPACEP" , "PIP", TYPE_INT, modDefSpace},
{"CPSPACEADDSHAPE" , "II", TYPE_INT, modcpSpaceAddShape},
{"CPSPACEADDSTATICSHAPE" , "II", TYPE_INT, modcpSpaceAddStaticShape},
{"CPSPACEADDBODY" , "PP", TYPE_INT, modcpSpaceAddBody},
{"CPSPACESTEP" , "PF", TYPE_INT, modcpSpaceStep},
{"CPSPACEREHASHSTATIC" , "I", TYPE_INT, modcpSpaceRehashStatic},
{"CPSPACEREHASHSHAPE" , "II", TYPE_INT, modcpSpaceRehashShape},
que funcionen adecuadamente es otra cosa XD
he modificado el ejemplo y le he agregado giro a la barra, y movimiento a la pelota, por si alguien quiere probar
el ejemplo se encuentre en la descarga del primer mensaje.
si todo va bien, quizá en una semana más tengamos toda la api en bennu... ojala!! (queda como la mitad).
lo de la mayor integración con bennu lo vemos luego, cuando conozca un poco más la librería para ver cómo hacerlo. saludos