Functions for interacting with Box2D.
Version: alpha
| TYPES | |
|---|---|
| b2Body | Box2D body |
| b2d.joint.filter_definition | Box2D filter-joint definition |
| b2d.shape_create_definition | Box2D 3.x shape creation definition |
| b2World | Box2D world |
| RECORDS | |
|---|---|
| b2d.aabb | Box2D axis-aligned bounding box |
| b2d.chain_definition | Box2D 3.x chain definition |
| b2d.chain_geometry | Box2D chain geometry |
| b2d.contact_data | Box2D contact data |
| b2d.contact_point | Box2D contact manifold point |
| b2d.explosion_definition | Box2D explosion definition |
| b2d.filter | Box2D collision filter |
| b2d.filter_options | Partial Box2D collision filter |
| b2d.fixture_cast_hit | Box2D 2.x cast hit |
| b2d.fixture_definition | Box2D 2.x fixture definition |
| b2d.fixture_info | Box2D 2.x fixture information |
| b2d.joint.distance_definition | Box2D distance-joint definition |
| b2d.joint.friction_definition | Box2D friction-joint definition |
| b2d.joint.gear_definition | Box2D gear-joint definition |
| b2d.joint.motor_definition | Box2D motor-joint definition |
| b2d.joint.mouse_definition | Box2D mouse-joint definition |
| b2d.joint.prismatic_definition | Box2D prismatic-joint definition |
| b2d.joint.pulley_definition | Box2D pulley-joint definition |
| b2d.joint.revolute_definition | Box2D revolute-joint definition |
| b2d.joint.rope_definition | Box2D rope-joint definition |
| b2d.joint.weld_definition | Box2D weld-joint definition |
| b2d.joint.wheel_definition | Box2D wheel-joint definition |
| b2d.mass_data | Box2D mass data |
| b2d.mover_capsule | Box2D mover capsule |
| b2d.mover_plane | Box2D mover collision plane |
| b2d.query_filter | Box2D world-query filter |
| b2d.shape_cast_hit | Box2D 3.x cast hit |
| b2d.shape_cast_output | Direct Box2D shape cast result |
| b2d.shape_info | Box2D 3.x shape information |
| b2d.transform | Box2D transform |
| b2d.tree_stats | Box2D broad-phase query statistics |
| b2d.version_info | Box2D version information |
| b2d.world_counters | Box2D world counters |
| b2d.world_profile | Box2D world profiling data |
| FUNCTIONS | |
|---|---|
| b2d.get_body() | Get the Box2D body from a collision object |
| b2d.get_version() | Get the Box2D version information for the active backend. |
| b2d.get_world() | Get the Box2D world from the current collection |
b2Body = userdata
An opaque handle to the native Box2D body of a collision-object component.
Obtain it with b2d.get_body and pass it to functions in b2d.body.
The collision object owns the body, so the handle becomes invalid when its
component or game object is deleted.
EXAMPLES
local body = b2d.get_body("#collisionobject")
if body then
print(b2d.body.get_position(body))
end
b2d.joint.filter_definition = {}
The optional definition passed to b2d.joint.create_filter. Filter joints currently have no configurable fields, so omit the argument or pass an empty table. The type is reserved for future options.
EXAMPLES
local body_a = b2d.get_body("#collisionobject_a")
local body_b = b2d.get_body("#collisionobject_b")
local joint = b2d.joint.create_filter(body_a, body_b, {})
b2d.shape_create_definition = { shape:b2d.shape.definition, density?:number, friction?:number, restitution?:number, material?:integer, sensor?:boolean, is_sensor?:boolean, filter?:b2d.filter } | { type:b2d.shape.SHAPE_TYPE, radius?:number, center?:vector3, center1?:vector3, center2?:vector3, v0?:vector3, v1?:vector3, v2?:vector3, v3?:vector3, hx?:number, hy?:number, angle?:number, vertices?:vector3[], density?:number, friction?:number, restitution?:number, material?:integer, sensor?:boolean, is_sensor?:boolean, filter?:b2d.filter }
Geometry and material properties accepted by b2d.body.create_shape. The
geometry can be supplied in the shape field as a b2d.shape.definition,
or its fields can be placed directly in this table. Material properties such
as density, friction, restitution, and filter are optional.
EXAMPLES
Create a circular shape using an inline geometry definition:local body = b2d.get_body("#collisionobject")
local shape = b2d.body.create_shape(body, {
type = b2d.shape.SHAPE_TYPE_CIRCLE,
radius = 16,
density = 1,
friction = 0.4,
})
b2World = userdata
An opaque handle to the Box2D physics world owned by the current collection.
Obtain it with b2d.get_world and pass it to functions in b2d.world.
The engine creates and destroys the world together with the collection; it
cannot be constructed directly from Lua.
EXAMPLES
local world = b2d.get_world()
if world then
pprint(world)
end
Box2D axis-aligned bounding box
FIELDS
lower |
vector3 |
Lower bound. |
upper |
vector3 |
Upper bound. |
Box2D 3.x chain definition
FIELDS
vertices |
vector3[] |
Chain vertices. |
[loop] |
boolean |
Whether the chain is closed. |
[prev_vertex] |
vector3 |
Ghost vertex preceding an open chain. |
[next_vertex] |
vector3 |
Ghost vertex following an open chain. |
[friction] |
number |
Segment friction. |
[restitution] |
number |
Segment restitution. |
[material] |
integer |
Segment material identifier. |
[filter] |
b2d.filter_options |
Collision filter fields to override. |
[enable_sensor_events] |
boolean |
Whether to enable sensor events. |
Box2D chain geometry
FIELDS
loop |
boolean |
Whether the chain is closed. |
segment_count |
integer |
Number of chain segments. |
vertices |
vector3[] |
Chain vertices. |
[prev_vertex] |
vector3 |
Ghost vertex preceding an open chain. |
[next_vertex] |
vector3 |
Ghost vertex following an open chain. |
Box2D contact data
FIELDS
shape_a |
b2d.shape_info |
First contact shape. |
shape_b |
b2d.shape_info |
Second contact shape. |
normal |
vector3 |
Contact normal. |
rolling_impulse |
number |
Rolling resistance impulse. |
point_count |
integer |
Number of manifold points. |
points |
b2d.contact_point[] |
Contact manifold points. |
Box2D contact manifold point
FIELDS
point |
vector3 |
World contact point. |
anchor_a |
vector3 |
Contact anchor on the first body. |
anchor_b |
vector3 |
Contact anchor on the second body. |
separation |
number |
Contact separation. |
normal_impulse |
number |
Normal impulse. |
tangent_impulse |
number |
Tangent impulse. |
total_normal_impulse |
number |
Total normal impulse. |
normal_velocity |
number |
Relative normal velocity. |
id |
integer |
Contact point identifier. |
persisted |
boolean |
Whether the point persisted from the previous step. |
Box2D explosion definition
FIELDS
position |
vector3 |
Explosion center. |
radius |
number |
Explosion radius. |
falloff |
number |
Distance over which the impulse falls off. |
impulse_per_length |
number |
Impulse applied per unit length. |
[mask_bits] |
integer |
Optional collision mask. |
Box2D collision filter
FIELDS
category_bits |
integer |
Collision category bits. |
mask_bits |
integer |
Collision mask bits. |
group_index |
integer |
Collision group index. |
Partial Box2D collision filter
FIELDS
[category_bits] |
integer |
Collision category bits. |
[mask_bits] |
integer |
Collision mask bits. |
[group_index] |
integer |
Collision group index. |
Box2D 2.x cast hit
FIELDS
fixture |
b2d.fixture_info |
Hit fixture. |
shape |
b2d.fixture_info |
Hit fixture child shape. |
point |
vector3 |
Hit point. |
normal |
vector3 |
Hit normal. |
fraction |
number |
Hit fraction. |
[node_visits] |
integer |
Number of tree nodes visited by a closest query. |
[leaf_visits] |
integer |
Number of tree leaves visited by a closest query. |
Box2D 2.x fixture definition
FIELDS
shape |
b2d.shape.definition |
Shape definition. |
[friction] |
number |
Fixture friction. |
[restitution] |
number |
Fixture restitution. |
[density] |
number |
Fixture density. |
[sensor] |
boolean |
Whether the fixture is a sensor. |
[is_sensor] |
boolean |
Alias for sensor. |
[filter] |
b2d.filter |
Collision filter. |
Box2D 2.x fixture information
FIELDS
[body] |
b2Body |
Owning body, when returned from a world query. |
index |
integer |
Fixture index on the body. |
[child_index] |
integer |
Child-shape index, when returned from a world query. |
type |
b2d.shape.SHAPE_TYPE |
Shape type. |
sensor |
boolean |
Whether the fixture is a sensor. |
density |
number |
Fixture density. |
friction |
number |
Fixture friction. |
restitution |
number |
Fixture restitution. |
child_count |
integer |
Number of child shapes. |
Box2D distance-joint definition
FIELDS
[local_anchor_a] |
vector3 |
Local anchor on the first body. |
[local_anchor_b] |
vector3 |
Local anchor on the second body. |
[length] |
number |
Rest length. |
[min_length] |
number |
Minimum length. |
[max_length] |
number |
Maximum length. |
[enable_spring] |
boolean |
Whether the spring is enabled. |
[hertz] |
number |
Spring frequency in hertz. |
[frequency] |
number |
Legacy spring frequency alias. |
[damping_ratio] |
number |
Spring damping ratio. |
[damping] |
number |
Legacy spring damping-ratio alias. |
[enable_limit] |
boolean |
Whether length limits are enabled. |
[enable_motor] |
boolean |
Whether the motor is enabled. |
[max_motor_force] |
number |
Maximum motor force. |
[motor_speed] |
number |
Motor speed. |
[collide_connected] |
boolean |
Whether connected bodies collide. |
Box2D friction-joint definition
FIELDS
[local_anchor_a] |
vector3 |
Local anchor on the first body. |
[local_anchor_b] |
vector3 |
Local anchor on the second body. |
[max_force] |
number |
Maximum friction force. |
[max_torque] |
number |
Maximum friction torque. |
[collide_connected] |
boolean |
Whether connected bodies collide. |
Box2D gear-joint definition
FIELDS
[ratio] |
number |
Gear ratio. |
[collide_connected] |
boolean |
Whether connected bodies collide. |
Box2D motor-joint definition
FIELDS
[linear_offset] |
vector3 |
Linear target offset. |
[angular_offset] |
number |
Angular target offset. |
[max_force] |
number |
Maximum motor force. |
[max_torque] |
number |
Maximum motor torque. |
[correction_factor] |
number |
Position correction factor. |
[collide_connected] |
boolean |
Whether connected bodies collide. |
Box2D mouse-joint definition
FIELDS
[target] |
vector3 |
Target position. |
[max_force] |
number |
Maximum force. |
[hertz] |
number |
Spring frequency in hertz. |
[frequency] |
number |
Legacy spring frequency alias. |
[damping_ratio] |
number |
Spring damping ratio. |
[damping] |
number |
Legacy spring damping-ratio alias. |
[collide_connected] |
boolean |
Whether connected bodies collide. |
Box2D prismatic-joint definition
FIELDS
[local_anchor_a] |
vector3 |
Local anchor on the first body. |
[local_anchor_b] |
vector3 |
Local anchor on the second body. |
[local_axis_a] |
vector3 |
Local translation axis on the first body. |
[reference_angle] |
number |
Reference angle. |
[enable_spring] |
boolean |
Whether the spring is enabled. |
[hertz] |
number |
Spring frequency in hertz. |
[frequency] |
number |
Legacy spring frequency alias. |
[damping_ratio] |
number |
Spring damping ratio. |
[damping] |
number |
Legacy spring damping-ratio alias. |
[enable_limit] |
boolean |
Whether translation limits are enabled. |
[lower_translation] |
number |
Lower translation limit. |
[upper_translation] |
number |
Upper translation limit. |
[enable_motor] |
boolean |
Whether the motor is enabled. |
[max_motor_force] |
number |
Maximum motor force. |
[motor_speed] |
number |
Motor speed. |
[collide_connected] |
boolean |
Whether connected bodies collide. |
Box2D pulley-joint definition
FIELDS
[ground_anchor_a] |
vector3 |
First ground anchor. |
[ground_anchor_b] |
vector3 |
Second ground anchor. |
[local_anchor_a] |
vector3 |
Local anchor on the first body. |
[local_anchor_b] |
vector3 |
Local anchor on the second body. |
[length_a] |
number |
First segment length. |
[length_b] |
number |
Second segment length. |
[ratio] |
number |
Pulley ratio. |
[collide_connected] |
boolean |
Whether connected bodies collide. |
Box2D revolute-joint definition
FIELDS
[local_anchor_a] |
vector3 |
Local anchor on the first body. |
[local_anchor_b] |
vector3 |
Local anchor on the second body. |
[reference_angle] |
number |
Reference angle. |
[enable_spring] |
boolean |
Whether the spring is enabled. |
[hertz] |
number |
Spring frequency in hertz. |
[frequency] |
number |
Legacy spring frequency alias. |
[damping_ratio] |
number |
Spring damping ratio. |
[damping] |
number |
Legacy spring damping-ratio alias. |
[enable_limit] |
boolean |
Whether angular limits are enabled. |
[lower_angle] |
number |
Lower angular limit. |
[upper_angle] |
number |
Upper angular limit. |
[enable_motor] |
boolean |
Whether the motor is enabled. |
[max_motor_torque] |
number |
Maximum motor torque. |
[motor_speed] |
number |
Motor speed. |
[collide_connected] |
boolean |
Whether connected bodies collide. |
Box2D rope-joint definition
FIELDS
[local_anchor_a] |
vector3 |
Local anchor on the first body. |
[local_anchor_b] |
vector3 |
Local anchor on the second body. |
[max_length] |
number |
Maximum rope length. |
[collide_connected] |
boolean |
Whether connected bodies collide. |
Box2D weld-joint definition
FIELDS
[local_anchor_a] |
vector3 |
Local anchor on the first body. |
[local_anchor_b] |
vector3 |
Local anchor on the second body. |
[reference_angle] |
number |
Reference angle. |
[hertz] |
number |
Legacy spring frequency in hertz. |
[frequency] |
number |
Legacy spring frequency. |
[damping_ratio] |
number |
Legacy spring damping ratio. |
[damping] |
number |
Legacy spring damping-ratio alias. |
[linear_hertz] |
number |
Linear spring frequency in hertz. |
[angular_hertz] |
number |
Angular spring frequency in hertz. |
[linear_damping_ratio] |
number |
Linear damping ratio. |
[angular_damping_ratio] |
number |
Angular damping ratio. |
[collide_connected] |
boolean |
Whether connected bodies collide. |
Box2D wheel-joint definition
FIELDS
[local_anchor_a] |
vector3 |
Local anchor on the first body. |
[local_anchor_b] |
vector3 |
Local anchor on the second body. |
[local_axis_a] |
vector3 |
Local suspension axis on the first body. |
[enable_spring] |
boolean |
Whether the spring is enabled. |
[hertz] |
number |
Spring frequency in hertz. |
[frequency] |
number |
Legacy spring frequency alias. |
[damping_ratio] |
number |
Spring damping ratio. |
[damping] |
number |
Legacy spring damping-ratio alias. |
[enable_limit] |
boolean |
Whether translation limits are enabled. |
[lower_translation] |
number |
Lower translation limit. |
[upper_translation] |
number |
Upper translation limit. |
[enable_motor] |
boolean |
Whether the motor is enabled. |
[max_motor_torque] |
number |
Maximum motor torque. |
[motor_speed] |
number |
Motor speed. |
[collide_connected] |
boolean |
Whether connected bodies collide. |
Mass properties for a Box2D body or shape.
FIELDS
mass |
number |
Body mass, usually in kilograms. |
center |
vector3 |
Local center of mass. |
inertia |
number |
Rotational inertia about the local origin. |
Box2D mover capsule
FIELDS
center1 |
vector3 |
First capsule center. |
center2 |
vector3 |
Second capsule center. |
radius |
number |
Capsule radius. |
Box2D mover collision plane
FIELDS
shape |
b2d.shape_info |
Colliding shape. |
normal |
vector3 |
Plane normal. |
offset |
number |
Plane offset. |
hit |
boolean |
Whether the mover hit the plane. |
Box2D world-query filter
FIELDS
[category_bits] |
integer |
Optional collision category bits. |
[mask_bits] |
integer |
Optional collision mask bits. |
[group_index] |
integer |
Optional collision group index. Supported by the Box2D 2.x backend. |
Box2D 3.x cast hit
FIELDS
shape |
b2d.shape_info |
Hit shape. |
point |
vector3 |
Hit point. |
normal |
vector3 |
Hit normal. |
fraction |
number |
Hit fraction. |
[node_visits] |
integer |
Number of tree nodes visited by a closest query. |
[leaf_visits] |
integer |
Number of tree leaves visited by a closest query. |
Direct Box2D shape cast result
FIELDS
point |
vector3 |
Hit point. |
normal |
vector3 |
Hit normal. |
fraction |
number |
Hit fraction. |
iterations |
integer |
Number of cast iterations. |
Box2D 3.x shape information
FIELDS
index |
integer |
Shape index on the body. |
shape_id |
b2Shape |
Shape handle. |
type |
b2d.shape.SHAPE_TYPE |
Shape type. |
sensor |
boolean |
Whether the shape is a sensor. |
density |
number |
Shape density. |
friction |
number |
Shape friction. |
restitution |
number |
Shape restitution. |
material |
integer |
Shape material identifier. |
child_count |
integer |
Number of child shapes. |
is_chain_segment |
boolean |
Whether the shape belongs to a chain. |
World transform for a Box2D body.
FIELDS
position |
vector3 |
World position of the body origin. |
angle |
number |
World rotation angle in radians. |
Box2D broad-phase query statistics
FIELDS
node_visits |
integer |
Number of tree nodes visited. |
leaf_visits |
integer |
Number of tree leaves visited. |
Box2D version information
FIELDS
version |
string |
Full Box2D version string. |
major |
integer |
Major version number. |
middle |
integer |
Middle version number. |
minor |
integer |
Minor version number. |
Box2D world counters
FIELDS
body_count |
integer |
Number of bodies. |
shape_count |
integer |
Number of shapes. |
contact_count |
integer |
Number of contacts. |
joint_count |
integer |
Number of joints. |
island_count |
integer |
Number of islands. |
stack_used |
integer |
Stack bytes in use. |
static_tree_height |
integer |
Static broad-phase tree height. |
tree_height |
integer |
Dynamic broad-phase tree height. |
byte_count |
integer |
Allocated byte count. |
task_count |
integer |
Number of tasks. |
color_counts |
integer[] |
Constraint graph color counts. |
Box2D world profiling data
FIELDS
step |
number |
Total step time. |
pairs |
number |
Pair update time. |
collide |
number |
Collision time. |
solve |
number |
Solver time. |
merge_islands |
number |
Island merge time. |
prepare_stages |
number |
Stage preparation time. |
solve_constraints |
number |
Constraint solver time. |
prepare_constraints |
number |
Constraint preparation time. |
integrate_velocities |
number |
Velocity integration time. |
warm_start |
number |
Warm-start time. |
solve_impulses |
number |
Impulse solver time. |
integrate_positions |
number |
Position integration time. |
relax_impulses |
number |
Impulse relaxation time. |
apply_restitution |
number |
Restitution time. |
store_impulses |
number |
Impulse storage time. |
split_islands |
number |
Island splitting time. |
transforms |
number |
Transform update time. |
hit_events |
number |
Hit-event generation time. |
refit |
number |
Tree refit time. |
bullets |
number |
Bullet processing time. |
sleep_islands |
number |
Island sleeping time. |
sensors |
number |
Sensor processing time. |
b2d.get_body(url:string|hash|url)→body:b2Body|nil
Get the Box2D body from a collision object
PARAMETERS
url |
stringhashurl |
the url to the game object collision component |
RETURNS
body |
b2Bodynil |
the body if successful. Otherwise nil.
|
b2d.get_version()→info:b2d.version_info
Get the Box2D version information for the active backend.
PARAMETERS
None
RETURNS
info |
b2d.version_info |
version information |
b2d.get_world()→world:b2World|nil
Get the Box2D world from the current collection
PARAMETERS
None
RETURNS
world |
b2Worldnil |
the world if successful. Otherwise nil.
|