# Class Fixture

java.lang.Object
com.codename1.gaming.physics.box2d.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.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `Body`
  `m_body`
  `float`
  `m_density`
  `final Filter`
  `m_filter`
  `float`
  `m_friction`
  `boolean`
  `m_isSensor`
  `Fixture`
  `m_next`
  `FixtureProxy[]`
  `m_proxies`
  `int`
  `m_proxyCount`
  `float`
  `m_restitution`
  `Shape`
  `m_shape`
  `Object`
  `m_userData`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Fixture()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `create(Body body, FixtureDef def)`
  `void`
  `createProxies(BroadPhase broadPhase, Transform xf)`
  `void`
  `destroy()`
  `void`
  `destroyProxies(BroadPhase broadPhase)`
  Internal method
  `void`
  `dump(int bodyIndex)`
  Dump this fixture to the log file.
  `AABB`
  `getAABB(int childIndex)`
  Get the fixture's AABB.
  `Body`
  `getBody()`
  Get the parent body of this fixture.
  `float`
  `getDensity()`
  `Filter`
  `getFilterData()`
  Get the contact filtering data.
  `float`
  `getFriction()`
  Get the coefficient of friction.
  `void`
  `getMassData(MassData massData)`
  Get the mass data for this fixture.
  `Fixture`
  `getNext()`
  Get the next fixture in the parent body's fixture list.
  `float`
  `getRestitution()`
  Get the coefficient of restitution.
  `Shape`
  `getShape()`
  Get the child shape.
  `ShapeType`
  `getType()`
  Get the type of the child shape.
  `Object`
  `getUserData()`
  Get the user data that was assigned in the fixture definition.
  `boolean`
  `isSensor()`
  Is this fixture a sensor (non-solid)?
  `boolean`
  `raycast(RayCastOutput output, RayCastInput input, int childIndex)`
  Cast a ray against this shape.
  `void`
  `refilter()`
  Call this if you want to establish collision that was previously disabled by ContactFilter::ShouldCollide.
  `void`
  `setDensity(float density)`
  `void`
  `setFilterData(Filter filter)`
  Set the contact filtering data.
  `void`
  `setFriction(float friction)`
  Set the coefficient of friction.
  `void`
  `setRestitution(float restitution)`
  Set the coefficient of restitution.
  `void`
  `setSensor(boolean sensor)`
  Set if this fixture is a sensor.
  `void`
  `setUserData(Object data)`
  Set the user data.
  `protected void`
  `synchronize(BroadPhase broadPhase, Transform transform1, Transform transform2)`
  Internal method
  `boolean`
  `testPoint(Vec2 p)`
  Test a point for containment in this fixture.

  ### Methods inherited from class Object

  `clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### 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 Object m_userData

- ## Constructor Details

  - ### Fixture

    public Fixture()

- ## Method Details

  - ### 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 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(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` -