using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
namespace SpacePew.Camera
{
public interface ICamera2D
{
///
/// Gets or sets the position of the camera
///
/// The position.
Vector2 Position { get; set; }
///
/// Gets or sets the move speed of the camera.
/// The camera will tween to its destination.
///
/// The move speed.
float MoveSpeed { get; set; }
///
/// Gets or sets the rotation of the camera.
///
/// The rotation.
float Rotation { get; set; }
///
/// Gets the origin of the viewport (accounts for Scale)
///
/// The origin.
Vector2 Origin { get; }
///
/// Gets or sets the scale of the Camera
///
/// The scale.
float Scale { get; set; }
///
/// Gets the screen center (does not account for Scale)
///
/// The screen center.
Vector2 ScreenCenter { get; }
///
/// Gets the transform that can be applied to
/// the SpriteBatch Class.
///
///
/// The transform.
Matrix Transform { get; }
///
/// Gets or sets the focus of the Camera.
///
///
/// The focus.
IFocusable Focus { get; set; }
///
/// Determines whether the target is in view given the specified position.
/// This can be used to increase performance by not drawing objects
/// directly in the viewport
///
/// The position.
/// The texture.
///
/// true if the target is in view at the specified position; otherwise, false.
///
bool IsInView(Vector2 position, Texture2D texture);
}
}