diff --git a/OpenRa.Game/MainWindow.cs b/OpenRa.Game/MainWindow.cs index b24aa9d02d..791583b63e 100644 --- a/OpenRa.Game/MainWindow.cs +++ b/OpenRa.Game/MainWindow.cs @@ -74,7 +74,7 @@ namespace OpenRa.Game } } - PointF scrollPos, oldPos; + PointF scrollPos; int x1,y1; protected override void OnMouseDown(MouseEventArgs e) @@ -83,7 +83,6 @@ namespace OpenRa.Game x1 = e.X; y1 = e.Y; - oldPos = scrollPos; } protected override void OnMouseMove(MouseEventArgs e) @@ -92,9 +91,14 @@ namespace OpenRa.Game if (e.Button != 0) { - scrollPos = oldPos; scrollPos.X += x1 - e.X; scrollPos.Y += y1 - e.Y; + + x1 = e.X; + y1 = e.Y; + + scrollPos.X = Util.Constrain( scrollPos.X, new Range(0, map.Width * 24 - ClientSize.Width)); + scrollPos.Y = Util.Constrain(scrollPos.Y, new Range(0, map.Height * 24 - ClientSize.Height)); } } diff --git a/OpenRa.Game/Renderer.cs b/OpenRa.Game/Renderer.cs index 1fbf25b614..700208baea 100644 --- a/OpenRa.Game/Renderer.cs +++ b/OpenRa.Game/Renderer.cs @@ -43,7 +43,7 @@ namespace OpenRa.Game public void BeginFrame( PointF r1, PointF r2, PointF scroll ) { device.Begin(); - device.Clear(0, Surfaces.Color); + //device.Clear(0, Surfaces.Color); shader.SetValue(scrollHandle, scroll); shader.SetValue(r1Handle, r1); diff --git a/OpenRa.Game/Util.cs b/OpenRa.Game/Util.cs index 1bf5a6292c..2696780c8f 100644 --- a/OpenRa.Game/Util.cs +++ b/OpenRa.Game/Util.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Text; using OpenRa.FileFormats; using System.Drawing; +using BluntDirectX.Direct3D; namespace OpenRa.Game { @@ -24,6 +25,11 @@ namespace OpenRa.Game return (v > 0) ? v1 : v0; } + public static float Constrain(float x, Range range) + { + return x < range.Start ? range.Start : x > range.End ? range.End : x; + } + static PointF EncodeVertexAttributes(TextureChannel channel, int paletteLine) { Converter channelEncoder = delegate(TextureChannel c)