C# Class Project290.Physics.Collision.Collision

Afficher le fichier Open project: scastle/Solitude

Méthodes publiques

Méthode Description
CollideCircles ( Manifold &manifold, CircleShape circleA, Transform &xfA, CircleShape circleB, Transform &xfB ) : void
CollideEdgeAndCircle ( Manifold &manifold, EdgeShape edgeA, Transform &transformA, CircleShape circleB, Transform &transformB ) : void

Compute contact points for edge versus circle. This accounts for edge connectivity.

CollideEdgeAndPolygon ( Manifold &manifold, EdgeShape edgeA, Transform &xfA, PolygonShape polygonB, Transform &xfB ) : void

Collides and edge and a polygon, taking into account edge adjacency.

CollidePolygonAndCircle ( Manifold &manifold, PolygonShape polygonA, Transform &transformA, CircleShape circleB, Transform &transformB ) : void

Compute the collision manifold between a polygon and a circle.

CollidePolygons ( Manifold &manifold, PolygonShape polyA, Transform &transformA, PolygonShape polyB, Transform &transformB ) : void

Compute the collision manifold between two polygons.

GetPointStates ( FixedArray2 &state1, FixedArray2 &state2, Manifold &manifold1, Manifold &manifold2 ) : void
GetWorldManifold ( Manifold &manifold, Transform &transformA, float radiusA, Transform &transformB, float radiusB, Vector2 &normal, FixedArray2 &points ) : void

Evaluate the manifold with supplied transforms. This assumes modest motion from the original state. This does not change the point count, impulses, etc. The radii must come from the Shapes that generated the manifold.

Private Methods

Méthode Description
ClipSegmentToLine ( FixedArray2 &vOut, FixedArray2 &vIn, Vector2 normal, float offset, int vertexIndexA ) : int

Clipping for contact manifolds.

ComputeEdgeSeparation ( ) : EPAxis
ComputePolygonSeparation ( ) : EPAxis
EdgeSeparation ( PolygonShape poly1, Transform &xf1, int edge1, PolygonShape poly2, Transform &xf2 ) : float

Find the separation between poly1 and poly2 for a give edge normal on poly1.

FindIncidentEdge ( FixedArray2 &c, EPProxy proxy1, int edge1, EPProxy proxy2 ) : void
FindIncidentEdge ( FixedArray2 &c, PolygonShape poly1, Transform &xf1, int edge1, PolygonShape poly2, Transform &xf2 ) : void
FindMaxSeparation ( int &edgeIndex, PolygonShape poly1, Transform &xf1, PolygonShape poly2, Transform &xf2 ) : float

Find the max separation between poly1 and poly2 using edge normals from poly1.

Method Details

CollideCircles() public static méthode

public static CollideCircles ( Manifold &manifold, CircleShape circleA, Transform &xfA, CircleShape circleB, Transform &xfB ) : void
manifold Manifold
circleA Project290.Physics.Collision.Shapes.CircleShape
xfA Transform
circleB Project290.Physics.Collision.Shapes.CircleShape
xfB Transform
Résultat void

CollideEdgeAndCircle() public static méthode

Compute contact points for edge versus circle. This accounts for edge connectivity.
public static CollideEdgeAndCircle ( Manifold &manifold, EdgeShape edgeA, Transform &transformA, CircleShape circleB, Transform &transformB ) : void
manifold Manifold The manifold.
edgeA Project290.Physics.Collision.Shapes.EdgeShape The edge A.
transformA Transform The transform A.
circleB Project290.Physics.Collision.Shapes.CircleShape The circle B.
transformB Transform The transform B.
Résultat void

CollideEdgeAndPolygon() public static méthode

Collides and edge and a polygon, taking into account edge adjacency.
public static CollideEdgeAndPolygon ( Manifold &manifold, EdgeShape edgeA, Transform &xfA, PolygonShape polygonB, Transform &xfB ) : void
manifold Manifold The manifold.
edgeA Project290.Physics.Collision.Shapes.EdgeShape The edge A.
xfA Transform The xf A.
polygonB Project290.Physics.Collision.Shapes.PolygonShape The polygon B.
xfB Transform The xf B.
Résultat void

CollidePolygonAndCircle() public static méthode

Compute the collision manifold between a polygon and a circle.
public static CollidePolygonAndCircle ( Manifold &manifold, PolygonShape polygonA, Transform &transformA, CircleShape circleB, Transform &transformB ) : void
manifold Manifold The manifold.
polygonA Project290.Physics.Collision.Shapes.PolygonShape The polygon A.
transformA Transform The transform of A.
circleB Project290.Physics.Collision.Shapes.CircleShape The circle B.
transformB Transform The transform of B.
Résultat void

CollidePolygons() public static méthode

Compute the collision manifold between two polygons.
public static CollidePolygons ( Manifold &manifold, PolygonShape polyA, Transform &transformA, PolygonShape polyB, Transform &transformB ) : void
manifold Manifold The manifold.
polyA Project290.Physics.Collision.Shapes.PolygonShape The poly A.
transformA Transform The transform A.
polyB Project290.Physics.Collision.Shapes.PolygonShape The poly B.
transformB Transform The transform B.
Résultat void

GetPointStates() public static méthode

public static GetPointStates ( FixedArray2 &state1, FixedArray2 &state2, Manifold &manifold1, Manifold &manifold2 ) : void
state1 FixedArray2
state2 FixedArray2
manifold1 Manifold
manifold2 Manifold
Résultat void

GetWorldManifold() public static méthode

Evaluate the manifold with supplied transforms. This assumes modest motion from the original state. This does not change the point count, impulses, etc. The radii must come from the Shapes that generated the manifold.
public static GetWorldManifold ( Manifold &manifold, Transform &transformA, float radiusA, Transform &transformB, float radiusB, Vector2 &normal, FixedArray2 &points ) : void
manifold Manifold The manifold.
transformA Transform The transform for A.
radiusA float The radius for A.
transformB Transform The transform for B.
radiusB float The radius for B.
normal Vector2 World vector pointing from A to B
points FixedArray2 Torld contact point (point of intersection).
Résultat void