reflexion 0.1.12 → 0.1.13
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 +5 -5
- data/.doc/ext/reflex/application.cpp +9 -5
- data/.doc/ext/reflex/capture_event.cpp +0 -4
- data/.doc/ext/reflex/contact_event.cpp +17 -10
- data/.doc/ext/reflex/draw_event.cpp +1 -5
- data/.doc/ext/reflex/ellipse_shape.cpp +51 -24
- data/.doc/ext/reflex/event.cpp +0 -4
- data/.doc/ext/reflex/filter.cpp +81 -0
- data/.doc/ext/reflex/focus_event.cpp +9 -13
- data/.doc/ext/reflex/frame_event.cpp +40 -6
- data/.doc/ext/reflex/image_view.cpp +1 -10
- data/.doc/ext/reflex/key_event.cpp +2 -6
- data/.doc/ext/reflex/line_shape.cpp +99 -0
- data/.doc/ext/reflex/motion_event.cpp +75 -0
- data/.doc/ext/reflex/native.cpp +18 -18
- data/.doc/ext/reflex/pointer_event.cpp +5 -11
- data/.doc/ext/reflex/polygon_shape.cpp +65 -0
- data/.doc/ext/reflex/rect_shape.cpp +102 -23
- data/.doc/ext/reflex/reflex.cpp +21 -2
- data/.doc/ext/reflex/scroll_event.cpp +0 -6
- data/.doc/ext/reflex/selector.cpp +43 -15
- data/.doc/ext/reflex/shape.cpp +211 -0
- data/.doc/ext/reflex/style.cpp +359 -185
- data/.doc/ext/reflex/style_length.cpp +163 -35
- data/.doc/ext/reflex/timer.cpp +101 -0
- data/.doc/ext/reflex/timer_event.cpp +123 -0
- data/.doc/ext/reflex/update_event.cpp +11 -6
- data/.doc/ext/reflex/view.cpp +548 -144
- data/.doc/ext/reflex/wheel_event.cpp +0 -22
- data/.doc/ext/reflex/window.cpp +7 -15
- data/README.md +1 -1
- data/Rakefile +14 -12
- data/VERSION +1 -1
- data/ext/reflex/application.cpp +10 -5
- data/ext/reflex/capture_event.cpp +1 -5
- data/ext/reflex/contact_event.cpp +19 -11
- data/ext/reflex/defs.h +5 -2
- data/ext/reflex/draw_event.cpp +2 -6
- data/ext/reflex/ellipse_shape.cpp +56 -25
- data/ext/reflex/event.cpp +0 -4
- data/ext/reflex/extconf.rb +1 -2
- data/ext/reflex/filter.cpp +86 -0
- data/ext/reflex/focus_event.cpp +11 -15
- data/ext/reflex/frame_event.cpp +46 -7
- data/ext/reflex/image_view.cpp +1 -10
- data/ext/reflex/key_event.cpp +3 -7
- data/ext/reflex/line_shape.cpp +104 -0
- data/ext/reflex/motion_event.cpp +79 -0
- data/ext/reflex/native.cpp +18 -18
- data/ext/reflex/pointer_event.cpp +6 -12
- data/ext/reflex/polygon_shape.cpp +68 -0
- data/ext/reflex/rect_shape.cpp +113 -24
- data/ext/reflex/reflex.cpp +21 -2
- data/ext/reflex/scroll_event.cpp +1 -7
- data/ext/reflex/selector.cpp +46 -16
- data/ext/reflex/selector.h +130 -0
- data/ext/reflex/shape.cpp +231 -0
- data/ext/reflex/style.cpp +363 -192
- data/ext/reflex/style_length.cpp +164 -37
- data/ext/reflex/timer.cpp +108 -0
- data/ext/reflex/timer_event.cpp +133 -0
- data/ext/reflex/update_event.cpp +13 -7
- data/ext/reflex/view.cpp +594 -150
- data/ext/reflex/wheel_event.cpp +1 -25
- data/ext/reflex/window.cpp +7 -15
- data/include/reflex/application.h +2 -0
- data/include/reflex/debug.h +22 -0
- data/include/reflex/defs.h +45 -0
- data/include/reflex/event.h +60 -16
- data/include/reflex/exception.h +9 -0
- data/include/reflex/filter.h +56 -0
- data/include/reflex/image_view.h +1 -1
- data/include/reflex/ruby/application.h +17 -9
- data/include/reflex/ruby/event.h +22 -0
- data/include/reflex/ruby/filter.h +69 -0
- data/include/reflex/ruby/selector.h +1 -1
- data/include/reflex/ruby/shape.h +140 -0
- data/include/reflex/ruby/style.h +1 -1
- data/include/reflex/ruby/timer.h +69 -0
- data/include/reflex/ruby/view.h +43 -76
- data/include/reflex/ruby/window.h +17 -32
- data/include/reflex/ruby.h +6 -4
- data/include/reflex/selector.h +54 -2
- data/include/reflex/shape.h +211 -0
- data/include/reflex/style.h +111 -77
- data/include/reflex/timer.h +73 -0
- data/include/reflex/view.h +181 -59
- data/include/reflex/window.h +4 -3
- data/include/reflex.h +5 -4
- data/lib/reflex/application.rb +6 -3
- data/lib/reflex/button.rb +2 -2
- data/lib/reflex/capture_event.rb +7 -6
- data/lib/reflex/contact_event.rb +10 -12
- data/lib/reflex/draw_event.rb +6 -1
- data/lib/reflex/ellipse_shape.rb +27 -0
- data/lib/reflex/filter.rb +18 -0
- data/lib/reflex/fixture.rb +4 -0
- data/lib/reflex/focus_event.rb +10 -12
- data/lib/reflex/frame_event.rb +1 -1
- data/lib/reflex/helper.rb +17 -29
- data/lib/reflex/key_event.rb +13 -11
- data/lib/reflex/line_shape.rb +18 -0
- data/lib/reflex/{texture.rb → matrix.rb} +2 -2
- data/lib/reflex/module.rb +4 -19
- data/lib/reflex/pointer_event.rb +26 -37
- data/lib/reflex/polygon.rb +14 -0
- data/lib/reflex/polygon_shape.rb +23 -0
- data/lib/reflex/polyline.rb +13 -0
- data/lib/reflex/rect_shape.rb +20 -0
- data/lib/reflex/reflex.rb +1 -3
- data/lib/reflex/scroll_event.rb +1 -1
- data/lib/reflex/selector.rb +2 -2
- data/lib/reflex/shape.rb +62 -0
- data/lib/reflex/style.rb +78 -11
- data/lib/reflex/style_length.rb +0 -11
- data/lib/reflex/text_view.rb +7 -24
- data/lib/reflex/timer.rb +30 -0
- data/lib/reflex/timer_event.rb +29 -0
- data/lib/reflex/update_event.rb +1 -1
- data/lib/reflex/view.rb +127 -32
- data/lib/reflex/wheel_event.rb +9 -1
- data/lib/reflex/window.rb +29 -9
- data/lib/reflex.rb +11 -5
- data/lib/reflexion.rb +23 -7
- data/reflex.gemspec +8 -10
- data/samples/bats.rb +4 -4
- data/samples/fans.rb +1 -1
- data/samples/fps.rb +5 -3
- data/samples/hello.rb +4 -6
- data/samples/image.rb +5 -4
- data/samples/ios/hello/hello.xcodeproj/project.pbxproj +0 -2
- data/samples/layout.rb +16 -7
- data/samples/model.rb +10 -7
- data/samples/physics.rb +22 -20
- data/samples/reflexion/breakout.rb +4 -5
- data/samples/reflexion/hello.rb +2 -2
- data/samples/reflexion/jump_action.rb +191 -0
- data/samples/reflexion/noise.rb +23 -0
- data/samples/reflexion/paint.rb +7 -6
- data/samples/reflexion/physics.rb +15 -8
- data/samples/reflexion/pulse.rb +24 -10
- data/samples/shader.rb +8 -6
- data/samples/shapes.rb +63 -14
- data/samples/tree.rb +9 -10
- data/samples/views.rb +3 -3
- data/samples/visuals.rb +2 -5
- data/src/body.cpp +146 -345
- data/src/body.h +91 -0
- data/src/event.cpp +66 -16
- data/src/exception.cpp +13 -3
- data/src/filter.cpp +76 -0
- data/src/fixture.cpp +164 -39
- data/src/fixture.h +85 -0
- data/src/image_view.cpp +4 -4
- data/src/ios/app_delegate.h +5 -10
- data/src/ios/app_delegate.mm +79 -41
- data/src/ios/application.h +32 -0
- data/src/ios/application.mm +35 -25
- data/src/ios/event.mm +8 -4
- data/src/ios/reflex.mm +0 -7
- data/src/ios/view_controller.h +33 -0
- data/src/ios/view_controller.mm +436 -0
- data/src/ios/window.h +40 -0
- data/src/ios/window.mm +59 -250
- data/src/osx/app_delegate.h +5 -10
- data/src/osx/app_delegate.mm +52 -55
- data/src/osx/application.h +32 -0
- data/src/osx/application.mm +44 -39
- data/src/osx/native_window.h +0 -15
- data/src/osx/native_window.mm +131 -115
- data/src/osx/opengl_view.h +0 -2
- data/src/osx/opengl_view.mm +12 -3
- data/src/osx/reflex.mm +0 -9
- data/src/osx/window.h +42 -0
- data/src/osx/window.mm +45 -252
- data/src/selector.cpp +232 -7
- data/src/selector.h +52 -0
- data/src/shape.cpp +1191 -0
- data/src/shape.h +61 -0
- data/src/style.cpp +571 -374
- data/src/style.h +39 -0
- data/src/timer.cpp +291 -0
- data/src/timer.h +55 -0
- data/src/view.cpp +1624 -984
- data/src/view.h +56 -0
- data/src/win32/window.cpp +3 -4
- data/src/window.cpp +275 -20
- data/src/window.h +92 -0
- data/src/world.cpp +112 -111
- data/src/world.h +34 -53
- data/task/box2d.rake +31 -10
- data/test/test_capture_event.rb +8 -6
- data/test/test_pointer_event.rb +85 -0
- data/test/test_selector.rb +1 -1
- data/test/test_shape.rb +71 -0
- data/test/test_style.rb +77 -11
- data/test/test_style_length.rb +42 -13
- data/test/test_view.rb +138 -14
- metadata +109 -210
- data/.doc/ext/reflex/arc_shape.cpp +0 -89
- data/.doc/ext/reflex/body.cpp +0 -299
- data/.doc/ext/reflex/fixture.cpp +0 -101
- data/.doc/ext/reflex/shape_view.cpp +0 -153
- data/ext/reflex/arc_shape.cpp +0 -94
- data/ext/reflex/body.cpp +0 -328
- data/ext/reflex/fixture.cpp +0 -108
- data/ext/reflex/shape_view.cpp +0 -161
- data/include/reflex/bitmap.h +0 -20
- data/include/reflex/body.h +0 -128
- data/include/reflex/bounds.h +0 -20
- data/include/reflex/color.h +0 -20
- data/include/reflex/color_space.h +0 -20
- data/include/reflex/fixture.h +0 -117
- data/include/reflex/font.h +0 -20
- data/include/reflex/image.h +0 -20
- data/include/reflex/matrix.h +0 -20
- data/include/reflex/painter.h +0 -20
- data/include/reflex/point.h +0 -24
- data/include/reflex/ruby/body.h +0 -41
- data/include/reflex/ruby/fixture.h +0 -41
- data/include/reflex/ruby/shape_view.h +0 -96
- data/include/reflex/shader.h +0 -20
- data/include/reflex/shape_view.h +0 -146
- data/include/reflex/texture.h +0 -20
- data/lib/reflex/body.rb +0 -22
- data/lib/reflex/flags.rb +0 -18
- data/lib/reflex/shape_view.rb +0 -25
- data/src/ios/application_data.h +0 -45
- data/src/ios/native_window.h +0 -39
- data/src/ios/native_window.mm +0 -224
- data/src/ios/opengl_view.h +0 -13
- data/src/ios/opengl_view.mm +0 -139
- data/src/ios/window_data.h +0 -75
- data/src/osx/application_data.h +0 -45
- data/src/osx/window_data.h +0 -75
- data/src/physics/Box2D/Box2D.h +0 -68
- data/src/physics/Box2D/Collision/Shapes/b2ChainShape.cpp +0 -193
- data/src/physics/Box2D/Collision/Shapes/b2ChainShape.h +0 -105
- data/src/physics/Box2D/Collision/Shapes/b2CircleShape.cpp +0 -99
- data/src/physics/Box2D/Collision/Shapes/b2CircleShape.h +0 -91
- data/src/physics/Box2D/Collision/Shapes/b2EdgeShape.cpp +0 -138
- data/src/physics/Box2D/Collision/Shapes/b2EdgeShape.h +0 -74
- data/src/physics/Box2D/Collision/Shapes/b2PolygonShape.cpp +0 -467
- data/src/physics/Box2D/Collision/Shapes/b2PolygonShape.h +0 -101
- data/src/physics/Box2D/Collision/Shapes/b2Shape.h +0 -101
- data/src/physics/Box2D/Collision/b2BroadPhase.cpp +0 -119
- data/src/physics/Box2D/Collision/b2BroadPhase.h +0 -257
- data/src/physics/Box2D/Collision/b2CollideCircle.cpp +0 -154
- data/src/physics/Box2D/Collision/b2CollideEdge.cpp +0 -698
- data/src/physics/Box2D/Collision/b2CollidePolygon.cpp +0 -239
- data/src/physics/Box2D/Collision/b2Collision.cpp +0 -252
- data/src/physics/Box2D/Collision/b2Collision.h +0 -277
- data/src/physics/Box2D/Collision/b2Distance.cpp +0 -603
- data/src/physics/Box2D/Collision/b2Distance.h +0 -141
- data/src/physics/Box2D/Collision/b2DynamicTree.cpp +0 -778
- data/src/physics/Box2D/Collision/b2DynamicTree.h +0 -289
- data/src/physics/Box2D/Collision/b2TimeOfImpact.cpp +0 -486
- data/src/physics/Box2D/Collision/b2TimeOfImpact.h +0 -58
- data/src/physics/Box2D/Common/b2BlockAllocator.cpp +0 -215
- data/src/physics/Box2D/Common/b2BlockAllocator.h +0 -62
- data/src/physics/Box2D/Common/b2Draw.cpp +0 -44
- data/src/physics/Box2D/Common/b2Draw.h +0 -86
- data/src/physics/Box2D/Common/b2GrowableStack.h +0 -85
- data/src/physics/Box2D/Common/b2Math.cpp +0 -94
- data/src/physics/Box2D/Common/b2Math.h +0 -720
- data/src/physics/Box2D/Common/b2Settings.cpp +0 -44
- data/src/physics/Box2D/Common/b2Settings.h +0 -151
- data/src/physics/Box2D/Common/b2StackAllocator.cpp +0 -83
- data/src/physics/Box2D/Common/b2StackAllocator.h +0 -60
- data/src/physics/Box2D/Common/b2Timer.cpp +0 -101
- data/src/physics/Box2D/Common/b2Timer.h +0 -50
- data/src/physics/Box2D/Dynamics/Contacts/b2ChainAndCircleContact.cpp +0 -53
- data/src/physics/Box2D/Dynamics/Contacts/b2ChainAndCircleContact.h +0 -39
- data/src/physics/Box2D/Dynamics/Contacts/b2ChainAndPolygonContact.cpp +0 -53
- data/src/physics/Box2D/Dynamics/Contacts/b2ChainAndPolygonContact.h +0 -39
- data/src/physics/Box2D/Dynamics/Contacts/b2CircleContact.cpp +0 -52
- data/src/physics/Box2D/Dynamics/Contacts/b2CircleContact.h +0 -39
- data/src/physics/Box2D/Dynamics/Contacts/b2Contact.cpp +0 -247
- data/src/physics/Box2D/Dynamics/Contacts/b2Contact.h +0 -349
- data/src/physics/Box2D/Dynamics/Contacts/b2ContactSolver.cpp +0 -838
- data/src/physics/Box2D/Dynamics/Contacts/b2ContactSolver.h +0 -95
- data/src/physics/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.cpp +0 -49
- data/src/physics/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.h +0 -39
- data/src/physics/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.cpp +0 -49
- data/src/physics/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.h +0 -39
- data/src/physics/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.cpp +0 -49
- data/src/physics/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.h +0 -38
- data/src/physics/Box2D/Dynamics/Contacts/b2PolygonContact.cpp +0 -52
- data/src/physics/Box2D/Dynamics/Contacts/b2PolygonContact.h +0 -39
- data/src/physics/Box2D/Dynamics/Joints/b2DistanceJoint.cpp +0 -260
- data/src/physics/Box2D/Dynamics/Joints/b2DistanceJoint.h +0 -169
- data/src/physics/Box2D/Dynamics/Joints/b2FrictionJoint.cpp +0 -251
- data/src/physics/Box2D/Dynamics/Joints/b2FrictionJoint.h +0 -119
- data/src/physics/Box2D/Dynamics/Joints/b2GearJoint.cpp +0 -419
- data/src/physics/Box2D/Dynamics/Joints/b2GearJoint.h +0 -125
- data/src/physics/Box2D/Dynamics/Joints/b2Joint.cpp +0 -211
- data/src/physics/Box2D/Dynamics/Joints/b2Joint.h +0 -226
- data/src/physics/Box2D/Dynamics/Joints/b2MotorJoint.cpp +0 -304
- data/src/physics/Box2D/Dynamics/Joints/b2MotorJoint.h +0 -133
- data/src/physics/Box2D/Dynamics/Joints/b2MouseJoint.cpp +0 -222
- data/src/physics/Box2D/Dynamics/Joints/b2MouseJoint.h +0 -129
- data/src/physics/Box2D/Dynamics/Joints/b2PrismaticJoint.cpp +0 -629
- data/src/physics/Box2D/Dynamics/Joints/b2PrismaticJoint.h +0 -196
- data/src/physics/Box2D/Dynamics/Joints/b2PulleyJoint.cpp +0 -348
- data/src/physics/Box2D/Dynamics/Joints/b2PulleyJoint.h +0 -152
- data/src/physics/Box2D/Dynamics/Joints/b2RevoluteJoint.cpp +0 -502
- data/src/physics/Box2D/Dynamics/Joints/b2RevoluteJoint.h +0 -204
- data/src/physics/Box2D/Dynamics/Joints/b2RopeJoint.cpp +0 -241
- data/src/physics/Box2D/Dynamics/Joints/b2RopeJoint.h +0 -114
- data/src/physics/Box2D/Dynamics/Joints/b2WeldJoint.cpp +0 -344
- data/src/physics/Box2D/Dynamics/Joints/b2WeldJoint.h +0 -126
- data/src/physics/Box2D/Dynamics/Joints/b2WheelJoint.cpp +0 -419
- data/src/physics/Box2D/Dynamics/Joints/b2WheelJoint.h +0 -210
- data/src/physics/Box2D/Dynamics/b2Body.cpp +0 -549
- data/src/physics/Box2D/Dynamics/b2Body.h +0 -860
- data/src/physics/Box2D/Dynamics/b2ContactManager.cpp +0 -296
- data/src/physics/Box2D/Dynamics/b2ContactManager.h +0 -52
- data/src/physics/Box2D/Dynamics/b2Fixture.cpp +0 -303
- data/src/physics/Box2D/Dynamics/b2Fixture.h +0 -345
- data/src/physics/Box2D/Dynamics/b2Island.cpp +0 -539
- data/src/physics/Box2D/Dynamics/b2Island.h +0 -93
- data/src/physics/Box2D/Dynamics/b2TimeStep.h +0 -70
- data/src/physics/Box2D/Dynamics/b2World.cpp +0 -1339
- data/src/physics/Box2D/Dynamics/b2World.h +0 -354
- data/src/physics/Box2D/Dynamics/b2WorldCallbacks.cpp +0 -36
- data/src/physics/Box2D/Dynamics/b2WorldCallbacks.h +0 -155
- data/src/physics/Box2D/Rope/b2Rope.cpp +0 -259
- data/src/physics/Box2D/Rope/b2Rope.h +0 -115
- data/src/shape_view.cpp +0 -306
@@ -1,354 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
* Copyright (c) 2006-2011 Erin Catto http://www.box2d.org
|
3
|
-
*
|
4
|
-
* This software is provided 'as-is', without any express or implied
|
5
|
-
* warranty. In no event will the authors be held liable for any damages
|
6
|
-
* arising from the use of this software.
|
7
|
-
* Permission is granted to anyone to use this software for any purpose,
|
8
|
-
* including commercial applications, and to alter it and redistribute it
|
9
|
-
* freely, subject to the following restrictions:
|
10
|
-
* 1. The origin of this software must not be misrepresented; you must not
|
11
|
-
* claim that you wrote the original software. If you use this software
|
12
|
-
* in a product, an acknowledgment in the product documentation would be
|
13
|
-
* appreciated but is not required.
|
14
|
-
* 2. Altered source versions must be plainly marked as such, and must not be
|
15
|
-
* misrepresented as being the original software.
|
16
|
-
* 3. This notice may not be removed or altered from any source distribution.
|
17
|
-
*/
|
18
|
-
|
19
|
-
#ifndef B2_WORLD_H
|
20
|
-
#define B2_WORLD_H
|
21
|
-
|
22
|
-
#include <Box2D/Common/b2Math.h>
|
23
|
-
#include <Box2D/Common/b2BlockAllocator.h>
|
24
|
-
#include <Box2D/Common/b2StackAllocator.h>
|
25
|
-
#include <Box2D/Dynamics/b2ContactManager.h>
|
26
|
-
#include <Box2D/Dynamics/b2WorldCallbacks.h>
|
27
|
-
#include <Box2D/Dynamics/b2TimeStep.h>
|
28
|
-
|
29
|
-
struct b2AABB;
|
30
|
-
struct b2BodyDef;
|
31
|
-
struct b2Color;
|
32
|
-
struct b2JointDef;
|
33
|
-
class b2Body;
|
34
|
-
class b2Draw;
|
35
|
-
class b2Fixture;
|
36
|
-
class b2Joint;
|
37
|
-
|
38
|
-
/// The world class manages all physics entities, dynamic simulation,
|
39
|
-
/// and asynchronous queries. The world also contains efficient memory
|
40
|
-
/// management facilities.
|
41
|
-
class b2World
|
42
|
-
{
|
43
|
-
public:
|
44
|
-
/// Construct a world object.
|
45
|
-
/// @param gravity the world gravity vector.
|
46
|
-
b2World(const b2Vec2& gravity);
|
47
|
-
|
48
|
-
/// Destruct the world. All physics entities are destroyed and all heap memory is released.
|
49
|
-
~b2World();
|
50
|
-
|
51
|
-
/// Register a destruction listener. The listener is owned by you and must
|
52
|
-
/// remain in scope.
|
53
|
-
void SetDestructionListener(b2DestructionListener* listener);
|
54
|
-
|
55
|
-
/// Register a contact filter to provide specific control over collision.
|
56
|
-
/// Otherwise the default filter is used (b2_defaultFilter). The listener is
|
57
|
-
/// owned by you and must remain in scope.
|
58
|
-
void SetContactFilter(b2ContactFilter* filter);
|
59
|
-
|
60
|
-
/// Register a contact event listener. The listener is owned by you and must
|
61
|
-
/// remain in scope.
|
62
|
-
void SetContactListener(b2ContactListener* listener);
|
63
|
-
|
64
|
-
/// Register a routine for debug drawing. The debug draw functions are called
|
65
|
-
/// inside with b2World::DrawDebugData method. The debug draw object is owned
|
66
|
-
/// by you and must remain in scope.
|
67
|
-
void SetDebugDraw(b2Draw* debugDraw);
|
68
|
-
|
69
|
-
/// Create a rigid body given a definition. No reference to the definition
|
70
|
-
/// is retained.
|
71
|
-
/// @warning This function is locked during callbacks.
|
72
|
-
b2Body* CreateBody(const b2BodyDef* def);
|
73
|
-
|
74
|
-
/// Destroy a rigid body given a definition. No reference to the definition
|
75
|
-
/// is retained. This function is locked during callbacks.
|
76
|
-
/// @warning This automatically deletes all associated shapes and joints.
|
77
|
-
/// @warning This function is locked during callbacks.
|
78
|
-
void DestroyBody(b2Body* body);
|
79
|
-
|
80
|
-
/// Create a joint to constrain bodies together. No reference to the definition
|
81
|
-
/// is retained. This may cause the connected bodies to cease colliding.
|
82
|
-
/// @warning This function is locked during callbacks.
|
83
|
-
b2Joint* CreateJoint(const b2JointDef* def);
|
84
|
-
|
85
|
-
/// Destroy a joint. This may cause the connected bodies to begin colliding.
|
86
|
-
/// @warning This function is locked during callbacks.
|
87
|
-
void DestroyJoint(b2Joint* joint);
|
88
|
-
|
89
|
-
/// Take a time step. This performs collision detection, integration,
|
90
|
-
/// and constraint solution.
|
91
|
-
/// @param timeStep the amount of time to simulate, this should not vary.
|
92
|
-
/// @param velocityIterations for the velocity constraint solver.
|
93
|
-
/// @param positionIterations for the position constraint solver.
|
94
|
-
void Step( float32 timeStep,
|
95
|
-
int32 velocityIterations,
|
96
|
-
int32 positionIterations);
|
97
|
-
|
98
|
-
/// Manually clear the force buffer on all bodies. By default, forces are cleared automatically
|
99
|
-
/// after each call to Step. The default behavior is modified by calling SetAutoClearForces.
|
100
|
-
/// The purpose of this function is to support sub-stepping. Sub-stepping is often used to maintain
|
101
|
-
/// a fixed sized time step under a variable frame-rate.
|
102
|
-
/// When you perform sub-stepping you will disable auto clearing of forces and instead call
|
103
|
-
/// ClearForces after all sub-steps are complete in one pass of your game loop.
|
104
|
-
/// @see SetAutoClearForces
|
105
|
-
void ClearForces();
|
106
|
-
|
107
|
-
/// Call this to draw shapes and other debug draw data. This is intentionally non-const.
|
108
|
-
void DrawDebugData();
|
109
|
-
|
110
|
-
/// Query the world for all fixtures that potentially overlap the
|
111
|
-
/// provided AABB.
|
112
|
-
/// @param callback a user implemented callback class.
|
113
|
-
/// @param aabb the query box.
|
114
|
-
void QueryAABB(b2QueryCallback* callback, const b2AABB& aabb) const;
|
115
|
-
|
116
|
-
/// Ray-cast the world for all fixtures in the path of the ray. Your callback
|
117
|
-
/// controls whether you get the closest point, any point, or n-points.
|
118
|
-
/// The ray-cast ignores shapes that contain the starting point.
|
119
|
-
/// @param callback a user implemented callback class.
|
120
|
-
/// @param point1 the ray starting point
|
121
|
-
/// @param point2 the ray ending point
|
122
|
-
void RayCast(b2RayCastCallback* callback, const b2Vec2& point1, const b2Vec2& point2) const;
|
123
|
-
|
124
|
-
/// Get the world body list. With the returned body, use b2Body::GetNext to get
|
125
|
-
/// the next body in the world list. A NULL body indicates the end of the list.
|
126
|
-
/// @return the head of the world body list.
|
127
|
-
b2Body* GetBodyList();
|
128
|
-
const b2Body* GetBodyList() const;
|
129
|
-
|
130
|
-
/// Get the world joint list. With the returned joint, use b2Joint::GetNext to get
|
131
|
-
/// the next joint in the world list. A NULL joint indicates the end of the list.
|
132
|
-
/// @return the head of the world joint list.
|
133
|
-
b2Joint* GetJointList();
|
134
|
-
const b2Joint* GetJointList() const;
|
135
|
-
|
136
|
-
/// Get the world contact list. With the returned contact, use b2Contact::GetNext to get
|
137
|
-
/// the next contact in the world list. A NULL contact indicates the end of the list.
|
138
|
-
/// @return the head of the world contact list.
|
139
|
-
/// @warning contacts are created and destroyed in the middle of a time step.
|
140
|
-
/// Use b2ContactListener to avoid missing contacts.
|
141
|
-
b2Contact* GetContactList();
|
142
|
-
const b2Contact* GetContactList() const;
|
143
|
-
|
144
|
-
/// Enable/disable sleep.
|
145
|
-
void SetAllowSleeping(bool flag);
|
146
|
-
bool GetAllowSleeping() const { return m_allowSleep; }
|
147
|
-
|
148
|
-
/// Enable/disable warm starting. For testing.
|
149
|
-
void SetWarmStarting(bool flag) { m_warmStarting = flag; }
|
150
|
-
bool GetWarmStarting() const { return m_warmStarting; }
|
151
|
-
|
152
|
-
/// Enable/disable continuous physics. For testing.
|
153
|
-
void SetContinuousPhysics(bool flag) { m_continuousPhysics = flag; }
|
154
|
-
bool GetContinuousPhysics() const { return m_continuousPhysics; }
|
155
|
-
|
156
|
-
/// Enable/disable single stepped continuous physics. For testing.
|
157
|
-
void SetSubStepping(bool flag) { m_subStepping = flag; }
|
158
|
-
bool GetSubStepping() const { return m_subStepping; }
|
159
|
-
|
160
|
-
/// Get the number of broad-phase proxies.
|
161
|
-
int32 GetProxyCount() const;
|
162
|
-
|
163
|
-
/// Get the number of bodies.
|
164
|
-
int32 GetBodyCount() const;
|
165
|
-
|
166
|
-
/// Get the number of joints.
|
167
|
-
int32 GetJointCount() const;
|
168
|
-
|
169
|
-
/// Get the number of contacts (each may have 0 or more contact points).
|
170
|
-
int32 GetContactCount() const;
|
171
|
-
|
172
|
-
/// Get the height of the dynamic tree.
|
173
|
-
int32 GetTreeHeight() const;
|
174
|
-
|
175
|
-
/// Get the balance of the dynamic tree.
|
176
|
-
int32 GetTreeBalance() const;
|
177
|
-
|
178
|
-
/// Get the quality metric of the dynamic tree. The smaller the better.
|
179
|
-
/// The minimum is 1.
|
180
|
-
float32 GetTreeQuality() const;
|
181
|
-
|
182
|
-
/// Change the global gravity vector.
|
183
|
-
void SetGravity(const b2Vec2& gravity);
|
184
|
-
|
185
|
-
/// Get the global gravity vector.
|
186
|
-
b2Vec2 GetGravity() const;
|
187
|
-
|
188
|
-
/// Is the world locked (in the middle of a time step).
|
189
|
-
bool IsLocked() const;
|
190
|
-
|
191
|
-
/// Set flag to control automatic clearing of forces after each time step.
|
192
|
-
void SetAutoClearForces(bool flag);
|
193
|
-
|
194
|
-
/// Get the flag that controls automatic clearing of forces after each time step.
|
195
|
-
bool GetAutoClearForces() const;
|
196
|
-
|
197
|
-
/// Shift the world origin. Useful for large worlds.
|
198
|
-
/// The body shift formula is: position -= newOrigin
|
199
|
-
/// @param newOrigin the new origin with respect to the old origin
|
200
|
-
void ShiftOrigin(const b2Vec2& newOrigin);
|
201
|
-
|
202
|
-
/// Get the contact manager for testing.
|
203
|
-
const b2ContactManager& GetContactManager() const;
|
204
|
-
|
205
|
-
/// Get the current profile.
|
206
|
-
const b2Profile& GetProfile() const;
|
207
|
-
|
208
|
-
/// Dump the world into the log file.
|
209
|
-
/// @warning this should be called outside of a time step.
|
210
|
-
void Dump();
|
211
|
-
|
212
|
-
private:
|
213
|
-
|
214
|
-
// m_flags
|
215
|
-
enum
|
216
|
-
{
|
217
|
-
e_newFixture = 0x0001,
|
218
|
-
e_locked = 0x0002,
|
219
|
-
e_clearForces = 0x0004
|
220
|
-
};
|
221
|
-
|
222
|
-
friend class b2Body;
|
223
|
-
friend class b2Fixture;
|
224
|
-
friend class b2ContactManager;
|
225
|
-
friend class b2Controller;
|
226
|
-
|
227
|
-
void Solve(const b2TimeStep& step);
|
228
|
-
void SolveTOI(const b2TimeStep& step);
|
229
|
-
|
230
|
-
void DrawJoint(b2Joint* joint);
|
231
|
-
void DrawShape(b2Fixture* shape, const b2Transform& xf, const b2Color& color);
|
232
|
-
|
233
|
-
b2BlockAllocator m_blockAllocator;
|
234
|
-
b2StackAllocator m_stackAllocator;
|
235
|
-
|
236
|
-
int32 m_flags;
|
237
|
-
|
238
|
-
b2ContactManager m_contactManager;
|
239
|
-
|
240
|
-
b2Body* m_bodyList;
|
241
|
-
b2Joint* m_jointList;
|
242
|
-
|
243
|
-
int32 m_bodyCount;
|
244
|
-
int32 m_jointCount;
|
245
|
-
|
246
|
-
b2Vec2 m_gravity;
|
247
|
-
bool m_allowSleep;
|
248
|
-
|
249
|
-
b2DestructionListener* m_destructionListener;
|
250
|
-
b2Draw* g_debugDraw;
|
251
|
-
|
252
|
-
// This is used to compute the time step ratio to
|
253
|
-
// support a variable time step.
|
254
|
-
float32 m_inv_dt0;
|
255
|
-
|
256
|
-
// These are for debugging the solver.
|
257
|
-
bool m_warmStarting;
|
258
|
-
bool m_continuousPhysics;
|
259
|
-
bool m_subStepping;
|
260
|
-
|
261
|
-
bool m_stepComplete;
|
262
|
-
|
263
|
-
b2Profile m_profile;
|
264
|
-
};
|
265
|
-
|
266
|
-
inline b2Body* b2World::GetBodyList()
|
267
|
-
{
|
268
|
-
return m_bodyList;
|
269
|
-
}
|
270
|
-
|
271
|
-
inline const b2Body* b2World::GetBodyList() const
|
272
|
-
{
|
273
|
-
return m_bodyList;
|
274
|
-
}
|
275
|
-
|
276
|
-
inline b2Joint* b2World::GetJointList()
|
277
|
-
{
|
278
|
-
return m_jointList;
|
279
|
-
}
|
280
|
-
|
281
|
-
inline const b2Joint* b2World::GetJointList() const
|
282
|
-
{
|
283
|
-
return m_jointList;
|
284
|
-
}
|
285
|
-
|
286
|
-
inline b2Contact* b2World::GetContactList()
|
287
|
-
{
|
288
|
-
return m_contactManager.m_contactList;
|
289
|
-
}
|
290
|
-
|
291
|
-
inline const b2Contact* b2World::GetContactList() const
|
292
|
-
{
|
293
|
-
return m_contactManager.m_contactList;
|
294
|
-
}
|
295
|
-
|
296
|
-
inline int32 b2World::GetBodyCount() const
|
297
|
-
{
|
298
|
-
return m_bodyCount;
|
299
|
-
}
|
300
|
-
|
301
|
-
inline int32 b2World::GetJointCount() const
|
302
|
-
{
|
303
|
-
return m_jointCount;
|
304
|
-
}
|
305
|
-
|
306
|
-
inline int32 b2World::GetContactCount() const
|
307
|
-
{
|
308
|
-
return m_contactManager.m_contactCount;
|
309
|
-
}
|
310
|
-
|
311
|
-
inline void b2World::SetGravity(const b2Vec2& gravity)
|
312
|
-
{
|
313
|
-
m_gravity = gravity;
|
314
|
-
}
|
315
|
-
|
316
|
-
inline b2Vec2 b2World::GetGravity() const
|
317
|
-
{
|
318
|
-
return m_gravity;
|
319
|
-
}
|
320
|
-
|
321
|
-
inline bool b2World::IsLocked() const
|
322
|
-
{
|
323
|
-
return (m_flags & e_locked) == e_locked;
|
324
|
-
}
|
325
|
-
|
326
|
-
inline void b2World::SetAutoClearForces(bool flag)
|
327
|
-
{
|
328
|
-
if (flag)
|
329
|
-
{
|
330
|
-
m_flags |= e_clearForces;
|
331
|
-
}
|
332
|
-
else
|
333
|
-
{
|
334
|
-
m_flags &= ~e_clearForces;
|
335
|
-
}
|
336
|
-
}
|
337
|
-
|
338
|
-
/// Get the flag that controls automatic clearing of forces after each time step.
|
339
|
-
inline bool b2World::GetAutoClearForces() const
|
340
|
-
{
|
341
|
-
return (m_flags & e_clearForces) == e_clearForces;
|
342
|
-
}
|
343
|
-
|
344
|
-
inline const b2ContactManager& b2World::GetContactManager() const
|
345
|
-
{
|
346
|
-
return m_contactManager;
|
347
|
-
}
|
348
|
-
|
349
|
-
inline const b2Profile& b2World::GetProfile() const
|
350
|
-
{
|
351
|
-
return m_profile;
|
352
|
-
}
|
353
|
-
|
354
|
-
#endif
|
@@ -1,36 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org
|
3
|
-
*
|
4
|
-
* This software is provided 'as-is', without any express or implied
|
5
|
-
* warranty. In no event will the authors be held liable for any damages
|
6
|
-
* arising from the use of this software.
|
7
|
-
* Permission is granted to anyone to use this software for any purpose,
|
8
|
-
* including commercial applications, and to alter it and redistribute it
|
9
|
-
* freely, subject to the following restrictions:
|
10
|
-
* 1. The origin of this software must not be misrepresented; you must not
|
11
|
-
* claim that you wrote the original software. If you use this software
|
12
|
-
* in a product, an acknowledgment in the product documentation would be
|
13
|
-
* appreciated but is not required.
|
14
|
-
* 2. Altered source versions must be plainly marked as such, and must not be
|
15
|
-
* misrepresented as being the original software.
|
16
|
-
* 3. This notice may not be removed or altered from any source distribution.
|
17
|
-
*/
|
18
|
-
|
19
|
-
#include <Box2D/Dynamics/b2WorldCallbacks.h>
|
20
|
-
#include <Box2D/Dynamics/b2Fixture.h>
|
21
|
-
|
22
|
-
// Return true if contact calculations should be performed between these two shapes.
|
23
|
-
// If you implement your own collision filter you may want to build from this implementation.
|
24
|
-
bool b2ContactFilter::ShouldCollide(b2Fixture* fixtureA, b2Fixture* fixtureB)
|
25
|
-
{
|
26
|
-
const b2Filter& filterA = fixtureA->GetFilterData();
|
27
|
-
const b2Filter& filterB = fixtureB->GetFilterData();
|
28
|
-
|
29
|
-
if (filterA.groupIndex == filterB.groupIndex && filterA.groupIndex != 0)
|
30
|
-
{
|
31
|
-
return filterA.groupIndex > 0;
|
32
|
-
}
|
33
|
-
|
34
|
-
bool collide = (filterA.maskBits & filterB.categoryBits) != 0 && (filterA.categoryBits & filterB.maskBits) != 0;
|
35
|
-
return collide;
|
36
|
-
}
|
@@ -1,155 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
* Copyright (c) 2006-2009 Erin Catto http://www.box2d.org
|
3
|
-
*
|
4
|
-
* This software is provided 'as-is', without any express or implied
|
5
|
-
* warranty. In no event will the authors be held liable for any damages
|
6
|
-
* arising from the use of this software.
|
7
|
-
* Permission is granted to anyone to use this software for any purpose,
|
8
|
-
* including commercial applications, and to alter it and redistribute it
|
9
|
-
* freely, subject to the following restrictions:
|
10
|
-
* 1. The origin of this software must not be misrepresented; you must not
|
11
|
-
* claim that you wrote the original software. If you use this software
|
12
|
-
* in a product, an acknowledgment in the product documentation would be
|
13
|
-
* appreciated but is not required.
|
14
|
-
* 2. Altered source versions must be plainly marked as such, and must not be
|
15
|
-
* misrepresented as being the original software.
|
16
|
-
* 3. This notice may not be removed or altered from any source distribution.
|
17
|
-
*/
|
18
|
-
|
19
|
-
#ifndef B2_WORLD_CALLBACKS_H
|
20
|
-
#define B2_WORLD_CALLBACKS_H
|
21
|
-
|
22
|
-
#include <Box2D/Common/b2Settings.h>
|
23
|
-
|
24
|
-
struct b2Vec2;
|
25
|
-
struct b2Transform;
|
26
|
-
class b2Fixture;
|
27
|
-
class b2Body;
|
28
|
-
class b2Joint;
|
29
|
-
class b2Contact;
|
30
|
-
struct b2ContactResult;
|
31
|
-
struct b2Manifold;
|
32
|
-
|
33
|
-
/// Joints and fixtures are destroyed when their associated
|
34
|
-
/// body is destroyed. Implement this listener so that you
|
35
|
-
/// may nullify references to these joints and shapes.
|
36
|
-
class b2DestructionListener
|
37
|
-
{
|
38
|
-
public:
|
39
|
-
virtual ~b2DestructionListener() {}
|
40
|
-
|
41
|
-
/// Called when any joint is about to be destroyed due
|
42
|
-
/// to the destruction of one of its attached bodies.
|
43
|
-
virtual void SayGoodbye(b2Joint* joint) = 0;
|
44
|
-
|
45
|
-
/// Called when any fixture is about to be destroyed due
|
46
|
-
/// to the destruction of its parent body.
|
47
|
-
virtual void SayGoodbye(b2Fixture* fixture) = 0;
|
48
|
-
};
|
49
|
-
|
50
|
-
/// Implement this class to provide collision filtering. In other words, you can implement
|
51
|
-
/// this class if you want finer control over contact creation.
|
52
|
-
class b2ContactFilter
|
53
|
-
{
|
54
|
-
public:
|
55
|
-
virtual ~b2ContactFilter() {}
|
56
|
-
|
57
|
-
/// Return true if contact calculations should be performed between these two shapes.
|
58
|
-
/// @warning for performance reasons this is only called when the AABBs begin to overlap.
|
59
|
-
virtual bool ShouldCollide(b2Fixture* fixtureA, b2Fixture* fixtureB);
|
60
|
-
};
|
61
|
-
|
62
|
-
/// Contact impulses for reporting. Impulses are used instead of forces because
|
63
|
-
/// sub-step forces may approach infinity for rigid body collisions. These
|
64
|
-
/// match up one-to-one with the contact points in b2Manifold.
|
65
|
-
struct b2ContactImpulse
|
66
|
-
{
|
67
|
-
float32 normalImpulses[b2_maxManifoldPoints];
|
68
|
-
float32 tangentImpulses[b2_maxManifoldPoints];
|
69
|
-
int32 count;
|
70
|
-
};
|
71
|
-
|
72
|
-
/// Implement this class to get contact information. You can use these results for
|
73
|
-
/// things like sounds and game logic. You can also get contact results by
|
74
|
-
/// traversing the contact lists after the time step. However, you might miss
|
75
|
-
/// some contacts because continuous physics leads to sub-stepping.
|
76
|
-
/// Additionally you may receive multiple callbacks for the same contact in a
|
77
|
-
/// single time step.
|
78
|
-
/// You should strive to make your callbacks efficient because there may be
|
79
|
-
/// many callbacks per time step.
|
80
|
-
/// @warning You cannot create/destroy Box2D entities inside these callbacks.
|
81
|
-
class b2ContactListener
|
82
|
-
{
|
83
|
-
public:
|
84
|
-
virtual ~b2ContactListener() {}
|
85
|
-
|
86
|
-
/// Called when two fixtures begin to touch.
|
87
|
-
virtual void BeginContact(b2Contact* contact) { B2_NOT_USED(contact); }
|
88
|
-
|
89
|
-
/// Called when two fixtures cease to touch.
|
90
|
-
virtual void EndContact(b2Contact* contact) { B2_NOT_USED(contact); }
|
91
|
-
|
92
|
-
/// This is called after a contact is updated. This allows you to inspect a
|
93
|
-
/// contact before it goes to the solver. If you are careful, you can modify the
|
94
|
-
/// contact manifold (e.g. disable contact).
|
95
|
-
/// A copy of the old manifold is provided so that you can detect changes.
|
96
|
-
/// Note: this is called only for awake bodies.
|
97
|
-
/// Note: this is called even when the number of contact points is zero.
|
98
|
-
/// Note: this is not called for sensors.
|
99
|
-
/// Note: if you set the number of contact points to zero, you will not
|
100
|
-
/// get an EndContact callback. However, you may get a BeginContact callback
|
101
|
-
/// the next step.
|
102
|
-
virtual void PreSolve(b2Contact* contact, const b2Manifold* oldManifold)
|
103
|
-
{
|
104
|
-
B2_NOT_USED(contact);
|
105
|
-
B2_NOT_USED(oldManifold);
|
106
|
-
}
|
107
|
-
|
108
|
-
/// This lets you inspect a contact after the solver is finished. This is useful
|
109
|
-
/// for inspecting impulses.
|
110
|
-
/// Note: the contact manifold does not include time of impact impulses, which can be
|
111
|
-
/// arbitrarily large if the sub-step is small. Hence the impulse is provided explicitly
|
112
|
-
/// in a separate data structure.
|
113
|
-
/// Note: this is only called for contacts that are touching, solid, and awake.
|
114
|
-
virtual void PostSolve(b2Contact* contact, const b2ContactImpulse* impulse)
|
115
|
-
{
|
116
|
-
B2_NOT_USED(contact);
|
117
|
-
B2_NOT_USED(impulse);
|
118
|
-
}
|
119
|
-
};
|
120
|
-
|
121
|
-
/// Callback class for AABB queries.
|
122
|
-
/// See b2World::Query
|
123
|
-
class b2QueryCallback
|
124
|
-
{
|
125
|
-
public:
|
126
|
-
virtual ~b2QueryCallback() {}
|
127
|
-
|
128
|
-
/// Called for each fixture found in the query AABB.
|
129
|
-
/// @return false to terminate the query.
|
130
|
-
virtual bool ReportFixture(b2Fixture* fixture) = 0;
|
131
|
-
};
|
132
|
-
|
133
|
-
/// Callback class for ray casts.
|
134
|
-
/// See b2World::RayCast
|
135
|
-
class b2RayCastCallback
|
136
|
-
{
|
137
|
-
public:
|
138
|
-
virtual ~b2RayCastCallback() {}
|
139
|
-
|
140
|
-
/// Called for each fixture found in the query. You control how the ray cast
|
141
|
-
/// proceeds by returning a float:
|
142
|
-
/// return -1: ignore this fixture and continue
|
143
|
-
/// return 0: terminate the ray cast
|
144
|
-
/// return fraction: clip the ray to this point
|
145
|
-
/// return 1: don't clip the ray and continue
|
146
|
-
/// @param fixture the fixture hit by the ray
|
147
|
-
/// @param point the point of initial intersection
|
148
|
-
/// @param normal the normal vector at the point of intersection
|
149
|
-
/// @return -1 to filter, 0 to terminate, fraction to clip the ray for
|
150
|
-
/// closest hit, 1 to continue
|
151
|
-
virtual float32 ReportFixture( b2Fixture* fixture, const b2Vec2& point,
|
152
|
-
const b2Vec2& normal, float32 fraction) = 0;
|
153
|
-
};
|
154
|
-
|
155
|
-
#endif
|