using System.Diagnostics; using Microsoft.Xna.Framework; namespace BouncyCatIsBouncy { class PhysicsGeom { PhysicsBody m_body; ICollidable m_bounding; Vector2 m_offset; public PhysicsBody Body { get { return m_body; } } public ICollidable Bounding { get { return m_bounding; } set { m_bounding = value; } } public PhysicsGeom(PhysicsBody body, ICollidable bounding) : this(body, bounding, Vector2.Zero) { } public PhysicsGeom(PhysicsBody body, ICollidable bounding, Vector2 offset) { Debug.Assert(body != null); m_bounding = bounding; body.Geometry.Add(this); m_offset = offset; m_body = body; } private void UpdateBoundingPosition() { m_bounding.Center = m_body.Position + m_offset; } public CollisionInfo BroadCollides(PhysicsGeom other) { UpdateBoundingPosition(); other.UpdateBoundingPosition(); return m_bounding.Collides((RadialBB)other.Bounding); } } }