org.jbox2d.dynamics.contacts
Class Contact

java.lang.Object
  extended by org.jbox2d.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.

Author:
daniel

Field Summary
static int BULLET_HIT_FLAG
           
static int ENABLED_FLAG
           
static int FILTER_FLAG
           
static int ISLAND_FLAG
           
 Fixture m_fixtureA
           
 Fixture m_fixtureB
           
 int m_flags
           
 float m_friction
           
 int m_indexA
           
 int m_indexB
           
 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  IWorldPool pool
           
static int TOI_FLAG
           
static int TOUCHING_FLAG
           
 
Constructor Summary
protected Contact(IWorldPool argPool)
           
 
Method Summary
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 float mixFriction(float friction1, float friction2)
          Friction mixing law.
static 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 java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

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 Detail

Contact

protected Contact(IWorldPool argPool)
Method Detail

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:


Copyright © 2013. All Rights Reserved.