コード例 #1
0
        /// <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;
        }
コード例 #2
0
 public IntersectionEventArgs(RigidBody body1, RigidBody body2, IntersectionData intersectionData)
 {
     Body1            = body1;
     Body2            = body2;
     IntersectionData = intersectionData;
 }