public abstract class Contact

  1. Object
  2. Contact

Known subtypesChainAndCircleContact, ChainAndPolygonContact, CircleContact, EdgeAndCircleContact, EdgeAndPolygonContact, PolygonAndCircleContact, PolygonContact

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.

Fields

public static final int ISLAND_FLAG = 1
public static final int TOUCHING_FLAG = 2
public static final int ENABLED_FLAG = 4
public static final int FILTER_FLAG = 8
public static final int BULLET_HIT_FLAG = 16
public static final int TOI_FLAG = 32
public int m_flags
public Contact m_prev
public Contact m_next
public ContactEdge m_nodeA
public ContactEdge m_nodeB
public Fixture m_fixtureA
public Fixture m_fixtureB
public int m_indexA
public int m_indexB
public final Manifold m_manifold
public float m_toiCount
public float m_toi
public float m_friction
public float m_restitution
public float m_tangentSpeed
protected final IWorldPool pool

Constructors

protected Contact(IWorldPool argPool)

Methods

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

Inherited methods

Field details

ISLAND_FLAG

public static final int ISLAND_FLAG = 1

TOUCHING_FLAG

public static final int TOUCHING_FLAG = 2

ENABLED_FLAG

public static final int ENABLED_FLAG = 4

FILTER_FLAG

public static final int FILTER_FLAG = 8

BULLET_HIT_FLAG

public static final int BULLET_HIT_FLAG = 16

TOI_FLAG

public static final int TOI_FLAG = 32

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

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).

isEnabled

public boolean isEnabled()
Has this contact been disabled?

getNext

public Contact getNext()
Get the next contact in the world’s contact list.

getFixtureA

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

getChildIndexA

public int getChildIndexA()

getFixtureB

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

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.

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.