# Class Contact

java.lang.Object
com.codename1.gaming.physics.box2d.dynamics.contacts.Contact

Direct Known Subclasses:
  `ChainAndCircleContact, ChainAndPolygonContact, CircleContact, EdgeAndCircleContact, EdgeAndPolygonContact, PolygonAndCircleContact, PolygonContact`

public abstract class Contact extends Object
The class manages contact between two shapes. A contact exists for each overlapping AABB in the broad-phase (except if filtered). Therefore a contact object may exist that has no contact points.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final int`
  `BULLET_HIT_FLAG`
  `static final int`
  `ENABLED_FLAG`
  `static final int`
  `FILTER_FLAG`
  `static final int`
  `ISLAND_FLAG`
  `Fixture`
  `m_fixtureA`
  `Fixture`
  `m_fixtureB`
  `int`
  `m_flags`
  `float`
  `m_friction`
  `int`
  `m_indexA`
  `int`
  `m_indexB`
  `final Manifold`
  `m_manifold`
  `Contact`
  `m_next`
  `ContactEdge`
  `m_nodeA`
  `ContactEdge`
  `m_nodeB`
  `Contact`
  `m_prev`
  `float`
  `m_restitution`
  `float`
  `m_tangentSpeed`
  `float`
  `m_toi`
  `float`
  `m_toiCount`
  `protected final IWorldPool`
  `pool`
  `static final int`
  `TOI_FLAG`
  `static final int`
  `TOUCHING_FLAG`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `Contact(IWorldPool argPool)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `abstract void`
  `evaluate(Manifold manifold, Transform xfA, Transform xfB)`
  `void`
  `flagForFiltering()`
  Flag this contact for filtering.
  `int`
  `getChildIndexA()`
  `int`
  `getChildIndexB()`
  `Fixture`
  `getFixtureA()`
  Get the first fixture in this contact.
  `Fixture`
  `getFixtureB()`
  Get the second fixture in this contact.
  `float`
  `getFriction()`
  `Manifold`
  `getManifold()`
  Get the contact manifold.
  `Contact`
  `getNext()`
  Get the next contact in the world's contact list.
  `float`
  `getRestitution()`
  `float`
  `getTangentSpeed()`
  `void`
  `getWorldManifold(WorldManifold worldManifold)`
  Get the world manifold.
  `void`
  `init(Fixture fA, int indexA, Fixture fB, int indexB)`
  initialization for pooling
  `boolean`
  `isEnabled()`
  Has this contact been disabled?
  `boolean`
  `isTouching()`
  Is this contact touching
  `static final float`
  `mixFriction(float friction1, float friction2)`
  Friction mixing law.
  `static final float`
  `mixRestitution(float restitution1, float restitution2)`
  Restitution mixing law.
  `void`
  `resetFriction()`
  `void`
  `resetRestitution()`
  `void`
  `setEnabled(boolean flag)`
  Enable/disable this contact.
  `void`
  `setFriction(float friction)`
  `void`
  `setRestitution(float restitution)`
  `void`
  `setTangentSpeed(float speed)`
  `void`
  `update(ContactListener listener)`

  ### Methods inherited from class Object

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

- ## Field Details

  - ### ISLAND_FLAG

    public static final int ISLAND_FLAG
    See Also:
      - Constant Field Values

  - ### TOUCHING_FLAG

    public static final int TOUCHING_FLAG
    See Also:
      - Constant Field Values

  - ### ENABLED_FLAG

    public static final int ENABLED_FLAG
    See Also:
      - Constant Field Values

  - ### FILTER_FLAG

    public static final int FILTER_FLAG
    See Also:
      - Constant Field Values

  - ### BULLET_HIT_FLAG

    public static final int BULLET_HIT_FLAG
    See Also:
      - Constant Field Values

  - ### TOI_FLAG

    public static final int TOI_FLAG
    See Also:
      - Constant Field Values

  - ### m_flags

    public int m_flags

  - ### m_prev

    public Contact m_prev

  - ### m_next

    public Contact m_next

  - ### m_nodeA

    public ContactEdge m_nodeA

  - ### m_nodeB

    public ContactEdge m_nodeB

  - ### m_fixtureA

    public Fixture m_fixtureA

  - ### m_fixtureB

    public Fixture m_fixtureB

  - ### m_indexA

    public int m_indexA

  - ### m_indexB

    public int m_indexB

  - ### m_manifold

    public final Manifold m_manifold

  - ### m_toiCount

    public float m_toiCount

  - ### m_toi

    public float m_toi

  - ### m_friction

    public float m_friction

  - ### m_restitution

    public float m_restitution

  - ### m_tangentSpeed

    public float m_tangentSpeed

  - ### pool

    protected final IWorldPool pool

- ## Constructor Details

  - ### Contact

    protected Contact(IWorldPool argPool)

- ## Method Details

  - ### init

    public void init(Fixture fA, int indexA, Fixture fB, int indexB)
    initialization for pooling

  - ### getManifold

    public Manifold getManifold()
    Get the contact manifold. Do not set the point count to zero. Instead call Disable.

  - ### getWorldManifold

    public void getWorldManifold(WorldManifold worldManifold)
    Get the world manifold.

  - ### isTouching

    public boolean isTouching()
    Is this contact touching
    Returns:

  - ### setEnabled

    public void setEnabled(boolean flag)
    Enable/disable this contact. This can be used inside the pre-solve contact listener. The contact is only disabled for the current time step (or sub-step in continuous collisions).
    Parameters:
      `flag` -

  - ### isEnabled

    public boolean isEnabled()
    Has this contact been disabled?
    Returns:

  - ### getNext

    public Contact getNext()
    Get the next contact in the world's contact list.
    Returns:

  - ### getFixtureA

    public Fixture getFixtureA()
    Get the first fixture in this contact.
    Returns:

  - ### getChildIndexA

    public int getChildIndexA()

  - ### getFixtureB

    public Fixture getFixtureB()
    Get the second fixture in this contact.
    Returns:

  - ### getChildIndexB

    public int getChildIndexB()

  - ### setFriction

    public void setFriction(float friction)

  - ### getFriction

    public float getFriction()

  - ### resetFriction

    public void resetFriction()

  - ### setRestitution

    public void setRestitution(float restitution)

  - ### getRestitution

    public float getRestitution()

  - ### resetRestitution

    public void resetRestitution()

  - ### setTangentSpeed

    public void setTangentSpeed(float speed)

  - ### getTangentSpeed

    public float getTangentSpeed()

  - ### evaluate

    public abstract void evaluate(Manifold manifold, Transform xfA, Transform xfB)

  - ### flagForFiltering

    public void flagForFiltering()
    Flag this contact for filtering. Filtering will occur the next time step.

  - ### update

    public void update(ContactListener listener)

  - ### mixFriction

    public static final float mixFriction(float friction1, float friction2)
    Friction mixing law. The idea is to allow either fixture to drive the restitution to zero. For example, anything slides on ice.
    Parameters:
      `friction1` -
      `friction2` -
    Returns:

  - ### mixRestitution

    public static final float mixRestitution(float restitution1, float restitution2)
    Restitution mixing law. The idea is allow for anything to bounce off an inelastic surface. For example, a superball bounces on anything.
    Parameters:
      `restitution1` -
      `restitution2` -
    Returns: