1
0
mirror of https://github.com/Memorix101/UnityXNA/ synced 2024-12-30 15:25:35 +01:00

55 lines
1.5 KiB
C#
Raw Permalink Normal View History

#region File Description
//-----------------------------------------------------------------------------
// Circle.cs
//
// Microsoft XNA Community Game Platform
// Copyright (C) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
#endregion
using System;
using Microsoft.Xna.Framework;
namespace Platformer
{
/// <summary>
/// Represents a 2D circle.
/// </summary>
struct Circle
{
/// <summary>
/// Center position of the circle.
/// </summary>
public Vector2 Center;
/// <summary>
/// Radius of the circle.
/// </summary>
public float Radius;
/// <summary>
/// Constructs a new circle.
/// </summary>
public Circle(Vector2 position, float radius)
{
Center = position;
Radius = radius;
}
/// <summary>
/// Determines if a circle intersects a rectangle.
/// </summary>
/// <returns>True if the circle and rectangle overlap. False otherwise.</returns>
public bool Intersects(Rectangle rectangle)
{
Vector2 v = new Vector2(MathHelper.Clamp(Center.X, rectangle.Left, rectangle.Right),
MathHelper.Clamp(Center.Y, rectangle.Top, rectangle.Bottom));
Vector2 direction = Center - v;
float distanceSquared = direction.LengthSquared();
return ((distanceSquared > 0) && (distanceSquared < Radius * Radius));
}
}
}