Module: Box2D
- Extended by:
- FFI::Library
- Defined in:
- lib/box2d.rb,
lib/box2d_id.rb,
lib/box2d_base.rb,
lib/box2d_main.rb,
lib/box2d_types.rb,
lib/box2d_helper.rb,
lib/box2d_collision.rb,
lib/box2d_id_inline.rb,
lib/box2d_math_functions.rb,
lib/box2d_math_inline_functions.rb
Defined Under Namespace
Classes: AABB, BodyDef, BodyEvents, BodyId, BodyMoveEvent, Capsule, CastOutput, ChainDef, ChainId, ChainSegment, Circle, ContactBeginTouchEvent, ContactData, ContactEndTouchEvent, ContactEvents, ContactHitEvent, CosSin, Counters, DebugDraw, DistanceInput, DistanceJointDef, DistanceOutput, DynamicTree, ExplosionDef, Filter, Hull, JointId, Manifold, ManifoldPoint, MassData, Mat22, MotorJointDef, MouseJointDef, NullJointDef, Polygon, PrismaticJointDef, Profile, QueryFilter, RayCastInput, RayResult, RevoluteJointDef, Rot, Segment, SegmentDistanceResult, SensorBeginTouchEvent, SensorEndTouchEvent, SensorEvents, ShapeCastInput, ShapeCastPairInput, ShapeDef, ShapeId, ShapeProxy, Simplex, SimplexCache, SimplexVertex, SurfaceMaterial, Sweep, TOIInput, TOIOutput, Transform, TreeNode, TreeNode_Union, TreeStats, Vec2, Version, WeldJointDef, WheelJointDef, WorldDef, WorldId
Constant Summary collapse
- HASH_INIT =
Define/Macro
5381
- DEFAULT_CATEGORY_BITS =
Define/Macro
0x0001
- BodyType_staticBody =
Enum
0
- BodyType_kinematicBody =
1
- BodyType_dynamicBody =
2
- BodyType_bodyTypeCount =
3
- ShapeType_circleShape =
0
- ShapeType_capsuleShape =
1
- ShapeType_segmentShape =
2
- ShapeType_polygonShape =
3
- ShapeType_chainSegmentShape =
4
- ShapeType_shapeTypeCount =
5
- JointType_distanceJoint =
0
- JointType_motorJoint =
1
- JointType_mouseJoint =
2
- JointType_nullJoint =
3
- JointType_prismaticJoint =
4
- JointType_revoluteJoint =
5
- JointType_weldJoint =
6
- JointType_wheelJoint =
7
- HexColor_colorAliceBlue =
15792383
- HexColor_colorAntiqueWhite =
16444375
- HexColor_colorAqua =
65535
- HexColor_colorAquamarine =
8388564
- HexColor_colorAzure =
15794175
- HexColor_colorBeige =
16119260
- HexColor_colorBisque =
16770244
- HexColor_colorBlack =
0
- HexColor_colorBlanchedAlmond =
16772045
- HexColor_colorBlue =
255
- HexColor_colorBlueViolet =
9055202
- HexColor_colorBrown =
10824234
- HexColor_colorBurlywood =
14596231
- HexColor_colorCadetBlue =
6266528
- HexColor_colorChartreuse =
8388352
- HexColor_colorChocolate =
13789470
- HexColor_colorCoral =
16744272
- HexColor_colorCornflowerBlue =
6591981
- HexColor_colorCornsilk =
16775388
- HexColor_colorCrimson =
14423100
- HexColor_colorCyan =
65535
- HexColor_colorDarkBlue =
139
- HexColor_colorDarkCyan =
35723
- HexColor_colorDarkGoldenRod =
12092939
- HexColor_colorDarkGray =
11119017
- HexColor_colorDarkGreen =
25600
- HexColor_colorDarkKhaki =
12433259
- HexColor_colorDarkMagenta =
9109643
- HexColor_colorDarkOliveGreen =
5597999
- HexColor_colorDarkOrange =
16747520
- HexColor_colorDarkOrchid =
10040012
- HexColor_colorDarkRed =
9109504
- HexColor_colorDarkSalmon =
15308410
- HexColor_colorDarkSeaGreen =
9419919
- HexColor_colorDarkSlateBlue =
4734347
- HexColor_colorDarkSlateGray =
3100495
- HexColor_colorDarkTurquoise =
52945
- HexColor_colorDarkViolet =
9699539
- HexColor_colorDeepPink =
16716947
- HexColor_colorDeepSkyBlue =
49151
- HexColor_colorDimGray =
6908265
- HexColor_colorDodgerBlue =
2003199
- HexColor_colorFireBrick =
11674146
- HexColor_colorFloralWhite =
16775920
- HexColor_colorForestGreen =
2263842
- HexColor_colorFuchsia =
16711935
- HexColor_colorGainsboro =
14474460
- HexColor_colorGhostWhite =
16316671
- HexColor_colorGold =
16766720
- HexColor_colorGoldenRod =
14329120
- HexColor_colorGray =
8421504
- HexColor_colorGreen =
32768
- HexColor_colorGreenYellow =
11403055
- HexColor_colorHoneyDew =
15794160
- HexColor_colorHotPink =
16738740
- HexColor_colorIndianRed =
13458524
- HexColor_colorIndigo =
4915330
- HexColor_colorIvory =
16777200
- HexColor_colorKhaki =
15787660
- HexColor_colorLavender =
15132410
- HexColor_colorLavenderBlush =
16773365
- HexColor_colorLawnGreen =
8190976
- HexColor_colorLemonChiffon =
16775885
- HexColor_colorLightBlue =
11393254
- HexColor_colorLightCoral =
15761536
- HexColor_colorLightCyan =
14745599
- HexColor_colorLightGoldenRodYellow =
16448210
- HexColor_colorLightGray =
13882323
- HexColor_colorLightGreen =
9498256
- HexColor_colorLightPink =
16758465
- HexColor_colorLightSalmon =
16752762
- HexColor_colorLightSeaGreen =
2142890
- HexColor_colorLightSkyBlue =
8900346
- HexColor_colorLightSlateGray =
7833753
- HexColor_colorLightSteelBlue =
11584734
- HexColor_colorLightYellow =
16777184
- HexColor_colorLime =
65280
- HexColor_colorLimeGreen =
3329330
- HexColor_colorLinen =
16445670
- HexColor_colorMagenta =
16711935
- HexColor_colorMaroon =
8388608
- HexColor_colorMediumAquaMarine =
6737322
- HexColor_colorMediumBlue =
205
- HexColor_colorMediumOrchid =
12211667
- HexColor_colorMediumPurple =
9662683
- HexColor_colorMediumSeaGreen =
3978097
- HexColor_colorMediumSlateBlue =
8087790
- HexColor_colorMediumSpringGreen =
64154
- HexColor_colorMediumTurquoise =
4772300
- HexColor_colorMediumVioletRed =
13047173
- HexColor_colorMidnightBlue =
1644912
- HexColor_colorMintCream =
16121850
- HexColor_colorMistyRose =
16770273
- HexColor_colorMoccasin =
16770229
16768685
128
- HexColor_colorOldLace =
16643558
- HexColor_colorOlive =
8421376
- HexColor_colorOliveDrab =
7048739
- HexColor_colorOrange =
16753920
- HexColor_colorOrangeRed =
16729344
- HexColor_colorOrchid =
14315734
- HexColor_colorPaleGoldenRod =
15657130
- HexColor_colorPaleGreen =
10025880
- HexColor_colorPaleTurquoise =
11529966
- HexColor_colorPaleVioletRed =
14381203
- HexColor_colorPapayaWhip =
16773077
- HexColor_colorPeachPuff =
16767673
- HexColor_colorPeru =
13468991
- HexColor_colorPink =
16761035
- HexColor_colorPlum =
14524637
- HexColor_colorPowderBlue =
11591910
- HexColor_colorPurple =
8388736
- HexColor_colorRebeccaPurple =
6697881
- HexColor_colorRed =
16711680
- HexColor_colorRosyBrown =
12357519
- HexColor_colorRoyalBlue =
4286945
- HexColor_colorSaddleBrown =
9127187
- HexColor_colorSalmon =
16416882
- HexColor_colorSandyBrown =
16032864
- HexColor_colorSeaGreen =
3050327
- HexColor_colorSeaShell =
16774638
- HexColor_colorSienna =
10506797
- HexColor_colorSilver =
12632256
- HexColor_colorSkyBlue =
8900331
- HexColor_colorSlateBlue =
6970061
- HexColor_colorSlateGray =
7372944
- HexColor_colorSnow =
16775930
- HexColor_colorSpringGreen =
65407
- HexColor_colorSteelBlue =
4620980
- HexColor_colorTan =
13808780
- HexColor_colorTeal =
32896
- HexColor_colorThistle =
14204888
- HexColor_colorTomato =
16737095
- HexColor_colorTurquoise =
4251856
- HexColor_colorViolet =
15631086
- HexColor_colorWheat =
16113331
- HexColor_colorWhite =
16777215
- HexColor_colorWhiteSmoke =
16119285
- HexColor_colorYellow =
16776960
- HexColor_colorYellowGreen =
10145074
- HexColor_colorBox2DRed =
14430514
- HexColor_colorBox2DBlue =
3190463
- HexColor_colorBox2DGreen =
9226532
- HexColor_colorBox2DYellow =
16772748
- NULL_WORLDID =
ID helper
WorldId.new.freeze
- NULL_BODYID =
BodyId.new.freeze
- NULL_SHAPEID =
ShapeId.new.freeze
- NULL_CHAINID =
ChainId.new.freeze
- NULL_JOINTID =
JointId.new.freeze
- VEC2_ZERO =
Math helper
Vec2.new.freeze
- ROT_IDENTITY =
Rot.create_as(1.0, 0.0).freeze
- TRANSFORM_IDENTITY =
Transform.create_as(Vec2.new.freeze, Rot.create_as(1.0, 0.0).freeze).freeze
- MAT22_ZERO =
Mat22.create_as(Vec2.new.freeze, Vec2.new.freeze).freeze
- MAX_POLYGON_VERTICES =
Define/Macro
8
- TOIState_toiStateUnknown =
Enum
0
- TOIState_toiStateFailed =
1
- TOIState_toiStateOverlapped =
2
- TOIState_toiStateHit =
3
- TOIState_toiStateSeparated =
4
- @@box2d_import_done =
false
Class Method Summary collapse
- .id_equals(id1, id2) ⇒ Object
- .id_non_null(id) ⇒ Object
- .id_null(id) ⇒ Object
- .load_lib(libpath, method_naming: :original) ⇒ Object
-
.setup_base_symbols(method_naming: :original) ⇒ Object
Function.
-
.setup_collision_symbols(method_naming: :original) ⇒ Object
Function.
-
.setup_id_inline_symbols(method_naming: :original) ⇒ Object
Function.
-
.setup_id_symbols(method_naming: :original) ⇒ Object
Function.
-
.setup_main_symbols(method_naming: :original) ⇒ Object
Function.
-
.setup_math_functions_symbols(method_naming: :original) ⇒ Object
Function.
-
.setup_math_inline_functions_symbols(method_naming: :original) ⇒ Object
Function.
- .setup_symbols(method_naming: :original) ⇒ Object
-
.setup_types_symbols(method_naming: :original) ⇒ Object
Function.
Class Method Details
.id_equals(id1, id2) ⇒ Object
26 27 28 |
# File 'lib/box2d_helper.rb', line 26 def self.id_equals(id1, id2) id1.index1 == id2.index1 && id1.world0 == id2.world0 && id1.generation == id2.generation end |
.id_non_null(id) ⇒ Object
22 23 24 |
# File 'lib/box2d_helper.rb', line 22 def self.id_non_null(id) id.index1 != 0 end |
.id_null(id) ⇒ Object
18 19 20 |
# File 'lib/box2d_helper.rb', line 18 def self.id_null(id) id.index1 == 0 end |
.load_lib(libpath, method_naming: :original) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/box2d.rb', line 20 def self.load_lib(libpath, method_naming: :original) unless @@box2d_import_done # Ref.: Using Multiple and Alternate Libraries # https://github.com/ffi/ffi/wiki/Using-Multiple-and-Alternate-Libraries begin lib_paths = [libpath].compact ffi_lib_flags :now, :global ffi_lib *lib_paths setup_symbols(method_naming: method_naming) rescue => error $stderr.puts("[Warning] Failed to load libraries (#{error}).") if output_error end end end |
.setup_base_symbols(method_naming: :original) ⇒ Object
Function
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/box2d_base.rb', line 50 def self.setup_base_symbols(method_naming: :original) entries = [ [:SetAllocator, :b2SetAllocator, [:pointer, :pointer], :void], [:GetByteCount, :b2GetByteCount, [], :int], [:SetAssertFcn, :b2SetAssertFcn, [:pointer], :void], [:InternalAssertFcn, :b2InternalAssertFcn, [:pointer, :pointer, :int], :int], [:GetVersion, :b2GetVersion, [], Version.by_value], [:GetTicks, :b2GetTicks, [], :ulong_long], [:GetMilliseconds, :b2GetMilliseconds, [:ulong_long], :float], [:GetMillisecondsAndReset, :b2GetMillisecondsAndReset, [:pointer], :float], [:Yield, :b2Yield, [], :void], [:Hash, :b2Hash, [:uint, :pointer, :int], :uint], ] entries.each do |entry| api_name = if method_naming == :snake_case snake_case_name = entry[0].to_s.gsub(/([A-Z]+)([A-Z0-9][a-z])/, '\1_\2').gsub(/([a-z\d])([A-Z0-9])/, '\1_\2').downcase snake_case_name.gsub!('vector_3', 'vector3_') if snake_case_name.include?('vector_3') snake_case_name.gsub!('vector_2', 'vector2_') if snake_case_name.include?('vector_2') snake_case_name.chop! if snake_case_name.end_with?('_') snake_case_name.to_sym else entry[0] end attach_function api_name, entry[1], entry[2], entry[3] rescue FFI::NotFoundError => e warn "[Warning] Failed to import #{entry[0]} (#{e})." end end |
.setup_collision_symbols(method_naming: :original) ⇒ Object
Function
753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 |
# File 'lib/box2d_collision.rb', line 753 def self.setup_collision_symbols(method_naming: :original) entries = [ [:IsValidRay, :b2IsValidRay, [:pointer], :bool], [:MakePolygon, :b2MakePolygon, [:pointer, :float], Polygon.by_value], [:MakeOffsetPolygon, :b2MakeOffsetPolygon, [:pointer, Vec2.by_value, Rot.by_value], Polygon.by_value], [:MakeOffsetRoundedPolygon, :b2MakeOffsetRoundedPolygon, [:pointer, Vec2.by_value, Rot.by_value, :float], Polygon.by_value], [:MakeSquare, :b2MakeSquare, [:float], Polygon.by_value], [:MakeBox, :b2MakeBox, [:float, :float], Polygon.by_value], [:MakeRoundedBox, :b2MakeRoundedBox, [:float, :float, :float], Polygon.by_value], [:MakeOffsetBox, :b2MakeOffsetBox, [:float, :float, Vec2.by_value, Rot.by_value], Polygon.by_value], [:MakeOffsetRoundedBox, :b2MakeOffsetRoundedBox, [:float, :float, Vec2.by_value, Rot.by_value, :float], Polygon.by_value], [:TransformPolygon, :b2TransformPolygon, [Transform.by_value, :pointer], Polygon.by_value], [:ComputeCircleMass, :b2ComputeCircleMass, [:pointer, :float], MassData.by_value], [:ComputeCapsuleMass, :b2ComputeCapsuleMass, [:pointer, :float], MassData.by_value], [:ComputePolygonMass, :b2ComputePolygonMass, [:pointer, :float], MassData.by_value], [:ComputeCircleAABB, :b2ComputeCircleAABB, [:pointer, Transform.by_value], AABB.by_value], [:ComputeCapsuleAABB, :b2ComputeCapsuleAABB, [:pointer, Transform.by_value], AABB.by_value], [:ComputePolygonAABB, :b2ComputePolygonAABB, [:pointer, Transform.by_value], AABB.by_value], [:ComputeSegmentAABB, :b2ComputeSegmentAABB, [:pointer, Transform.by_value], AABB.by_value], [:PointInCircle, :b2PointInCircle, [Vec2.by_value, :pointer], :bool], [:PointInCapsule, :b2PointInCapsule, [Vec2.by_value, :pointer], :bool], [:PointInPolygon, :b2PointInPolygon, [Vec2.by_value, :pointer], :bool], [:RayCastCircle, :b2RayCastCircle, [:pointer, :pointer], CastOutput.by_value], [:RayCastCapsule, :b2RayCastCapsule, [:pointer, :pointer], CastOutput.by_value], [:RayCastSegment, :b2RayCastSegment, [:pointer, :pointer, :bool], CastOutput.by_value], [:RayCastPolygon, :b2RayCastPolygon, [:pointer, :pointer], CastOutput.by_value], [:ShapeCastCircle, :b2ShapeCastCircle, [:pointer, :pointer], CastOutput.by_value], [:ShapeCastCapsule, :b2ShapeCastCapsule, [:pointer, :pointer], CastOutput.by_value], [:ShapeCastSegment, :b2ShapeCastSegment, [:pointer, :pointer], CastOutput.by_value], [:ShapeCastPolygon, :b2ShapeCastPolygon, [:pointer, :pointer], CastOutput.by_value], [:ComputeHull, :b2ComputeHull, [:pointer, :int], Hull.by_value], [:ValidateHull, :b2ValidateHull, [:pointer], :bool], [:SegmentDistance, :b2SegmentDistance, [Vec2.by_value, Vec2.by_value, Vec2.by_value, Vec2.by_value], SegmentDistanceResult.by_value], [:ShapeDistance, :b2ShapeDistance, [:pointer, :pointer, :pointer, :int], DistanceOutput.by_value], [:ShapeCast, :b2ShapeCast, [:pointer], CastOutput.by_value], [:MakeProxy, :b2MakeProxy, [:pointer, :int, :float], ShapeProxy.by_value], [:GetSweepTransform, :b2GetSweepTransform, [:pointer, :float], Transform.by_value], [:TimeOfImpact, :b2TimeOfImpact, [:pointer], TOIOutput.by_value], [:CollideCircles, :b2CollideCircles, [:pointer, Transform.by_value, :pointer, Transform.by_value], Manifold.by_value], [:CollideCapsuleAndCircle, :b2CollideCapsuleAndCircle, [:pointer, Transform.by_value, :pointer, Transform.by_value], Manifold.by_value], [:CollideSegmentAndCircle, :b2CollideSegmentAndCircle, [:pointer, Transform.by_value, :pointer, Transform.by_value], Manifold.by_value], [:CollidePolygonAndCircle, :b2CollidePolygonAndCircle, [:pointer, Transform.by_value, :pointer, Transform.by_value], Manifold.by_value], [:CollideCapsules, :b2CollideCapsules, [:pointer, Transform.by_value, :pointer, Transform.by_value], Manifold.by_value], [:CollideSegmentAndCapsule, :b2CollideSegmentAndCapsule, [:pointer, Transform.by_value, :pointer, Transform.by_value], Manifold.by_value], [:CollidePolygonAndCapsule, :b2CollidePolygonAndCapsule, [:pointer, Transform.by_value, :pointer, Transform.by_value], Manifold.by_value], [:CollidePolygons, :b2CollidePolygons, [:pointer, Transform.by_value, :pointer, Transform.by_value], Manifold.by_value], [:CollideSegmentAndPolygon, :b2CollideSegmentAndPolygon, [:pointer, Transform.by_value, :pointer, Transform.by_value], Manifold.by_value], [:CollideChainSegmentAndCircle, :b2CollideChainSegmentAndCircle, [:pointer, Transform.by_value, :pointer, Transform.by_value], Manifold.by_value], [:CollideChainSegmentAndCapsule, :b2CollideChainSegmentAndCapsule, [:pointer, Transform.by_value, :pointer, Transform.by_value, :pointer], Manifold.by_value], [:CollideChainSegmentAndPolygon, :b2CollideChainSegmentAndPolygon, [:pointer, Transform.by_value, :pointer, Transform.by_value, :pointer], Manifold.by_value], [:DynamicTree_Create, :b2DynamicTree_Create, [], DynamicTree.by_value], [:DynamicTree_Destroy, :b2DynamicTree_Destroy, [:pointer], :void], [:DynamicTree_CreateProxy, :b2DynamicTree_CreateProxy, [:pointer, AABB.by_value, :ulong_long, :int], :int], [:DynamicTree_DestroyProxy, :b2DynamicTree_DestroyProxy, [:pointer, :int], :void], [:DynamicTree_MoveProxy, :b2DynamicTree_MoveProxy, [:pointer, :int, AABB.by_value], :void], [:DynamicTree_EnlargeProxy, :b2DynamicTree_EnlargeProxy, [:pointer, :int, AABB.by_value], :void], [:DynamicTree_Query, :b2DynamicTree_Query, [:pointer, AABB.by_value, :ulong_long, :pointer, :pointer], TreeStats.by_value], [:DynamicTree_RayCast, :b2DynamicTree_RayCast, [:pointer, :pointer, :ulong_long, :pointer, :pointer], TreeStats.by_value], [:DynamicTree_ShapeCast, :b2DynamicTree_ShapeCast, [:pointer, :pointer, :ulong_long, :pointer, :pointer], TreeStats.by_value], [:DynamicTree_GetHeight, :b2DynamicTree_GetHeight, [:pointer], :int], [:DynamicTree_GetAreaRatio, :b2DynamicTree_GetAreaRatio, [:pointer], :float], [:DynamicTree_GetProxyCount, :b2DynamicTree_GetProxyCount, [:pointer], :int], [:DynamicTree_Rebuild, :b2DynamicTree_Rebuild, [:pointer, :bool], :int], [:DynamicTree_GetByteCount, :b2DynamicTree_GetByteCount, [:pointer], :int], [:DynamicTree_GetUserData, :b2DynamicTree_GetUserData, [:pointer, :int], :int], [:DynamicTree_GetAABB, :b2DynamicTree_GetAABB, [:pointer, :int], AABB.by_value], [:DynamicTree_Validate, :b2DynamicTree_Validate, [:pointer], :void], [:DynamicTree_ValidateNoEnlarged, :b2DynamicTree_ValidateNoEnlarged, [:pointer], :void], ] entries.each do |entry| api_name = if method_naming == :snake_case snake_case_name = entry[0].to_s.gsub(/([A-Z]+)([A-Z0-9][a-z])/, '\1_\2').gsub(/([a-z\d])([A-Z0-9])/, '\1_\2').downcase snake_case_name.gsub!('vector_3', 'vector3_') if snake_case_name.include?('vector_3') snake_case_name.gsub!('vector_2', 'vector2_') if snake_case_name.include?('vector_2') snake_case_name.chop! if snake_case_name.end_with?('_') snake_case_name.to_sym else entry[0] end attach_function api_name, entry[1], entry[2], entry[3] rescue FFI::NotFoundError => e warn "[Warning] Failed to import #{entry[0]} (#{e})." end end |
.setup_id_inline_symbols(method_naming: :original) ⇒ Object
Function
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/box2d_id_inline.rb', line 25 def self.setup_id_inline_symbols(method_naming: :original) entries = [ [:StoreBodyId, :b2StoreBodyId, [BodyId.by_value], :ulong_long], [:LoadBodyId, :b2LoadBodyId, [:ulong_long], BodyId.by_value], [:StoreShapeId, :b2StoreShapeId, [ShapeId.by_value], :ulong_long], [:LoadShapeId, :b2LoadShapeId, [:ulong_long], ShapeId.by_value], [:StoreChainId, :b2StoreChainId, [ChainId.by_value], :ulong_long], [:LoadChainId, :b2LoadChainId, [:ulong_long], ChainId.by_value], [:StoreJointId, :b2StoreJointId, [JointId.by_value], :ulong_long], [:LoadJointId, :b2LoadJointId, [:ulong_long], JointId.by_value], ] entries.each do |entry| api_name = if method_naming == :snake_case snake_case_name = entry[0].to_s.gsub(/([A-Z]+)([A-Z0-9][a-z])/, '\1_\2').gsub(/([a-z\d])([A-Z0-9])/, '\1_\2').downcase snake_case_name.gsub!('vector_3', 'vector3_') if snake_case_name.include?('vector_3') snake_case_name.gsub!('vector_2', 'vector2_') if snake_case_name.include?('vector_2') snake_case_name.chop! if snake_case_name.end_with?('_') snake_case_name.to_sym else entry[0] end attach_function api_name, entry[1], entry[2], entry[3] rescue FFI::NotFoundError => e warn "[Warning] Failed to import #{entry[0]} (#{e})." end end |
.setup_id_symbols(method_naming: :original) ⇒ Object
Function
126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'lib/box2d_id.rb', line 126 def self.setup_id_symbols(method_naming: :original) entries = [ ] entries.each do |entry| api_name = if method_naming == :snake_case snake_case_name = entry[0].to_s.gsub(/([A-Z]+)([A-Z0-9][a-z])/, '\1_\2').gsub(/([a-z\d])([A-Z0-9])/, '\1_\2').downcase snake_case_name.gsub!('vector_3', 'vector3_') if snake_case_name.include?('vector_3') snake_case_name.gsub!('vector_2', 'vector2_') if snake_case_name.include?('vector_2') snake_case_name.chop! if snake_case_name.end_with?('_') snake_case_name.to_sym else entry[0] end attach_function api_name, entry[1], entry[2], entry[3] rescue FFI::NotFoundError => e warn "[Warning] Failed to import #{entry[0]} (#{e})." end end |
.setup_main_symbols(method_naming: :original) ⇒ Object
Function
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 |
# File 'lib/box2d_main.rb', line 25 def self.setup_main_symbols(method_naming: :original) entries = [ [:CreateWorld, :b2CreateWorld, [:pointer], WorldId.by_value], [:DestroyWorld, :b2DestroyWorld, [WorldId.by_value], :void], [:World_IsValid, :b2World_IsValid, [WorldId.by_value], :bool], [:World_Step, :b2World_Step, [WorldId.by_value, :float, :int], :void], [:World_Draw, :b2World_Draw, [WorldId.by_value, :pointer], :void], [:World_GetBodyEvents, :b2World_GetBodyEvents, [WorldId.by_value], BodyEvents.by_value], [:World_GetSensorEvents, :b2World_GetSensorEvents, [WorldId.by_value], SensorEvents.by_value], [:World_GetContactEvents, :b2World_GetContactEvents, [WorldId.by_value], ContactEvents.by_value], [:World_OverlapAABB, :b2World_OverlapAABB, [WorldId.by_value, AABB.by_value, QueryFilter.by_value, :pointer, :pointer], TreeStats.by_value], [:World_OverlapPoint, :b2World_OverlapPoint, [WorldId.by_value, Vec2.by_value, Transform.by_value, QueryFilter.by_value, :pointer, :pointer], TreeStats.by_value], [:World_OverlapCircle, :b2World_OverlapCircle, [WorldId.by_value, :pointer, Transform.by_value, QueryFilter.by_value, :pointer, :pointer], TreeStats.by_value], [:World_OverlapCapsule, :b2World_OverlapCapsule, [WorldId.by_value, :pointer, Transform.by_value, QueryFilter.by_value, :pointer, :pointer], TreeStats.by_value], [:World_OverlapPolygon, :b2World_OverlapPolygon, [WorldId.by_value, :pointer, Transform.by_value, QueryFilter.by_value, :pointer, :pointer], TreeStats.by_value], [:World_CastRay, :b2World_CastRay, [WorldId.by_value, Vec2.by_value, Vec2.by_value, QueryFilter.by_value, :pointer, :pointer], TreeStats.by_value], [:World_CastRayClosest, :b2World_CastRayClosest, [WorldId.by_value, Vec2.by_value, Vec2.by_value, QueryFilter.by_value], RayResult.by_value], [:World_CastCircle, :b2World_CastCircle, [WorldId.by_value, :pointer, Transform.by_value, Vec2.by_value, QueryFilter.by_value, :pointer, :pointer], TreeStats.by_value], [:World_CastCapsule, :b2World_CastCapsule, [WorldId.by_value, :pointer, Transform.by_value, Vec2.by_value, QueryFilter.by_value, :pointer, :pointer], TreeStats.by_value], [:World_CastPolygon, :b2World_CastPolygon, [WorldId.by_value, :pointer, Transform.by_value, Vec2.by_value, QueryFilter.by_value, :pointer, :pointer], TreeStats.by_value], [:World_EnableSleeping, :b2World_EnableSleeping, [WorldId.by_value, :bool], :void], [:World_IsSleepingEnabled, :b2World_IsSleepingEnabled, [WorldId.by_value], :bool], [:World_EnableContinuous, :b2World_EnableContinuous, [WorldId.by_value, :bool], :void], [:World_IsContinuousEnabled, :b2World_IsContinuousEnabled, [WorldId.by_value], :bool], [:World_SetRestitutionThreshold, :b2World_SetRestitutionThreshold, [WorldId.by_value, :float], :void], [:World_GetRestitutionThreshold, :b2World_GetRestitutionThreshold, [WorldId.by_value], :float], [:World_SetHitEventThreshold, :b2World_SetHitEventThreshold, [WorldId.by_value, :float], :void], [:World_GetHitEventThreshold, :b2World_GetHitEventThreshold, [WorldId.by_value], :float], [:World_SetCustomFilterCallback, :b2World_SetCustomFilterCallback, [WorldId.by_value, :pointer, :pointer], :void], [:World_SetPreSolveCallback, :b2World_SetPreSolveCallback, [WorldId.by_value, :pointer, :pointer], :void], [:World_SetGravity, :b2World_SetGravity, [WorldId.by_value, Vec2.by_value], :void], [:World_GetGravity, :b2World_GetGravity, [WorldId.by_value], Vec2.by_value], [:World_Explode, :b2World_Explode, [WorldId.by_value, :pointer], :void], [:World_SetContactTuning, :b2World_SetContactTuning, [WorldId.by_value, :float, :float, :float], :void], [:World_SetJointTuning, :b2World_SetJointTuning, [WorldId.by_value, :float, :float], :void], [:World_SetMaximumLinearSpeed, :b2World_SetMaximumLinearSpeed, [WorldId.by_value, :float], :void], [:World_GetMaximumLinearSpeed, :b2World_GetMaximumLinearSpeed, [WorldId.by_value], :float], [:World_EnableWarmStarting, :b2World_EnableWarmStarting, [WorldId.by_value, :bool], :void], [:World_IsWarmStartingEnabled, :b2World_IsWarmStartingEnabled, [WorldId.by_value], :bool], [:World_GetAwakeBodyCount, :b2World_GetAwakeBodyCount, [WorldId.by_value], :int], [:World_GetProfile, :b2World_GetProfile, [WorldId.by_value], Profile.by_value], [:World_GetCounters, :b2World_GetCounters, [WorldId.by_value], Counters.by_value], [:World_SetUserData, :b2World_SetUserData, [WorldId.by_value, :pointer], :void], [:World_GetUserData, :b2World_GetUserData, [WorldId.by_value], :pointer], [:World_SetFrictionCallback, :b2World_SetFrictionCallback, [WorldId.by_value, :pointer], :void], [:World_SetRestitutionCallback, :b2World_SetRestitutionCallback, [WorldId.by_value, :pointer], :void], [:World_DumpMemoryStats, :b2World_DumpMemoryStats, [WorldId.by_value], :void], [:World_RebuildStaticTree, :b2World_RebuildStaticTree, [WorldId.by_value], :void], [:World_EnableSpeculative, :b2World_EnableSpeculative, [WorldId.by_value, :bool], :void], [:CreateBody, :b2CreateBody, [WorldId.by_value, :pointer], BodyId.by_value], [:DestroyBody, :b2DestroyBody, [BodyId.by_value], :void], [:Body_IsValid, :b2Body_IsValid, [BodyId.by_value], :bool], [:Body_GetType, :b2Body_GetType, [BodyId.by_value], :int], [:Body_SetType, :b2Body_SetType, [BodyId.by_value, :int], :void], [:Body_SetName, :b2Body_SetName, [BodyId.by_value, :pointer], :void], [:Body_GetName, :b2Body_GetName, [BodyId.by_value], :pointer], [:Body_SetUserData, :b2Body_SetUserData, [BodyId.by_value, :pointer], :void], [:Body_GetUserData, :b2Body_GetUserData, [BodyId.by_value], :pointer], [:Body_GetPosition, :b2Body_GetPosition, [BodyId.by_value], Vec2.by_value], [:Body_GetRotation, :b2Body_GetRotation, [BodyId.by_value], Rot.by_value], [:Body_GetTransform, :b2Body_GetTransform, [BodyId.by_value], Transform.by_value], [:Body_SetTransform, :b2Body_SetTransform, [BodyId.by_value, Vec2.by_value, Rot.by_value], :void], [:Body_GetLocalPoint, :b2Body_GetLocalPoint, [BodyId.by_value, Vec2.by_value], Vec2.by_value], [:Body_GetWorldPoint, :b2Body_GetWorldPoint, [BodyId.by_value, Vec2.by_value], Vec2.by_value], [:Body_GetLocalVector, :b2Body_GetLocalVector, [BodyId.by_value, Vec2.by_value], Vec2.by_value], [:Body_GetWorldVector, :b2Body_GetWorldVector, [BodyId.by_value, Vec2.by_value], Vec2.by_value], [:Body_GetLinearVelocity, :b2Body_GetLinearVelocity, [BodyId.by_value], Vec2.by_value], [:Body_GetAngularVelocity, :b2Body_GetAngularVelocity, [BodyId.by_value], :float], [:Body_SetLinearVelocity, :b2Body_SetLinearVelocity, [BodyId.by_value, Vec2.by_value], :void], [:Body_SetAngularVelocity, :b2Body_SetAngularVelocity, [BodyId.by_value, :float], :void], [:Body_GetLocalPointVelocity, :b2Body_GetLocalPointVelocity, [BodyId.by_value, Vec2.by_value], Vec2.by_value], [:Body_GetWorldPointVelocity, :b2Body_GetWorldPointVelocity, [BodyId.by_value, Vec2.by_value], Vec2.by_value], [:Body_ApplyForce, :b2Body_ApplyForce, [BodyId.by_value, Vec2.by_value, Vec2.by_value, :bool], :void], [:Body_ApplyForceToCenter, :b2Body_ApplyForceToCenter, [BodyId.by_value, Vec2.by_value, :bool], :void], [:Body_ApplyTorque, :b2Body_ApplyTorque, [BodyId.by_value, :float, :bool], :void], [:Body_ApplyLinearImpulse, :b2Body_ApplyLinearImpulse, [BodyId.by_value, Vec2.by_value, Vec2.by_value, :bool], :void], [:Body_ApplyLinearImpulseToCenter, :b2Body_ApplyLinearImpulseToCenter, [BodyId.by_value, Vec2.by_value, :bool], :void], [:Body_ApplyAngularImpulse, :b2Body_ApplyAngularImpulse, [BodyId.by_value, :float, :bool], :void], [:Body_GetMass, :b2Body_GetMass, [BodyId.by_value], :float], [:Body_GetRotationalInertia, :b2Body_GetRotationalInertia, [BodyId.by_value], :float], [:Body_GetLocalCenterOfMass, :b2Body_GetLocalCenterOfMass, [BodyId.by_value], Vec2.by_value], [:Body_GetWorldCenterOfMass, :b2Body_GetWorldCenterOfMass, [BodyId.by_value], Vec2.by_value], [:Body_SetMassData, :b2Body_SetMassData, [BodyId.by_value, MassData.by_value], :void], [:Body_GetMassData, :b2Body_GetMassData, [BodyId.by_value], MassData.by_value], [:Body_ApplyMassFromShapes, :b2Body_ApplyMassFromShapes, [BodyId.by_value], :void], [:Body_SetLinearDamping, :b2Body_SetLinearDamping, [BodyId.by_value, :float], :void], [:Body_GetLinearDamping, :b2Body_GetLinearDamping, [BodyId.by_value], :float], [:Body_SetAngularDamping, :b2Body_SetAngularDamping, [BodyId.by_value, :float], :void], [:Body_GetAngularDamping, :b2Body_GetAngularDamping, [BodyId.by_value], :float], [:Body_SetGravityScale, :b2Body_SetGravityScale, [BodyId.by_value, :float], :void], [:Body_GetGravityScale, :b2Body_GetGravityScale, [BodyId.by_value], :float], [:Body_IsAwake, :b2Body_IsAwake, [BodyId.by_value], :bool], [:Body_SetAwake, :b2Body_SetAwake, [BodyId.by_value, :bool], :void], [:Body_EnableSleep, :b2Body_EnableSleep, [BodyId.by_value, :bool], :void], [:Body_IsSleepEnabled, :b2Body_IsSleepEnabled, [BodyId.by_value], :bool], [:Body_SetSleepThreshold, :b2Body_SetSleepThreshold, [BodyId.by_value, :float], :void], [:Body_GetSleepThreshold, :b2Body_GetSleepThreshold, [BodyId.by_value], :float], [:Body_IsEnabled, :b2Body_IsEnabled, [BodyId.by_value], :bool], [:Body_Disable, :b2Body_Disable, [BodyId.by_value], :void], [:Body_Enable, :b2Body_Enable, [BodyId.by_value], :void], [:Body_SetFixedRotation, :b2Body_SetFixedRotation, [BodyId.by_value, :bool], :void], [:Body_IsFixedRotation, :b2Body_IsFixedRotation, [BodyId.by_value], :bool], [:Body_SetBullet, :b2Body_SetBullet, [BodyId.by_value, :bool], :void], [:Body_IsBullet, :b2Body_IsBullet, [BodyId.by_value], :bool], [:Body_EnableContactEvents, :b2Body_EnableContactEvents, [BodyId.by_value, :bool], :void], [:Body_EnableHitEvents, :b2Body_EnableHitEvents, [BodyId.by_value, :bool], :void], [:Body_GetWorld, :b2Body_GetWorld, [BodyId.by_value], WorldId.by_value], [:Body_GetShapeCount, :b2Body_GetShapeCount, [BodyId.by_value], :int], [:Body_GetShapes, :b2Body_GetShapes, [BodyId.by_value, :pointer, :int], :int], [:Body_GetJointCount, :b2Body_GetJointCount, [BodyId.by_value], :int], [:Body_GetJoints, :b2Body_GetJoints, [BodyId.by_value, :pointer, :int], :int], [:Body_GetContactCapacity, :b2Body_GetContactCapacity, [BodyId.by_value], :int], [:Body_GetContactData, :b2Body_GetContactData, [BodyId.by_value, :pointer, :int], :int], [:Body_ComputeAABB, :b2Body_ComputeAABB, [BodyId.by_value], AABB.by_value], [:CreateCircleShape, :b2CreateCircleShape, [BodyId.by_value, :pointer, :pointer], ShapeId.by_value], [:CreateSegmentShape, :b2CreateSegmentShape, [BodyId.by_value, :pointer, :pointer], ShapeId.by_value], [:CreateCapsuleShape, :b2CreateCapsuleShape, [BodyId.by_value, :pointer, :pointer], ShapeId.by_value], [:CreatePolygonShape, :b2CreatePolygonShape, [BodyId.by_value, :pointer, :pointer], ShapeId.by_value], [:DestroyShape, :b2DestroyShape, [ShapeId.by_value, :bool], :void], [:Shape_IsValid, :b2Shape_IsValid, [ShapeId.by_value], :bool], [:Shape_GetType, :b2Shape_GetType, [ShapeId.by_value], :int], [:Shape_GetBody, :b2Shape_GetBody, [ShapeId.by_value], BodyId.by_value], [:Shape_GetWorld, :b2Shape_GetWorld, [ShapeId.by_value], WorldId.by_value], [:Shape_IsSensor, :b2Shape_IsSensor, [ShapeId.by_value], :bool], [:Shape_SetUserData, :b2Shape_SetUserData, [ShapeId.by_value, :pointer], :void], [:Shape_GetUserData, :b2Shape_GetUserData, [ShapeId.by_value], :pointer], [:Shape_SetDensity, :b2Shape_SetDensity, [ShapeId.by_value, :float, :bool], :void], [:Shape_GetDensity, :b2Shape_GetDensity, [ShapeId.by_value], :float], [:Shape_SetFriction, :b2Shape_SetFriction, [ShapeId.by_value, :float], :void], [:Shape_GetFriction, :b2Shape_GetFriction, [ShapeId.by_value], :float], [:Shape_SetRestitution, :b2Shape_SetRestitution, [ShapeId.by_value, :float], :void], [:Shape_GetRestitution, :b2Shape_GetRestitution, [ShapeId.by_value], :float], [:Shape_SetMaterial, :b2Shape_SetMaterial, [ShapeId.by_value, :int], :void], [:Shape_GetMaterial, :b2Shape_GetMaterial, [ShapeId.by_value], :int], [:Shape_GetFilter, :b2Shape_GetFilter, [ShapeId.by_value], Filter.by_value], [:Shape_SetFilter, :b2Shape_SetFilter, [ShapeId.by_value, Filter.by_value], :void], [:Shape_EnableContactEvents, :b2Shape_EnableContactEvents, [ShapeId.by_value, :bool], :void], [:Shape_AreContactEventsEnabled, :b2Shape_AreContactEventsEnabled, [ShapeId.by_value], :bool], [:Shape_EnablePreSolveEvents, :b2Shape_EnablePreSolveEvents, [ShapeId.by_value, :bool], :void], [:Shape_ArePreSolveEventsEnabled, :b2Shape_ArePreSolveEventsEnabled, [ShapeId.by_value], :bool], [:Shape_EnableHitEvents, :b2Shape_EnableHitEvents, [ShapeId.by_value, :bool], :void], [:Shape_AreHitEventsEnabled, :b2Shape_AreHitEventsEnabled, [ShapeId.by_value], :bool], [:Shape_TestPoint, :b2Shape_TestPoint, [ShapeId.by_value, Vec2.by_value], :bool], [:Shape_RayCast, :b2Shape_RayCast, [ShapeId.by_value, :pointer], CastOutput.by_value], [:Shape_GetCircle, :b2Shape_GetCircle, [ShapeId.by_value], Circle.by_value], [:Shape_GetSegment, :b2Shape_GetSegment, [ShapeId.by_value], Segment.by_value], [:Shape_GetChainSegment, :b2Shape_GetChainSegment, [ShapeId.by_value], ChainSegment.by_value], [:Shape_GetCapsule, :b2Shape_GetCapsule, [ShapeId.by_value], Capsule.by_value], [:Shape_GetPolygon, :b2Shape_GetPolygon, [ShapeId.by_value], Polygon.by_value], [:Shape_SetCircle, :b2Shape_SetCircle, [ShapeId.by_value, :pointer], :void], [:Shape_SetCapsule, :b2Shape_SetCapsule, [ShapeId.by_value, :pointer], :void], [:Shape_SetSegment, :b2Shape_SetSegment, [ShapeId.by_value, :pointer], :void], [:Shape_SetPolygon, :b2Shape_SetPolygon, [ShapeId.by_value, :pointer], :void], [:Shape_GetParentChain, :b2Shape_GetParentChain, [ShapeId.by_value], ChainId.by_value], [:Shape_GetContactCapacity, :b2Shape_GetContactCapacity, [ShapeId.by_value], :int], [:Shape_GetContactData, :b2Shape_GetContactData, [ShapeId.by_value, :pointer, :int], :int], [:Shape_GetSensorCapacity, :b2Shape_GetSensorCapacity, [ShapeId.by_value], :int], [:Shape_GetSensorOverlaps, :b2Shape_GetSensorOverlaps, [ShapeId.by_value, :pointer, :int], :int], [:Shape_GetAABB, :b2Shape_GetAABB, [ShapeId.by_value], AABB.by_value], [:Shape_GetMassData, :b2Shape_GetMassData, [ShapeId.by_value], MassData.by_value], [:Shape_GetClosestPoint, :b2Shape_GetClosestPoint, [ShapeId.by_value, Vec2.by_value], Vec2.by_value], [:CreateChain, :b2CreateChain, [BodyId.by_value, :pointer], ChainId.by_value], [:DestroyChain, :b2DestroyChain, [ChainId.by_value], :void], [:Chain_GetWorld, :b2Chain_GetWorld, [ChainId.by_value], WorldId.by_value], [:Chain_GetSegmentCount, :b2Chain_GetSegmentCount, [ChainId.by_value], :int], [:Chain_GetSegments, :b2Chain_GetSegments, [ChainId.by_value, :pointer, :int], :int], [:Chain_SetFriction, :b2Chain_SetFriction, [ChainId.by_value, :float], :void], [:Chain_GetFriction, :b2Chain_GetFriction, [ChainId.by_value], :float], [:Chain_SetRestitution, :b2Chain_SetRestitution, [ChainId.by_value, :float], :void], [:Chain_GetRestitution, :b2Chain_GetRestitution, [ChainId.by_value], :float], [:Chain_SetMaterial, :b2Chain_SetMaterial, [ChainId.by_value, :int], :void], [:Chain_GetMaterial, :b2Chain_GetMaterial, [ChainId.by_value], :int], [:Chain_IsValid, :b2Chain_IsValid, [ChainId.by_value], :bool], [:DestroyJoint, :b2DestroyJoint, [JointId.by_value], :void], [:Joint_IsValid, :b2Joint_IsValid, [JointId.by_value], :bool], [:Joint_GetType, :b2Joint_GetType, [JointId.by_value], :int], [:Joint_GetBodyA, :b2Joint_GetBodyA, [JointId.by_value], BodyId.by_value], [:Joint_GetBodyB, :b2Joint_GetBodyB, [JointId.by_value], BodyId.by_value], [:Joint_GetWorld, :b2Joint_GetWorld, [JointId.by_value], WorldId.by_value], [:Joint_GetLocalAnchorA, :b2Joint_GetLocalAnchorA, [JointId.by_value], Vec2.by_value], [:Joint_GetLocalAnchorB, :b2Joint_GetLocalAnchorB, [JointId.by_value], Vec2.by_value], [:Joint_SetCollideConnected, :b2Joint_SetCollideConnected, [JointId.by_value, :bool], :void], [:Joint_GetCollideConnected, :b2Joint_GetCollideConnected, [JointId.by_value], :bool], [:Joint_SetUserData, :b2Joint_SetUserData, [JointId.by_value, :pointer], :void], [:Joint_GetUserData, :b2Joint_GetUserData, [JointId.by_value], :pointer], [:Joint_WakeBodies, :b2Joint_WakeBodies, [JointId.by_value], :void], [:Joint_GetConstraintForce, :b2Joint_GetConstraintForce, [JointId.by_value], Vec2.by_value], [:Joint_GetConstraintTorque, :b2Joint_GetConstraintTorque, [JointId.by_value], :float], [:CreateDistanceJoint, :b2CreateDistanceJoint, [WorldId.by_value, :pointer], JointId.by_value], [:DistanceJoint_SetLength, :b2DistanceJoint_SetLength, [JointId.by_value, :float], :void], [:DistanceJoint_GetLength, :b2DistanceJoint_GetLength, [JointId.by_value], :float], [:DistanceJoint_EnableSpring, :b2DistanceJoint_EnableSpring, [JointId.by_value, :bool], :void], [:DistanceJoint_IsSpringEnabled, :b2DistanceJoint_IsSpringEnabled, [JointId.by_value], :bool], [:DistanceJoint_SetSpringHertz, :b2DistanceJoint_SetSpringHertz, [JointId.by_value, :float], :void], [:DistanceJoint_SetSpringDampingRatio, :b2DistanceJoint_SetSpringDampingRatio, [JointId.by_value, :float], :void], [:DistanceJoint_GetSpringHertz, :b2DistanceJoint_GetSpringHertz, [JointId.by_value], :float], [:DistanceJoint_GetSpringDampingRatio, :b2DistanceJoint_GetSpringDampingRatio, [JointId.by_value], :float], [:DistanceJoint_EnableLimit, :b2DistanceJoint_EnableLimit, [JointId.by_value, :bool], :void], [:DistanceJoint_IsLimitEnabled, :b2DistanceJoint_IsLimitEnabled, [JointId.by_value], :bool], [:DistanceJoint_SetLengthRange, :b2DistanceJoint_SetLengthRange, [JointId.by_value, :float, :float], :void], [:DistanceJoint_GetMinLength, :b2DistanceJoint_GetMinLength, [JointId.by_value], :float], [:DistanceJoint_GetMaxLength, :b2DistanceJoint_GetMaxLength, [JointId.by_value], :float], [:DistanceJoint_GetCurrentLength, :b2DistanceJoint_GetCurrentLength, [JointId.by_value], :float], [:DistanceJoint_EnableMotor, :b2DistanceJoint_EnableMotor, [JointId.by_value, :bool], :void], [:DistanceJoint_IsMotorEnabled, :b2DistanceJoint_IsMotorEnabled, [JointId.by_value], :bool], [:DistanceJoint_SetMotorSpeed, :b2DistanceJoint_SetMotorSpeed, [JointId.by_value, :float], :void], [:DistanceJoint_GetMotorSpeed, :b2DistanceJoint_GetMotorSpeed, [JointId.by_value], :float], [:DistanceJoint_SetMaxMotorForce, :b2DistanceJoint_SetMaxMotorForce, [JointId.by_value, :float], :void], [:DistanceJoint_GetMaxMotorForce, :b2DistanceJoint_GetMaxMotorForce, [JointId.by_value], :float], [:DistanceJoint_GetMotorForce, :b2DistanceJoint_GetMotorForce, [JointId.by_value], :float], [:CreateMotorJoint, :b2CreateMotorJoint, [WorldId.by_value, :pointer], JointId.by_value], [:MotorJoint_SetLinearOffset, :b2MotorJoint_SetLinearOffset, [JointId.by_value, Vec2.by_value], :void], [:MotorJoint_GetLinearOffset, :b2MotorJoint_GetLinearOffset, [JointId.by_value], Vec2.by_value], [:MotorJoint_SetAngularOffset, :b2MotorJoint_SetAngularOffset, [JointId.by_value, :float], :void], [:MotorJoint_GetAngularOffset, :b2MotorJoint_GetAngularOffset, [JointId.by_value], :float], [:MotorJoint_SetMaxForce, :b2MotorJoint_SetMaxForce, [JointId.by_value, :float], :void], [:MotorJoint_GetMaxForce, :b2MotorJoint_GetMaxForce, [JointId.by_value], :float], [:MotorJoint_SetMaxTorque, :b2MotorJoint_SetMaxTorque, [JointId.by_value, :float], :void], [:MotorJoint_GetMaxTorque, :b2MotorJoint_GetMaxTorque, [JointId.by_value], :float], [:MotorJoint_SetCorrectionFactor, :b2MotorJoint_SetCorrectionFactor, [JointId.by_value, :float], :void], [:MotorJoint_GetCorrectionFactor, :b2MotorJoint_GetCorrectionFactor, [JointId.by_value], :float], [:CreateMouseJoint, :b2CreateMouseJoint, [WorldId.by_value, :pointer], JointId.by_value], [:MouseJoint_SetTarget, :b2MouseJoint_SetTarget, [JointId.by_value, Vec2.by_value], :void], [:MouseJoint_GetTarget, :b2MouseJoint_GetTarget, [JointId.by_value], Vec2.by_value], [:MouseJoint_SetSpringHertz, :b2MouseJoint_SetSpringHertz, [JointId.by_value, :float], :void], [:MouseJoint_GetSpringHertz, :b2MouseJoint_GetSpringHertz, [JointId.by_value], :float], [:MouseJoint_SetSpringDampingRatio, :b2MouseJoint_SetSpringDampingRatio, [JointId.by_value, :float], :void], [:MouseJoint_GetSpringDampingRatio, :b2MouseJoint_GetSpringDampingRatio, [JointId.by_value], :float], [:MouseJoint_SetMaxForce, :b2MouseJoint_SetMaxForce, [JointId.by_value, :float], :void], [:MouseJoint_GetMaxForce, :b2MouseJoint_GetMaxForce, [JointId.by_value], :float], [:CreateNullJoint, :b2CreateNullJoint, [WorldId.by_value, :pointer], JointId.by_value], [:CreatePrismaticJoint, :b2CreatePrismaticJoint, [WorldId.by_value, :pointer], JointId.by_value], [:PrismaticJoint_EnableSpring, :b2PrismaticJoint_EnableSpring, [JointId.by_value, :bool], :void], [:PrismaticJoint_IsSpringEnabled, :b2PrismaticJoint_IsSpringEnabled, [JointId.by_value], :bool], [:PrismaticJoint_SetSpringHertz, :b2PrismaticJoint_SetSpringHertz, [JointId.by_value, :float], :void], [:PrismaticJoint_GetSpringHertz, :b2PrismaticJoint_GetSpringHertz, [JointId.by_value], :float], [:PrismaticJoint_SetSpringDampingRatio, :b2PrismaticJoint_SetSpringDampingRatio, [JointId.by_value, :float], :void], [:PrismaticJoint_GetSpringDampingRatio, :b2PrismaticJoint_GetSpringDampingRatio, [JointId.by_value], :float], [:PrismaticJoint_EnableLimit, :b2PrismaticJoint_EnableLimit, [JointId.by_value, :bool], :void], [:PrismaticJoint_IsLimitEnabled, :b2PrismaticJoint_IsLimitEnabled, [JointId.by_value], :bool], [:PrismaticJoint_GetLowerLimit, :b2PrismaticJoint_GetLowerLimit, [JointId.by_value], :float], [:PrismaticJoint_GetUpperLimit, :b2PrismaticJoint_GetUpperLimit, [JointId.by_value], :float], [:PrismaticJoint_SetLimits, :b2PrismaticJoint_SetLimits, [JointId.by_value, :float, :float], :void], [:PrismaticJoint_EnableMotor, :b2PrismaticJoint_EnableMotor, [JointId.by_value, :bool], :void], [:PrismaticJoint_IsMotorEnabled, :b2PrismaticJoint_IsMotorEnabled, [JointId.by_value], :bool], [:PrismaticJoint_SetMotorSpeed, :b2PrismaticJoint_SetMotorSpeed, [JointId.by_value, :float], :void], [:PrismaticJoint_GetMotorSpeed, :b2PrismaticJoint_GetMotorSpeed, [JointId.by_value], :float], [:PrismaticJoint_SetMaxMotorForce, :b2PrismaticJoint_SetMaxMotorForce, [JointId.by_value, :float], :void], [:PrismaticJoint_GetMaxMotorForce, :b2PrismaticJoint_GetMaxMotorForce, [JointId.by_value], :float], [:PrismaticJoint_GetMotorForce, :b2PrismaticJoint_GetMotorForce, [JointId.by_value], :float], [:PrismaticJoint_GetTranslation, :b2PrismaticJoint_GetTranslation, [JointId.by_value], :float], [:PrismaticJoint_GetSpeed, :b2PrismaticJoint_GetSpeed, [JointId.by_value], :float], [:CreateRevoluteJoint, :b2CreateRevoluteJoint, [WorldId.by_value, :pointer], JointId.by_value], [:RevoluteJoint_EnableSpring, :b2RevoluteJoint_EnableSpring, [JointId.by_value, :bool], :void], [:RevoluteJoint_IsSpringEnabled, :b2RevoluteJoint_IsSpringEnabled, [JointId.by_value], :bool], [:RevoluteJoint_SetSpringHertz, :b2RevoluteJoint_SetSpringHertz, [JointId.by_value, :float], :void], [:RevoluteJoint_GetSpringHertz, :b2RevoluteJoint_GetSpringHertz, [JointId.by_value], :float], [:RevoluteJoint_SetSpringDampingRatio, :b2RevoluteJoint_SetSpringDampingRatio, [JointId.by_value, :float], :void], [:RevoluteJoint_GetSpringDampingRatio, :b2RevoluteJoint_GetSpringDampingRatio, [JointId.by_value], :float], [:RevoluteJoint_GetAngle, :b2RevoluteJoint_GetAngle, [JointId.by_value], :float], [:RevoluteJoint_EnableLimit, :b2RevoluteJoint_EnableLimit, [JointId.by_value, :bool], :void], [:RevoluteJoint_IsLimitEnabled, :b2RevoluteJoint_IsLimitEnabled, [JointId.by_value], :bool], [:RevoluteJoint_GetLowerLimit, :b2RevoluteJoint_GetLowerLimit, [JointId.by_value], :float], [:RevoluteJoint_GetUpperLimit, :b2RevoluteJoint_GetUpperLimit, [JointId.by_value], :float], [:RevoluteJoint_SetLimits, :b2RevoluteJoint_SetLimits, [JointId.by_value, :float, :float], :void], [:RevoluteJoint_EnableMotor, :b2RevoluteJoint_EnableMotor, [JointId.by_value, :bool], :void], [:RevoluteJoint_IsMotorEnabled, :b2RevoluteJoint_IsMotorEnabled, [JointId.by_value], :bool], [:RevoluteJoint_SetMotorSpeed, :b2RevoluteJoint_SetMotorSpeed, [JointId.by_value, :float], :void], [:RevoluteJoint_GetMotorSpeed, :b2RevoluteJoint_GetMotorSpeed, [JointId.by_value], :float], [:RevoluteJoint_GetMotorTorque, :b2RevoluteJoint_GetMotorTorque, [JointId.by_value], :float], [:RevoluteJoint_SetMaxMotorTorque, :b2RevoluteJoint_SetMaxMotorTorque, [JointId.by_value, :float], :void], [:RevoluteJoint_GetMaxMotorTorque, :b2RevoluteJoint_GetMaxMotorTorque, [JointId.by_value], :float], [:CreateWeldJoint, :b2CreateWeldJoint, [WorldId.by_value, :pointer], JointId.by_value], [:WeldJoint_GetReferenceAngle, :b2WeldJoint_GetReferenceAngle, [JointId.by_value], :float], [:WeldJoint_SetReferenceAngle, :b2WeldJoint_SetReferenceAngle, [JointId.by_value, :float], :void], [:WeldJoint_SetLinearHertz, :b2WeldJoint_SetLinearHertz, [JointId.by_value, :float], :void], [:WeldJoint_GetLinearHertz, :b2WeldJoint_GetLinearHertz, [JointId.by_value], :float], [:WeldJoint_SetLinearDampingRatio, :b2WeldJoint_SetLinearDampingRatio, [JointId.by_value, :float], :void], [:WeldJoint_GetLinearDampingRatio, :b2WeldJoint_GetLinearDampingRatio, [JointId.by_value], :float], [:WeldJoint_SetAngularHertz, :b2WeldJoint_SetAngularHertz, [JointId.by_value, :float], :void], [:WeldJoint_GetAngularHertz, :b2WeldJoint_GetAngularHertz, [JointId.by_value], :float], [:WeldJoint_SetAngularDampingRatio, :b2WeldJoint_SetAngularDampingRatio, [JointId.by_value, :float], :void], [:WeldJoint_GetAngularDampingRatio, :b2WeldJoint_GetAngularDampingRatio, [JointId.by_value], :float], [:CreateWheelJoint, :b2CreateWheelJoint, [WorldId.by_value, :pointer], JointId.by_value], [:WheelJoint_EnableSpring, :b2WheelJoint_EnableSpring, [JointId.by_value, :bool], :void], [:WheelJoint_IsSpringEnabled, :b2WheelJoint_IsSpringEnabled, [JointId.by_value], :bool], [:WheelJoint_SetSpringHertz, :b2WheelJoint_SetSpringHertz, [JointId.by_value, :float], :void], [:WheelJoint_GetSpringHertz, :b2WheelJoint_GetSpringHertz, [JointId.by_value], :float], [:WheelJoint_SetSpringDampingRatio, :b2WheelJoint_SetSpringDampingRatio, [JointId.by_value, :float], :void], [:WheelJoint_GetSpringDampingRatio, :b2WheelJoint_GetSpringDampingRatio, [JointId.by_value], :float], [:WheelJoint_EnableLimit, :b2WheelJoint_EnableLimit, [JointId.by_value, :bool], :void], [:WheelJoint_IsLimitEnabled, :b2WheelJoint_IsLimitEnabled, [JointId.by_value], :bool], [:WheelJoint_GetLowerLimit, :b2WheelJoint_GetLowerLimit, [JointId.by_value], :float], [:WheelJoint_GetUpperLimit, :b2WheelJoint_GetUpperLimit, [JointId.by_value], :float], [:WheelJoint_SetLimits, :b2WheelJoint_SetLimits, [JointId.by_value, :float, :float], :void], [:WheelJoint_EnableMotor, :b2WheelJoint_EnableMotor, [JointId.by_value, :bool], :void], [:WheelJoint_IsMotorEnabled, :b2WheelJoint_IsMotorEnabled, [JointId.by_value], :bool], [:WheelJoint_SetMotorSpeed, :b2WheelJoint_SetMotorSpeed, [JointId.by_value, :float], :void], [:WheelJoint_GetMotorSpeed, :b2WheelJoint_GetMotorSpeed, [JointId.by_value], :float], [:WheelJoint_SetMaxMotorTorque, :b2WheelJoint_SetMaxMotorTorque, [JointId.by_value, :float], :void], [:WheelJoint_GetMaxMotorTorque, :b2WheelJoint_GetMaxMotorTorque, [JointId.by_value], :float], [:WheelJoint_GetMotorTorque, :b2WheelJoint_GetMotorTorque, [JointId.by_value], :float], ] entries.each do |entry| api_name = if method_naming == :snake_case snake_case_name = entry[0].to_s.gsub(/([A-Z]+)([A-Z0-9][a-z])/, '\1_\2').gsub(/([a-z\d])([A-Z0-9])/, '\1_\2').downcase snake_case_name.gsub!('vector_3', 'vector3_') if snake_case_name.include?('vector_3') snake_case_name.gsub!('vector_2', 'vector2_') if snake_case_name.include?('vector_2') snake_case_name.chop! if snake_case_name.end_with?('_') snake_case_name.to_sym else entry[0] end attach_function api_name, entry[1], entry[2], entry[3] rescue FFI::NotFoundError => e warn "[Warning] Failed to import #{entry[0]} (#{e})." end end |
.setup_math_functions_symbols(method_naming: :original) ⇒ Object
Function
127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 |
# File 'lib/box2d_math_functions.rb', line 127 def self.setup_math_functions_symbols(method_naming: :original) entries = [ [:Atan2, :b2Atan2, [:float, :float], :float], [:ComputeCosSin, :b2ComputeCosSin, [:float], CosSin.by_value], [:ComputeRotationBetweenUnitVectors, :b2ComputeRotationBetweenUnitVectors, [Vec2.by_value, Vec2.by_value], Rot.by_value], [:IsValidFloat, :b2IsValidFloat, [:float], :bool], [:IsValidVec2, :b2IsValidVec2, [Vec2.by_value], :bool], [:IsValidRotation, :b2IsValidRotation, [Rot.by_value], :bool], [:IsValidAABB, :b2IsValidAABB, [AABB.by_value], :bool], [:SetLengthUnitsPerMeter, :b2SetLengthUnitsPerMeter, [:float], :void], [:GetLengthUnitsPerMeter, :b2GetLengthUnitsPerMeter, [], :float], ] entries.each do |entry| api_name = if method_naming == :snake_case snake_case_name = entry[0].to_s.gsub(/([A-Z]+)([A-Z0-9][a-z])/, '\1_\2').gsub(/([a-z\d])([A-Z0-9])/, '\1_\2').downcase snake_case_name.gsub!('vector_3', 'vector3_') if snake_case_name.include?('vector_3') snake_case_name.gsub!('vector_2', 'vector2_') if snake_case_name.include?('vector_2') snake_case_name.chop! if snake_case_name.end_with?('_') snake_case_name.to_sym else entry[0] end attach_function api_name, entry[1], entry[2], entry[3] rescue FFI::NotFoundError => e warn "[Warning] Failed to import #{entry[0]} (#{e})." end end |
.setup_math_inline_functions_symbols(method_naming: :original) ⇒ Object
Function
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/box2d_math_inline_functions.rb', line 25 def self.setup_math_inline_functions_symbols(method_naming: :original) entries = [ [:MinInt, :b2MinInt, [:int, :int], :int], [:MaxInt, :b2MaxInt, [:int, :int], :int], [:AbsInt, :b2AbsInt, [:int], :int], [:ClampInt, :b2ClampInt, [:int, :int, :int], :int], [:MinFloat, :b2MinFloat, [:float, :float], :float], [:MaxFloat, :b2MaxFloat, [:float, :float], :float], [:AbsFloat, :b2AbsFloat, [:float], :float], [:ClampFloat, :b2ClampFloat, [:float, :float, :float], :float], [:Dot, :b2Dot, [Vec2.by_value, Vec2.by_value], :float], [:Cross, :b2Cross, [Vec2.by_value, Vec2.by_value], :float], [:CrossVS, :b2CrossVS, [Vec2.by_value, :float], Vec2.by_value], [:CrossSV, :b2CrossSV, [:float, Vec2.by_value], Vec2.by_value], [:LeftPerp, :b2LeftPerp, [Vec2.by_value], Vec2.by_value], [:RightPerp, :b2RightPerp, [Vec2.by_value], Vec2.by_value], [:Add, :b2Add, [Vec2.by_value, Vec2.by_value], Vec2.by_value], [:Sub, :b2Sub, [Vec2.by_value, Vec2.by_value], Vec2.by_value], [:Neg, :b2Neg, [Vec2.by_value], Vec2.by_value], [:Lerp, :b2Lerp, [Vec2.by_value, Vec2.by_value, :float], Vec2.by_value], [:Mul, :b2Mul, [Vec2.by_value, Vec2.by_value], Vec2.by_value], [:MulSV, :b2MulSV, [:float, Vec2.by_value], Vec2.by_value], [:MulAdd, :b2MulAdd, [Vec2.by_value, :float, Vec2.by_value], Vec2.by_value], [:MulSub, :b2MulSub, [Vec2.by_value, :float, Vec2.by_value], Vec2.by_value], [:Abs, :b2Abs, [Vec2.by_value], Vec2.by_value], [:Min, :b2Min, [Vec2.by_value, Vec2.by_value], Vec2.by_value], [:Max, :b2Max, [Vec2.by_value, Vec2.by_value], Vec2.by_value], [:Clamp, :b2Clamp, [Vec2.by_value, Vec2.by_value, Vec2.by_value], Vec2.by_value], [:Length, :b2Length, [Vec2.by_value], :float], [:Distance, :b2Distance, [Vec2.by_value, Vec2.by_value], :float], [:Normalize, :b2Normalize, [Vec2.by_value], Vec2.by_value], [:GetLengthAndNormalize, :b2GetLengthAndNormalize, [:pointer, Vec2.by_value], Vec2.by_value], [:NormalizeRot, :b2NormalizeRot, [Rot.by_value], Rot.by_value], [:IntegrateRotation, :b2IntegrateRotation, [Rot.by_value, :float], Rot.by_value], [:LengthSquared, :b2LengthSquared, [Vec2.by_value], :float], [:DistanceSquared, :b2DistanceSquared, [Vec2.by_value, Vec2.by_value], :float], [:MakeRot, :b2MakeRot, [:float], Rot.by_value], [:IsNormalized, :b2IsNormalized, [Rot.by_value], :bool], [:NLerp, :b2NLerp, [Rot.by_value, Rot.by_value, :float], Rot.by_value], [:ComputeAngularVelocity, :b2ComputeAngularVelocity, [Rot.by_value, Rot.by_value, :float], :float], [:Rot_GetAngle, :b2Rot_GetAngle, [Rot.by_value], :float], [:Rot_GetXAxis, :b2Rot_GetXAxis, [Rot.by_value], Vec2.by_value], [:Rot_GetYAxis, :b2Rot_GetYAxis, [Rot.by_value], Vec2.by_value], [:MulRot, :b2MulRot, [Rot.by_value, Rot.by_value], Rot.by_value], [:InvMulRot, :b2InvMulRot, [Rot.by_value, Rot.by_value], Rot.by_value], [:RelativeAngle, :b2RelativeAngle, [Rot.by_value, Rot.by_value], :float], [:UnwindAngle, :b2UnwindAngle, [:float], :float], [:UnwindLargeAngle, :b2UnwindLargeAngle, [:float], :float], [:RotateVector, :b2RotateVector, [Rot.by_value, Vec2.by_value], Vec2.by_value], [:InvRotateVector, :b2InvRotateVector, [Rot.by_value, Vec2.by_value], Vec2.by_value], [:TransformPoint, :b2TransformPoint, [Transform.by_value, Vec2.by_value], Vec2.by_value], [:InvTransformPoint, :b2InvTransformPoint, [Transform.by_value, Vec2.by_value], Vec2.by_value], [:MulTransforms, :b2MulTransforms, [Transform.by_value, Transform.by_value], Transform.by_value], [:InvMulTransforms, :b2InvMulTransforms, [Transform.by_value, Transform.by_value], Transform.by_value], [:MulMV, :b2MulMV, [Mat22.by_value, Vec2.by_value], Vec2.by_value], [:GetInverse22, :b2GetInverse22, [Mat22.by_value], Mat22.by_value], [:Solve22, :b2Solve22, [Mat22.by_value, Vec2.by_value], Vec2.by_value], [:AABB_Contains, :b2AABB_Contains, [AABB.by_value, AABB.by_value], :bool], [:AABB_Center, :b2AABB_Center, [AABB.by_value], Vec2.by_value], [:AABB_Extents, :b2AABB_Extents, [AABB.by_value], Vec2.by_value], [:AABB_Union, :b2AABB_Union, [AABB.by_value, AABB.by_value], AABB.by_value], ] entries.each do |entry| api_name = if method_naming == :snake_case snake_case_name = entry[0].to_s.gsub(/([A-Z]+)([A-Z0-9][a-z])/, '\1_\2').gsub(/([a-z\d])([A-Z0-9])/, '\1_\2').downcase snake_case_name.gsub!('vector_3', 'vector3_') if snake_case_name.include?('vector_3') snake_case_name.gsub!('vector_2', 'vector2_') if snake_case_name.include?('vector_2') snake_case_name.chop! if snake_case_name.end_with?('_') snake_case_name.to_sym else entry[0] end attach_function api_name, entry[1], entry[2], entry[3] rescue FFI::NotFoundError => e warn "[Warning] Failed to import #{entry[0]} (#{e})." end end |
.setup_symbols(method_naming: :original) ⇒ Object
37 38 39 40 41 42 43 44 45 46 |
# File 'lib/box2d.rb', line 37 def self.setup_symbols(method_naming: :original) setup_base_symbols(method_naming: method_naming) setup_math_functions_symbols(method_naming: method_naming) setup_math_inline_functions_symbols(method_naming: method_naming) setup_id_symbols(method_naming: method_naming) setup_id_inline_symbols(method_naming: method_naming) setup_collision_symbols(method_naming: method_naming) setup_types_symbols(method_naming: method_naming) setup_main_symbols(method_naming: method_naming) end |
.setup_types_symbols(method_naming: :original) ⇒ Object
Function
1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 |
# File 'lib/box2d_types.rb', line 1584 def self.setup_types_symbols(method_naming: :original) entries = [ [:DefaultWorldDef, :b2DefaultWorldDef, [], WorldDef.by_value], [:DefaultBodyDef, :b2DefaultBodyDef, [], BodyDef.by_value], [:DefaultFilter, :b2DefaultFilter, [], Filter.by_value], [:DefaultQueryFilter, :b2DefaultQueryFilter, [], QueryFilter.by_value], [:DefaultShapeDef, :b2DefaultShapeDef, [], ShapeDef.by_value], [:DefaultSurfaceMaterial, :b2DefaultSurfaceMaterial, [], SurfaceMaterial.by_value], [:DefaultChainDef, :b2DefaultChainDef, [], ChainDef.by_value], [:DefaultDistanceJointDef, :b2DefaultDistanceJointDef, [], DistanceJointDef.by_value], [:DefaultMotorJointDef, :b2DefaultMotorJointDef, [], MotorJointDef.by_value], [:DefaultMouseJointDef, :b2DefaultMouseJointDef, [], MouseJointDef.by_value], [:DefaultNullJointDef, :b2DefaultNullJointDef, [], NullJointDef.by_value], [:DefaultPrismaticJointDef, :b2DefaultPrismaticJointDef, [], PrismaticJointDef.by_value], [:DefaultRevoluteJointDef, :b2DefaultRevoluteJointDef, [], RevoluteJointDef.by_value], [:DefaultWeldJointDef, :b2DefaultWeldJointDef, [], WeldJointDef.by_value], [:DefaultWheelJointDef, :b2DefaultWheelJointDef, [], WheelJointDef.by_value], [:DefaultExplosionDef, :b2DefaultExplosionDef, [], ExplosionDef.by_value], [:DefaultDebugDraw, :b2DefaultDebugDraw, [], DebugDraw.by_value], ] entries.each do |entry| api_name = if method_naming == :snake_case snake_case_name = entry[0].to_s.gsub(/([A-Z]+)([A-Z0-9][a-z])/, '\1_\2').gsub(/([a-z\d])([A-Z0-9])/, '\1_\2').downcase snake_case_name.gsub!('vector_3', 'vector3_') if snake_case_name.include?('vector_3') snake_case_name.gsub!('vector_2', 'vector2_') if snake_case_name.include?('vector_2') snake_case_name.chop! if snake_case_name.end_with?('_') snake_case_name.to_sym else entry[0] end attach_function api_name, entry[1], entry[2], entry[3] rescue FFI::NotFoundError => e warn "[Warning] Failed to import #{entry[0]} (#{e})." end end |