# Class Collision

java.lang.Object
com.codename1.gaming.physics.box2d.collision.Collision

public class Collision extends Object

Functions used for computing contact points, distance queries, and TOI queries. Collision methods are non-static for pooling speed, retrieve a collision object from the

invalid reference

    SingletonPool

.

Should not be finalructed.

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static class`
  `Collision.ClipVertex`
  Used for computing contact manifolds.
  `static enum`
  `Collision.PointState`
  This is used for determining the state of contact points.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final int`
  `NULL_FEATURE`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Collision(IWorldPool argPool)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static final int`
  `clipSegmentToLine(Collision.ClipVertex[] vOut, Collision.ClipVertex[] vIn, Vec2 normal, float offset, int vertexIndexA)`
  Clipping for contact manifolds.
  `final void`
  `collideCircles(Manifold manifold, CircleShape circle1, Transform xfA, CircleShape circle2, Transform xfB)`
  Compute the collision manifold between two circles.
  `void`
  `collideEdgeAndCircle(Manifold manifold, EdgeShape edgeA, Transform xfA, CircleShape circleB, Transform xfB)`
  `void`
  `collideEdgeAndPolygon(Manifold manifold, EdgeShape edgeA, Transform xfA, PolygonShape polygonB, Transform xfB)`
  `final void`
  `collidePolygonAndCircle(Manifold manifold, PolygonShape polygon, Transform xfA, CircleShape circle, Transform xfB)`
  Compute the collision manifold between a polygon and a circle.
  `final void`
  `collidePolygons(Manifold manifold, PolygonShape polyA, Transform xfA, PolygonShape polyB, Transform xfB)`
  Compute the collision manifold between two polygons.
  `final float`
  `edgeSeparation(PolygonShape poly1, Transform xf1, int edge1, PolygonShape poly2, Transform xf2)`
  Find the separation between poly1 and poly2 for a given edge normal on poly1.
  `final void`
  `findIncidentEdge(Collision.ClipVertex[] c, PolygonShape poly1, Transform xf1, int edge1, PolygonShape poly2, Transform xf2)`
  `final void`
  `findMaxSeparation(com.codename1.gaming.physics.box2d.collision.Collision.EdgeResults results, PolygonShape poly1, Transform xf1, PolygonShape poly2, Transform xf2)`
  Find the max separation between poly1 and poly2 using edge normals from poly1.
  `static final void`
  `getPointStates(Collision.PointState[] state1, Collision.PointState[] state2, Manifold manifold1, Manifold manifold2)`
  Compute the point states given two manifolds.
  `final boolean`
  `testOverlap(Shape shapeA, int indexA, Shape shapeB, int indexB, Transform xfA, Transform xfB)`
  Determine if two generic shapes overlap.

  ### Methods inherited from class Object

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

- ## Field Details

  - ### NULL_FEATURE

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

- ## Constructor Details

  - ### Collision

    public Collision(IWorldPool argPool)

- ## Method Details

  - ### testOverlap

    public final boolean testOverlap(Shape shapeA, int indexA, Shape shapeB, int indexB, Transform xfA, Transform xfB)
    Determine if two generic shapes overlap.
    Parameters:
      `shapeA` -
      `shapeB` -
      `xfA` -
      `xfB` -
    Returns:

  - ### getPointStates

    public static final void getPointStates(Collision.PointState[] state1, Collision.PointState[] state2, Manifold manifold1, Manifold manifold2)
    Compute the point states given two manifolds. The states pertain to the transition from manifold1 to manifold2. So state1 is either persist or remove while state2 is either add or persist.
    Parameters:
      `state1` -
      `state2` -
      `manifold1` -
      `manifold2` -

  - ### clipSegmentToLine

    public static final int clipSegmentToLine(Collision.ClipVertex[] vOut, Collision.ClipVertex[] vIn, Vec2 normal, float offset, int vertexIndexA)
    Clipping for contact manifolds. Sutherland-Hodgman clipping.
    Parameters:
      `vOut` -
      `vIn` -
      `normal` -
      `offset` -
    Returns:

  - ### collideCircles

    public final void collideCircles(Manifold manifold, CircleShape circle1, Transform xfA, CircleShape circle2, Transform xfB)
    Compute the collision manifold between two circles.
    Parameters:
      `manifold` -
      `circle1` -
      `xfA` -
      `circle2` -
      `xfB` -

  - ### collidePolygonAndCircle

    public final void collidePolygonAndCircle(Manifold manifold, PolygonShape polygon, Transform xfA, CircleShape circle, Transform xfB)
    Compute the collision manifold between a polygon and a circle.
    Parameters:
      `manifold` -
      `polygon` -
      `xfA` -
      `circle` -
      `xfB` -

  - ### edgeSeparation

    public final float edgeSeparation(PolygonShape poly1, Transform xf1, int edge1, PolygonShape poly2, Transform xf2)
    Find the separation between poly1 and poly2 for a given edge normal on poly1.
    Parameters:
      `poly1` -
      `xf1` -
      `edge1` -
      `poly2` -
      `xf2` -

  - ### findMaxSeparation

    public final void findMaxSeparation(com.codename1.gaming.physics.box2d.collision.Collision.EdgeResults results, PolygonShape poly1, Transform xf1, PolygonShape poly2, Transform xf2)
    Find the max separation between poly1 and poly2 using edge normals from poly1.
    Parameters:
      `poly1` -
      `xf1` -
      `poly2` -
      `xf2` -
      `edgeIndex` -

  - ### findIncidentEdge

    public final void findIncidentEdge(Collision.ClipVertex[] c, PolygonShape poly1, Transform xf1, int edge1, PolygonShape poly2, Transform xf2)

  - ### collidePolygons

    public final void collidePolygons(Manifold manifold, PolygonShape polyA, Transform xfA, PolygonShape polyB, Transform xfB)
    Compute the collision manifold between two polygons.
    Parameters:
      `manifold` -
      `polygon1` -
      `xf1` -
      `polygon2` -
      `xf2` -

  - ### collideEdgeAndCircle

    public void collideEdgeAndCircle(Manifold manifold, EdgeShape edgeA, Transform xfA, CircleShape circleB, Transform xfB)

  - ### collideEdgeAndPolygon

    public void collideEdgeAndPolygon(Manifold manifold, EdgeShape edgeA, Transform xfA, PolygonShape polygonB, Transform xfB)