private static void RectCircle(Manifold manifold, PhysShapeRect a, PhysShapeCircle b, bool flip, out CollisionFeatures features) { var aPos = manifold.A.Entity.Transform.WorldPosition; var bPos = manifold.B.Entity.Transform.WorldPosition; var bRot = (float)manifold.B.Entity.Transform.WorldRotation.Theta; CalculateCollisionFeatures(new OrientedRectangle(aPos, a.Rectangle, bRot), new Circle(bPos, b.Radius), flip, out features); }
private static void CircleBBox(Manifold manifold, PhysShapeCircle a, PhysShapeAabb b, bool flip, out CollisionFeatures features) { var aRad = a.Radius; var aPos = manifold.A.Entity.Transform.WorldPosition; var bBox = b.LocalBounds.Translated(manifold.B.Entity.Transform.WorldPosition); CalculateCollisionFeatures(in bBox, new Circle(aPos, aRad), flip, out features); }
private static void CircleCircle(Manifold manifold, PhysShapeCircle a, PhysShapeCircle b, bool flip, out CollisionFeatures features) { var aRad = a.Radius; var bRad = b.Radius; var aPos = manifold.A.Entity.Transform.WorldPosition; var bPos = manifold.B.Entity.Transform.WorldPosition; CalculateCollisionFeatures(new Circle(aPos, aRad), new Circle(bPos, bRad), false, out features); }
private static void CircleBox(Manifold manifold, PhysShapeCircle a, PhysShapeAabb b, float flip, out CollisionFeatures features) { var aRad = a.Radius; var aPos = manifold.A.Entity.Transform.WorldPosition; var bRect = new AlignedRectangle(manifold.B.Entity.Transform.WorldPosition, b.LocalBounds.Size / 2); CalculateCollisionFeatures(bRect, new Circle(aPos, aRad), (float)flip * -1, out features); }