{"id":17011222,"url":"https://github.com/rozenmad/bullet-physics-love2d","last_synced_at":"2025-07-21T13:34:30.676Z","repository":{"id":133386651,"uuid":"225976347","full_name":"rozenmad/bullet-physics-love2d","owner":"rozenmad","description":"Bullet Physics for LÖVE","archived":false,"fork":false,"pushed_at":"2023-03-15T23:39:38.000Z","size":10618,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-12T08:41:18.709Z","etag":null,"topics":["love2d","lua"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rozenmad.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"license.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-12-04T23:33:37.000Z","updated_at":"2024-12-20T16:58:57.000Z","dependencies_parsed_at":null,"dependency_job_id":"6a6b1902-e31c-4e09-b056-9efe835277b9","html_url":"https://github.com/rozenmad/bullet-physics-love2d","commit_stats":null,"previous_names":["rozenmad/bullet-physics-love2d"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/rozenmad/bullet-physics-love2d","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rozenmad%2Fbullet-physics-love2d","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rozenmad%2Fbullet-physics-love2d/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rozenmad%2Fbullet-physics-love2d/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rozenmad%2Fbullet-physics-love2d/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rozenmad","download_url":"https://codeload.github.com/rozenmad/bullet-physics-love2d/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rozenmad%2Fbullet-physics-love2d/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266312160,"owners_count":23909744,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-21T11:47:31.412Z","response_time":64,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["love2d","lua"],"created_at":"2024-10-14T06:06:31.470Z","updated_at":"2025-07-21T13:34:30.651Z","avatar_url":"https://github.com/rozenmad.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# bullet-physics-love2d\n\nBullet Physics for LÖVE, in development.\n\nHow to use:\n``` lua\nlocal love_bullet = require 'love_bullet'\n```\n\n__API:__\n\n##### World\n``` lua\nlocal world = love.physics3d.newWorld(gx, gy, gz)\nworld:update(timeStep, maxSubSteps, fixedTimeStep)\nworld:update(timeStep, maxSubSteps)\ntableofRaycastHit   = world:raycast(vec3Origin, vec3Direction, maxDistance)\nworld:addRigidBody(rbody)\nworld:addCharacterController(character)\n\nworld:removeRigidBody(rbody)\nworld:removeCharacterController(character)\n```\n\n##### CollisionObject (Base class for RigidBody and GhostObject)\n``` lua\nlocal collision_object \ncollision_object:getTransform(table)\ncollision_object:setTransform(table)\ncollision_object:setUserData(table)\ncollision_object:getUserData(table)\n-- parameters for callbacks: function(tableofContactPoint, bodyA, bodyB) end\ncollision_object:setCallbacks(begin_contact, ongoing_contact, end_contact) \ncollision_object:activate(force)\ncollision_object:isActive()\ncollision_object:setAnisotropicFriction(vec3Factor)\ncollision_object:setContactProcessingThreshold(value)\ncollision_object:setRestitution(value)\ncollision_object:setFriction(value)\ncollision_object:setRollingFriction(value)\ncollision_object:setSpinningFriction(value)\ncollision_object:setContactStiffnessAndDamping(stiffness, damping)\ncollision_object:setHitFraction(value)\ncollision_object:setCcdSweptSphereRadius(value)\ncollision_object:setCcdMotionThreshold(value)\nshape               = collision_object:getCollisionShape()\nxf, yf, zf          = collision_object:getAnisotropicFriction()\nboolean             = collision_object:hasAnisotropicFriction()\nvalue               = collision_object:getContactProcessingThreshold()\nvalue               = collision_object:getRestitution()\nvalue               = collision_object:getFriction()\nvalue               = collision_object:getRollingFriction()\nvalue               = collision_object:getSpinningFriction()\nvalue               = collision_object:getContactStiffness()\nvalue               = collision_object:getContactDamping()\nvalue               = collision_object:getHitFraction()\nvalue               = collision_object:getCcdSweptSphereRadius()\nvalue               = collision_object:getCcdMotionThreshold()\nvalue               = collision_object:getCcdSquareMotionThreshold()\nboolean             = collision_object:canCollideWith()\n```\n\n##### RigidBody\n``` lua\nlocal rbody = love.physics3d.newRigidBody(shape, mass, matrix)\nrbody:setDamping(lin, ang)\nrbody:applyForce(vec3LinDamping, vec3AngDamping)\nrbody:setAngularFactor(vec3Factor)\nrbody:setLinearFactor(vec3Factor)\nrbody:setKinematic(boolean)\nrbody:setLinearVelocity(x, y, z) -- need fix: change to parse vec3\nxv, yv, zv          = rbody:getLinearVelocity()\n```\n\n##### GhostObject\n``` lua\nlove.physics3d.newGhostObject(shape)\n```\n\n##### Shapes\n``` lua\nlove.physics3d.newBoxShape(halfSizeX, halfSizeY, halfSizeZ)\nlove.physics3d.newCapsuleShape(radius, height)\nlove.physics3d.newTriangleMeshShape(vertices, indices)\n```\n\n##### CharacterController\n``` lua\nlocal character_controller = love.physics.newCharacterController(ghost_object)\ncharacter_controller:jump(vec3)\ncharacter_controller:setWalkDirection(vec3)\ncharacter_controller:setGravity(vec3)\ncharacter_controller:setUp(vec3)\ncharacter_controller:setMaxJumpHeight(value)\ncharacter_controller:setMaxPenetrationDepth(value)\nvalue               = character_controller:getMaxPenetrationDepth()\nboolean             = character_controller:onGround()\n```\n\n__Others:__\n##### ContactPoint\n``` lua\nx, y, z             = point:getPositionA()\nx, y, z             = point:getPositionB()\nvalue               = point:getDistance()\n```\n\n##### RaycastHit\n``` lua\nx, y, z             = hit:getPosition()\nx, y, z             = hit:getNormal()\nvalue               = hit:getDistance()\nvalue               = hit:getHitFraction()\ncollision_body      = hit:getCollisionObject()\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frozenmad%2Fbullet-physics-love2d","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frozenmad%2Fbullet-physics-love2d","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frozenmad%2Fbullet-physics-love2d/lists"}