/// <summary> /// Creates a new intersection event. /// </summary> /// <param name="rigidBody1">The first body involved (arbitrary).</param> /// <param name="rigidBody2">The second body involved (arbitrary).</param> /// <param name="collisionAxis">The axis of the collision (traditionally the axis of minimum intersection between the bodies).</param> /// <param name="intersectionRecipient">The recipient of the intersection (the body with a valid penetrated side segment).</param> public IntersectionEvent(RigidBody sender, RigidBody reciever, IntersectionData intersectionData) { this.collisionAxis = intersectionData.IntersectionAxis; this.intersectionData = intersectionData; float collisionNormalAngle = (float)Math.Atan2(collisionAxis.EndPoints[1].Y - collisionAxis.EndPoints[0].Y, collisionAxis.EndPoints[1].X - collisionAxis.EndPoints[0].X); collisionNormal = new Vector2((float)Math.Cos(collisionNormalAngle), (float)Math.Sin(collisionNormalAngle)); //Set order of bodies rigidBodies = new RigidBody[2]; rigidBodies[(int)Collider.Sender] = sender; rigidBodies[(int)Collider.Receiver] = reciever; }
public IntersectionEventArgs(RigidBody body1, RigidBody body2, IntersectionData intersectionData) { Body1 = body1; Body2 = body2; IntersectionData = intersectionData; }