Class Fixture

java.lang.Object
org.jbox2d.dynamics.Fixture

public class Fixture extends Object
A 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.
Author:
Daniel Murphy
Warning:
you cannot reuse fixtures.
  • Field Details

    • next

      public Fixture next
    • body

      public Body body
    • shape

      public Shape shape
      The shape, this must be set. The shape will be cloned, so you can create the shape on the stack.
    • userData

      public Object userData
      Use this to store application specific fixture data.
    • friction

      public float friction
      The friction coefficient, usually in the range [0,1].
    • restitution

      public float restitution
      The restitution (elasticity) usually in the range [0,1].
    • density

      public float density
      The density, usually in kg/m^2
    • isSensor

      public boolean isSensor
      A sensor shape collects contact information but never generates a collision response.
    • filter

      public final Filter filter
      Contact filtering data;
    • proxies

      public FixtureProxy[] proxies
    • proxyCount

      public int proxyCount
  • Constructor Details

    • Fixture

      public Fixture()
  • Method Details

    • getType

      public ShapeType getType()
      Get the type of the child shape. You can use this to downcast 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.
    • 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.
    • 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.
    • getFilterData

      public Filter getFilterData()
      Get the contact filtering data.
    • refilter

      public void refilter()
      Call this if you want to establish a 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 Object getUserData()
      Get the user data that was assigned in the fixture definition. Use this to store your application-specific data.
    • setUserData

      public void setUserData(Object data)
      Set the user data. Use this to store your application-specific 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 the world coordinates.
    • 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.
    • 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.
    • setFriction

      public void setFriction(float friction)
      Set the coefficient of friction. This will _not_ change the friction of existing contacts.
    • getRestitution

      public float getRestitution()
      Get the coefficient of restitution.
    • setRestitution

      public void setRestitution(float restitution)
      Set the coefficient of restitution. This will _not_ change the restitution of existing contacts.
    • 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.
    • computeDistance

      public float computeDistance(Vec2 p, int childIndex, Vec2 normalOut)
      Compute the distance from this fixture.
      Parameters:
      p - A point in world coordinates.
      Returns:
      distance
    • 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
    • synchronize

      protected void synchronize(BroadPhase broadPhase, Transform transform1, Transform transform2)
      Internal method