Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rozenmad/bullet-physics-love2d
Bullet Physics for LÖVE
https://github.com/rozenmad/bullet-physics-love2d
love2d lua
Last synced: 4 months ago
JSON representation
Bullet Physics for LÖVE
- Host: GitHub
- URL: https://github.com/rozenmad/bullet-physics-love2d
- Owner: rozenmad
- License: other
- Created: 2019-12-04T23:33:37.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2023-03-15T23:39:38.000Z (almost 2 years ago)
- Last Synced: 2024-10-14T06:06:27.796Z (4 months ago)
- Topics: love2d, lua
- Language: C++
- Homepage:
- Size: 10.1 MB
- Stars: 6
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: license.txt
Awesome Lists containing this project
README
# bullet-physics-love2d
Bullet Physics for LÖVE, in development.
How to use:
``` lua
local love_bullet = require 'love_bullet'
```__API:__
##### World
``` lua
local world = love.physics3d.newWorld(gx, gy, gz)
world:update(timeStep, maxSubSteps, fixedTimeStep)
world:update(timeStep, maxSubSteps)
tableofRaycastHit = world:raycast(vec3Origin, vec3Direction, maxDistance)
world:addRigidBody(rbody)
world:addCharacterController(character)world:removeRigidBody(rbody)
world:removeCharacterController(character)
```##### CollisionObject (Base class for RigidBody and GhostObject)
``` lua
local collision_object
collision_object:getTransform(table)
collision_object:setTransform(table)
collision_object:setUserData(table)
collision_object:getUserData(table)
-- parameters for callbacks: function(tableofContactPoint, bodyA, bodyB) end
collision_object:setCallbacks(begin_contact, ongoing_contact, end_contact)
collision_object:activate(force)
collision_object:isActive()
collision_object:setAnisotropicFriction(vec3Factor)
collision_object:setContactProcessingThreshold(value)
collision_object:setRestitution(value)
collision_object:setFriction(value)
collision_object:setRollingFriction(value)
collision_object:setSpinningFriction(value)
collision_object:setContactStiffnessAndDamping(stiffness, damping)
collision_object:setHitFraction(value)
collision_object:setCcdSweptSphereRadius(value)
collision_object:setCcdMotionThreshold(value)
shape = collision_object:getCollisionShape()
xf, yf, zf = collision_object:getAnisotropicFriction()
boolean = collision_object:hasAnisotropicFriction()
value = collision_object:getContactProcessingThreshold()
value = collision_object:getRestitution()
value = collision_object:getFriction()
value = collision_object:getRollingFriction()
value = collision_object:getSpinningFriction()
value = collision_object:getContactStiffness()
value = collision_object:getContactDamping()
value = collision_object:getHitFraction()
value = collision_object:getCcdSweptSphereRadius()
value = collision_object:getCcdMotionThreshold()
value = collision_object:getCcdSquareMotionThreshold()
boolean = collision_object:canCollideWith()
```##### RigidBody
``` lua
local rbody = love.physics3d.newRigidBody(shape, mass, matrix)
rbody:setDamping(lin, ang)
rbody:applyForce(vec3LinDamping, vec3AngDamping)
rbody:setAngularFactor(vec3Factor)
rbody:setLinearFactor(vec3Factor)
rbody:setKinematic(boolean)
rbody:setLinearVelocity(x, y, z) -- need fix: change to parse vec3
xv, yv, zv = rbody:getLinearVelocity()
```##### GhostObject
``` lua
love.physics3d.newGhostObject(shape)
```##### Shapes
``` lua
love.physics3d.newBoxShape(halfSizeX, halfSizeY, halfSizeZ)
love.physics3d.newCapsuleShape(radius, height)
love.physics3d.newTriangleMeshShape(vertices, indices)
```##### CharacterController
``` lua
local character_controller = love.physics.newCharacterController(ghost_object)
character_controller:jump(vec3)
character_controller:setWalkDirection(vec3)
character_controller:setGravity(vec3)
character_controller:setUp(vec3)
character_controller:setMaxJumpHeight(value)
character_controller:setMaxPenetrationDepth(value)
value = character_controller:getMaxPenetrationDepth()
boolean = character_controller:onGround()
```__Others:__
##### ContactPoint
``` lua
x, y, z = point:getPositionA()
x, y, z = point:getPositionB()
value = point:getDistance()
```##### RaycastHit
``` lua
x, y, z = hit:getPosition()
x, y, z = hit:getNormal()
value = hit:getDistance()
value = hit:getHitFraction()
collision_body = hit:getCollisionObject()
```