Package org.jbox2d.dynamics
Class Fixture
- java.lang.Object
-
- org.jbox2d.dynamics.Fixture
-
public class Fixture extends java.lang.ObjectA fixture is used to attach a shape to a body for collision detection. A fixture inherits its transform from its parent. Fixtures hold additional non-geometric data such as friction, collision filters, etc. Fixtures are created via Body::CreateFixture.
-
-
Field Summary
Fields Modifier and Type Field Description private Vec2displacementBodym_bodyfloatm_densityFilterm_filterfloatm_frictionbooleanm_isSensorFixturem_nextFixtureProxy[]m_proxiesintm_proxyCountfloatm_restitutionShapem_shapejava.lang.Objectm_userDataprivate AABBpool1private AABBpool2
-
Constructor Summary
Constructors Constructor Description Fixture()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcreate(Body body, FixtureDef def)voidcreateProxies(BroadPhase broadPhase, Transform xf)voiddestroy()voiddestroyProxies(BroadPhase broadPhase)Internal methodvoiddump(int bodyIndex)Dump this fixture to the log file.AABBgetAABB(int childIndex)Get the fixture's AABB.BodygetBody()Get the parent body of this fixture.floatgetDensity()FiltergetFilterData()Get the contact filtering data.floatgetFriction()Get the coefficient of friction.voidgetMassData(MassData massData)Get the mass data for this fixture.FixturegetNext()Get the next fixture in the parent body's fixture list.floatgetRestitution()Get the coefficient of restitution.ShapegetShape()Get the child shape.ShapeTypegetType()Get the type of the child shape.java.lang.ObjectgetUserData()Get the user data that was assigned in the fixture definition.booleanisSensor()Is this fixture a sensor (non-solid)?booleanraycast(RayCastOutput output, RayCastInput input, int childIndex)Cast a ray against this shape.voidrefilter()Call this if you want to establish collision that was previously disabled by ContactFilter::ShouldCollide.voidsetDensity(float density)voidsetFilterData(Filter filter)Set the contact filtering data.voidsetFriction(float friction)Set the coefficient of friction.voidsetRestitution(float restitution)Set the coefficient of restitution.voidsetSensor(boolean sensor)Set if this fixture is a sensor.voidsetUserData(java.lang.Object data)Set the user data.protected voidsynchronize(BroadPhase broadPhase, Transform transform1, Transform transform2)Internal methodbooleantestPoint(Vec2 p)Test a point for containment in this fixture.
-
-
-
Field Detail
-
m_density
public float m_density
-
m_next
public Fixture m_next
-
m_body
public Body m_body
-
m_shape
public Shape m_shape
-
m_friction
public float m_friction
-
m_restitution
public float m_restitution
-
m_proxies
public FixtureProxy[] m_proxies
-
m_proxyCount
public int m_proxyCount
-
m_filter
public final Filter m_filter
-
m_isSensor
public boolean m_isSensor
-
m_userData
public java.lang.Object m_userData
-
pool1
private final AABB pool1
-
pool2
private final AABB pool2
-
displacement
private final Vec2 displacement
-
-
Method Detail
-
getType
public ShapeType getType()
Get the type of the child shape. You can use this to down cast to the concrete shape.- Returns:
- the shape type.
-
getShape
public Shape getShape()
Get the child shape. You can modify the child shape, however you should not change the number of vertices because this will crash some collision caching mechanisms.- Returns:
-
isSensor
public boolean isSensor()
Is this fixture a sensor (non-solid)?- Returns:
- the true if the shape is a sensor.
-
setSensor
public void setSensor(boolean sensor)
Set if this fixture is a sensor.- Parameters:
sensor-
-
setFilterData
public void setFilterData(Filter filter)
Set the contact filtering data. This is an expensive operation and should not be called frequently. This will not update contacts until the next time step when either parent body is awake. This automatically calls refilter.- Parameters:
filter-
-
getFilterData
public Filter getFilterData()
Get the contact filtering data.- Returns:
-
refilter
public void refilter()
Call this if you want to establish collision that was previously disabled by ContactFilter::ShouldCollide.
-
getBody
public Body getBody()
Get the parent body of this fixture. This is NULL if the fixture is not attached.- Returns:
- the parent body.
-
getNext
public Fixture getNext()
Get the next fixture in the parent body's fixture list.- Returns:
- the next shape.
-
setDensity
public void setDensity(float density)
-
getDensity
public float getDensity()
-
getUserData
public java.lang.Object getUserData()
Get the user data that was assigned in the fixture definition. Use this to store your application specific data.- Returns:
-
setUserData
public void setUserData(java.lang.Object data)
Set the user data. Use this to store your application specific data.- Parameters:
data-
-
testPoint
public boolean testPoint(Vec2 p)
Test a point for containment in this fixture. This only works for convex shapes.- Parameters:
p- a point in world coordinates.- Returns:
-
raycast
public boolean raycast(RayCastOutput output, RayCastInput input, int childIndex)
Cast a ray against this shape.- Parameters:
output- the ray-cast results.input- the ray-cast input parameters.output-input-
-
getMassData
public void getMassData(MassData massData)
Get the mass data for this fixture. The mass data is based on the density and the shape. The rotational inertia is about the shape's origin.
-
getFriction
public float getFriction()
Get the coefficient of friction.- Returns:
-
setFriction
public void setFriction(float friction)
Set the coefficient of friction. This will _not_ change the friction of existing contacts.- Parameters:
friction-
-
getRestitution
public float getRestitution()
Get the coefficient of restitution.- Returns:
-
setRestitution
public void setRestitution(float restitution)
Set the coefficient of restitution. This will _not_ change the restitution of existing contacts.- Parameters:
restitution-
-
getAABB
public AABB getAABB(int childIndex)
Get the fixture's AABB. This AABB may be enlarge and/or stale. If you need a more accurate AABB, compute it using the shape and the body transform.- Returns:
-
dump
public void dump(int bodyIndex)
Dump this fixture to the log file.- Parameters:
bodyIndex-
-
create
public void create(Body body, FixtureDef def)
-
destroy
public void destroy()
-
createProxies
public void createProxies(BroadPhase broadPhase, Transform xf)
-
destroyProxies
public void destroyProxies(BroadPhase broadPhase)
Internal method- Parameters:
broadPhase-
-
synchronize
protected void synchronize(BroadPhase broadPhase, Transform transform1, Transform transform2)
Internal method- Parameters:
broadPhase-xf1-xf2-
-
-