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); } }