mirror of
https://git.do.srb2.org/STJr/UltimateZoneBuilder.git
synced 2024-11-29 23:22:32 +00:00
Added some boilerplate to the rendering system. It's now impossible to start new rendering cycle if the previous one hasn't finished yet.
Changed: OS name, GPU name and GZDB revision info are now added to the exception text and GZCrash.log. Fixed, cosmetic: toolstrip separators visibility must be updated when resizing the main window. Internal: removed Plug.DisplaySize, Plug.DisplayLocationAbs and Renderer.ViewportSize. The same data can be accessed from anywhere using General.Interface.Display.Size and General.Interface.Display.LocationAbs. Also Plug.DisplayLocationAbs returned incorrect coordinates...
This commit is contained in:
parent
118bda42a7
commit
ff265d87f9
13 changed files with 84 additions and 43 deletions
|
@ -528,6 +528,7 @@
|
||||||
<Reference Include="System.Data" />
|
<Reference Include="System.Data" />
|
||||||
<Reference Include="System.Design" />
|
<Reference Include="System.Design" />
|
||||||
<Reference Include="System.Drawing" />
|
<Reference Include="System.Drawing" />
|
||||||
|
<Reference Include="System.Management" />
|
||||||
<Reference Include="System.Windows.Forms" />
|
<Reference Include="System.Windows.Forms" />
|
||||||
<Reference Include="System.Xml" />
|
<Reference Include="System.Xml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
|
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
using CodeImp.DoomBuilder.Rendering;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
@ -36,7 +37,10 @@ namespace CodeImp.DoomBuilder.Controls
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region ================== Properties
|
#region ================== Properties
|
||||||
|
|
||||||
public event KeyEventHandler OnKeyReleased; //mxd. Sometimes it's handeled here, not by MainForm
|
public event KeyEventHandler OnKeyReleased; //mxd. Sometimes it's handeled here, not by MainForm
|
||||||
|
public Point LocationAbs { get { return this.PointToScreen(new Point(-(General.MainWindow.Width - General.MainWindow.ClientSize.Width) / 2, 0)); } } //mxd
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region ================== Constructor / Disposer
|
#region ================== Constructor / Disposer
|
||||||
|
@ -65,7 +69,7 @@ namespace CodeImp.DoomBuilder.Controls
|
||||||
{
|
{
|
||||||
// Pass on to base
|
// Pass on to base
|
||||||
// Do we really want this?
|
// Do we really want this?
|
||||||
base.RaisePaintEvent(this, pe);
|
if(!D3DDevice.IsRendering) base.RaisePaintEvent(this, pe); //mxd. Dont raise event when in the middle of rendering
|
||||||
}
|
}
|
||||||
|
|
||||||
//mxd
|
//mxd
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Management;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
|
||||||
|
@ -36,12 +37,14 @@ namespace CodeImp.DoomBuilder.GZBuilder.Windows
|
||||||
|
|
||||||
logPath = Path.Combine(General.SettingsPath, @"GZCrash.txt");
|
logPath = Path.Combine(General.SettingsPath, @"GZCrash.txt");
|
||||||
errorDescription.Text = "Error in " + e.Exception.Source + ":";
|
errorDescription.Text = "Error in " + e.Exception.Source + ":";
|
||||||
|
string sysinfo = GetSystemInfo();
|
||||||
using(StreamWriter sw = File.CreateText(logPath))
|
using(StreamWriter sw = File.CreateText(logPath))
|
||||||
{
|
{
|
||||||
sw.Write(GetExceptionDescription(e.Exception));
|
sw.Write(sysinfo + GetExceptionDescription(e.Exception));
|
||||||
}
|
}
|
||||||
|
|
||||||
errorMessage.Text = e.Exception.Message + Environment.NewLine + e.Exception.StackTrace;
|
errorMessage.Text = sysinfo + "********EXCEPTION DETAILS********" + Environment.NewLine
|
||||||
|
+ e.Exception.Message + Environment.NewLine + e.Exception.StackTrace;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Setup()
|
public void Setup()
|
||||||
|
@ -120,6 +123,37 @@ namespace CodeImp.DoomBuilder.GZBuilder.Windows
|
||||||
this.Text = titles[new Random().Next(0, titles.Length - 1)];
|
this.Text = titles[new Random().Next(0, titles.Length - 1)];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static string GetSystemInfo()
|
||||||
|
{
|
||||||
|
string result = "***********SYSTEM INFO***********" + Environment.NewLine;
|
||||||
|
|
||||||
|
// Get OS name
|
||||||
|
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT Caption FROM Win32_OperatingSystem");
|
||||||
|
foreach(ManagementObject mo in searcher.Get())
|
||||||
|
{
|
||||||
|
result += "OS: " + mo["Caption"] + Environment.NewLine;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get GPU name
|
||||||
|
searcher = new ManagementObjectSearcher("SELECT * FROM Win32_VideoController");
|
||||||
|
foreach(ManagementObject mo in searcher.Get())
|
||||||
|
{
|
||||||
|
PropertyData bpp = mo.Properties["CurrentBitsPerPixel"];
|
||||||
|
PropertyData description = mo.Properties["Description"];
|
||||||
|
if(bpp != null && description != null && bpp.Value != null)
|
||||||
|
{
|
||||||
|
result += "GPU: " + description.Value + Environment.NewLine;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get GZDB version
|
||||||
|
result += "GZDB: R" + General.ThisAssembly.GetName().Version.Revision + Environment.NewLine + Environment.NewLine;
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
private static string GetExceptionDescription(Exception ex)
|
private static string GetExceptionDescription(Exception ex)
|
||||||
{
|
{
|
||||||
//add to error logger
|
//add to error logger
|
||||||
|
|
|
@ -41,23 +41,27 @@
|
||||||
//
|
//
|
||||||
// bQuit
|
// bQuit
|
||||||
//
|
//
|
||||||
this.bQuit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
|
||||||
this.bQuit.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
this.bQuit.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||||
this.bQuit.Location = new System.Drawing.Point(537, 195);
|
this.bQuit.Image = global::CodeImp.DoomBuilder.Properties.Resources.SearchClear;
|
||||||
|
this.bQuit.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||||
|
this.bQuit.Location = new System.Drawing.Point(537, 212);
|
||||||
this.bQuit.Name = "bQuit";
|
this.bQuit.Name = "bQuit";
|
||||||
this.bQuit.Size = new System.Drawing.Size(75, 23);
|
this.bQuit.Size = new System.Drawing.Size(75, 28);
|
||||||
this.bQuit.TabIndex = 0;
|
this.bQuit.TabIndex = 0;
|
||||||
this.bQuit.Text = "Quit";
|
this.bQuit.Text = "Quit";
|
||||||
|
this.bQuit.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||||
this.bQuit.UseVisualStyleBackColor = true;
|
this.bQuit.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// bContinue
|
// bContinue
|
||||||
//
|
//
|
||||||
this.bContinue.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
this.bContinue.Image = global::CodeImp.DoomBuilder.Properties.Resources.Test;
|
||||||
this.bContinue.Location = new System.Drawing.Point(456, 195);
|
this.bContinue.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||||
|
this.bContinue.Location = new System.Drawing.Point(446, 212);
|
||||||
this.bContinue.Name = "bContinue";
|
this.bContinue.Name = "bContinue";
|
||||||
this.bContinue.Size = new System.Drawing.Size(75, 23);
|
this.bContinue.Size = new System.Drawing.Size(85, 28);
|
||||||
this.bContinue.TabIndex = 1;
|
this.bContinue.TabIndex = 1;
|
||||||
this.bContinue.Text = "Continue";
|
this.bContinue.Text = "Continue";
|
||||||
|
this.bContinue.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||||
this.bContinue.UseVisualStyleBackColor = true;
|
this.bContinue.UseVisualStyleBackColor = true;
|
||||||
this.bContinue.Click += new System.EventHandler(this.bContinue_Click);
|
this.bContinue.Click += new System.EventHandler(this.bContinue_Click);
|
||||||
//
|
//
|
||||||
|
@ -67,7 +71,7 @@
|
||||||
this.errorMessage.Multiline = true;
|
this.errorMessage.Multiline = true;
|
||||||
this.errorMessage.Name = "errorMessage";
|
this.errorMessage.Name = "errorMessage";
|
||||||
this.errorMessage.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
|
this.errorMessage.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
|
||||||
this.errorMessage.Size = new System.Drawing.Size(535, 119);
|
this.errorMessage.Size = new System.Drawing.Size(535, 151);
|
||||||
this.errorMessage.TabIndex = 3;
|
this.errorMessage.TabIndex = 3;
|
||||||
this.errorMessage.Text = "Stack trace";
|
this.errorMessage.Text = "Stack trace";
|
||||||
//
|
//
|
||||||
|
@ -85,7 +89,7 @@
|
||||||
this.reportLink.AutoSize = true;
|
this.reportLink.AutoSize = true;
|
||||||
this.reportLink.LinkArea = new System.Windows.Forms.LinkArea(53, 4);
|
this.reportLink.LinkArea = new System.Windows.Forms.LinkArea(53, 4);
|
||||||
this.reportLink.LinkColor = System.Drawing.SystemColors.HotTrack;
|
this.reportLink.LinkColor = System.Drawing.SystemColors.HotTrack;
|
||||||
this.reportLink.Location = new System.Drawing.Point(77, 157);
|
this.reportLink.Location = new System.Drawing.Point(77, 188);
|
||||||
this.reportLink.Name = "reportLink";
|
this.reportLink.Name = "reportLink";
|
||||||
this.reportLink.Size = new System.Drawing.Size(286, 17);
|
this.reportLink.Size = new System.Drawing.Size(286, 17);
|
||||||
this.reportLink.TabIndex = 5;
|
this.reportLink.TabIndex = 5;
|
||||||
|
@ -99,7 +103,7 @@
|
||||||
this.threadLink.AutoSize = true;
|
this.threadLink.AutoSize = true;
|
||||||
this.threadLink.LinkArea = new System.Windows.Forms.LinkArea(101, 28);
|
this.threadLink.LinkArea = new System.Windows.Forms.LinkArea(101, 28);
|
||||||
this.threadLink.LinkColor = System.Drawing.SystemColors.HotTrack;
|
this.threadLink.LinkColor = System.Drawing.SystemColors.HotTrack;
|
||||||
this.threadLink.Location = new System.Drawing.Point(77, 178);
|
this.threadLink.Location = new System.Drawing.Point(77, 210);
|
||||||
this.threadLink.Name = "threadLink";
|
this.threadLink.Name = "threadLink";
|
||||||
this.threadLink.Size = new System.Drawing.Size(349, 30);
|
this.threadLink.Size = new System.Drawing.Size(349, 30);
|
||||||
this.threadLink.TabIndex = 8;
|
this.threadLink.TabIndex = 8;
|
||||||
|
@ -112,9 +116,11 @@
|
||||||
// bToClipboard
|
// bToClipboard
|
||||||
//
|
//
|
||||||
this.bToClipboard.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
this.bToClipboard.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.bToClipboard.Location = new System.Drawing.Point(512, 151);
|
this.bToClipboard.Image = global::CodeImp.DoomBuilder.Properties.Resources.Copy;
|
||||||
|
this.bToClipboard.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||||
|
this.bToClipboard.Location = new System.Drawing.Point(446, 184);
|
||||||
this.bToClipboard.Name = "bToClipboard";
|
this.bToClipboard.Name = "bToClipboard";
|
||||||
this.bToClipboard.Size = new System.Drawing.Size(100, 23);
|
this.bToClipboard.Size = new System.Drawing.Size(166, 24);
|
||||||
this.bToClipboard.TabIndex = 9;
|
this.bToClipboard.TabIndex = 9;
|
||||||
this.bToClipboard.Text = "Copy to clipboard";
|
this.bToClipboard.Text = "Copy to clipboard";
|
||||||
this.bToClipboard.UseVisualStyleBackColor = true;
|
this.bToClipboard.UseVisualStyleBackColor = true;
|
||||||
|
@ -136,7 +142,7 @@
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||||
this.CancelButton = this.bQuit;
|
this.CancelButton = this.bQuit;
|
||||||
this.ClientSize = new System.Drawing.Size(624, 224);
|
this.ClientSize = new System.Drawing.Size(624, 244);
|
||||||
this.Controls.Add(this.reportLink);
|
this.Controls.Add(this.reportLink);
|
||||||
this.Controls.Add(this.errorDescription);
|
this.Controls.Add(this.errorDescription);
|
||||||
this.Controls.Add(this.bToClipboard);
|
this.Controls.Add(this.bToClipboard);
|
||||||
|
|
|
@ -33,18 +33,6 @@ namespace CodeImp.DoomBuilder.Plugins
|
||||||
// Disposing
|
// Disposing
|
||||||
private bool isdisposed;
|
private bool isdisposed;
|
||||||
|
|
||||||
//mxd. It's nice to have these avaliable to plugins...
|
|
||||||
public static Point DisplayLocationAbs {
|
|
||||||
get {
|
|
||||||
if (General.MainWindow == null || General.MainWindow.Display == null)
|
|
||||||
return new Point();
|
|
||||||
return new Point(General.MainWindow.Location.X + General.MainWindow.ClientRectangle.X + General.MainWindow.Display.Location.X, General.MainWindow.Location.Y + General.MainWindow.ClientRectangle.Y + General.MainWindow.Display.Location.Y);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//mxd. It's nice to have these avaliable to plugins...
|
|
||||||
public static Size DisplaySize { get { return (General.MainWindow == null || General.MainWindow.Display == null) ? new Size() : General.MainWindow.Display.Size; } }
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region ================== Properties
|
#region ================== Properties
|
||||||
|
|
|
@ -45,6 +45,7 @@ namespace CodeImp.DoomBuilder.Rendering
|
||||||
private int adapter;
|
private int adapter;
|
||||||
private Filter postfilter;
|
private Filter postfilter;
|
||||||
private Filter mipgeneratefilter;
|
private Filter mipgeneratefilter;
|
||||||
|
private static bool isrendering; //mxd
|
||||||
|
|
||||||
// Main objects
|
// Main objects
|
||||||
private static Direct3D d3d;
|
private static Direct3D d3d;
|
||||||
|
@ -68,6 +69,7 @@ namespace CodeImp.DoomBuilder.Rendering
|
||||||
|
|
||||||
internal Device Device { get { return device; } }
|
internal Device Device { get { return device; } }
|
||||||
public bool IsDisposed { get { return isdisposed; } }
|
public bool IsDisposed { get { return isdisposed; } }
|
||||||
|
public static bool IsRendering { get { return isrendering; } } //mxd
|
||||||
internal RenderTargetControl RenderTarget { get { return rendertarget; } }
|
internal RenderTargetControl RenderTarget { get { return rendertarget; } }
|
||||||
internal Viewport Viewport { get { return viewport; } }
|
internal Viewport Viewport { get { return viewport; } }
|
||||||
internal ShaderManager Shaders { get { return shaders; } }
|
internal ShaderManager Shaders { get { return shaders; } }
|
||||||
|
@ -110,6 +112,7 @@ namespace CodeImp.DoomBuilder.Rendering
|
||||||
if(device != null) device.Dispose();
|
if(device != null) device.Dispose();
|
||||||
if(font != null) font.Dispose();
|
if(font != null) font.Dispose();
|
||||||
if(fonttexture != null) fonttexture.Dispose();
|
if(fonttexture != null) fonttexture.Dispose();
|
||||||
|
isrendering = false; //mxd
|
||||||
|
|
||||||
// Done
|
// Done
|
||||||
isdisposed = true;
|
isdisposed = true;
|
||||||
|
@ -445,7 +448,7 @@ namespace CodeImp.DoomBuilder.Rendering
|
||||||
public bool StartRendering(bool clear, Color4 backcolor, Surface target, Surface depthbuffer)
|
public bool StartRendering(bool clear, Color4 backcolor, Surface target, Surface depthbuffer)
|
||||||
{
|
{
|
||||||
// Check if we can render
|
// Check if we can render
|
||||||
if(CheckAvailability())
|
if(CheckAvailability() && !isrendering) //mxd. Added isrendering check
|
||||||
{
|
{
|
||||||
// Set rendertarget
|
// Set rendertarget
|
||||||
device.DepthStencilSurface = depthbuffer;
|
device.DepthStencilSurface = depthbuffer;
|
||||||
|
@ -462,11 +465,13 @@ namespace CodeImp.DoomBuilder.Rendering
|
||||||
|
|
||||||
// Ready to render
|
// Ready to render
|
||||||
device.BeginScene();
|
device.BeginScene();
|
||||||
|
isrendering = true; //mxd
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Minimized, you cannot see anything
|
// Minimized, you cannot see anything
|
||||||
|
isrendering = false; //mxd
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -491,6 +496,7 @@ namespace CodeImp.DoomBuilder.Rendering
|
||||||
{
|
{
|
||||||
// Done
|
// Done
|
||||||
device.EndScene();
|
device.EndScene();
|
||||||
|
isrendering = false; //mxd
|
||||||
}
|
}
|
||||||
// Errors are not a problem here
|
// Errors are not a problem here
|
||||||
catch(Exception) { }
|
catch(Exception) { }
|
||||||
|
@ -502,6 +508,7 @@ namespace CodeImp.DoomBuilder.Rendering
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
device.Present();
|
device.Present();
|
||||||
|
isrendering = false; //mxd
|
||||||
}
|
}
|
||||||
// Errors are not a problem here
|
// Errors are not a problem here
|
||||||
catch(Exception) { }
|
catch(Exception) { }
|
||||||
|
|
|
@ -37,7 +37,6 @@ namespace CodeImp.DoomBuilder.Rendering
|
||||||
float Scale { get; }
|
float Scale { get; }
|
||||||
int VertexSize { get; }
|
int VertexSize { get; }
|
||||||
ViewMode ViewMode { get; }
|
ViewMode ViewMode { get; }
|
||||||
Size ViewportSize { get; } //mxd
|
|
||||||
|
|
||||||
// View methods
|
// View methods
|
||||||
Vector2D DisplayToMap(Vector2D mousepos);
|
Vector2D DisplayToMap(Vector2D mousepos);
|
||||||
|
|
|
@ -47,7 +47,6 @@ namespace CodeImp.DoomBuilder.Rendering
|
||||||
// Disposing
|
// Disposing
|
||||||
public bool IsDisposed { get { return isdisposed; } }
|
public bool IsDisposed { get { return isdisposed; } }
|
||||||
public static bool FullBrightness { get { return fullbrightness; } set { fullbrightness = value; } } //mxd
|
public static bool FullBrightness { get { return fullbrightness; } set { fullbrightness = value; } } //mxd
|
||||||
public Size ViewportSize { get { return graphics.RenderTarget.Size; } } //mxd
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
|
@ -1076,6 +1076,9 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
//if(!displayresized) General.LockWindowUpdate(display.Handle);
|
//if(!displayresized) General.LockWindowUpdate(display.Handle);
|
||||||
displayresized = true;
|
displayresized = true;
|
||||||
|
|
||||||
|
//mxd. Separators may need updating
|
||||||
|
UpdateSeparators();
|
||||||
|
|
||||||
// Request redraw
|
// Request redraw
|
||||||
if(!redrawtimer.Enabled) redrawtimer.Enabled = true;
|
if(!redrawtimer.Enabled) redrawtimer.Enabled = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -164,9 +164,9 @@ namespace CodeImp.DoomBuilder.BuilderEffects
|
||||||
//position and show form
|
//position and show form
|
||||||
if(formLocation.X == 0 && formLocation.Y == 0)
|
if(formLocation.X == 0 && formLocation.Y == 0)
|
||||||
{
|
{
|
||||||
Size displaySize = DisplaySize;
|
Size displaySize = General.Interface.Display.Size;
|
||||||
Point displayLocation = DisplayLocationAbs;
|
Point displayLocation = General.Interface.Display.LocationAbs;
|
||||||
formLocation = new Point(displayLocation.X + displaySize.Width - form.Width - 16, displayLocation.Y + 32);
|
formLocation = new Point(displayLocation.X + displaySize.Width - form.Width - 16, displayLocation.Y + 16);
|
||||||
}
|
}
|
||||||
|
|
||||||
form.Location = formLocation;
|
form.Location = formLocation;
|
||||||
|
|
|
@ -25,8 +25,8 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
||||||
this.end = end;
|
this.end = end;
|
||||||
|
|
||||||
// Check if start/end point is on screen...
|
// Check if start/end point is on screen...
|
||||||
Vector2D lt = General.Map.Renderer2D.DisplayToMap(new Vector2D(0.0f, General.Map.Renderer2D.ViewportSize.Height));
|
Vector2D lt = General.Map.Renderer2D.DisplayToMap(new Vector2D(0.0f, General.Interface.Display.Size.Height));
|
||||||
Vector2D rb = General.Map.Renderer2D.DisplayToMap(new Vector2D(General.Map.Renderer2D.ViewportSize.Width, 0.0f));
|
Vector2D rb = General.Map.Renderer2D.DisplayToMap(new Vector2D(General.Interface.Display.Size.Width, 0.0f));
|
||||||
RectangleF viewport = new RectangleF(lt.x, lt.y, rb.x - lt.x, rb.y - lt.y);
|
RectangleF viewport = new RectangleF(lt.x, lt.y, rb.x - lt.x, rb.y - lt.y);
|
||||||
bool startvisible = viewport.Contains(start.x, start.y);
|
bool startvisible = viewport.Contains(start.x, start.y);
|
||||||
bool endvisible = viewport.Contains(end.x, end.y);
|
bool endvisible = viewport.Contains(end.x, end.y);
|
||||||
|
|
|
@ -153,8 +153,8 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
||||||
UpdateText();
|
UpdateText();
|
||||||
|
|
||||||
// Check if start/end point is on screen...
|
// Check if start/end point is on screen...
|
||||||
Vector2D lt = General.Map.Renderer2D.DisplayToMap(new Vector2D(0.0f, General.Map.Renderer2D.ViewportSize.Height));
|
Vector2D lt = General.Map.Renderer2D.DisplayToMap(new Vector2D(0.0f, General.Interface.Display.Size.Height));
|
||||||
Vector2D rb = General.Map.Renderer2D.DisplayToMap(new Vector2D(General.Map.Renderer2D.ViewportSize.Width, 0.0f));
|
Vector2D rb = General.Map.Renderer2D.DisplayToMap(new Vector2D(General.Interface.Display.Size.Width, 0.0f));
|
||||||
RectangleF viewport = new RectangleF(lt.x, lt.y, rb.x - lt.x, rb.y - lt.y);
|
RectangleF viewport = new RectangleF(lt.x, lt.y, rb.x - lt.x, rb.y - lt.y);
|
||||||
bool startvisible = viewport.Contains(start.x, start.y);
|
bool startvisible = viewport.Contains(start.x, start.y);
|
||||||
bool endvisible = viewport.Contains(end.x, end.y);
|
bool endvisible = viewport.Contains(end.x, end.y);
|
||||||
|
|
|
@ -142,9 +142,9 @@ namespace CodeImp.DoomBuilder.ColorPicker
|
||||||
{
|
{
|
||||||
if (formLocation.X == 0 && formLocation.Y == 0)
|
if (formLocation.X == 0 && formLocation.Y == 0)
|
||||||
{
|
{
|
||||||
Size displaySize = DisplaySize;
|
Size displaySize = General.Interface.Display.Size;
|
||||||
Point displayLocation = DisplayLocationAbs;
|
Point displayLocation = General.Interface.Display.LocationAbs;
|
||||||
formLocation = new Point(displayLocation.X + displaySize.Width - form.Width - 16, displayLocation.Y + 32);
|
formLocation = new Point(displayLocation.X + displaySize.Width - form.Width - 16, displayLocation.Y + 16);
|
||||||
}
|
}
|
||||||
form.Location = formLocation;
|
form.Location = formLocation;
|
||||||
form.FormClosed += form_FormClosed;
|
form.FormClosed += form_FormClosed;
|
||||||
|
|
Loading…
Reference in a new issue