box2d-ruby 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE.txt +21 -0
- data/README.md +336 -0
- data/examples/contact_events.rb +22 -0
- data/examples/debug_draw.rb +15 -0
- data/examples/falling_ball.rb +19 -0
- data/examples/rugl_debug_draw.rb +68 -0
- data/examples/stagecraft_debug_draw.rb +64 -0
- data/examples/support/box2d_debug_lines.rb +125 -0
- data/ext/box2d/CMakeLists.txt +35 -0
- data/ext/box2d/extconf.rb +42 -0
- data/ext/box2d/native.c +9 -0
- data/ext/box2d/vendor/box2d/LICENSE +21 -0
- data/ext/box2d/vendor/box2d/VERSION +1 -0
- data/ext/box2d/vendor/box2d/include/box2d/base.h +131 -0
- data/ext/box2d/vendor/box2d/include/box2d/box2d.h +1222 -0
- data/ext/box2d/vendor/box2d/include/box2d/collision.h +830 -0
- data/ext/box2d/vendor/box2d/include/box2d/id.h +144 -0
- data/ext/box2d/vendor/box2d/include/box2d/math_functions.h +761 -0
- data/ext/box2d/vendor/box2d/include/box2d/types.h +1457 -0
- data/ext/box2d/vendor/box2d/src/CMakeLists.txt +223 -0
- data/ext/box2d/vendor/box2d/src/aabb.c +132 -0
- data/ext/box2d/vendor/box2d/src/aabb.h +56 -0
- data/ext/box2d/vendor/box2d/src/arena_allocator.c +112 -0
- data/ext/box2d/vendor/box2d/src/arena_allocator.h +48 -0
- data/ext/box2d/vendor/box2d/src/array.c +8 -0
- data/ext/box2d/vendor/box2d/src/array.h +179 -0
- data/ext/box2d/vendor/box2d/src/atomic.h +79 -0
- data/ext/box2d/vendor/box2d/src/bitset.c +67 -0
- data/ext/box2d/vendor/box2d/src/bitset.h +65 -0
- data/ext/box2d/vendor/box2d/src/body.c +1884 -0
- data/ext/box2d/vendor/box2d/src/body.h +194 -0
- data/ext/box2d/vendor/box2d/src/box2d.natvis +41 -0
- data/ext/box2d/vendor/box2d/src/broad_phase.c +524 -0
- data/ext/box2d/vendor/box2d/src/broad_phase.h +83 -0
- data/ext/box2d/vendor/box2d/src/constants.h +54 -0
- data/ext/box2d/vendor/box2d/src/constraint_graph.c +322 -0
- data/ext/box2d/vendor/box2d/src/constraint_graph.h +58 -0
- data/ext/box2d/vendor/box2d/src/contact.c +650 -0
- data/ext/box2d/vendor/box2d/src/contact.h +148 -0
- data/ext/box2d/vendor/box2d/src/contact_solver.c +2120 -0
- data/ext/box2d/vendor/box2d/src/contact_solver.h +54 -0
- data/ext/box2d/vendor/box2d/src/core.c +178 -0
- data/ext/box2d/vendor/box2d/src/core.h +149 -0
- data/ext/box2d/vendor/box2d/src/ctz.h +112 -0
- data/ext/box2d/vendor/box2d/src/distance.c +1415 -0
- data/ext/box2d/vendor/box2d/src/distance_joint.c +556 -0
- data/ext/box2d/vendor/box2d/src/dynamic_tree.c +1989 -0
- data/ext/box2d/vendor/box2d/src/geometry.c +1028 -0
- data/ext/box2d/vendor/box2d/src/hull.c +328 -0
- data/ext/box2d/vendor/box2d/src/id_pool.c +79 -0
- data/ext/box2d/vendor/box2d/src/id_pool.h +35 -0
- data/ext/box2d/vendor/box2d/src/island.c +977 -0
- data/ext/box2d/vendor/box2d/src/island.h +89 -0
- data/ext/box2d/vendor/box2d/src/joint.c +1272 -0
- data/ext/box2d/vendor/box2d/src/joint.h +335 -0
- data/ext/box2d/vendor/box2d/src/manifold.c +1726 -0
- data/ext/box2d/vendor/box2d/src/math_functions.c +159 -0
- data/ext/box2d/vendor/box2d/src/motor_joint.c +283 -0
- data/ext/box2d/vendor/box2d/src/mouse_joint.c +214 -0
- data/ext/box2d/vendor/box2d/src/mover.c +73 -0
- data/ext/box2d/vendor/box2d/src/prismatic_joint.c +656 -0
- data/ext/box2d/vendor/box2d/src/revolute_joint.c +534 -0
- data/ext/box2d/vendor/box2d/src/sensor.c +389 -0
- data/ext/box2d/vendor/box2d/src/sensor.h +36 -0
- data/ext/box2d/vendor/box2d/src/shape.c +1714 -0
- data/ext/box2d/vendor/box2d/src/shape.h +123 -0
- data/ext/box2d/vendor/box2d/src/solver.c +2038 -0
- data/ext/box2d/vendor/box2d/src/solver.h +155 -0
- data/ext/box2d/vendor/box2d/src/solver_set.c +613 -0
- data/ext/box2d/vendor/box2d/src/solver_set.h +57 -0
- data/ext/box2d/vendor/box2d/src/table.c +238 -0
- data/ext/box2d/vendor/box2d/src/table.h +37 -0
- data/ext/box2d/vendor/box2d/src/timer.c +185 -0
- data/ext/box2d/vendor/box2d/src/types.c +151 -0
- data/ext/box2d/vendor/box2d/src/weld_joint.c +310 -0
- data/ext/box2d/vendor/box2d/src/wheel_joint.c +551 -0
- data/ext/box2d/vendor/box2d/src/world.c +3301 -0
- data/ext/box2d/vendor/box2d/src/world.h +192 -0
- data/generator/generate.rb +316 -0
- data/generator/layout_probe.c +507 -0
- data/generator/verify_layouts.rb +32 -0
- data/lib/box2d/body.rb +172 -0
- data/lib/box2d/body_definition.rb +38 -0
- data/lib/box2d/body_shapes.rb +135 -0
- data/lib/box2d/chain.rb +61 -0
- data/lib/box2d/debug_draw.rb +118 -0
- data/lib/box2d/events.rb +103 -0
- data/lib/box2d/fixed_stepper.rb +39 -0
- data/lib/box2d/handle.rb +46 -0
- data/lib/box2d/hit.rb +5 -0
- data/lib/box2d/joint.rb +197 -0
- data/lib/box2d/native.rb +1462 -0
- data/lib/box2d/native_loader.rb +45 -0
- data/lib/box2d/pixel_scale.rb +29 -0
- data/lib/box2d/shape.rb +109 -0
- data/lib/box2d/shape_definition.rb +44 -0
- data/lib/box2d/value_conversion.rb +80 -0
- data/lib/box2d/version.rb +7 -0
- data/lib/box2d/world.rb +135 -0
- data/lib/box2d/world_joints.rb +156 -0
- data/lib/box2d/world_queries.rb +122 -0
- data/lib/box2d/world_registry.rb +95 -0
- data/lib/box2d.rb +31 -0
- data/script/build_platform_gem.rb +24 -0
- data/script/deterministic_scene.rb +56 -0
- data/script/update_deterministic_snapshot.rb +11 -0
- data/script/verify_platform_gem.rb +24 -0
- metadata +164 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
// SPDX-FileCopyrightText: 2023 Erin Catto
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
|
|
4
|
+
#pragma once
|
|
5
|
+
|
|
6
|
+
#include "array.h"
|
|
7
|
+
|
|
8
|
+
#include "box2d/types.h"
|
|
9
|
+
|
|
10
|
+
typedef struct b2BroadPhase b2BroadPhase;
|
|
11
|
+
typedef struct b2World b2World;
|
|
12
|
+
|
|
13
|
+
typedef struct b2Shape
|
|
14
|
+
{
|
|
15
|
+
int id;
|
|
16
|
+
int bodyId;
|
|
17
|
+
int prevShapeId;
|
|
18
|
+
int nextShapeId;
|
|
19
|
+
int sensorIndex;
|
|
20
|
+
b2ShapeType type;
|
|
21
|
+
float density;
|
|
22
|
+
float friction;
|
|
23
|
+
float restitution;
|
|
24
|
+
float rollingResistance;
|
|
25
|
+
float tangentSpeed;
|
|
26
|
+
int userMaterialId;
|
|
27
|
+
|
|
28
|
+
b2AABB aabb;
|
|
29
|
+
b2AABB fatAABB;
|
|
30
|
+
b2Vec2 localCentroid;
|
|
31
|
+
int proxyKey;
|
|
32
|
+
|
|
33
|
+
b2Filter filter;
|
|
34
|
+
void* userData;
|
|
35
|
+
uint32_t customColor;
|
|
36
|
+
|
|
37
|
+
union
|
|
38
|
+
{
|
|
39
|
+
b2Capsule capsule;
|
|
40
|
+
b2Circle circle;
|
|
41
|
+
b2Polygon polygon;
|
|
42
|
+
b2Segment segment;
|
|
43
|
+
b2ChainSegment chainSegment;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
uint16_t generation;
|
|
47
|
+
bool enableSensorEvents;
|
|
48
|
+
bool enableContactEvents;
|
|
49
|
+
bool enableHitEvents;
|
|
50
|
+
bool enablePreSolveEvents;
|
|
51
|
+
bool enlargedAABB;
|
|
52
|
+
} b2Shape;
|
|
53
|
+
|
|
54
|
+
typedef struct b2ChainShape
|
|
55
|
+
{
|
|
56
|
+
int id;
|
|
57
|
+
int bodyId;
|
|
58
|
+
int nextChainId;
|
|
59
|
+
int count;
|
|
60
|
+
int materialCount;
|
|
61
|
+
int* shapeIndices;
|
|
62
|
+
b2SurfaceMaterial* materials;
|
|
63
|
+
uint16_t generation;
|
|
64
|
+
} b2ChainShape;
|
|
65
|
+
|
|
66
|
+
typedef struct b2ShapeExtent
|
|
67
|
+
{
|
|
68
|
+
float minExtent;
|
|
69
|
+
float maxExtent;
|
|
70
|
+
} b2ShapeExtent;
|
|
71
|
+
|
|
72
|
+
// Sensors are shapes that live in the broad-phase but never have contacts.
|
|
73
|
+
// At the end of the time step all sensors are queried for overlap with any other shapes.
|
|
74
|
+
// Sensors ignore body type and sleeping.
|
|
75
|
+
// Sensors generate events when there is a new overlap or and overlap disappears.
|
|
76
|
+
// The sensor overlaps don't get cleared until the next time step regardless of the overlapped
|
|
77
|
+
// shapes being destroyed.
|
|
78
|
+
// When a sensor is destroyed.
|
|
79
|
+
typedef struct
|
|
80
|
+
{
|
|
81
|
+
b2IntArray overlaps;
|
|
82
|
+
} b2SensorOverlaps;
|
|
83
|
+
|
|
84
|
+
void b2CreateShapeProxy( b2Shape* shape, b2BroadPhase* bp, b2BodyType type, b2Transform transform, bool forcePairCreation );
|
|
85
|
+
void b2DestroyShapeProxy( b2Shape* shape, b2BroadPhase* bp );
|
|
86
|
+
|
|
87
|
+
void b2FreeChainData( b2ChainShape* chain );
|
|
88
|
+
|
|
89
|
+
b2MassData b2ComputeShapeMass( const b2Shape* shape );
|
|
90
|
+
b2ShapeExtent b2ComputeShapeExtent( const b2Shape* shape, b2Vec2 localCenter );
|
|
91
|
+
b2AABB b2ComputeShapeAABB( const b2Shape* shape, b2Transform transform );
|
|
92
|
+
b2Vec2 b2GetShapeCentroid( const b2Shape* shape );
|
|
93
|
+
float b2GetShapePerimeter( const b2Shape* shape );
|
|
94
|
+
float b2GetShapeProjectedPerimeter( const b2Shape* shape, b2Vec2 line );
|
|
95
|
+
|
|
96
|
+
b2ShapeProxy b2MakeShapeDistanceProxy( const b2Shape* shape );
|
|
97
|
+
|
|
98
|
+
b2CastOutput b2RayCastShape( const b2RayCastInput* input, const b2Shape* shape, b2Transform transform );
|
|
99
|
+
b2CastOutput b2ShapeCastShape( const b2ShapeCastInput* input, const b2Shape* shape, b2Transform transform );
|
|
100
|
+
|
|
101
|
+
b2PlaneResult b2CollideMoverAndCircle( const b2Circle* shape, const b2Capsule* mover );
|
|
102
|
+
b2PlaneResult b2CollideMoverAndCapsule( const b2Capsule* shape, const b2Capsule* mover );
|
|
103
|
+
b2PlaneResult b2CollideMoverAndPolygon( const b2Polygon* shape, const b2Capsule* mover );
|
|
104
|
+
b2PlaneResult b2CollideMoverAndSegment( const b2Segment* shape, const b2Capsule* mover );
|
|
105
|
+
b2PlaneResult b2CollideMover( const b2Shape* shape, b2Transform transform, const b2Capsule* mover );
|
|
106
|
+
|
|
107
|
+
static inline float b2GetShapeRadius( const b2Shape* shape )
|
|
108
|
+
{
|
|
109
|
+
switch ( shape->type )
|
|
110
|
+
{
|
|
111
|
+
case b2_capsuleShape:
|
|
112
|
+
return shape->capsule.radius;
|
|
113
|
+
case b2_circleShape:
|
|
114
|
+
return shape->circle.radius;
|
|
115
|
+
case b2_polygonShape:
|
|
116
|
+
return shape->polygon.radius;
|
|
117
|
+
default:
|
|
118
|
+
return 0.0f;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
B2_ARRAY_INLINE( b2ChainShape, b2ChainShape )
|
|
123
|
+
B2_ARRAY_INLINE( b2Shape, b2Shape )
|