From 50b9765377ddf92326a66c73669aab3323ec9f37 Mon Sep 17 00:00:00 2001 From: codeimp Date: Sat, 2 Jan 2010 20:22:05 +0000 Subject: [PATCH] - Scales are now generally accepted and exposed by the ImageData class instead of just ScaleWidth/ScaledHeight - Camera offsets in Visual Modes now changeable in Game Configurations (default is Doom's camera position) @ Some other stuff dealing with the new dockers I forgot what it's for. --- Build/Configurations/Hexen.cfg | 3 ++ Build/Configurations/Strife.cfg | 3 ++ Build/Configurations/ZDoom_Hexen.cfg | 3 ++ .../ButtonsNumericTextbox.Designer.cs | 1 + Source/Core/Controls/ButtonsNumericTextbox.cs | 9 ++++ Source/Core/Controls/DockersControl.cs | 52 ++++++++++++++----- Source/Core/Data/ColormapImage.cs | 6 +-- Source/Core/Data/FileImage.cs | 18 +++---- Source/Core/Data/FlatImage.cs | 6 +-- Source/Core/Data/HighResImage.cs | 8 +-- Source/Core/Data/ImageData.cs | 34 +++++------- Source/Core/Data/PK3FileImage.cs | 12 ++--- Source/Core/Data/ResourceImage.cs | 4 +- Source/Core/Data/SimpleTextureImage.cs | 10 +--- Source/Core/Data/SpriteImage.cs | 8 +-- Source/Core/Data/TextureImage.cs | 8 +-- Source/Core/Editing/UndoSnapshot.cs | 1 + .../Interface/EditSelectionPanel.Designer.cs | 9 ++++ .../VisualModes/BaseVisualMode.cs | 24 ++++++--- 19 files changed, 128 insertions(+), 91 deletions(-) diff --git a/Build/Configurations/Hexen.cfg b/Build/Configurations/Hexen.cfg index e439cc70..eb9a88e8 100644 --- a/Build/Configurations/Hexen.cfg +++ b/Build/Configurations/Hexen.cfg @@ -64,6 +64,9 @@ defaultflatscale = 1.0f; // Some common settings include("Includes\\Common.cfg"); +// Flat used as sky +skyflatname = "F_SKY"; + // Default flags for first new thing defaultthingflags diff --git a/Build/Configurations/Strife.cfg b/Build/Configurations/Strife.cfg index 540c2748..88bc8354 100644 --- a/Build/Configurations/Strife.cfg +++ b/Build/Configurations/Strife.cfg @@ -59,6 +59,9 @@ defaultflatscale = 1.0f; // Some common settings include("Includes\\Common.cfg"); +// Flat used as sky +skyflatname = "F_SKY001"; + // Default flags for first new thing defaultthingflags diff --git a/Build/Configurations/ZDoom_Hexen.cfg b/Build/Configurations/ZDoom_Hexen.cfg index 60aab924..b8d34d90 100644 --- a/Build/Configurations/ZDoom_Hexen.cfg +++ b/Build/Configurations/ZDoom_Hexen.cfg @@ -66,6 +66,9 @@ defaultflatscale = 1.0f; // Some common settings include("Includes\\Common.cfg"); +// Flat used as sky +skyflatname = "F_SKY"; + // Default flags for first new thing defaultthingflags diff --git a/Source/Core/Controls/ButtonsNumericTextbox.Designer.cs b/Source/Core/Controls/ButtonsNumericTextbox.Designer.cs index 8427896f..fead3e51 100644 --- a/Source/Core/Controls/ButtonsNumericTextbox.Designer.cs +++ b/Source/Core/Controls/ButtonsNumericTextbox.Designer.cs @@ -54,6 +54,7 @@ namespace CodeImp.DoomBuilder.Controls this.textbox.Size = new System.Drawing.Size(160, 20); this.textbox.TabIndex = 0; this.textbox.TextChanged += new System.EventHandler(this.textbox_TextChanged); + this.textbox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textbox_KeyDown); // // ButtonsNumericTextbox // diff --git a/Source/Core/Controls/ButtonsNumericTextbox.cs b/Source/Core/Controls/ButtonsNumericTextbox.cs index cd9dc8ba..f752626b 100644 --- a/Source/Core/Controls/ButtonsNumericTextbox.cs +++ b/Source/Core/Controls/ButtonsNumericTextbox.cs @@ -39,6 +39,7 @@ namespace CodeImp.DoomBuilder.Controls public event EventHandler WhenTextChanged; public event EventHandler WhenButtonsClicked; + public event EventHandler WhenEnterPressed; #endregion @@ -161,6 +162,14 @@ namespace CodeImp.DoomBuilder.Controls buttons.Value -= 1; } } + + // Key pressed in textbox + private void textbox_KeyDown(object sender, KeyEventArgs e) + { + // Enter key? + if((e.KeyData == Keys.Enter) && (WhenEnterPressed != null)) + WhenEnterPressed(this, EventArgs.Empty); + } #endregion diff --git a/Source/Core/Controls/DockersControl.cs b/Source/Core/Controls/DockersControl.cs index a786e894..530061de 100644 --- a/Source/Core/Controls/DockersControl.cs +++ b/Source/Core/Controls/DockersControl.cs @@ -70,6 +70,7 @@ namespace CodeImp.DoomBuilder.Controls // Selection private string currentselected; private string previousselected; + private bool controlledselection; #endregion @@ -148,7 +149,8 @@ namespace CodeImp.DoomBuilder.Controls public void Collapse() { if(iscollapsed) return; - + + controlledselection = true; splitter.Enabled = false; splitter.BackColor = SystemColors.Control; splitter.Width = (int)(2.0f * (this.CurrentAutoScaleDimensions.Width / this.AutoScaleDimensions.Width)); @@ -160,6 +162,7 @@ namespace CodeImp.DoomBuilder.Controls this.Width = GetCollapsedWidth(); General.MainWindow.UnlockUpdate(); this.Invalidate(true); + controlledselection = false; iscollapsed = true; @@ -171,6 +174,7 @@ namespace CodeImp.DoomBuilder.Controls { if(!iscollapsed) return; + controlledselection = true; splitter.Enabled = true; splitter.BackColor = Color.Transparent; splitter.Width = (int)(4.0f * (this.CurrentAutoScaleDimensions.Width / this.AutoScaleDimensions.Width)); @@ -180,6 +184,7 @@ namespace CodeImp.DoomBuilder.Controls General.MainWindow.UnlockUpdate(); tabs.SelectedIndex = expandedtab; tabs.Invalidate(true); + controlledselection = false; iscollapsed = false; @@ -258,13 +263,23 @@ namespace CodeImp.DoomBuilder.Controls // This selects a docker public bool SelectDocker(Docker d) { + int index = 0; foreach(TabPage page in tabs.TabPages) { if((page.Tag as Docker) == d) { - tabs.SelectedTab = page; + if(iscollapsed) + { + previousselected = currentselected; + expandedtab = index; + } + else + tabs.SelectedTab = page; + return true; } + + index++; } return false; @@ -275,13 +290,23 @@ namespace CodeImp.DoomBuilder.Controls { if(!string.IsNullOrEmpty(previousselected)) { + int index = 0; foreach(TabPage page in tabs.TabPages) { if((page.Tag as Docker).FullName == previousselected) { - tabs.SelectedTab = page; + if(iscollapsed) + { + previousselected = currentselected; + expandedtab = index; + } + else + tabs.SelectedTab = page; + break; } + + index++; } } } @@ -334,16 +359,19 @@ namespace CodeImp.DoomBuilder.Controls // Tab selected private void tabs_SelectedIndexChanged(object sender, EventArgs e) { - // Keep track of previous selected tab - previousselected = currentselected; - if(tabs.SelectedTab != null) + if(!controlledselection) { - Docker d = (tabs.SelectedTab.Tag as Docker); - currentselected = d.FullName; - } - else - { - currentselected = null; + // Keep track of previous selected tab + previousselected = currentselected; + if(tabs.SelectedTab != null) + { + Docker d = (tabs.SelectedTab.Tag as Docker); + currentselected = d.FullName; + } + else + { + currentselected = null; + } } General.MainWindow.FocusDisplay(); diff --git a/Source/Core/Data/ColormapImage.cs b/Source/Core/Data/ColormapImage.cs index 0e02ef38..f10bd631 100644 --- a/Source/Core/Data/ColormapImage.cs +++ b/Source/Core/Data/ColormapImage.cs @@ -93,11 +93,11 @@ namespace CodeImp.DoomBuilder.Data if(bitmap != null) { - // Get width and height from image + // Get width and height from image and set the scale width = bitmap.Size.Width; height = bitmap.Size.Height; - scaledwidth = (float)width * General.Map.Config.DefaultFlatScale; - scaledheight = (float)height * General.Map.Config.DefaultFlatScale; + scale.x = General.Map.Config.DefaultFlatScale; + scale.y = General.Map.Config.DefaultFlatScale; } else { diff --git a/Source/Core/Data/FileImage.cs b/Source/Core/Data/FileImage.cs index f30d7964..592659c1 100644 --- a/Source/Core/Data/FileImage.cs +++ b/Source/Core/Data/FileImage.cs @@ -36,8 +36,6 @@ namespace CodeImp.DoomBuilder.Data private string filepathname; private int probableformat; - private float scalex; - private float scaley; #endregion @@ -53,14 +51,14 @@ namespace CodeImp.DoomBuilder.Data if(asflat) { probableformat = ImageDataFormat.DOOMFLAT; - scalex = General.Map.Config.DefaultFlatScale; - scaley = General.Map.Config.DefaultFlatScale; + this.scale.x = General.Map.Config.DefaultFlatScale; + this.scale.y = General.Map.Config.DefaultFlatScale; } else { probableformat = ImageDataFormat.DOOMPICTURE; - scalex = General.Map.Config.DefaultTextureScale; - scaley = General.Map.Config.DefaultTextureScale; + this.scale.x = General.Map.Config.DefaultTextureScale; + this.scale.y = General.Map.Config.DefaultTextureScale; } // We have no destructor @@ -72,8 +70,8 @@ namespace CodeImp.DoomBuilder.Data { // Initialize this.filepathname = filepathname; - this.scalex = scalex; - this.scaley = scaley; + this.scale.x = scalex; + this.scale.y = scaley; SetName(name); if(asflat) @@ -123,11 +121,9 @@ namespace CodeImp.DoomBuilder.Data } else { - // Get width and height from image + // Get width and height width = bitmap.Size.Width; height = bitmap.Size.Height; - scaledwidth = (float)bitmap.Size.Width * scalex; - scaledheight = (float)bitmap.Size.Height * scaley; } // Pass on to base diff --git a/Source/Core/Data/FlatImage.cs b/Source/Core/Data/FlatImage.cs index f10723da..a4fee5e6 100644 --- a/Source/Core/Data/FlatImage.cs +++ b/Source/Core/Data/FlatImage.cs @@ -93,11 +93,11 @@ namespace CodeImp.DoomBuilder.Data if(bitmap != null) { - // Get width and height from image + // Get width and height from image and set the scale width = bitmap.Size.Width; height = bitmap.Size.Height; - scaledwidth = (float)width * General.Map.Config.DefaultFlatScale; - scaledheight = (float)height * General.Map.Config.DefaultFlatScale; + scale.x = General.Map.Config.DefaultFlatScale; + scale.y = General.Map.Config.DefaultFlatScale; } else { diff --git a/Source/Core/Data/HighResImage.cs b/Source/Core/Data/HighResImage.cs index 399d10b2..9bef4617 100644 --- a/Source/Core/Data/HighResImage.cs +++ b/Source/Core/Data/HighResImage.cs @@ -36,8 +36,6 @@ namespace CodeImp.DoomBuilder.Data #region ================== Variables private List patches; - private float scalex; - private float scaley; #endregion @@ -49,10 +47,8 @@ namespace CodeImp.DoomBuilder.Data // Initialize this.width = width; this.height = height; - this.scalex = scalex; - this.scaley = scaley; - this.scaledwidth = (float)width * scalex; - this.scaledheight = (float)height * scaley; + this.scale.x = scalex; + this.scale.y = scaley; this.patches = new List(); SetName(name); diff --git a/Source/Core/Data/ImageData.cs b/Source/Core/Data/ImageData.cs index 84cc8d62..34bd2cf0 100644 --- a/Source/Core/Data/ImageData.cs +++ b/Source/Core/Data/ImageData.cs @@ -23,6 +23,7 @@ using System.Drawing.Drawing2D; using System.Globalization; using System.Text; using System.Drawing; +using CodeImp.DoomBuilder.Geometry; using SlimDX.Direct3D9; using System.Drawing.Imaging; using CodeImp.DoomBuilder.Rendering; @@ -49,6 +50,7 @@ namespace CodeImp.DoomBuilder.Data private long longname; protected int width; protected int height; + protected Vector2D scale; protected float scaledwidth; protected float scaledheight; protected bool usecolorcorrection; @@ -93,8 +95,9 @@ namespace CodeImp.DoomBuilder.Data public int Width { get { return width; } } public int Height { get { return height; } } internal int PreviewIndex { get { return previewindex; } set { previewindex = value; } } - public float ScaledWidth { get { return scaledwidth; } } - public float ScaledHeight { get { return scaledheight; } } + public float ScaledWidth { get { return width * scale.x; } } + public float ScaledHeight { get { return height * scale.y; } } + public Vector2D Scale { get { return scale; } } #endregion @@ -208,23 +211,12 @@ namespace CodeImp.DoomBuilder.Data // This loads the image public void LoadImage() { - // Keep original dimensions - int oldwidth = width; - int oldheight = height; - float oldscaledwidth = scaledwidth; - float oldscaledheight = scaledheight; - // Do the loading LocalLoadImage(); - // Anything changed? - //if((oldwidth != width) || (oldheight != height) || - // (oldscaledwidth != scaledwidth) || (oldscaledheight != scaledheight)) - { - // Notify the main thread about the change so that sectors can update their buffers - IntPtr strptr = Marshal.StringToCoTaskMemAuto(this.name); - General.SendMessage(General.MainWindow.Handle, (int)MainForm.ThreadMessages.ImageDataLoaded, strptr.ToInt32(), 0); - } + // Notify the main thread about the change so that sectors can update their buffers + IntPtr strptr = Marshal.StringToCoTaskMemAuto(this.name); + General.SendMessage(General.MainWindow.Handle, (int)MainForm.ThreadMessages.ImageDataLoaded, strptr.ToInt32(), 0); } // This requests loading the image @@ -302,17 +294,17 @@ namespace CodeImp.DoomBuilder.Data height = bitmap.Size.Height; // Do we still have to set a scale? - if((scaledwidth == 0.0f) && (scaledheight == 0.0f)) + if((scale.x == 0.0f) && (scale.y == 0.0f)) { if((General.Map != null) && (General.Map.Config != null)) { - scaledwidth = (float)bitmap.Size.Width * General.Map.Config.DefaultTextureScale; - scaledheight = (float)bitmap.Size.Height * General.Map.Config.DefaultTextureScale; + scale.x = General.Map.Config.DefaultTextureScale; + scale.y = General.Map.Config.DefaultTextureScale; } else { - scaledwidth = (float)bitmap.Size.Width; - scaledheight = (float)bitmap.Size.Height; + scale.x = 1.0f; + scale.y = 1.0f; } } } diff --git a/Source/Core/Data/PK3FileImage.cs b/Source/Core/Data/PK3FileImage.cs index 5942e05f..9cfdaab0 100644 --- a/Source/Core/Data/PK3FileImage.cs +++ b/Source/Core/Data/PK3FileImage.cs @@ -37,8 +37,6 @@ namespace CodeImp.DoomBuilder.Data private PK3Reader datareader; private string filepathname; private int probableformat; - private float scalex; - private float scaley; #endregion @@ -55,14 +53,14 @@ namespace CodeImp.DoomBuilder.Data if(asflat) { probableformat = ImageDataFormat.DOOMFLAT; - scalex = General.Map.Config.DefaultFlatScale; - scaley = General.Map.Config.DefaultFlatScale; + this.scale.x = General.Map.Config.DefaultFlatScale; + this.scale.y = General.Map.Config.DefaultFlatScale; } else { probableformat = ImageDataFormat.DOOMPICTURE; - scalex = General.Map.Config.DefaultTextureScale; - scaley = General.Map.Config.DefaultTextureScale; + this.scale.x = General.Map.Config.DefaultTextureScale; + this.scale.y = General.Map.Config.DefaultTextureScale; } // We have no destructor @@ -110,8 +108,6 @@ namespace CodeImp.DoomBuilder.Data // Get width and height from image width = bitmap.Size.Width; height = bitmap.Size.Height; - scaledwidth = (float)bitmap.Size.Width * scalex; - scaledheight = (float)bitmap.Size.Height * scaley; } // Pass on to base diff --git a/Source/Core/Data/ResourceImage.cs b/Source/Core/Data/ResourceImage.cs index bddef9e9..efb71fed 100644 --- a/Source/Core/Data/ResourceImage.cs +++ b/Source/Core/Data/ResourceImage.cs @@ -59,8 +59,8 @@ namespace CodeImp.DoomBuilder.Data // Get width and height from image width = bmp.Size.Width; height = bmp.Size.Height; - scaledwidth = (float)bmp.Size.Width; - scaledheight = (float)bmp.Size.Height; + scale.x = 1.0f; + scale.y = 1.0f; // Done bmp.Dispose(); diff --git a/Source/Core/Data/SimpleTextureImage.cs b/Source/Core/Data/SimpleTextureImage.cs index 028b548d..8555e1dc 100644 --- a/Source/Core/Data/SimpleTextureImage.cs +++ b/Source/Core/Data/SimpleTextureImage.cs @@ -40,8 +40,6 @@ namespace CodeImp.DoomBuilder.Data #region ================== Variables private string lumpname; - private float scalex; - private float scaley; #endregion @@ -51,10 +49,8 @@ namespace CodeImp.DoomBuilder.Data public SimpleTextureImage(string name, string lumpname, float scalex, float scaley) { // Initialize - this.scalex = scalex; - this.scaley = scaley; - this.scaledwidth = (float)width * scalex; - this.scaledheight = (float)height * scaley; + this.scale.x = scalex; + this.scale.y = scaley; this.lumpname = lumpname; SetName(name); @@ -116,8 +112,6 @@ namespace CodeImp.DoomBuilder.Data // Get width and height from image width = bitmap.Size.Width; height = bitmap.Size.Height; - scaledwidth = (float)width * scalex; - scaledheight = (float)height * scaley; } // Done diff --git a/Source/Core/Data/SpriteImage.cs b/Source/Core/Data/SpriteImage.cs index 3b54b02f..099b04a3 100644 --- a/Source/Core/Data/SpriteImage.cs +++ b/Source/Core/Data/SpriteImage.cs @@ -111,14 +111,14 @@ namespace CodeImp.DoomBuilder.Data // Get width and height from image width = bitmap.Size.Width; height = bitmap.Size.Height; - scaledwidth = (float)bitmap.Size.Width; - scaledheight = (float)bitmap.Size.Height; + scale.x = 1.0f; + scale.y = 1.0f; // Make offset corrections if the offset was not given if((offsetx == int.MinValue) || (offsety == int.MinValue)) { - offsetx = (int)(scaledwidth * 0.5f); - offsety = (int)scaledheight; + offsetx = (int)((width * scale.x) * 0.5f); + offsety = (int)(height * scale.y); } } else diff --git a/Source/Core/Data/TextureImage.cs b/Source/Core/Data/TextureImage.cs index e6be78ca..07ec5e69 100644 --- a/Source/Core/Data/TextureImage.cs +++ b/Source/Core/Data/TextureImage.cs @@ -36,8 +36,6 @@ namespace CodeImp.DoomBuilder.Data #region ================== Variables private List patches; - private float scalex; - private float scaley; #endregion @@ -49,10 +47,8 @@ namespace CodeImp.DoomBuilder.Data // Initialize this.width = width; this.height = height; - this.scalex = scalex; - this.scaley = scaley; - this.scaledwidth = (float)width * scalex; - this.scaledheight = (float)height * scaley; + this.scale.x = scalex; + this.scale.y = scaley; this.patches = new List(); SetName(name); diff --git a/Source/Core/Editing/UndoSnapshot.cs b/Source/Core/Editing/UndoSnapshot.cs index add01394..e444fe82 100644 --- a/Source/Core/Editing/UndoSnapshot.cs +++ b/Source/Core/Editing/UndoSnapshot.cs @@ -47,6 +47,7 @@ namespace CodeImp.DoomBuilder.Editing private volatile bool storeondisk; private volatile bool isondisk; private bool isdisposed; + private Dictionary customdata; #endregion diff --git a/Source/Plugins/BuilderModes/Interface/EditSelectionPanel.Designer.cs b/Source/Plugins/BuilderModes/Interface/EditSelectionPanel.Designer.cs index 433f48c2..77ec305c 100644 --- a/Source/Plugins/BuilderModes/Interface/EditSelectionPanel.Designer.cs +++ b/Source/Plugins/BuilderModes/Interface/EditSelectionPanel.Designer.cs @@ -158,6 +158,7 @@ namespace CodeImp.DoomBuilder.BuilderModes this.relposy.Size = new System.Drawing.Size(82, 24); this.relposy.StepValues = null; this.relposy.TabIndex = 11; + this.relposy.WhenEnterPressed += new System.EventHandler(this.relposy_Validated); this.relposy.Validated += new System.EventHandler(this.relposy_Validated); this.relposy.WhenButtonsClicked += new System.EventHandler(this.relposy_Validated); this.relposy.WhenTextChanged += new System.EventHandler(this.WhenTextChanged); @@ -173,6 +174,7 @@ namespace CodeImp.DoomBuilder.BuilderModes this.relposx.Size = new System.Drawing.Size(82, 24); this.relposx.StepValues = null; this.relposx.TabIndex = 10; + this.relposx.WhenEnterPressed += new System.EventHandler(this.relposx_Validated); this.relposx.Validated += new System.EventHandler(this.relposx_Validated); this.relposx.WhenButtonsClicked += new System.EventHandler(this.relposx_Validated); this.relposx.WhenTextChanged += new System.EventHandler(this.WhenTextChanged); @@ -188,6 +190,7 @@ namespace CodeImp.DoomBuilder.BuilderModes this.absposy.Size = new System.Drawing.Size(82, 24); this.absposy.StepValues = null; this.absposy.TabIndex = 9; + this.absposy.WhenEnterPressed += new System.EventHandler(this.absposy_Validated); this.absposy.Validated += new System.EventHandler(this.absposy_Validated); this.absposy.WhenButtonsClicked += new System.EventHandler(this.absposy_Validated); this.absposy.WhenTextChanged += new System.EventHandler(this.WhenTextChanged); @@ -203,6 +206,7 @@ namespace CodeImp.DoomBuilder.BuilderModes this.absposx.Size = new System.Drawing.Size(82, 24); this.absposx.StepValues = null; this.absposx.TabIndex = 8; + this.absposx.WhenEnterPressed += new System.EventHandler(this.absposx_Validated); this.absposx.Validated += new System.EventHandler(this.absposx_Validated); this.absposx.WhenButtonsClicked += new System.EventHandler(this.absposx_Validated); this.absposx.WhenTextChanged += new System.EventHandler(this.WhenTextChanged); @@ -317,6 +321,7 @@ namespace CodeImp.DoomBuilder.BuilderModes this.relsizey.Size = new System.Drawing.Size(82, 24); this.relsizey.StepValues = null; this.relsizey.TabIndex = 15; + this.relsizey.WhenEnterPressed += new System.EventHandler(this.relsizey_Validated); this.relsizey.Validated += new System.EventHandler(this.relsizey_Validated); this.relsizey.WhenButtonsClicked += new System.EventHandler(this.relsizey_Validated); this.relsizey.WhenTextChanged += new System.EventHandler(this.WhenTextChanged); @@ -332,6 +337,7 @@ namespace CodeImp.DoomBuilder.BuilderModes this.relsizex.Size = new System.Drawing.Size(82, 24); this.relsizex.StepValues = null; this.relsizex.TabIndex = 14; + this.relsizex.WhenEnterPressed += new System.EventHandler(this.relsizex_Validated); this.relsizex.Validated += new System.EventHandler(this.relsizex_Validated); this.relsizex.WhenButtonsClicked += new System.EventHandler(this.relsizex_Validated); this.relsizex.WhenTextChanged += new System.EventHandler(this.WhenTextChanged); @@ -356,6 +362,7 @@ namespace CodeImp.DoomBuilder.BuilderModes this.abssizey.Size = new System.Drawing.Size(82, 24); this.abssizey.StepValues = null; this.abssizey.TabIndex = 12; + this.abssizey.WhenEnterPressed += new System.EventHandler(this.abssizey_Validated); this.abssizey.Validated += new System.EventHandler(this.abssizey_Validated); this.abssizey.WhenButtonsClicked += new System.EventHandler(this.abssizey_Validated); this.abssizey.WhenTextChanged += new System.EventHandler(this.WhenTextChanged); @@ -371,6 +378,7 @@ namespace CodeImp.DoomBuilder.BuilderModes this.abssizex.Size = new System.Drawing.Size(82, 24); this.abssizex.StepValues = null; this.abssizex.TabIndex = 11; + this.abssizex.WhenEnterPressed += new System.EventHandler(this.abssizex_Validated); this.abssizex.Validated += new System.EventHandler(this.abssizex_Validated); this.abssizex.WhenButtonsClicked += new System.EventHandler(this.abssizex_Validated); this.abssizex.WhenTextChanged += new System.EventHandler(this.WhenTextChanged); @@ -461,6 +469,7 @@ namespace CodeImp.DoomBuilder.BuilderModes this.absrot.Size = new System.Drawing.Size(82, 24); this.absrot.StepValues = null; this.absrot.TabIndex = 24; + this.absrot.WhenEnterPressed += new System.EventHandler(this.absrot_Validated); this.absrot.Validated += new System.EventHandler(this.absrot_Validated); this.absrot.WhenButtonsClicked += new System.EventHandler(this.absrot_Validated); this.absrot.WhenTextChanged += new System.EventHandler(this.WhenTextChanged); diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs index a9d66935..665253e7 100644 --- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs +++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs @@ -55,15 +55,15 @@ namespace CodeImp.DoomBuilder.BuilderModes // Gravity private const float GRAVITY = -0.06f; - private const float CAMERA_FLOOR_OFFSET = 41f; // same as in doom - private const float CAMERA_CEILING_OFFSET = 10f; #endregion #region ================== Variables - // Gravity vector + // Gravity private Vector3D gravity; + private float cameraflooroffset = 41f; // same as in doom + private float cameraceilingoffset = 10f; // Object picking private VisualPickResult target; @@ -418,6 +418,16 @@ namespace CodeImp.DoomBuilder.BuilderModes General.ShowHelp("e_visual.html"); } + // When entering this mode + public override void OnEngage() + { + base.OnEngage(); + + // Read settings + cameraflooroffset = General.Map.Config.ReadSetting("cameraflooroffset", cameraflooroffset); + cameraceilingoffset = General.Map.Config.ReadSetting("cameraceilingoffset", cameraceilingoffset); + } + // When returning to another mode public override void OnDisengage() { @@ -440,13 +450,13 @@ namespace CodeImp.DoomBuilder.BuilderModes if(BuilderPlug.Me.UseGravity && (General.Map.VisualCamera.Sector != null)) { // Camera below floor level? - if(General.Map.VisualCamera.Position.z <= (General.Map.VisualCamera.Sector.FloorHeight + CAMERA_FLOOR_OFFSET + 0.1f)) + if(General.Map.VisualCamera.Position.z <= (General.Map.VisualCamera.Sector.FloorHeight + cameraflooroffset + 0.1f)) { // Stay above floor gravity = new Vector3D(0.0f, 0.0f, 0.0f); General.Map.VisualCamera.Position = new Vector3D(General.Map.VisualCamera.Position.x, General.Map.VisualCamera.Position.y, - General.Map.VisualCamera.Sector.FloorHeight + CAMERA_FLOOR_OFFSET); + General.Map.VisualCamera.Sector.FloorHeight + cameraflooroffset); } else { @@ -456,12 +466,12 @@ namespace CodeImp.DoomBuilder.BuilderModes } // Camera above ceiling level? - if(General.Map.VisualCamera.Position.z >= (General.Map.VisualCamera.Sector.CeilHeight - CAMERA_CEILING_OFFSET - 0.1f)) + if(General.Map.VisualCamera.Position.z >= (General.Map.VisualCamera.Sector.CeilHeight - cameraceilingoffset - 0.1f)) { // Stay below ceiling General.Map.VisualCamera.Position = new Vector3D(General.Map.VisualCamera.Position.x, General.Map.VisualCamera.Position.y, - General.Map.VisualCamera.Sector.CeilHeight - CAMERA_CEILING_OFFSET); + General.Map.VisualCamera.Sector.CeilHeight - cameraceilingoffset); } } else