//----------------------------------------------------------------------------- // Static Collision Test Methods //----------------------------------------------------------------------------- // Perform a collision test between two entities. public static CollisionInfo PerformCollisionTest(Entity entity, Entity other, CollisionTestSettings settings) { CollisionInfo collisionInfo = new CollisionInfo(); // Check that the other entity meets the collision requirements. if ((entity != other) && (settings.RequiredType == null || settings.RequiredType.IsAssignableFrom(other.GetType())) && (settings.RequiredFlags == 0 || other.Physics.Flags.HasFlag(settings.RequiredFlags)) && (settings.MaxZDistance < 0.0f || Math.Abs(entity.ZPosition - other.ZPosition) <= settings.MaxZDistance)) { // Setup the collision boxes. Rectangle2F cbox1 = settings.GetCollisionBox1(entity); cbox1.Point += entity.Position; Rectangle2F cbox2 = settings.GetCollisionBox2(other); cbox2.Point += other.Position; // Perform the collision test. if (cbox1.Intersects(cbox2)) { collisionInfo.SetEntityCollision(other, 0); } } return collisionInfo; }
//----------------------------------------------------------------------------- // Static Collision Test Methods //----------------------------------------------------------------------------- // Perform a collision test between two entities. public static CollisionInfo PerformCollisionTest(Entity entity, Entity other, CollisionTestSettings settings) { CollisionInfo collisionInfo = new CollisionInfo(); // Check that the other entity meets the collision requirements. if ((entity != other) && (settings.RequiredType == null || settings.RequiredType.IsAssignableFrom(other.GetType())) && (settings.RequiredFlags == 0 || other.Physics.Flags.HasFlag(settings.RequiredFlags)) && (settings.MaxZDistance < 0.0f || Math.Abs(entity.ZPosition - other.ZPosition) <= settings.MaxZDistance)) { // Setup the collision boxes. Rectangle2F cbox1 = settings.GetCollisionBox1(entity); cbox1.Point += entity.Position; Rectangle2F cbox2 = settings.GetCollisionBox2(other); cbox2.Point += other.Position; // Perform the collision test. if (cbox1.Intersects(cbox2)) { collisionInfo.SetEntityCollision(other, 0); } } return(collisionInfo); }