pbox2d 0.6.0-java → 0.8.0-java
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 +4 -4
- data/.mvn/extensions.xml +8 -0
- data/.mvn/wrapper/maven-wrapper.properties +1 -0
- data/.travis.yml +23 -0
- data/CHANGELOG.md +8 -0
- data/README.md +7 -7
- data/Rakefile +1 -2
- data/lib/box2d.jar +0 -0
- data/lib/pbox2d/version.rb +1 -1
- data/lib/pbox2d.rb +1 -0
- data/pbox2d.gemspec +6 -11
- data/pom.rb +59 -0
- data/pom.xml +82 -73
- data/src/org/jbox2d/JBox2D.gwt.xml +12 -0
- data/src/org/jbox2d/callbacks/ContactAdaptor.java +27 -0
- data/src/org/jbox2d/callbacks/ContactFilter.java +59 -0
- data/src/org/jbox2d/callbacks/ContactImpulse.java +42 -0
- data/src/org/jbox2d/callbacks/ContactListener.java +87 -0
- data/src/org/jbox2d/callbacks/DebugDraw.java +297 -0
- data/src/org/jbox2d/callbacks/DestructionListener.java +53 -0
- data/src/org/jbox2d/callbacks/PairCallback.java +29 -0
- data/src/org/jbox2d/callbacks/ParticleDestructionListener.java +20 -0
- data/src/org/jbox2d/callbacks/ParticleQueryCallback.java +19 -0
- data/src/org/jbox2d/callbacks/ParticleRaycastCallback.java +19 -0
- data/src/org/jbox2d/callbacks/QueryCallback.java +45 -0
- data/src/org/jbox2d/callbacks/RayCastCallback.java +55 -0
- data/src/org/jbox2d/callbacks/TreeCallback.java +42 -0
- data/src/org/jbox2d/callbacks/TreeRayCastCallback.java +44 -0
- data/src/org/jbox2d/collision/AABB.java +338 -0
- data/src/org/jbox2d/collision/Collision.java +1444 -0
- data/src/org/jbox2d/collision/ContactID.java +106 -0
- data/src/org/jbox2d/collision/Distance.java +773 -0
- data/src/org/jbox2d/collision/DistanceInput.java +41 -0
- data/src/org/jbox2d/collision/DistanceOutput.java +43 -0
- data/src/org/jbox2d/collision/Manifold.java +116 -0
- data/src/org/jbox2d/collision/ManifoldPoint.java +104 -0
- data/src/org/jbox2d/collision/RayCastInput.java +47 -0
- data/src/org/jbox2d/collision/RayCastOutput.java +46 -0
- data/src/org/jbox2d/collision/TimeOfImpact.java +526 -0
- data/src/org/jbox2d/collision/WorldManifold.java +200 -0
- data/src/org/jbox2d/collision/broadphase/BroadPhase.java +92 -0
- data/src/org/jbox2d/collision/broadphase/BroadPhaseStrategy.java +88 -0
- data/src/org/jbox2d/collision/broadphase/DefaultBroadPhaseBuffer.java +268 -0
- data/src/org/jbox2d/collision/broadphase/DynamicTree.java +883 -0
- data/src/org/jbox2d/collision/broadphase/DynamicTreeFlatNodes.java +873 -0
- data/src/org/jbox2d/collision/broadphase/DynamicTreeNode.java +54 -0
- data/src/org/jbox2d/collision/broadphase/Pair.java +46 -0
- data/src/org/jbox2d/collision/shapes/ChainShape.java +264 -0
- data/src/org/jbox2d/collision/shapes/CircleShape.java +207 -0
- data/src/org/jbox2d/collision/shapes/EdgeShape.java +254 -0
- data/src/org/jbox2d/collision/shapes/MassData.java +105 -0
- data/src/org/jbox2d/collision/shapes/PolygonShape.java +718 -0
- data/src/org/jbox2d/collision/shapes/Shape.java +136 -0
- data/src/org/jbox2d/collision/shapes/ShapeType.java +32 -0
- data/src/org/jbox2d/common/BufferUtils.java +209 -0
- data/src/org/jbox2d/common/Color3f.java +88 -0
- data/src/org/jbox2d/common/IViewportTransform.java +133 -0
- data/src/org/jbox2d/common/Mat22.java +609 -0
- data/src/org/jbox2d/common/Mat33.java +290 -0
- data/src/org/jbox2d/common/MathUtils.java +335 -0
- data/src/org/jbox2d/common/OBBViewportTransform.java +174 -0
- data/src/org/jbox2d/common/PlatformMathUtils.java +46 -0
- data/src/org/jbox2d/common/RaycastResult.java +37 -0
- data/src/org/jbox2d/common/Rot.java +150 -0
- data/src/org/jbox2d/common/Settings.java +246 -0
- data/src/org/jbox2d/common/Sweep.java +116 -0
- data/src/org/jbox2d/common/Timer.java +46 -0
- data/src/org/jbox2d/common/Transform.java +203 -0
- data/src/org/jbox2d/common/Vec2.java +388 -0
- data/src/org/jbox2d/common/Vec3.java +170 -0
- data/src/org/jbox2d/dynamics/Body.java +1246 -0
- data/src/org/jbox2d/dynamics/BodyDef.java +382 -0
- data/src/org/jbox2d/dynamics/BodyType.java +41 -0
- data/src/org/jbox2d/dynamics/ContactManager.java +293 -0
- data/src/org/jbox2d/dynamics/Filter.java +62 -0
- data/src/org/jbox2d/dynamics/Fixture.java +454 -0
- data/src/org/jbox2d/dynamics/FixtureDef.java +214 -0
- data/src/org/jbox2d/dynamics/FixtureProxy.java +38 -0
- data/src/org/jbox2d/dynamics/Island.java +602 -0
- data/src/org/jbox2d/dynamics/Profile.java +97 -0
- data/src/org/jbox2d/dynamics/SolverData.java +33 -0
- data/src/org/jbox2d/dynamics/TimeStep.java +46 -0
- data/src/org/jbox2d/dynamics/World.java +2075 -0
- data/src/org/jbox2d/dynamics/contacts/ChainAndCircleContact.java +57 -0
- data/src/org/jbox2d/dynamics/contacts/ChainAndPolygonContact.java +57 -0
- data/src/org/jbox2d/dynamics/contacts/CircleContact.java +50 -0
- data/src/org/jbox2d/dynamics/contacts/Contact.java +365 -0
- data/src/org/jbox2d/dynamics/contacts/ContactCreator.java +35 -0
- data/src/org/jbox2d/dynamics/contacts/ContactEdge.java +56 -0
- data/src/org/jbox2d/dynamics/contacts/ContactPositionConstraint.java +49 -0
- data/src/org/jbox2d/dynamics/contacts/ContactRegister.java +31 -0
- data/src/org/jbox2d/dynamics/contacts/ContactSolver.java +1104 -0
- data/src/org/jbox2d/dynamics/contacts/ContactVelocityConstraint.java +60 -0
- data/src/org/jbox2d/dynamics/contacts/EdgeAndCircleContact.java +52 -0
- data/src/org/jbox2d/dynamics/contacts/EdgeAndPolygonContact.java +52 -0
- data/src/org/jbox2d/dynamics/contacts/PolygonAndCircleContact.java +51 -0
- data/src/org/jbox2d/dynamics/contacts/PolygonContact.java +50 -0
- data/src/org/jbox2d/dynamics/contacts/Position.java +31 -0
- data/src/org/jbox2d/dynamics/contacts/Velocity.java +31 -0
- data/src/org/jbox2d/dynamics/joints/ConstantVolumeJoint.java +258 -0
- data/src/org/jbox2d/dynamics/joints/ConstantVolumeJointDef.java +75 -0
- data/src/org/jbox2d/dynamics/joints/DistanceJoint.java +356 -0
- data/src/org/jbox2d/dynamics/joints/DistanceJointDef.java +106 -0
- data/src/org/jbox2d/dynamics/joints/FrictionJoint.java +294 -0
- data/src/org/jbox2d/dynamics/joints/FrictionJointDef.java +78 -0
- data/src/org/jbox2d/dynamics/joints/GearJoint.java +520 -0
- data/src/org/jbox2d/dynamics/joints/GearJointDef.java +58 -0
- data/src/org/jbox2d/dynamics/joints/Jacobian.java +32 -0
- data/src/org/jbox2d/dynamics/joints/Joint.java +235 -0
- data/src/org/jbox2d/dynamics/joints/JointDef.java +65 -0
- data/src/org/jbox2d/dynamics/joints/JointEdge.java +57 -0
- data/src/org/jbox2d/dynamics/joints/JointType.java +28 -0
- data/src/org/jbox2d/dynamics/joints/LimitState.java +28 -0
- data/src/org/jbox2d/dynamics/joints/MotorJoint.java +339 -0
- data/src/org/jbox2d/dynamics/joints/MotorJointDef.java +55 -0
- data/src/org/jbox2d/dynamics/joints/MouseJoint.java +262 -0
- data/src/org/jbox2d/dynamics/joints/MouseJointDef.java +62 -0
- data/src/org/jbox2d/dynamics/joints/PrismaticJoint.java +808 -0
- data/src/org/jbox2d/dynamics/joints/PrismaticJointDef.java +120 -0
- data/src/org/jbox2d/dynamics/joints/PulleyJoint.java +393 -0
- data/src/org/jbox2d/dynamics/joints/PulleyJointDef.java +105 -0
- data/src/org/jbox2d/dynamics/joints/RevoluteJoint.java +554 -0
- data/src/org/jbox2d/dynamics/joints/RevoluteJointDef.java +137 -0
- data/src/org/jbox2d/dynamics/joints/RopeJoint.java +276 -0
- data/src/org/jbox2d/dynamics/joints/RopeJointDef.java +34 -0
- data/src/org/jbox2d/dynamics/joints/WeldJoint.java +424 -0
- data/src/org/jbox2d/dynamics/joints/WeldJointDef.java +85 -0
- data/src/org/jbox2d/dynamics/joints/WheelJoint.java +498 -0
- data/src/org/jbox2d/dynamics/joints/WheelJointDef.java +98 -0
- data/src/org/jbox2d/particle/ParticleBodyContact.java +17 -0
- data/src/org/jbox2d/particle/ParticleColor.java +52 -0
- data/src/org/jbox2d/particle/ParticleContact.java +14 -0
- data/src/org/jbox2d/particle/ParticleDef.java +24 -0
- data/src/org/jbox2d/particle/ParticleGroup.java +154 -0
- data/src/org/jbox2d/particle/ParticleGroupDef.java +62 -0
- data/src/org/jbox2d/particle/ParticleGroupType.java +8 -0
- data/src/org/jbox2d/particle/ParticleSystem.java +2172 -0
- data/src/org/jbox2d/particle/ParticleType.java +28 -0
- data/src/org/jbox2d/particle/StackQueue.java +44 -0
- data/src/org/jbox2d/particle/VoronoiDiagram.java +209 -0
- data/src/org/jbox2d/pooling/IDynamicStack.java +47 -0
- data/src/org/jbox2d/pooling/IOrderedStack.java +57 -0
- data/src/org/jbox2d/pooling/IWorldPool.java +101 -0
- data/src/org/jbox2d/pooling/arrays/FloatArray.java +50 -0
- data/src/org/jbox2d/pooling/arrays/GeneratorArray.java +33 -0
- data/src/org/jbox2d/pooling/arrays/IntArray.java +53 -0
- data/src/org/jbox2d/pooling/arrays/Vec2Array.java +57 -0
- data/src/org/jbox2d/pooling/normal/CircleStack.java +77 -0
- data/src/org/jbox2d/pooling/normal/DefaultWorldPool.java +331 -0
- data/src/org/jbox2d/pooling/normal/MutableStack.java +72 -0
- data/src/org/jbox2d/pooling/normal/OrderedStack.java +73 -0
- data/src/org/jbox2d/pooling/stacks/DynamicIntStack.java +60 -0
- metadata +161 -14
- data/lib/jbox2d-library-2.3.1-SNAPSHOT.jar +0 -0
@@ -0,0 +1,235 @@
|
|
1
|
+
/*******************************************************************************
|
2
|
+
* Copyright (c) 2013, Daniel Murphy
|
3
|
+
* All rights reserved.
|
4
|
+
*
|
5
|
+
* Redistribution and use in source and binary forms, with or without modification,
|
6
|
+
* are permitted provided that the following conditions are met:
|
7
|
+
* * Redistributions of source code must retain the above copyright notice,
|
8
|
+
* this list of conditions and the following disclaimer.
|
9
|
+
* * Redistributions in binary form must reproduce the above copyright notice,
|
10
|
+
* this list of conditions and the following disclaimer in the documentation
|
11
|
+
* and/or other materials provided with the distribution.
|
12
|
+
*
|
13
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
14
|
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
15
|
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
16
|
+
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
17
|
+
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
18
|
+
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
19
|
+
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
20
|
+
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
21
|
+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
22
|
+
* POSSIBILITY OF SUCH DAMAGE.
|
23
|
+
******************************************************************************/
|
24
|
+
package org.jbox2d.dynamics.joints;
|
25
|
+
|
26
|
+
import org.jbox2d.common.Vec2;
|
27
|
+
import org.jbox2d.dynamics.Body;
|
28
|
+
import org.jbox2d.dynamics.SolverData;
|
29
|
+
import org.jbox2d.dynamics.World;
|
30
|
+
import org.jbox2d.pooling.IWorldPool;
|
31
|
+
|
32
|
+
// updated to rev 100
|
33
|
+
/**
|
34
|
+
* The base joint class. Joints are used to constrain two bodies together in various fashions. Some
|
35
|
+
* joints also feature limits and motors.
|
36
|
+
*
|
37
|
+
* @author Daniel Murphy
|
38
|
+
*/
|
39
|
+
public abstract class Joint {
|
40
|
+
|
41
|
+
public static Joint create(World world, JointDef def) {
|
42
|
+
// Joint joint = null;
|
43
|
+
switch (def.type) {
|
44
|
+
case MOUSE:
|
45
|
+
return new MouseJoint(world.getPool(), (MouseJointDef) def);
|
46
|
+
case DISTANCE:
|
47
|
+
return new DistanceJoint(world.getPool(), (DistanceJointDef) def);
|
48
|
+
case PRISMATIC:
|
49
|
+
return new PrismaticJoint(world.getPool(), (PrismaticJointDef) def);
|
50
|
+
case REVOLUTE:
|
51
|
+
return new RevoluteJoint(world.getPool(), (RevoluteJointDef) def);
|
52
|
+
case WELD:
|
53
|
+
return new WeldJoint(world.getPool(), (WeldJointDef) def);
|
54
|
+
case FRICTION:
|
55
|
+
return new FrictionJoint(world.getPool(), (FrictionJointDef) def);
|
56
|
+
case WHEEL:
|
57
|
+
return new WheelJoint(world.getPool(), (WheelJointDef) def);
|
58
|
+
case GEAR:
|
59
|
+
return new GearJoint(world.getPool(), (GearJointDef) def);
|
60
|
+
case PULLEY:
|
61
|
+
return new PulleyJoint(world.getPool(), (PulleyJointDef) def);
|
62
|
+
case CONSTANT_VOLUME:
|
63
|
+
return new ConstantVolumeJoint(world, (ConstantVolumeJointDef) def);
|
64
|
+
case ROPE:
|
65
|
+
return new RopeJoint(world.getPool(), (RopeJointDef) def);
|
66
|
+
case MOTOR:
|
67
|
+
return new MotorJoint(world.getPool(), (MotorJointDef) def);
|
68
|
+
case UNKNOWN:
|
69
|
+
default:
|
70
|
+
return null;
|
71
|
+
}
|
72
|
+
}
|
73
|
+
|
74
|
+
public static void destroy(Joint joint) {
|
75
|
+
joint.destructor();
|
76
|
+
}
|
77
|
+
|
78
|
+
private final JointType m_type;
|
79
|
+
public Joint m_prev;
|
80
|
+
public Joint m_next;
|
81
|
+
public JointEdge m_edgeA;
|
82
|
+
public JointEdge m_edgeB;
|
83
|
+
protected Body m_bodyA;
|
84
|
+
protected Body m_bodyB;
|
85
|
+
|
86
|
+
public boolean m_islandFlag;
|
87
|
+
private boolean m_collideConnected;
|
88
|
+
|
89
|
+
public Object m_userData;
|
90
|
+
|
91
|
+
protected IWorldPool pool;
|
92
|
+
|
93
|
+
// Cache here per time step to reduce cache misses.
|
94
|
+
// final Vec2 m_localCenterA, m_localCenterB;
|
95
|
+
// float m_invMassA, m_invIA;
|
96
|
+
// float m_invMassB, m_invIB;
|
97
|
+
|
98
|
+
protected Joint(IWorldPool worldPool, JointDef def) {
|
99
|
+
assert (def.bodyA != def.bodyB);
|
100
|
+
|
101
|
+
pool = worldPool;
|
102
|
+
m_type = def.type;
|
103
|
+
m_prev = null;
|
104
|
+
m_next = null;
|
105
|
+
m_bodyA = def.bodyA;
|
106
|
+
m_bodyB = def.bodyB;
|
107
|
+
m_collideConnected = def.collideConnected;
|
108
|
+
m_islandFlag = false;
|
109
|
+
m_userData = def.userData;
|
110
|
+
|
111
|
+
m_edgeA = new JointEdge();
|
112
|
+
m_edgeA.joint = null;
|
113
|
+
m_edgeA.other = null;
|
114
|
+
m_edgeA.prev = null;
|
115
|
+
m_edgeA.next = null;
|
116
|
+
|
117
|
+
m_edgeB = new JointEdge();
|
118
|
+
m_edgeB.joint = null;
|
119
|
+
m_edgeB.other = null;
|
120
|
+
m_edgeB.prev = null;
|
121
|
+
m_edgeB.next = null;
|
122
|
+
|
123
|
+
// m_localCenterA = new Vec2();
|
124
|
+
// m_localCenterB = new Vec2();
|
125
|
+
}
|
126
|
+
|
127
|
+
/**
|
128
|
+
* get the type of the concrete joint.
|
129
|
+
*
|
130
|
+
* @return
|
131
|
+
*/
|
132
|
+
public JointType getType() {
|
133
|
+
return m_type;
|
134
|
+
}
|
135
|
+
|
136
|
+
/**
|
137
|
+
* get the first body attached to this joint.
|
138
|
+
*/
|
139
|
+
public final Body getBodyA() {
|
140
|
+
return m_bodyA;
|
141
|
+
}
|
142
|
+
|
143
|
+
/**
|
144
|
+
* get the second body attached to this joint.
|
145
|
+
*
|
146
|
+
* @return
|
147
|
+
*/
|
148
|
+
public final Body getBodyB() {
|
149
|
+
return m_bodyB;
|
150
|
+
}
|
151
|
+
|
152
|
+
/**
|
153
|
+
* get the anchor point on bodyA in world coordinates.
|
154
|
+
*
|
155
|
+
* @return
|
156
|
+
*/
|
157
|
+
public abstract void getAnchorA(Vec2 out);
|
158
|
+
|
159
|
+
/**
|
160
|
+
* get the anchor point on bodyB in world coordinates.
|
161
|
+
*
|
162
|
+
* @return
|
163
|
+
*/
|
164
|
+
public abstract void getAnchorB(Vec2 out);
|
165
|
+
|
166
|
+
/**
|
167
|
+
* get the reaction force on body2 at the joint anchor in Newtons.
|
168
|
+
*
|
169
|
+
* @param inv_dt
|
170
|
+
* @return
|
171
|
+
*/
|
172
|
+
public abstract void getReactionForce(float inv_dt, Vec2 out);
|
173
|
+
|
174
|
+
/**
|
175
|
+
* get the reaction torque on body2 in N*m.
|
176
|
+
*
|
177
|
+
* @param inv_dt
|
178
|
+
* @return
|
179
|
+
*/
|
180
|
+
public abstract float getReactionTorque(float inv_dt);
|
181
|
+
|
182
|
+
/**
|
183
|
+
* get the next joint the world joint list.
|
184
|
+
*/
|
185
|
+
public Joint getNext() {
|
186
|
+
return m_next;
|
187
|
+
}
|
188
|
+
|
189
|
+
/**
|
190
|
+
* get the user data pointer.
|
191
|
+
*/
|
192
|
+
public Object getUserData() {
|
193
|
+
return m_userData;
|
194
|
+
}
|
195
|
+
|
196
|
+
/**
|
197
|
+
* Set the user data pointer.
|
198
|
+
*/
|
199
|
+
public void setUserData(Object data) {
|
200
|
+
m_userData = data;
|
201
|
+
}
|
202
|
+
|
203
|
+
/**
|
204
|
+
* Get collide connected. Note: modifying the collide connect flag won't work correctly because
|
205
|
+
* the flag is only checked when fixture AABBs begin to overlap.
|
206
|
+
*/
|
207
|
+
public final boolean getCollideConnected() {
|
208
|
+
return m_collideConnected;
|
209
|
+
}
|
210
|
+
|
211
|
+
/**
|
212
|
+
* Short-cut function to determine if either body is inactive.
|
213
|
+
*
|
214
|
+
* @return
|
215
|
+
*/
|
216
|
+
public boolean isActive() {
|
217
|
+
return m_bodyA.isActive() && m_bodyB.isActive();
|
218
|
+
}
|
219
|
+
|
220
|
+
/** Internal */
|
221
|
+
public abstract void initVelocityConstraints(SolverData data);
|
222
|
+
|
223
|
+
/** Internal */
|
224
|
+
public abstract void solveVelocityConstraints(SolverData data);
|
225
|
+
|
226
|
+
/**
|
227
|
+
* This returns true if the position errors are within tolerance. Internal.
|
228
|
+
*/
|
229
|
+
public abstract boolean solvePositionConstraints(SolverData data);
|
230
|
+
|
231
|
+
/**
|
232
|
+
* Override to handle destruction of joint
|
233
|
+
*/
|
234
|
+
public void destructor() {}
|
235
|
+
}
|
@@ -0,0 +1,65 @@
|
|
1
|
+
/*******************************************************************************
|
2
|
+
* Copyright (c) 2013, Daniel Murphy
|
3
|
+
* All rights reserved.
|
4
|
+
*
|
5
|
+
* Redistribution and use in source and binary forms, with or without modification,
|
6
|
+
* are permitted provided that the following conditions are met:
|
7
|
+
* * Redistributions of source code must retain the above copyright notice,
|
8
|
+
* this list of conditions and the following disclaimer.
|
9
|
+
* * Redistributions in binary form must reproduce the above copyright notice,
|
10
|
+
* this list of conditions and the following disclaimer in the documentation
|
11
|
+
* and/or other materials provided with the distribution.
|
12
|
+
*
|
13
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
14
|
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
15
|
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
16
|
+
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
17
|
+
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
18
|
+
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
19
|
+
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
20
|
+
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
21
|
+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
22
|
+
* POSSIBILITY OF SUCH DAMAGE.
|
23
|
+
******************************************************************************/
|
24
|
+
package org.jbox2d.dynamics.joints;
|
25
|
+
|
26
|
+
import org.jbox2d.dynamics.Body;
|
27
|
+
|
28
|
+
/**
|
29
|
+
* Joint definitions are used to construct joints.
|
30
|
+
* @author Daniel Murphy
|
31
|
+
*/
|
32
|
+
public class JointDef {
|
33
|
+
|
34
|
+
public JointDef(JointType type){
|
35
|
+
this.type = type;
|
36
|
+
userData = null;
|
37
|
+
bodyA = null;
|
38
|
+
bodyB = null;
|
39
|
+
collideConnected = false;
|
40
|
+
}
|
41
|
+
/**
|
42
|
+
* The joint type is set automatically for concrete joint types.
|
43
|
+
*/
|
44
|
+
public JointType type;
|
45
|
+
|
46
|
+
/**
|
47
|
+
* Use this to attach application specific data to your joints.
|
48
|
+
*/
|
49
|
+
public Object userData;
|
50
|
+
|
51
|
+
/**
|
52
|
+
* The first attached body.
|
53
|
+
*/
|
54
|
+
public Body bodyA;
|
55
|
+
|
56
|
+
/**
|
57
|
+
* The second attached body.
|
58
|
+
*/
|
59
|
+
public Body bodyB;
|
60
|
+
|
61
|
+
/**
|
62
|
+
* Set this flag to true if the attached bodies should collide.
|
63
|
+
*/
|
64
|
+
public boolean collideConnected;
|
65
|
+
}
|
@@ -0,0 +1,57 @@
|
|
1
|
+
/*******************************************************************************
|
2
|
+
* Copyright (c) 2013, Daniel Murphy
|
3
|
+
* All rights reserved.
|
4
|
+
*
|
5
|
+
* Redistribution and use in source and binary forms, with or without modification,
|
6
|
+
* are permitted provided that the following conditions are met:
|
7
|
+
* * Redistributions of source code must retain the above copyright notice,
|
8
|
+
* this list of conditions and the following disclaimer.
|
9
|
+
* * Redistributions in binary form must reproduce the above copyright notice,
|
10
|
+
* this list of conditions and the following disclaimer in the documentation
|
11
|
+
* and/or other materials provided with the distribution.
|
12
|
+
*
|
13
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
14
|
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
15
|
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
16
|
+
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
17
|
+
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
18
|
+
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
19
|
+
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
20
|
+
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
21
|
+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
22
|
+
* POSSIBILITY OF SUCH DAMAGE.
|
23
|
+
******************************************************************************/
|
24
|
+
package org.jbox2d.dynamics.joints;
|
25
|
+
|
26
|
+
import org.jbox2d.dynamics.Body;
|
27
|
+
|
28
|
+
/**
|
29
|
+
* A joint edge is used to connect bodies and joints together
|
30
|
+
* in a joint graph where each body is a node and each joint
|
31
|
+
* is an edge. A joint edge belongs to a doubly linked list
|
32
|
+
* maintained in each attached body. Each joint has two joint
|
33
|
+
* nodes, one for each attached body.
|
34
|
+
* @author Daniel
|
35
|
+
*/
|
36
|
+
public class JointEdge {
|
37
|
+
|
38
|
+
/**
|
39
|
+
* Provides quick access to the other body attached
|
40
|
+
*/
|
41
|
+
public Body other = null;
|
42
|
+
|
43
|
+
/**
|
44
|
+
* the joint
|
45
|
+
*/
|
46
|
+
public Joint joint = null;
|
47
|
+
|
48
|
+
/**
|
49
|
+
* the previous joint edge in the body's joint list
|
50
|
+
*/
|
51
|
+
public JointEdge prev = null;
|
52
|
+
|
53
|
+
/**
|
54
|
+
* the next joint edge in the body's joint list
|
55
|
+
*/
|
56
|
+
public JointEdge next = null;
|
57
|
+
}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
/*******************************************************************************
|
2
|
+
* Copyright (c) 2013, Daniel Murphy
|
3
|
+
* All rights reserved.
|
4
|
+
*
|
5
|
+
* Redistribution and use in source and binary forms, with or without modification,
|
6
|
+
* are permitted provided that the following conditions are met:
|
7
|
+
* * Redistributions of source code must retain the above copyright notice,
|
8
|
+
* this list of conditions and the following disclaimer.
|
9
|
+
* * Redistributions in binary form must reproduce the above copyright notice,
|
10
|
+
* this list of conditions and the following disclaimer in the documentation
|
11
|
+
* and/or other materials provided with the distribution.
|
12
|
+
*
|
13
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
14
|
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
15
|
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
16
|
+
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
17
|
+
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
18
|
+
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
19
|
+
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
20
|
+
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
21
|
+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
22
|
+
* POSSIBILITY OF SUCH DAMAGE.
|
23
|
+
******************************************************************************/
|
24
|
+
package org.jbox2d.dynamics.joints;
|
25
|
+
|
26
|
+
public enum JointType {
|
27
|
+
UNKNOWN, REVOLUTE, PRISMATIC, DISTANCE, PULLEY, MOUSE, GEAR, WHEEL, WELD, FRICTION, ROPE, CONSTANT_VOLUME, MOTOR
|
28
|
+
}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
/*******************************************************************************
|
2
|
+
* Copyright (c) 2013, Daniel Murphy
|
3
|
+
* All rights reserved.
|
4
|
+
*
|
5
|
+
* Redistribution and use in source and binary forms, with or without modification,
|
6
|
+
* are permitted provided that the following conditions are met:
|
7
|
+
* * Redistributions of source code must retain the above copyright notice,
|
8
|
+
* this list of conditions and the following disclaimer.
|
9
|
+
* * Redistributions in binary form must reproduce the above copyright notice,
|
10
|
+
* this list of conditions and the following disclaimer in the documentation
|
11
|
+
* and/or other materials provided with the distribution.
|
12
|
+
*
|
13
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
14
|
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
15
|
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
16
|
+
* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
17
|
+
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
18
|
+
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
19
|
+
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
20
|
+
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
21
|
+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
22
|
+
* POSSIBILITY OF SUCH DAMAGE.
|
23
|
+
******************************************************************************/
|
24
|
+
package org.jbox2d.dynamics.joints;
|
25
|
+
|
26
|
+
public enum LimitState {
|
27
|
+
INACTIVE, AT_LOWER, AT_UPPER, EQUAL
|
28
|
+
}
|