using System.Numerics; using Robust.Client.Graphics; using Robust.Shared.Map; using Robust.Shared.Maths; namespace Robust.Client.UserInterface.CustomControls { /// /// Base interface for controls that display a viewport. /// /// /// This has to be implemented for correct handling of input, /// you do not strictly need to implement this otherwise. /// public interface IViewportControl { IClydeWindow? Window { get; } /// /// Converts a point on the screen to map coordinates. /// /// /// The coordinates, in ABSOLUTE SCREEN PIXEL COORDINATES. NOT CONTROL-RELATIVE COORDINATES. /// MapCoordinates ScreenToMap(Vector2 coords); /// /// Similar to , except it should compensate for the effects of shaders on viewports. /// MapCoordinates PixelToMap(Vector2 point); /// /// Converts a point on the map to screen coordinates. /// /// /// The coordinates, in ABSOLUTE SCREEN PIXEL COORDINATES. NOT CONTROL-RELATIVE COORDINATES. /// Vector2 WorldToScreen(Vector2 map); /// /// Returns a matrix that can be used to perform the transformations. /// /// /// This is generally just be a combination of and /// Matrix3x2 GetWorldToScreenMatrix(); /// /// Returns a matrix that can be used to transform from view-port local to screen coordinates. /// Matrix3x2 GetLocalToScreenMatrix(); } }