From c90d10c08cb53e19187115b3dc20f21a94900d59 Mon Sep 17 00:00:00 2001 From: MaxED <j.maxed@gmail.com> Date: Mon, 20 Oct 2014 12:16:51 +0000 Subject: [PATCH] General interface: dynamic lights rendering mode and model rendering mode are now selected via drop-downs. Renamed "Toggle dynamic lights rendering" action to "Show dynamic lights". Changed: "Show dynamic lights" action now toggles between available dynamic light rendering modes. Renamed "Toggle models rendering" action to "Show models". Changed: "Show models" action now toggles between available model rendering modes. Removed "Toggle dynamic lights animation" and "Render selected/all models" actions. Fixed, Randomize Sectors form: selection highlight was not updated after applying the changes when the form was shown in Sectors mode. Consistency: selection is now cleared after applying changes done in Randomize Things and Randomize Vertices forms. Fixed, Classic modes: sprites of things with attached models were not rendered when model rendering was disabled. Updated documentation. --- .../general/menu_renderingtoolbar.jpg | Bin 4548 -> 3530 bytes .../features/general/rendering_toolbar.html | 6 +- Source/Core/Builder.csproj | 3 + .../Core/Config/ModelAndLightRenderModes.cs | 16 ++ Source/Core/Config/ProgramConfiguration.cs | 24 +-- Source/Core/GZBuilder/GZGeneral.cs | 122 ++++++++---- Source/Core/Properties/Resources.Designer.cs | 14 ++ Source/Core/Properties/Resources.resx | 30 +-- Source/Core/Rendering/Renderer2D.cs | 16 +- Source/Core/Rendering/Renderer3D.cs | 96 +++++++--- Source/Core/Resources/Actions.cfg | 42 ++--- Source/Core/Resources/LightDisabled.png | Bin 0 -> 623 bytes Source/Core/Resources/Light_animate.png | Bin 763 -> 765 bytes Source/Core/Resources/Model.png | Bin 212 -> 305 bytes Source/Core/Resources/ModelDisabled.png | Bin 0 -> 610 bytes Source/Core/VisualModes/VisualThing.cs | 3 +- Source/Core/Windows/MainForm.Designer.cs | 177 +++++++++++------- Source/Core/Windows/MainForm.cs | 110 ++++++++--- Source/Core/Windows/MainForm.resx | 40 +--- .../Interface/JitterSectorsForm.cs | 8 +- .../Interface/JitterThingsForm.cs | 4 + .../Interface/JitterVerticesForm.cs | 4 +- .../BuilderModes/Resources/Actions.cfg | 2 +- .../VisualModes/BaseVisualMode.cs | 7 +- 24 files changed, 444 insertions(+), 280 deletions(-) create mode 100644 Source/Core/Config/ModelAndLightRenderModes.cs create mode 100644 Source/Core/Resources/LightDisabled.png create mode 100644 Source/Core/Resources/ModelDisabled.png diff --git a/Help/gzdb/features/general/menu_renderingtoolbar.jpg b/Help/gzdb/features/general/menu_renderingtoolbar.jpg index b9f13b046445ee0af3eb0d917d0bc6e345f7844d..312620b27c3578c90339350d1d3fd2926ebe497c 100644 GIT binary patch literal 3530 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 G)qemCkiTjG literal 4548 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 YLjN(CtZ~+mgM_od=8^8Q{MncP0~O)wIsgCw diff --git a/Help/gzdb/features/general/rendering_toolbar.html b/Help/gzdb/features/general/rendering_toolbar.html index 414767789..56827fe17 100644 --- a/Help/gzdb/features/general/rendering_toolbar.html +++ b/Help/gzdb/features/general/rendering_toolbar.html @@ -22,10 +22,8 @@ <p>The Rendering toolbar allows you to toggle several GZDoom Builder's features:</p> <ol> <li>Toggles models, dynamic lights and fog rendering in Visual mode.</li> - <li>Toggles dynamic lights rendering in Visual mode.</li> - <li>Toggles dynamic lights animation in Visual mode.</li> - <li>Toggles models rendering.</li> - <li>Render all models / render only models for selected things.</li> + <li>Toggles between available dynamic lights rendering modes in Visual mode.</li> + <li>Toggles between available model rendering modes.</li> <li>Toggles fog rendering in Visual mode.</li> <li>Toggles <a href="../all_modes/event_lines.html">Event lines</a>.</li> <li>Toggles <a href="../visual_mode/visual_verts.html">Visual vertices</a> in Visual mode (UDMF only).</li> diff --git a/Source/Core/Builder.csproj b/Source/Core/Builder.csproj index 6ffc52d87..aaf2675d2 100644 --- a/Source/Core/Builder.csproj +++ b/Source/Core/Builder.csproj @@ -679,6 +679,7 @@ <Compile Include="Actions\HintsManager.cs" /> <Compile Include="Config\AllTexturesSet.cs" /> <Compile Include="Config\FlagTranslation.cs" /> + <Compile Include="Config\ModelAndLightRenderModes.cs" /> <Compile Include="Config\PasteOptions.cs" /> <Compile Include="Config\ThingsFlagsCompare.cs" /> <Compile Include="Controls\ButtonsNumericTextboxDesigner.cs" /> @@ -1006,6 +1007,7 @@ <None Include="Resources\FolderExplore.png" /> <Content Include="Resources\Light.png" /> <None Include="Resources\Lightbulb.png" /> + <None Include="Resources\LightDisabled.png" /> <Content Include="Resources\Light_animate.png" /> <None Include="Resources\MLogo.png" /> <None Include="Resources\Marine.png" /> @@ -1013,6 +1015,7 @@ <EmbeddedResource Include="Resources\MissingThing.png" /> <None Include="Resources\MCrash.png" /> <Content Include="Resources\Model.png" /> + <None Include="Resources\ModelDisabled.png" /> <Content Include="Resources\Model_selected.png" /> <None Include="Resources\PuzzlePiece.png" /> <None Include="Resources\Search.png" /> diff --git a/Source/Core/Config/ModelAndLightRenderModes.cs b/Source/Core/Config/ModelAndLightRenderModes.cs new file mode 100644 index 000000000..a166e32bd --- /dev/null +++ b/Source/Core/Config/ModelAndLightRenderModes.cs @@ -0,0 +1,16 @@ +namespace CodeImp.DoomBuilder.Config +{ + public enum ModelRenderMode + { + NONE, + SELECTION, + ALL, + } + + public enum LightRenderMode + { + NONE, + ALL, + ALL_ANIMATED, + } +} diff --git a/Source/Core/Config/ProgramConfiguration.cs b/Source/Core/Config/ProgramConfiguration.cs index 0fb10646a..dc26b693e 100644 --- a/Source/Core/Config/ProgramConfiguration.cs +++ b/Source/Core/Config/ProgramConfiguration.cs @@ -94,10 +94,8 @@ namespace CodeImp.DoomBuilder.Config private SplitLineBehavior splitlinebehavior; //mxd //mxd - private bool gzDrawModels; - private bool gzDrawSelectedModelsOnly; - private bool gzDrawLights; - private bool gzAnimateLights; + private ModelRenderMode gzDrawModelsMode; + private LightRenderMode gzDrawLightsMode; private bool gzDrawFog; private bool gzToolbarGZDoom; private bool gzSynchCameras; @@ -180,10 +178,8 @@ namespace CodeImp.DoomBuilder.Config public SplitLineBehavior SplitLineBehavior { get { return splitlinebehavior; } set { splitlinebehavior = value; } } //mxd //mxd - public bool GZDrawModels { get { return gzDrawModels; } internal set { gzDrawModels = value; } } - public bool GZDrawSelectedModelsOnly { get { return gzDrawSelectedModelsOnly; } internal set { gzDrawSelectedModelsOnly = value; } } - public bool GZDrawLights { get { return gzDrawLights; } internal set { gzDrawLights = value; } } - public bool GZAnimateLights { get { return gzAnimateLights; } internal set { gzAnimateLights = value; } } + public ModelRenderMode GZDrawModelsMode { get { return gzDrawModelsMode; } internal set { gzDrawModelsMode = value; } } + public LightRenderMode GZDrawLightsMode { get { return gzDrawLightsMode; } internal set { gzDrawLightsMode = value; } } public bool GZDrawFog { get { return gzDrawFog; } internal set { gzDrawFog = value; } } public bool GZToolbarGZDoom { get { return gzToolbarGZDoom; } internal set { gzToolbarGZDoom = value; } } public bool GZSynchCameras { get { return gzSynchCameras; } internal set { gzSynchCameras = value; } } @@ -289,10 +285,8 @@ namespace CodeImp.DoomBuilder.Config splitlinebehavior = (SplitLineBehavior) General.Clamp(cfg.ReadSetting("splitlinebehavior", 0), 0, 3); //mxd //mxd - gzDrawModels = cfg.ReadSetting("gzdrawmodels", true); - gzDrawSelectedModelsOnly = cfg.ReadSetting("gzdrawselectedmodelsonly", false); - gzDrawLights = cfg.ReadSetting("gzdrawlights", true); - gzAnimateLights = cfg.ReadSetting("gzanimatelights", false); + gzDrawModelsMode = (ModelRenderMode)cfg.ReadSetting("gzdrawmodels", (int)ModelRenderMode.ALL); + gzDrawLightsMode = (LightRenderMode)cfg.ReadSetting("gzdrawlights", (int)LightRenderMode.ALL); gzDrawFog = cfg.ReadSetting("gzdrawfog", false); gzToolbarGZDoom = cfg.ReadSetting("gztoolbargzdoom", true); gzSynchCameras = cfg.ReadSetting("gzsynchcameras", true); @@ -380,10 +374,8 @@ namespace CodeImp.DoomBuilder.Config cfg.WriteSetting("splitlinebehavior", (int)splitlinebehavior); //mxd //mxd - cfg.WriteSetting("gzdrawmodels", gzDrawModels); - cfg.WriteSetting("gzdrawselectedmodelsonly", gzDrawSelectedModelsOnly); - cfg.WriteSetting("gzdrawlights", gzDrawLights); - cfg.WriteSetting("gzanimatelights", gzAnimateLights); + cfg.WriteSetting("gzdrawmodels", (int)gzDrawModelsMode); + cfg.WriteSetting("gzdrawlights", (int)gzDrawLightsMode); cfg.WriteSetting("gzdrawfog", gzDrawFog); cfg.WriteSetting("gzsynchcameras", gzSynchCameras); cfg.WriteSetting("gzshoweventlines", gzShowEventLines); diff --git a/Source/Core/GZBuilder/GZGeneral.cs b/Source/Core/GZBuilder/GZGeneral.cs index e1560fb12..3f93f6783 100644 --- a/Source/Core/GZBuilder/GZGeneral.cs +++ b/Source/Core/GZBuilder/GZGeneral.cs @@ -1,83 +1,118 @@ -using CodeImp.DoomBuilder.Actions; +#region ================== Namespaces + +using CodeImp.DoomBuilder.Actions; +using CodeImp.DoomBuilder.Config; using CodeImp.DoomBuilder.Windows; using CodeImp.DoomBuilder.GZBuilder.Data; +#endregion + namespace CodeImp.DoomBuilder.GZBuilder { //mxd. should get rid of this class one day... public static class GZGeneral { + #region ================== Properties + //gzdoom light types - private static int[] gzLights = { /* normal lights */ 9800, 9801, 9802, 9803, 9804, /* additive lights */ 9810, 9811, 9812, 9813, 9814, /* negative lights */ 9820, 9821, 9822, 9823, 9824, /* vavoom lights */ 1502, 1503}; + private static readonly int[] gzLights = { /* normal lights */ 9800, 9801, 9802, 9803, 9804, /* additive lights */ 9810, 9811, 9812, 9813, 9814, /* negative lights */ 9820, 9821, 9822, 9823, 9824, /* vavoom lights */ 1502, 1503}; public static int[] GZ_LIGHTS { get { return gzLights; } } - private static int[] gzLightTypes = { 5, 10, 15 }; //these are actually offsets in gz_lights + private static readonly int[] gzLightTypes = { 5, 10, 15 }; //these are actually offsets in gz_lights public static int[] GZ_LIGHT_TYPES { get { return gzLightTypes; } } - private static DynamicLightType[] gzAnimatedLightTypes = { DynamicLightType.FLICKER, DynamicLightType.RANDOM, DynamicLightType.PULSE }; + private static readonly DynamicLightType[] gzAnimatedLightTypes = { DynamicLightType.FLICKER, DynamicLightType.RANDOM, DynamicLightType.PULSE }; public static DynamicLightType[] GZ_ANIMATED_LIGHT_TYPES { get { return gzAnimatedLightTypes; } } //asc script action specials - private static int[] acsSpecials = { 80, 81, 82, 83, 84, 85, 226 }; + private static readonly int[] acsSpecials = { 80, 81, 82, 83, 84, 85, 226 }; public static int[] ACS_SPECIALS { get { return acsSpecials; } } - public static void Init() { + #endregion + + #region ================== Methods + + public static void Init() + { //bind actions General.Actions.BindMethods(typeof(GZGeneral)); General.MainWindow.UpdateGZDoomPanel(); } -//actions + #endregion + + #region ================== Actions + [BeginAction("gztogglemodels")] - private static void toggleModels() { - General.Settings.GZDrawModels = !General.Settings.GZDrawModels; - General.MainWindow.DisplayStatus(StatusType.Action, "Models rendering is " + (General.Settings.GZDrawModels ? "ENABLED" : "DISABLED")); + private static void ToggleModelsRenderingMode() + { + switch(General.Settings.GZDrawModelsMode) + { + case ModelRenderMode.NONE: + General.Settings.GZDrawModelsMode = ModelRenderMode.SELECTION; + General.MainWindow.DisplayStatus(StatusType.Action, "Models rendering mode: SELECTION ONLY"); + break; + + case ModelRenderMode.SELECTION: + General.Settings.GZDrawModelsMode = ModelRenderMode.ALL; + General.MainWindow.DisplayStatus(StatusType.Action, "Models rendering mode: ALL"); + break; + + case ModelRenderMode.ALL: + General.Settings.GZDrawModelsMode = ModelRenderMode.NONE; + General.MainWindow.DisplayStatus(StatusType.Action, "Models rendering mode: NONE"); + break; + } + General.MainWindow.RedrawDisplay(); General.MainWindow.UpdateGZDoomPanel(); } [BeginAction("gztogglelights")] - private static void toggleLights() { - General.Settings.GZDrawLights = !General.Settings.GZDrawLights; - General.MainWindow.DisplayStatus(StatusType.Action, "Dynamic lights rendering is " + (General.Settings.GZDrawLights ? "ENABLED" : "DISABLED")); - General.MainWindow.RedrawDisplay(); - General.MainWindow.UpdateGZDoomPanel(); - } - - [BeginAction("gztogglelightsanimation")] - private static void toggleLightsAnimation() { - General.Settings.GZAnimateLights = !General.Settings.GZAnimateLights; - General.MainWindow.DisplayStatus(StatusType.Action, "Dynamic lights animation is " + (General.Settings.GZAnimateLights ? "ENABLED" : "DISABLED")); + private static void ToggleLightsRenderingMode() + { + switch(General.Settings.GZDrawLightsMode) + { + case LightRenderMode.NONE: + General.Settings.GZDrawLightsMode = LightRenderMode.ALL; + General.MainWindow.DisplayStatus(StatusType.Action, "Dynamic lights rendering mode: ALL"); + break; + + case LightRenderMode.ALL: + General.Settings.GZDrawLightsMode = LightRenderMode.ALL_ANIMATED; + General.MainWindow.DisplayStatus(StatusType.Action, "Models rendering mode: ANIMATED"); + break; + + case LightRenderMode.ALL_ANIMATED: + General.Settings.GZDrawLightsMode = LightRenderMode.NONE; + General.MainWindow.DisplayStatus(StatusType.Action, "Models rendering mode: NONE"); + break; + } + General.MainWindow.RedrawDisplay(); General.MainWindow.UpdateGZDoomPanel(); } [BeginAction("gztogglefog")] - private static void toggleFog() { + private static void ToggleFog() + { General.Settings.GZDrawFog = !General.Settings.GZDrawFog; General.MainWindow.DisplayStatus(StatusType.Action, "Fog rendering is " + (General.Settings.GZDrawFog ? "ENABLED" : "DISABLED")); General.MainWindow.RedrawDisplay(); General.MainWindow.UpdateGZDoomPanel(); } - [BeginAction("gzdrawselectedmodelsonly")] - private static void toggleDrawSelectedModelsOnly() { - General.Settings.GZDrawSelectedModelsOnly = !General.Settings.GZDrawSelectedModelsOnly; - General.MainWindow.DisplayStatus(StatusType.Action, "Rendering " + (General.Settings.GZDrawSelectedModelsOnly ? "only selected" : "all") + " models."); - General.MainWindow.RedrawDisplay(); - General.MainWindow.UpdateGZDoomPanel(); - } - [BeginAction("gztogglefx")] - private static void toggleFx() { + private static void ToggleFx() + { int on = 0; on += General.Settings.GZDrawFog ? 1 : -1; - on += General.Settings.GZDrawLights ? 1 : -1; - on += General.Settings.GZDrawModels ? 1 : -1; + on += General.Settings.GZDrawLightsMode != LightRenderMode.NONE ? 1 : -1; + on += General.Settings.GZDrawModelsMode != ModelRenderMode.NONE ? 1 : -1; bool enable = (on < 0); General.Settings.GZDrawFog = enable; - General.Settings.GZDrawLights = enable; - General.Settings.GZDrawModels = enable; + General.Settings.GZDrawLightsMode = (enable ? LightRenderMode.ALL : LightRenderMode.NONE); + General.Settings.GZDrawModelsMode = (enable ? ModelRenderMode.ALL : ModelRenderMode.NONE); General.MainWindow.DisplayStatus(StatusType.Action, "Advanced effects are " + (enable ? "ENABLED" : "DISABLED") ); General.MainWindow.RedrawDisplay(); @@ -85,7 +120,8 @@ namespace CodeImp.DoomBuilder.GZBuilder } [BeginAction("gztoggleeventlines")] - private static void toggleEventLines() { + private static void ToggleEventLines() + { General.Settings.GZShowEventLines = !General.Settings.GZShowEventLines; General.MainWindow.DisplayStatus(StatusType.Action, "Event lines are " + (General.Settings.GZShowEventLines ? "ENABLED" : "DISABLED")); General.MainWindow.RedrawDisplay(); @@ -93,7 +129,8 @@ namespace CodeImp.DoomBuilder.GZBuilder } [BeginAction("gztogglevisualvertices")] - private static void toggleVisualVertices() { + private static void ToggleVisualVertices() + { General.Settings.GZShowVisualVertices = !General.Settings.GZShowVisualVertices; General.MainWindow.DisplayStatus(StatusType.Action, "Visual vertices are " + (General.Settings.GZShowVisualVertices ? "ENABLED" : "DISABLED")); General.MainWindow.RedrawDisplay(); @@ -102,18 +139,23 @@ namespace CodeImp.DoomBuilder.GZBuilder //main menu actions [BeginAction("gzreloadmodeldef")] - private static void reloadModeldef() { + private static void ReloadModeldef() + { if(General.Map != null) General.Map.Data.ReloadModeldef(); } [BeginAction("gzreloadgldefs")] - private static void reloadGldefs() { + private static void ReloadGldefs() + { if (General.Map != null) General.Map.Data.ReloadGldefs(); } [BeginAction("gzreloadmapinfo")] - private static void reloadMapInfo() { + private static void ReloadMapInfo() + { if (General.Map != null) General.Map.Data.ReloadMapInfo(); } + + #endregion } } \ No newline at end of file diff --git a/Source/Core/Properties/Resources.Designer.cs b/Source/Core/Properties/Resources.Designer.cs index e58df6764..a03fe6961 100644 --- a/Source/Core/Properties/Resources.Designer.cs +++ b/Source/Core/Properties/Resources.Designer.cs @@ -305,6 +305,13 @@ namespace CodeImp.DoomBuilder.Properties { } } + internal static System.Drawing.Bitmap LightDisabled { + get { + object obj = ResourceManager.GetObject("LightDisabled", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + internal static System.Drawing.Bitmap Link { get { object obj = ResourceManager.GetObject("Link", resourceCulture); @@ -389,6 +396,13 @@ namespace CodeImp.DoomBuilder.Properties { } } + internal static System.Drawing.Bitmap ModelDisabled { + get { + object obj = ResourceManager.GetObject("ModelDisabled", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + internal static System.Drawing.Bitmap Monster2 { get { object obj = ResourceManager.GetObject("Monster2", resourceCulture); diff --git a/Source/Core/Properties/Resources.resx b/Source/Core/Properties/Resources.resx index a66e6afca..f4fb21d9b 100644 --- a/Source/Core/Properties/Resources.resx +++ b/Source/Core/Properties/Resources.resx @@ -118,6 +118,9 @@ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> + <data name="Zoom" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\Zoom.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> <data name="Cut" type="System.Resources.ResXFileRef, System.Windows.Forms"> <value>..\Resources\Cut.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> </data> @@ -184,6 +187,9 @@ <data name="ScriptHelp" type="System.Resources.ResXFileRef, System.Windows.Forms"> <value>..\Resources\ScriptHelp.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> </data> + <data name="Light_animate" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\Light_animate.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> <data name="KnownTextureSet" type="System.Resources.ResXFileRef, System.Windows.Forms"> <value>..\Resources\KnownTextureSet.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> </data> @@ -223,9 +229,15 @@ <data name="Paste" type="System.Resources.ResXFileRef, System.Windows.Forms"> <value>..\Resources\Paste.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> </data> + <data name="LightDisabled" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\LightDisabled.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> <data name="ScriptConstant" type="System.Resources.ResXFileRef, System.Windows.Forms"> <value>..\Resources\ScriptConstant.xpm;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </data> + <data name="FolderExplore" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\FolderExplore.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + </data> <data name="Warning" type="System.Resources.ResXFileRef, System.Windows.Forms"> <value>..\Resources\Warning.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> </data> @@ -295,17 +307,14 @@ <data name="MCrash" type="System.Resources.ResXFileRef, System.Windows.Forms"> <value>..\Resources\MCrash.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> </data> - <data name="PuzzlePiece" type="System.Resources.ResXFileRef, System.Windows.Forms"> - <value>..\Resources\PuzzlePiece.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> - </data> <data name="ScriptCompile" type="System.Resources.ResXFileRef, System.Windows.Forms"> <value>..\Resources\ScriptCompile.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> </data> <data name="Zoom_arrowup" type="System.Resources.ResXFileRef, System.Windows.Forms"> <value>..\Resources\Zoom_arrowup.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> </data> - <data name="Zoom" type="System.Resources.ResXFileRef, System.Windows.Forms"> - <value>..\Resources\Zoom.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + <data name="PuzzlePiece" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\PuzzlePiece.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> </data> <data name="Model_selected" type="System.Resources.ResXFileRef, System.Windows.Forms"> <value>..\Resources\Model_selected.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> @@ -331,9 +340,6 @@ <data name="Redo" type="System.Resources.ResXFileRef, System.Windows.Forms"> <value>..\Resources\Redo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> </data> - <data name="Status2" type="System.Resources.ResXFileRef, System.Windows.Forms"> - <value>..\Resources\Status2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> - </data> <data name="Prefab" type="System.Resources.ResXFileRef, System.Windows.Forms"> <value>..\Resources\Prefab.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> </data> @@ -352,8 +358,8 @@ <data name="Status12" type="System.Resources.ResXFileRef, System.Windows.Forms"> <value>..\Resources\Status12.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> </data> - <data name="Light_animate" type="System.Resources.ResXFileRef, System.Windows.Forms"> - <value>..\Resources\Light_animate.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + <data name="Status2" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\Status2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> </data> <data name="Link" type="System.Resources.ResXFileRef, System.Windows.Forms"> <value>..\Resources\Link.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> @@ -430,7 +436,7 @@ <data name="Check" type="System.Resources.ResXFileRef, System.Windows.Forms"> <value>..\Resources\Check.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> </data> - <data name="FolderExplore" type="System.Resources.ResXFileRef, System.Windows.Forms"> - <value>..\Resources\FolderExplore.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> + <data name="ModelDisabled" type="System.Resources.ResXFileRef, System.Windows.Forms"> + <value>..\Resources\ModelDisabled.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> </data> </root> \ No newline at end of file diff --git a/Source/Core/Rendering/Renderer2D.cs b/Source/Core/Rendering/Renderer2D.cs index e38147747..be7a3750a 100644 --- a/Source/Core/Rendering/Renderer2D.cs +++ b/Source/Core/Rendering/Renderer2D.cs @@ -1207,7 +1207,7 @@ namespace CodeImp.DoomBuilder.Rendering } foreach(Thing t in group.Value) { - if(t.IsModel) continue; + if(t.IsModel && (General.Settings.GZDrawModelsMode == ModelRenderMode.ALL || (General.Settings.GZDrawModelsMode == ModelRenderMode.SELECTION && t.Selected))) continue; CreateThingSpriteVerts(thingsByPosition[t], spriteWidth, spriteHeight, ref verts, buffercount * 6, t.Selected ? selectionColor : 0xFFFFFF); buffercount++; totalcount++; @@ -1295,7 +1295,8 @@ namespace CodeImp.DoomBuilder.Rendering graphics.Shaders.Things2D.EndPass(); //mxd. Render models - if (General.Settings.GZDrawModels) { + if (General.Settings.GZDrawModelsMode != ModelRenderMode.NONE) + { // Set renderstates for rendering graphics.Device.SetRenderState(RenderState.AlphaBlendEnable, false); graphics.Device.SetRenderState(RenderState.TextureFactor, -1); @@ -1308,14 +1309,16 @@ namespace CodeImp.DoomBuilder.Rendering Matrix viewscale = Matrix.Scaling(scale, -scale, 0.0f); ModelData mde; - foreach(KeyValuePair<int, List<Thing>> group in modelsByType) { + foreach(KeyValuePair<int, List<Thing>> group in modelsByType) + { mde = General.Map.Data.ModeldefEntries[group.Key]; float maxX = Math.Max(Math.Abs(mde.Model.BoundingBox[4].X), Math.Abs(mde.Model.BoundingBox[1].X)); float maxY = Math.Max(Math.Abs(mde.Model.BoundingBox[4].Y), Math.Abs(mde.Model.BoundingBox[1].Y)); float maxSize = Math.Max(maxX, maxY); - foreach(Thing t in group.Value) { - if(General.Settings.GZDrawSelectedModelsOnly && !t.Selected) continue; + foreach(Thing t in group.Value) + { + if(General.Settings.GZDrawModelsMode == ModelRenderMode.SELECTION && !t.Selected) continue; Vector2D screenpos = ((Vector2D)t.Position).GetTransformed(translatex, translatey, scale, -scale); float modelScale = scale * t.ActorScale.Width * t.ScaleX; @@ -1326,7 +1329,8 @@ namespace CodeImp.DoomBuilder.Rendering graphics.Shaders.Things2D.FillColor = t.Selected ? cHighlight : cWire; - for(int i = 0; i < mde.Model.Meshes.Count; i++) { + for(int i = 0; i < mde.Model.Meshes.Count; i++) + { float sx = t.ScaleX * t.ActorScale.Width; float sy = t.ScaleY * t.ActorScale.Height; Matrix modelcale = Matrix.Scaling(sx, sx, sy); diff --git a/Source/Core/Rendering/Renderer3D.cs b/Source/Core/Rendering/Renderer3D.cs index fffb8d462..37fa184f4 100644 --- a/Source/Core/Rendering/Renderer3D.cs +++ b/Source/Core/Rendering/Renderer3D.cs @@ -19,6 +19,7 @@ using System; using System.Collections.Generic; using System.Drawing; +using CodeImp.DoomBuilder.Config; using SlimDX; using CodeImp.DoomBuilder.Geometry; using SlimDX.Direct3D9; @@ -413,7 +414,8 @@ namespace CodeImp.DoomBuilder.Rendering } //mxd - if (General.Settings.GZDrawLights) { + if (General.Settings.GZDrawLightsMode != LightRenderMode.NONE) + { thingsWithLight = new List<VisualThing>(); } } @@ -422,7 +424,7 @@ namespace CodeImp.DoomBuilder.Rendering public void FinishGeometry() { //mxd. sort lights - if (General.Settings.GZDrawLights && !fullbrightness && thingsWithLight.Count > 0) + if(General.Settings.GZDrawLightsMode != LightRenderMode.NONE && !fullbrightness && thingsWithLight.Count > 0) updateLights(); // Initial renderstates @@ -495,7 +497,8 @@ namespace CodeImp.DoomBuilder.Rendering RenderSinglePass((int)RenderPass.Additive); //mxd. LIGHT PASS - if( !(!General.Settings.GZDrawLights || fullbrightness || thingsWithLight.Count == 0 || litGeometry.Count == 0) ) { + if( !(General.Settings.GZDrawLightsMode == LightRenderMode.NONE || fullbrightness || thingsWithLight.Count == 0 || litGeometry.Count == 0) ) + { RenderLights(litGeometry, thingsWithLight); } @@ -777,7 +780,7 @@ namespace CodeImp.DoomBuilder.Rendering wantedshaderpass += 8; //mxd. Seems that lines rendered with RenderPass.Alpha or RenderPass.Additive aren't affected by dynamic lights in GZDoom - if ( !(g.RenderPass == RenderPass.Alpha || g.RenderPass == RenderPass.Additive || !General.Settings.GZDrawLights || fullbrightness || thingsWithLight.Count == 0) ) { + if ( !(g.RenderPass == RenderPass.Alpha || g.RenderPass == RenderPass.Additive || General.Settings.GZDrawLightsMode == LightRenderMode.NONE || fullbrightness || thingsWithLight.Count == 0) ) { if (curtexture.Texture != null) { if (!litGeometry.ContainsKey(curtexture.Texture)) litGeometry[curtexture.Texture] = new List<VisualGeometry>(); @@ -853,14 +856,15 @@ namespace CodeImp.DoomBuilder.Rendering foreach(VisualThing t in group.Value) { //mxd - if (t.Thing.IsModel && General.Settings.GZDrawModels && (!General.Settings.GZDrawSelectedModelsOnly || t.Selected)) + if(t.Thing.IsModel && General.Settings.GZDrawModelsMode != ModelRenderMode.NONE && (General.Settings.GZDrawModelsMode == ModelRenderMode.ALL || t.Selected)) continue; // Update buffer if needed t.Update(); // Only do this sector when a vertexbuffer is created - if (t.GeometryBuffer != null) { + if (t.GeometryBuffer != null) + { // Determine the shader pass we want to use for this object int wantedshaderpass = (((t == highlighted) && showhighlight) || (t.Selected && showselection)) ? highshaderpass : shaderpass; @@ -869,30 +873,38 @@ namespace CodeImp.DoomBuilder.Rendering wantedshaderpass += 8; //mxd. if current thing is light - set it's color to light color - if (Array.IndexOf(GZBuilder.GZGeneral.GZ_LIGHTS, t.Thing.Type) != -1 && !fullbrightness) { + if (Array.IndexOf(GZBuilder.GZGeneral.GZ_LIGHTS, t.Thing.Type) != -1 && !fullbrightness) + { wantedshaderpass += 4; //render using one of passes, which uses World3D.VertexColor graphics.Shaders.World3D.VertexColor = t.LightColor; //mxd. check if Thing is affected by dynamic lights and set color accordingly - } else if (General.Settings.GZDrawLights && !fullbrightness && thingsWithLight.Count > 0) { + } + else if (General.Settings.GZDrawLightsMode != LightRenderMode.NONE && !fullbrightness && thingsWithLight.Count > 0) + { Color4 litColor = getLitColorForThing(t); - if (litColor.ToArgb() != 0) { + if (litColor.ToArgb() != 0) + { wantedshaderpass += 4; //render using one of passes, which uses World3D.VertexColor graphics.Shaders.World3D.VertexColor = new Color4(t.VertexColor) + litColor; } } // Switch shader pass? - if (currentshaderpass != wantedshaderpass) { + if (currentshaderpass != wantedshaderpass) + { graphics.Shaders.World3D.EndPass(); graphics.Shaders.World3D.BeginPass(wantedshaderpass); currentshaderpass = wantedshaderpass; } // Set the colors to use - if (!graphics.Shaders.Enabled) { + if (!graphics.Shaders.Enabled) + { graphics.Device.SetTexture(2, (t.Selected && showselection) ? selectionimage.Texture : null); graphics.Device.SetTexture(3, ((t == highlighted) && showhighlight) ? highlightimage.Texture : null); - } else { + } + else + { graphics.Shaders.World3D.SetHighlightColor(CalculateHighlightColor((t == highlighted) && showhighlight, (t.Selected && showselection)).ToArgb()); } @@ -904,7 +916,8 @@ namespace CodeImp.DoomBuilder.Rendering ApplyMatrices3D(); //mxd. set variables for fog rendering - if (wantedshaderpass > 7) { + if (wantedshaderpass > 7) + { graphics.Shaders.World3D.World = world; graphics.Shaders.World3D.LightColor = t.Thing.Sector.FogColor; @@ -1010,7 +1023,8 @@ namespace CodeImp.DoomBuilder.Rendering } //mxd. render models - private void RenderModels() { + private void RenderModels() + { int shaderpass = fullbrightness ? 1 : 4; int currentshaderpass = shaderpass; int highshaderpass = shaderpass + 2; @@ -1018,17 +1032,23 @@ namespace CodeImp.DoomBuilder.Rendering // Begin rendering with this shader graphics.Shaders.World3D.BeginPass(currentshaderpass); - foreach (KeyValuePair<ModelData, List<VisualThing>> group in thingsWithModel) { - foreach (VisualThing t in group.Value) { + foreach (KeyValuePair<ModelData, List<VisualThing>> group in thingsWithModel) + { + foreach (VisualThing t in group.Value) + { t.Update(); Color4 vertexColor = new Color4(t.VertexColor); vertexColor.Alpha = 1.0f; + //check if model is affected by dynamic lights and set color accordingly - if (General.Settings.GZDrawLights && !fullbrightness && thingsWithLight.Count > 0) { + if (General.Settings.GZDrawLightsMode != LightRenderMode.NONE && !fullbrightness && thingsWithLight.Count > 0) + { Color4 litColor = getLitColorForThing(t); graphics.Shaders.World3D.VertexColor = vertexColor + litColor; - } else { + } + else + { graphics.Shaders.World3D.VertexColor = vertexColor; } @@ -1040,17 +1060,21 @@ namespace CodeImp.DoomBuilder.Rendering wantedshaderpass += 8; // Switch shader pass? - if (currentshaderpass != wantedshaderpass) { + if (currentshaderpass != wantedshaderpass) + { graphics.Shaders.World3D.EndPass(); graphics.Shaders.World3D.BeginPass(wantedshaderpass); currentshaderpass = wantedshaderpass; } // Set the colors to use - if (!graphics.Shaders.Enabled) { + if (!graphics.Shaders.Enabled) + { graphics.Device.SetTexture(2, (t.Selected && showselection) ? selectionimage.Texture : null); graphics.Device.SetTexture(3, ((t == highlighted) && showhighlight) ? highlightimage.Texture : null); - } else { + } + else + { graphics.Shaders.World3D.SetHighlightColor(CalculateHighlightColor((t == highlighted) && showhighlight, (t.Selected && showselection)).ToArgb()); } @@ -1065,14 +1089,16 @@ namespace CodeImp.DoomBuilder.Rendering ApplyMatrices3D(); //mxd. set variables for fog rendering - if (wantedshaderpass > 7) { + if (wantedshaderpass > 7) + { graphics.Shaders.World3D.World = world; graphics.Shaders.World3D.LightColor = t.Thing.Sector.FogColor; graphics.Shaders.World3D.CameraPosition = new Vector4(cameraposition.x, cameraposition.y, cameraposition.z, getFogEnd(t.Thing.Sector)); } - for(int i = 0; i < group.Key.Model.Meshes.Count; i++) { + for(int i = 0; i < group.Key.Model.Meshes.Count; i++) + { if (!graphics.Shaders.Enabled) graphics.Device.SetTexture(0, group.Key.Model.Textures[i]); graphics.Shaders.World3D.Texture1 = group.Key.Model.Textures[i]; graphics.Shaders.World3D.ApplySettings(); @@ -1180,13 +1206,16 @@ namespace CodeImp.DoomBuilder.Rendering public void AddThingGeometry(VisualThing t) { //mxd. gater lights - if (General.Settings.GZDrawLights && !fullbrightness && t.LightType != DynamicLightType.NONE) { + if (General.Settings.GZDrawLightsMode != LightRenderMode.NONE && !fullbrightness && t.LightType != DynamicLightType.NONE) + { t.UpdateLightRadius(); - if (t.LightRadius > 0) { + if (t.LightRadius > 0) + { t.CalculateCameraDistance3D(D3DDevice.V3(cameraposition)); //t.CameraDistance3D is actually squared distance, hence (t.LightRadius * t.LightRadius) - if (t.CameraDistance3D < (t.LightRadius * t.LightRadius) || isThingOnScreen(t.BoundingBox)) { //always render light if camera is within it's radius + if(t.CameraDistance3D < (t.LightRadius * t.LightRadius) || isThingOnScreen(t.BoundingBox)) //always render light if camera is within it's radius + { if (Array.IndexOf(GZBuilder.GZGeneral.GZ_ANIMATED_LIGHT_TYPES, t.LightType) != -1) t.UpdateBoundingBox(); thingsWithLight.Add(t); @@ -1197,7 +1226,8 @@ namespace CodeImp.DoomBuilder.Rendering if (!isThingOnScreen(t.BoundingBox)) return; //mxd. gather models - if(t.Thing.IsModel && General.Settings.GZDrawModels && (!General.Settings.GZDrawSelectedModelsOnly || t.Selected)) { + if(t.Thing.IsModel && General.Settings.GZDrawModelsMode != ModelRenderMode.NONE && (General.Settings.GZDrawModelsMode == ModelRenderMode.ALL || t.Selected)) + { ModelData mde = General.Map.Data.ModeldefEntries[t.Thing.Type]; if (!thingsWithModel.ContainsKey(mde)) thingsWithModel.Add(mde, new List<VisualThing>() { t }); @@ -1225,12 +1255,14 @@ namespace CodeImp.DoomBuilder.Rendering } //mxd - public void AddVisualVertices(VisualVertex[] verts) { + public void AddVisualVertices(VisualVertex[] verts) + { visualvertices = verts; } //mxd - private bool isThingOnScreen(Vector3[] bbox) { + private bool isThingOnScreen(Vector3[] bbox) + { Vector3D camNormal = Vector3D.FromAngleXYZ(General.Map.VisualCamera.AngleXY, General.Map.VisualCamera.AngleZ); Vector3D thingNormal = D3DDevice.V3D(bbox[0]) - cameraposition; //bbox[0] is always thing center @@ -1244,7 +1276,8 @@ namespace CodeImp.DoomBuilder.Rendering int topCount = 0; int bottomCount = 0; - for (int i = 0; i < len; i++) { + for (int i = 0; i < len; i++) + { //check visibility screenPos = Vector3.Project(bbox[i], 0, 0, 1, 1, PROJ_NEAR_PLANE, General.Settings.ViewDistance, worldviewproj); @@ -1269,7 +1302,8 @@ namespace CodeImp.DoomBuilder.Rendering } //mxd - private static bool checkBBoxIntersection(Vector3[] bbox1, Vector3[] bbox2) { + private static bool checkBBoxIntersection(Vector3[] bbox1, Vector3[] bbox2) + { Vector3 dist = bbox1[0] - bbox2[0]; Vector3 halfSize1 = bbox1[0] - bbox1[1]; diff --git a/Source/Core/Resources/Actions.cfg b/Source/Core/Resources/Actions.cfg index 216dc3f55..9d97027b9 100644 --- a/Source/Core/Resources/Actions.cfg +++ b/Source/Core/Resources/Actions.cfg @@ -1082,9 +1082,9 @@ showerrors ///////////////////////// gztogglemodels { - title = "Toggle models rendering"; + title = "Show models"; category = "gzdoombuilder"; - description = "Toggles models rendering."; + description = "Cycles through available model rendering modes."; allowkeys = true; allowmouse = true; allowscroll = false; @@ -1092,19 +1092,9 @@ gztogglemodels gztogglelights { - title = "Toggle dynamic lights rendering"; + title = "Show dynamic lights"; category = "gzdoombuilder"; - description = "Toggles dynamic lights rendering."; - allowkeys = true; - allowmouse = true; - allowscroll = false; -} - -gztogglelightsanimation -{ - title = "Toggle dynamic lights animation"; - category = "gzdoombuilder"; - description = "Toggles dynamic lights animation."; + description = "Cycles through available dynamic light rendering modes in Visual Mode."; allowkeys = true; allowmouse = true; allowscroll = false; @@ -1112,7 +1102,7 @@ gztogglelightsanimation gztogglefog { - title = "Toggle fog rendering"; + title = "Toggle fog rendering"; category = "gzdoombuilder"; description = "Toggles fog rendering."; allowkeys = true; @@ -1120,21 +1110,11 @@ gztogglefog allowscroll = false; } -gzdrawselectedmodelsonly -{ - title = "Render selected/all models"; - category = "gzdoombuilder"; - description = "Render all models / render only models for selected things."; - allowkeys = true; - allowmouse = true; - allowscroll = false; -} - gztogglefx { - title = "Toggle GZDoom effects"; + title = "Toggle models, dynamic lights and fog"; category = "gzdoombuilder"; - description = "Toggles models, dynamic lights and fog rendering."; + description = "This is a combo action, which toggles models, dynamic lights and fog rendering."; allowkeys = true; allowmouse = true; allowscroll = false; @@ -1142,24 +1122,24 @@ gztogglefx gztoggleeventlines { - title = "Toggle Event lines"; + title = "Toggle Event lines"; category = "view"; description = "When enabled, shows order, in which patrol points and interpolation points are connected. Also shows action target for currently highlighted item in 2D modes."; allowkeys = true; allowmouse = false; allowscroll = false; - default = 73; + default = 73; } gztogglevisualvertices { - title = "Toggle Visual Vertices"; + title = "Toggle Visual Vertices"; category = "visual"; description = "When enabled, shows vertices, which heights can be changed, in Visual mode (UDMF only)."; allowkeys = true; allowmouse = false; allowscroll = false; - default = 262230; + default = 262230; } ////////////////////////////// diff --git a/Source/Core/Resources/LightDisabled.png b/Source/Core/Resources/LightDisabled.png new file mode 100644 index 0000000000000000000000000000000000000000..964f5c6732169f488b993162ff9c4061f2fffd51 GIT binary patch literal 623 zcmV-#0+9WQP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!5lKWrRCwBqQ#*@VQ4pT17Ze2FZ`9J# z)exIB{s3D^mlSJ}($XrRq_W8mFv})LKmykO0k_*FyOn~1_&^jN_<lcbW(MxEc-^qm z+;irB^PQRRd`FNZ3C<&#Onw^-2G`5w(oTDwPS>~DY`2+A=Ic3Dcu9~-r9$0q_r`9w zzl%g7;B-2n*Xsf1pj<A)WHNbjI2_lAdz5R$muv{W4Fm$gXfz6HwHoI0Ip=AOg<!Q> zgY|m-7pAV{8kM|ABog1XT5T{C3c-HA2d~!)yWNi0hr<E3+b#6_eLzfrunGb^{j<;K zgVkyU)oK-r#UeDDO_)xnfLg$My=D?3CahwF#bRNiR@?11oK7cDsZ{)>4rr9wY{o>C zC#-@1#gtGa`Ux711_VK%9FIYHD&A~1FdmN?t02IlA-3i)nM_<jr&ADtT&&mY`BqSe zfkFeL(fG5|>2M*<JsOPwy}&2Z{4^e7fH3&Ix#)vfEOw9k_kO=0TCEn3Az!20?PhT? z_fRMl!io+k&}~ud;BT!~1DDGM27>`C77H7y(P)sMRl>aLM2dJk{sGN$ho%vZ$K!Jc zIFjV?c)sLvxgY-}ph&0FQaBt2Q50DZ(xOx<K|Y@s&aom~2vVC&Wj32x%;9kOd@FAv zAoGyxDwPU%Kw?riZzjO@g={wa2UY(_SBMYnH$JdWm$3f?7yvnsFQl#}4VwS}002ov JPDHLkV1mry6$}6X literal 0 HcmV?d00001 diff --git a/Source/Core/Resources/Light_animate.png b/Source/Core/Resources/Light_animate.png index 1804a44f75657925098a161cd4b4185ef6780f29..9a4cb40b461e03112dc2e17804336d8faaea3062 100644 GIT binary patch delta 704 zcmV;x0zdux1^oq(Nq?V7L_t(|+H8|uNEA^N$Nw|q?3%jfmaQ4Ke)LvmL{ua_C`8nQ zPf-xqLu7;%^icF#J{A>4;P#M2Aeacf1kqE9)`N%%`GvcFtY)jb>bkSL?(WQ;dvABb zk=6CU;SOj1=Qro$j>I{~PMdgnwn-c}g`e6C4GaHp^x@!_oqt*>8!-0#^dWIPDm&kD z&t2D~Dvm;l8XGX<VWv(0B&$PR?>IG{*FGK!Z6#R%+ee?Bd!3l+Biu}KZl*Zbqnv8f z+*lsuiK%ZqHu2RQd)4?hJ4d!bBW)+Ix@#}rDJt{kfm1-)BceJara?AVAnWrmB9n^y z*rnT+*3QebAAcyJE&D2K95CWmGl0p23xKf>DI);MHOMIrcXhoQ>ZdJ2)UyM?>YN+n z5@J(;LqPHr0T7j>(twr#iwR!`oTV<w(&kja2&FtSF2n+`|A1&g5&+R>$^?y@BAG%; zQ1GzwU%N{SY$UmsIk-0+Qdl$ut~y0fh%<nZlwqV46n{I?NJPu2&<@*qa@Gtw=KN8e zo5e5}IWh|j=|2?dB@SJapb{Obl#if4Y6$K7UGKs7TQx5#y(RaL<j*?e#9_VOER&!> zW%wNMkSiU52O{LN^W^MX#Z2~OZZ_J!kg70TVugh?i6R<DfdGWbVbU`g`BnA1v|UJB zb6T+M!hgr$2BYlF%%X0Dh?gv<OUY8&L;f0GG8xqM@knOC(peBml3KS7(YA}73-eFg z+KQ5A>X8qQL_CJ@${PBn2h`C>V73Y_WI=KPmbps`QC(3EkH>}ORSn_(ACL*%rU}-q z-W7B3?Fz^k47zS$Y%~B(i$h`JORBsrSybT5**U`2HhO!}-Sw&4?+;wdWKuYBytcEU mq4CD`=4N|%KKn=fC%^!=dV44LrcU4h0000<MNUMnLSTYGYFEwx delta 702 zcmV;v0zv)#1^We%Nq?P5L_t(|+H8|cNK{c6$N%Tvd1yXr%4e8q6h)a*W`YE@Xi=HF zYE_HC2z#swAqYxnCADbd3nPLuq>WI}Hj0E05lS=1XJ+GbM(5$&x#!+<PTv(Pnel_~ ze)pd5|NYK)?m34krLfVyKdG*xaFx7reW;)O`N2D1-eMDDe}4gk%~d-o+|55xf74f9 z=hi(LOz>6Mk$D*&`)n=sy>3&2H<vZ`1vUb-|F7=Gk_(S-=T=|#xYB)$K|+%TbluW2 z3if%6&fUMo+*$XMJ6Hn@G#$C<D?58VGr!mcB>+90MolmohQ=46nLoi7hIQYeGuIsL zMu5wC2usv&-+#Tw10Hb}1K5(B0DKuNL4a5gT3o?bTH_9U6!j!}lLV0E-qj(7l@Y*0 z5SLB>>LhLe;V9$^`7+?m$zqN+r2}aRp%#WnOn@D^v;;-~1r@g;A~qEZu&98V*VnY0 zEI|&$f{B8yMnIRL0F>KHgCtG>Jf?xib!2-CL_>vww1536Kau{yvq^u*RCYG(8HL2O zgz-zjm{l;t3~tMWo26mOAL69#OaYv18|w+p1zRVAd8WtKA!0OpoKhS}vkhc14k!1h zXQcO3`*;zfO-?xn(v}Y<CqgaL@gkl@TbLnY$P^K5frWW%mqoc(@BOiNC0}z|NZybF zIQ?R3ReuWkbbQ9-0jt=WGjgn1BhUKHi>=`))1+Ky+>+eUIuPoj!Rdr0--U-wO{(&E z4bq?xjjUjPF^CVnpU~aa#hjw`4%Td{eCdXkd^COAGEiDnh>D~8vA661ZK;B0iIhv^ z6jNwT0VKGDX>tsH8^!pKG3b)P<<?S)sgu@!=Qm)ZRUNBh9Ubl6e*fsDL?Vug!(}gP kYtLUvo|)p>_a6ZU02J<1gTxqs%m4rY07*qoM6N<$g7PR(PXGV_ diff --git a/Source/Core/Resources/Model.png b/Source/Core/Resources/Model.png index 3a6bde2d6b4bb64af46b3f50ee1df1c06e216c2a..f1615042c10fe323255938e4d663d5655c3f9d01 100644 GIT binary patch delta 240 zcmV<M01yAv0kHy*Nq^HxL_t(|+G70w|33pIfDzdM`5e*Zq-cIP<#i+rx@M3dA&n>& zfm|S$EwUV$#)r|>G6ES#NOZOh%oSkQf($@69gpo8YMF?&*&}Dge`Fd4m`HKH1d}W{ z&<lzyo5(T%8(=|pq9(&+5FG*H@0b$7h|S69fC;8ZgZ*MNh-nR@LCyq;gA9U+;WPjr z02wr)x4n*_0jGcOw?mf%*?!}vel5B;&irJmg{4@q0oNIFSD3Oo9)kHBM#I=3FTlJ3 qQftEguNf8-WT!-|xse<I5MTf^rLUvARqxLL0000<MNUMnLSTZ1%V=)^ delta 147 zcmV;E0BrxU0@MMJNq=@pL_t(|+G70w|33pIfQf-ZFlqn^26*JG_>WAJ<${9Z$|hu* zDqdhgcOnezm=eK=O&n_&fD~!4Uu*`kVKm5@AaRgEFfp<M5oFMW-u61O3;@}F<EMTt zx;H>#C<eg%i%!GXATPkY0pr7Bf^ooeBS3%w02e?#MDedpKMVi>002ovPDHLkV1kOf BJy8Gv diff --git a/Source/Core/Resources/ModelDisabled.png b/Source/Core/Resources/ModelDisabled.png new file mode 100644 index 0000000000000000000000000000000000000000..9e963b9a53f74f024151de4dc22ce12b7824904b GIT binary patch literal 610 zcmV-o0-gPdP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!1W80eRCwB?Q_X7=K@@-cmHn){q-kQK zsa7o2s-UemD+r!67d=Tl*535u(Tm{!AoL;#Vu>Q2Jc=Mxs1S<Oixfj+D<p2Vn{C|9 z&hBKl<F2%_h8VvdJl@Rke!n+w=JzN<2>g#xNrFSSM#_H!-neg+*j}*vj4PeV61aRS z|6Eh}i;rJd?^Jz$VP@tmRBM~C`flZ?Li8RuW`lrYh9m(T4^KCm=)zW=sCkW@JDO82 z1tFY^E<5rgcdv!9o0&JeYbhoaaH?>e2%3WlO$QXDL<(e{gH_zNJvOL+T4)|i7G-yP znT_LA@n9ua$7zQlAc{OR+ZIe@b6_JE#xNPuMP|779q8m{(oLQ0c=*+a&(^h;<v>PO zV8bwBW!)&&boY_$c9nqy4)#z7!Te-i_0tLu5=TQ;6@evmS7zzq!)cWoNT3tk5?IDQ zKao9sK$BptVS8HC|A~UO7!abr6|MDw1np_6(%sqFu9=Rk+X$?-w`d{)Uu^%y=2quM zSYTQM31Tz0z3}N$?V&@2HCbfsCJH^%37;T0=qo0+_aJp$Dengb(EH9lZj`y|Vi&;_ zxtG6^nd_(4q!RCrFRLYvp@0B&WK>~Z8d$1)_0jE2gBfpq^q0*dyA=O@l=~ox^WTB7 wkRmU~Gx0m`mzz}LpAOLMFQ@Te?3(}s0Hs$B=*jkJNB{r;07*qoM6N<$g6csQ-2eap literal 0 HcmV?d00001 diff --git a/Source/Core/VisualModes/VisualThing.cs b/Source/Core/VisualModes/VisualThing.cs index 0e364de51..99f4a3e35 100644 --- a/Source/Core/VisualModes/VisualThing.cs +++ b/Source/Core/VisualModes/VisualThing.cs @@ -18,6 +18,7 @@ using System; using System.Collections.Generic; +using CodeImp.DoomBuilder.Config; using CodeImp.DoomBuilder.Map; using SlimDX.Direct3D9; using SlimDX; @@ -417,7 +418,7 @@ namespace CodeImp.DoomBuilder.VisualModes return; } - if (!General.Settings.GZAnimateLights || Array.IndexOf(GZBuilder.GZGeneral.GZ_ANIMATED_LIGHT_TYPES, lightType) == -1) { + if (General.Settings.GZDrawLightsMode == LightRenderMode.ALL || Array.IndexOf(GZBuilder.GZGeneral.GZ_ANIMATED_LIGHT_TYPES, lightType) == -1) { lightRadius = lightPrimaryRadius; return; } diff --git a/Source/Core/Windows/MainForm.Designer.cs b/Source/Core/Windows/MainForm.Designer.cs index ecf833c1c..dc80a91c9 100644 --- a/Source/Core/Windows/MainForm.Designer.cs +++ b/Source/Core/Windows/MainForm.Designer.cs @@ -175,10 +175,14 @@ namespace CodeImp.DoomBuilder.Windows this.buttonautoclearsidetextures = new System.Windows.Forms.ToolStripButton(); this.seperatorgeometry = new System.Windows.Forms.ToolStripSeparator(); this.buttontogglefx = new System.Windows.Forms.ToolStripButton(); - this.buttontoggledynlight = new System.Windows.Forms.ToolStripButton(); - this.buttontoggleanimatedlight = new System.Windows.Forms.ToolStripButton(); - this.buttontogglemodels = new System.Windows.Forms.ToolStripButton(); - this.buttonselectedmodelsonly = new System.Windows.Forms.ToolStripButton(); + this.dynamiclightmode = new System.Windows.Forms.ToolStripSplitButton(); + this.sightsdontshow = new System.Windows.Forms.ToolStripMenuItem(); + this.lightsshow = new System.Windows.Forms.ToolStripMenuItem(); + this.lightsshowanimated = new System.Windows.Forms.ToolStripMenuItem(); + this.modelrendermode = new System.Windows.Forms.ToolStripSplitButton(); + this.modelsdontshow = new System.Windows.Forms.ToolStripMenuItem(); + this.modelsshowselection = new System.Windows.Forms.ToolStripMenuItem(); + this.modelsshowall = new System.Windows.Forms.ToolStripMenuItem(); this.buttontogglefog = new System.Windows.Forms.ToolStripButton(); this.buttontoggleeventlines = new System.Windows.Forms.ToolStripButton(); this.buttontogglevisualvertices = new System.Windows.Forms.ToolStripButton(); @@ -359,7 +363,7 @@ namespace CodeImp.DoomBuilder.Windows this.menuhelp}); this.menumain.Location = new System.Drawing.Point(0, 0); this.menumain.Name = "menumain"; - this.menumain.Size = new System.Drawing.Size(420, 24); + this.menumain.Size = new System.Drawing.Size(328, 24); this.menumain.TabIndex = 0; // // menufile @@ -1156,10 +1160,8 @@ namespace CodeImp.DoomBuilder.Windows this.buttonautoclearsidetextures, this.seperatorgeometry, this.buttontogglefx, - this.buttontoggledynlight, - this.buttontoggleanimatedlight, - this.buttontogglemodels, - this.buttonselectedmodelsonly, + this.dynamiclightmode, + this.modelrendermode, this.buttontogglefog, this.buttontoggleeventlines, this.buttontogglevisualvertices, @@ -1412,6 +1414,7 @@ namespace CodeImp.DoomBuilder.Windows // // separatorfilters // + this.separatorfilters.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.separatorfilters.Name = "separatorfilters"; this.separatorfilters.Size = new System.Drawing.Size(6, 25); // @@ -1429,6 +1432,7 @@ namespace CodeImp.DoomBuilder.Windows // // separatorfullbrightness // + this.separatorfullbrightness.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.separatorfullbrightness.Name = "separatorfullbrightness"; this.separatorfullbrightness.Size = new System.Drawing.Size(6, 25); // @@ -1527,6 +1531,7 @@ namespace CodeImp.DoomBuilder.Windows // // seperatorgeometry // + this.seperatorgeometry.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.seperatorgeometry.Name = "seperatorgeometry"; this.seperatorgeometry.Size = new System.Drawing.Size(6, 25); // @@ -1542,57 +1547,97 @@ namespace CodeImp.DoomBuilder.Windows this.buttontogglefx.Text = "Toggle GZDoom Effects"; this.buttontogglefx.Click += new System.EventHandler(this.InvokeTaggedAction); // - // buttontoggledynlight - // - this.buttontoggledynlight.CheckOnClick = true; - this.buttontoggledynlight.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.buttontoggledynlight.Enabled = false; - this.buttontoggledynlight.Image = global::CodeImp.DoomBuilder.Properties.Resources.Light; - this.buttontoggledynlight.ImageTransparentColor = System.Drawing.Color.Magenta; - this.buttontoggledynlight.Name = "buttontoggledynlight"; - this.buttontoggledynlight.Size = new System.Drawing.Size(23, 22); - this.buttontoggledynlight.Tag = "builder_gztogglelights"; - this.buttontoggledynlight.Text = "Toggle Dynamic Lights"; - this.buttontoggledynlight.Click += new System.EventHandler(this.InvokeTaggedAction); - // - // buttontoggleanimatedlight - // - this.buttontoggleanimatedlight.CheckOnClick = true; - this.buttontoggleanimatedlight.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.buttontoggleanimatedlight.Enabled = false; - this.buttontoggleanimatedlight.Image = global::CodeImp.DoomBuilder.Properties.Resources.Light_animate; - this.buttontoggleanimatedlight.ImageTransparentColor = System.Drawing.Color.Magenta; - this.buttontoggleanimatedlight.Name = "buttontoggleanimatedlight"; - this.buttontoggleanimatedlight.Size = new System.Drawing.Size(23, 22); - this.buttontoggleanimatedlight.Tag = "builder_gztogglelightsanimation"; - this.buttontoggleanimatedlight.Text = "Toggle Dynamic Light Animation"; - this.buttontoggleanimatedlight.Click += new System.EventHandler(this.InvokeTaggedAction); - // - // buttontogglemodels - // - this.buttontogglemodels.CheckOnClick = true; - this.buttontogglemodels.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.buttontogglemodels.Enabled = false; - this.buttontogglemodels.Image = ((System.Drawing.Image)(resources.GetObject("buttontogglemodels.Image"))); - this.buttontogglemodels.ImageTransparentColor = System.Drawing.Color.Magenta; - this.buttontogglemodels.Name = "buttontogglemodels"; - this.buttontogglemodels.Size = new System.Drawing.Size(23, 22); - this.buttontogglemodels.Tag = "builder_gztogglemodels"; - this.buttontogglemodels.Text = "Toggle Models Rendering"; - this.buttontogglemodels.Click += new System.EventHandler(this.InvokeTaggedAction); - // - // buttonselectedmodelsonly - // - this.buttonselectedmodelsonly.CheckOnClick = true; - this.buttonselectedmodelsonly.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.buttonselectedmodelsonly.Enabled = false; - this.buttonselectedmodelsonly.Image = ((System.Drawing.Image)(resources.GetObject("buttonselectedmodelsonly.Image"))); - this.buttonselectedmodelsonly.ImageTransparentColor = System.Drawing.Color.Magenta; - this.buttonselectedmodelsonly.Name = "buttonselectedmodelsonly"; - this.buttonselectedmodelsonly.Size = new System.Drawing.Size(23, 22); - this.buttonselectedmodelsonly.Tag = "builder_gzdrawselectedmodelsonly"; - this.buttonselectedmodelsonly.Text = "Render models for selected things only"; - this.buttonselectedmodelsonly.Click += new System.EventHandler(this.InvokeTaggedAction); + // dynamiclightmode + // + this.dynamiclightmode.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.dynamiclightmode.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.sightsdontshow, + this.lightsshow, + this.lightsshowanimated}); + this.dynamiclightmode.Enabled = false; + this.dynamiclightmode.Image = global::CodeImp.DoomBuilder.Properties.Resources.Light; + this.dynamiclightmode.ImageTransparentColor = System.Drawing.Color.Magenta; + this.dynamiclightmode.Name = "dynamiclightmode"; + this.dynamiclightmode.Size = new System.Drawing.Size(32, 22); + this.dynamiclightmode.Tag = "builder_gztogglelights"; + this.dynamiclightmode.Text = "Dynamic light mode"; + this.dynamiclightmode.ButtonClick += new System.EventHandler(this.InvokeTaggedAction); + // + // sightsdontshow + // + this.sightsdontshow.CheckOnClick = true; + this.sightsdontshow.Image = global::CodeImp.DoomBuilder.Properties.Resources.LightDisabled; + this.sightsdontshow.Name = "sightsdontshow"; + this.sightsdontshow.Size = new System.Drawing.Size(237, 22); + this.sightsdontshow.Tag = 0; + this.sightsdontshow.Text = "No dynamic lights"; + this.sightsdontshow.Click += new System.EventHandler(this.ChangeLightRenderingMode); + // + // lightsshow + // + this.lightsshow.CheckOnClick = true; + this.lightsshow.Image = global::CodeImp.DoomBuilder.Properties.Resources.Light; + this.lightsshow.Name = "lightsshow"; + this.lightsshow.Size = new System.Drawing.Size(237, 22); + this.lightsshow.Tag = 1; + this.lightsshow.Text = "Show dynamic lights"; + this.lightsshow.Click += new System.EventHandler(this.ChangeLightRenderingMode); + // + // lightsshowanimated + // + this.lightsshowanimated.CheckOnClick = true; + this.lightsshowanimated.Image = global::CodeImp.DoomBuilder.Properties.Resources.Light_animate; + this.lightsshowanimated.Name = "lightsshowanimated"; + this.lightsshowanimated.Size = new System.Drawing.Size(237, 22); + this.lightsshowanimated.Tag = 2; + this.lightsshowanimated.Text = "Show animated dynamic lights"; + this.lightsshowanimated.Click += new System.EventHandler(this.ChangeLightRenderingMode); + // + // modelmode + // + this.modelrendermode.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.modelrendermode.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.modelsdontshow, + this.modelsshowselection, + this.modelsshowall}); + this.modelrendermode.Enabled = false; + this.modelrendermode.Image = global::CodeImp.DoomBuilder.Properties.Resources.Model; + this.modelrendermode.ImageTransparentColor = System.Drawing.Color.Magenta; + this.modelrendermode.Name = "modelmode"; + this.modelrendermode.Size = new System.Drawing.Size(32, 22); + this.modelrendermode.Tag = "builder_gztogglemodels"; + this.modelrendermode.Text = "Model rendering mode"; + this.modelrendermode.ButtonClick += new System.EventHandler(this.InvokeTaggedAction); + // + // modelsdontshow + // + this.modelsdontshow.CheckOnClick = true; + this.modelsdontshow.Image = global::CodeImp.DoomBuilder.Properties.Resources.ModelDisabled; + this.modelsdontshow.Name = "modelsdontshow"; + this.modelsdontshow.Size = new System.Drawing.Size(245, 22); + this.modelsdontshow.Tag = 0; + this.modelsdontshow.Text = "Don\'t show models"; + this.modelsdontshow.Click += new System.EventHandler(this.ChangeModelRenderingMode); + // + // modelsshowselection + // + this.modelsshowselection.CheckOnClick = true; + this.modelsshowselection.Image = global::CodeImp.DoomBuilder.Properties.Resources.Model_selected; + this.modelsshowselection.Name = "modelsshowselection"; + this.modelsshowselection.Size = new System.Drawing.Size(245, 22); + this.modelsshowselection.Tag = 1; + this.modelsshowselection.Text = "Show models for selected things"; + this.modelsshowselection.Click += new System.EventHandler(this.ChangeModelRenderingMode); + // + // modelsshowall + // + this.modelsshowall.CheckOnClick = true; + this.modelsshowall.Image = global::CodeImp.DoomBuilder.Properties.Resources.Model; + this.modelsshowall.Name = "modelsshowall"; + this.modelsshowall.Size = new System.Drawing.Size(245, 22); + this.modelsshowall.Tag = 2; + this.modelsshowall.Text = "Show all models"; + this.modelsshowall.Click += new System.EventHandler(this.ChangeModelRenderingMode); // // buttontogglefog // @@ -2363,10 +2408,6 @@ namespace CodeImp.DoomBuilder.Windows private System.Windows.Forms.ToolStripSeparator seperatoreditgrid; private System.Windows.Forms.ToolStripSeparator seperatoreditcopypaste; private System.Windows.Forms.ToolStripSeparator seperatorgeometry; - private System.Windows.Forms.ToolStripButton buttontoggledynlight; - private System.Windows.Forms.ToolStripButton buttontogglemodels; - private System.Windows.Forms.ToolStripButton buttonselectedmodelsonly; - private System.Windows.Forms.ToolStripButton buttontoggleanimatedlight; private System.Windows.Forms.ToolStripButton buttontogglefx; private System.Windows.Forms.ToolStripButton buttontogglefog; private System.Windows.Forms.ToolStripStatusLabel warnsLabel; @@ -2418,5 +2459,13 @@ namespace CodeImp.DoomBuilder.Windows private ToolStripSeparator separatorio; private ToolStripMenuItem itemviewthingtypes; private StatisticsControl statistics; + private ToolStripSplitButton dynamiclightmode; + private ToolStripMenuItem sightsdontshow; + private ToolStripMenuItem lightsshow; + private ToolStripMenuItem lightsshowanimated; + private ToolStripSplitButton modelrendermode; + private ToolStripMenuItem modelsdontshow; + private ToolStripMenuItem modelsshowselection; + private ToolStripMenuItem modelsshowall; } } \ No newline at end of file diff --git a/Source/Core/Windows/MainForm.cs b/Source/Core/Windows/MainForm.cs index 5942b8d83..3e4f4b8f6 100644 --- a/Source/Core/Windows/MainForm.cs +++ b/Source/Core/Windows/MainForm.cs @@ -1464,7 +1464,8 @@ namespace CodeImp.DoomBuilder.Windows //mxd. Add engine selector ToolStripMenuItem menuitem = new ToolStripMenuItem("Engine:", Resources.Marine); - for (int i = 0; i < General.Map.ConfigSettings.TestEngines.Count; i++) { + for (int i = 0; i < General.Map.ConfigSettings.TestEngines.Count; i++) + { ToolStripMenuItem engineItem = new ToolStripMenuItem(General.Map.ConfigSettings.TestEngines[i].TestProgramName); engineItem.Tag = i; engineItem.Checked = (i == General.Map.ConfigSettings.CurrentEngineIndex); @@ -1807,27 +1808,27 @@ namespace CodeImp.DoomBuilder.Windows buttontest.Visible = General.Settings.ToolbarTesting; //mxd - buttontogglemodels.Visible = General.Settings.GZToolbarGZDoom; - buttonselectedmodelsonly.Visible = General.Settings.GZToolbarGZDoom; - buttontoggledynlight.Visible = General.Settings.GZToolbarGZDoom; - buttontoggleanimatedlight.Visible = General.Settings.GZToolbarGZDoom; + modelrendermode.Visible = General.Settings.GZToolbarGZDoom; + dynamiclightmode.Visible = General.Settings.GZToolbarGZDoom; buttontogglefx.Visible = General.Settings.GZToolbarGZDoom; buttontogglefog.Visible = General.Settings.GZToolbarGZDoom; buttontoggleeventlines.Visible = General.Settings.GZToolbarGZDoom; buttontogglevisualvertices.Visible = General.Settings.GZToolbarGZDoom; separatorgzmodes.Visible = General.Settings.GZToolbarGZDoom; - // Enable/disable all edit mode items foreach(ToolStripItem i in editmodeitems) i.Enabled = (General.Map != null); //mxd. Show/hide additional panels modestoolbar.Visible = (General.Map != null); modecontrolsloolbar.Visible = (General.Map != null && modecontrolsloolbar.Items.Count > 0); + //mxd. modestoolbar index in Controls gets messed up when it's invisible. This fixes it. TODO: find why this happens in the first place - if(modestoolbar.Visible) { + if(modestoolbar.Visible) + { int toolbarpos = this.Controls.IndexOf(toolbar); - if(this.Controls.IndexOf(modestoolbar) > toolbarpos) { + if(this.Controls.IndexOf(modestoolbar) > toolbarpos) + { this.Controls.SetChildIndex(modestoolbar, toolbarpos); } } @@ -1948,31 +1949,39 @@ namespace CodeImp.DoomBuilder.Windows } //mxd - public void UpdateGZDoomPanel() { - if (General.Map != null) { - buttontogglemodels.Enabled = true; - buttonselectedmodelsonly.Enabled = true; - buttontoggledynlight.Enabled = true; - buttontoggleanimatedlight.Enabled = true; + public void UpdateGZDoomPanel() + { + if (General.Map != null) + { + modelrendermode.Enabled = true; + dynamiclightmode.Enabled = true; buttontogglefog.Enabled = true; buttontogglefx.Enabled = true; buttontoggleeventlines.Enabled = true; buttontogglevisualvertices.Enabled = General.Map.UDMF; - if (General.Settings.GZToolbarGZDoom) { - buttontogglemodels.Checked = General.Settings.GZDrawModels; - buttonselectedmodelsonly.Checked = General.Settings.GZDrawSelectedModelsOnly; - buttontoggledynlight.Checked = General.Settings.GZDrawLights; - buttontoggleanimatedlight.Checked = General.Settings.GZAnimateLights; + if (General.Settings.GZToolbarGZDoom) + { + foreach(ToolStripMenuItem item in modelrendermode.DropDownItems) + { + item.Checked = ((ModelRenderMode)item.Tag == General.Settings.GZDrawModelsMode); + if (item.Checked) modelrendermode.Image = item.Image; + } + foreach(ToolStripMenuItem item in dynamiclightmode.DropDownItems) + { + item.Checked = ((LightRenderMode)item.Tag == General.Settings.GZDrawLightsMode); + if(item.Checked) dynamiclightmode.Image = item.Image; + } + buttontogglefog.Checked = General.Settings.GZDrawFog; buttontoggleeventlines.Checked = General.Settings.GZShowEventLines; buttontogglevisualvertices.Checked = General.Settings.GZShowVisualVertices; } - } else { - buttontogglemodels.Enabled = false; - buttonselectedmodelsonly.Enabled = false; - buttontoggledynlight.Enabled = false; - buttontoggleanimatedlight.Enabled = false; + } + else + { + modelrendermode.Enabled = false; + dynamiclightmode.Enabled = false; buttontogglefog.Enabled = false; buttontogglefx.Enabled = false; buttontoggleeventlines.Enabled = false; @@ -3005,7 +3014,58 @@ namespace CodeImp.DoomBuilder.Windows } #endregion - + + #region ================== Models and Lights mode (mxd) + + private void ChangeModelRenderingMode(object sender, EventArgs e) + { + General.Settings.GZDrawModelsMode = (ModelRenderMode)((ToolStripMenuItem)sender).Tag; + + switch(General.Settings.GZDrawModelsMode) + { + case ModelRenderMode.NONE: + General.MainWindow.DisplayStatus(StatusType.Action, "Models rendering mode: NONE"); + break; + + case ModelRenderMode.SELECTION: + General.MainWindow.DisplayStatus(StatusType.Action, "Models rendering mode: SELECTION ONLY"); + break; + + case ModelRenderMode.ALL: + General.MainWindow.DisplayStatus(StatusType.Action, "Models rendering mode: ALL"); + break; + } + + UpdateGZDoomPanel(); + RedrawDisplay(); + } + + private void ChangeLightRenderingMode(object sender, EventArgs e) + { + General.Settings.GZDrawLightsMode = (LightRenderMode)((ToolStripMenuItem)sender).Tag; + + switch(General.Settings.GZDrawLightsMode) + { + case LightRenderMode.NONE: + General.MainWindow.DisplayStatus(StatusType.Action, "Dynamic lights rendering mode: NONE"); + break; + + case LightRenderMode.ALL: + General.MainWindow.DisplayStatus(StatusType.Action, "Models rendering mode: ALL"); + break; + + case LightRenderMode.ALL_ANIMATED: + General.MainWindow.DisplayStatus(StatusType.Action, "Models rendering mode: ANIMATED"); + break; + } + + UpdateGZDoomPanel(); + RedrawDisplay(); + } + + + #endregion + #region ================== Info Panels // This toggles the panel expanded / collapsed diff --git a/Source/Core/Windows/MainForm.resx b/Source/Core/Windows/MainForm.resx index 49159f2ac..ae8e2369c 100644 --- a/Source/Core/Windows/MainForm.resx +++ b/Source/Core/Windows/MainForm.resx @@ -144,24 +144,6 @@ <metadata name="toolbarContextMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <value>159, 56</value> </metadata> - <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> - <data name="buttontogglemodels.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> - <value> - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABaSURBVDhPYxgFQwm4Zy//j0yTDEAa8wvLm2A0VJh4QNAA - kAQyhgqjiOM0AF0SmQbJY5MDa4QBbBrRFWMTgwNCGmEYJgfCYI3IAKYBnQYBEBuGkflgyQEGDAwA6QWH - HxoHRHkAAAAASUVORK5CYII= -</value> - </data> - <data name="buttonselectedmodelsonly.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> - <value> - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACWSURBVDhPY6AqeN0ucZEUDNUGAVgFcQAMtTAOMQZgqH3X - If2VFAzWBAQoBoAZQEDIBRQZMEdR8T9ILYgG8cky4Gm95C8QnV9Y3kR9A0ASyBgsCQTIYjgNgAlio0Fq - YGyyDADRIHUgNl4Dltf4v8ClEYZhBoAwWDMIgAwAmQbTgE6DAIgNwiADYGrh8iADSMFgTdQDDAwACnwk - E7rnlAUAAAAASUVORK5CYII= -</value> - </data> <metadata name="statusbar.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <value>332, 17</value> </metadata> @@ -186,27 +168,6 @@ <metadata name="sectorinfo.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <value>True</value> </metadata> - <metadata name="heightpanel1.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="labelcollapsedinfo.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="modename.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="buttontoggleinfo.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="linedefinfo.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="thinginfo.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> - <metadata name="sectorinfo.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </metadata> <metadata name="redrawtimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <value>433, 17</value> </metadata> @@ -243,6 +204,7 @@ <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <value>116</value> </metadata> + <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <value> AAABAAQAEBAAAAEAGABoAwAARgAAACAgAAABABgAqAwAAK4DAAAwMAAAAQAYAKgcAABWEAAAQEAAAAEA diff --git a/Source/Plugins/BuilderEffects/Interface/JitterSectorsForm.cs b/Source/Plugins/BuilderEffects/Interface/JitterSectorsForm.cs index 82818688a..6e184a625 100644 --- a/Source/Plugins/BuilderEffects/Interface/JitterSectorsForm.cs +++ b/Source/Plugins/BuilderEffects/Interface/JitterSectorsForm.cs @@ -430,7 +430,7 @@ namespace CodeImp.DoomBuilder.BuilderEffects //EVENTS private void bApply_Click(object sender, EventArgs e) { - //clean unused sidedef textures + // Clean unused sidedef textures foreach(SidedefData sd in sidedefData) { sd.Side.RemoveUnneededTextures(false); @@ -438,14 +438,12 @@ namespace CodeImp.DoomBuilder.BuilderEffects sd.Side.Other.RemoveUnneededTextures(false); } - General.Map.Map.ClearAllSelected(); - // Update cached values General.Map.Map.Update(); General.Map.IsChanged = true; - if(editingModeName != "BaseVisualMode") - General.Interface.RedrawDisplay(); + // Clear selection + General.Actions.InvokeAction("builder_clearselection"); this.DialogResult = DialogResult.OK; Close(); diff --git a/Source/Plugins/BuilderEffects/Interface/JitterThingsForm.cs b/Source/Plugins/BuilderEffects/Interface/JitterThingsForm.cs index 845acdf8a..6cf4bd6a7 100644 --- a/Source/Plugins/BuilderEffects/Interface/JitterThingsForm.cs +++ b/Source/Plugins/BuilderEffects/Interface/JitterThingsForm.cs @@ -353,6 +353,10 @@ namespace CodeImp.DoomBuilder.BuilderEffects private void bApply_Click(object sender, EventArgs e) { foreach(Thing t in selection) t.DetermineSector(); + + // Clear selection + General.Actions.InvokeAction("builder_clearselection"); + this.DialogResult = DialogResult.OK; Close(); } diff --git a/Source/Plugins/BuilderEffects/Interface/JitterVerticesForm.cs b/Source/Plugins/BuilderEffects/Interface/JitterVerticesForm.cs index 7b81e7412..417fd7c2f 100644 --- a/Source/Plugins/BuilderEffects/Interface/JitterVerticesForm.cs +++ b/Source/Plugins/BuilderEffects/Interface/JitterVerticesForm.cs @@ -194,8 +194,8 @@ namespace CodeImp.DoomBuilder.BuilderEffects General.Map.Map.Update(); General.Map.IsChanged = true; - if(editingModeName != "BaseVisualMode") - General.Interface.RedrawDisplay(); + // Clear selection + General.Actions.InvokeAction("builder_clearselection"); this.DialogResult = DialogResult.OK; Close(); diff --git a/Source/Plugins/BuilderModes/Resources/Actions.cfg b/Source/Plugins/BuilderModes/Resources/Actions.cfg index e6008c517..33f933a89 100644 --- a/Source/Plugins/BuilderModes/Resources/Actions.cfg +++ b/Source/Plugins/BuilderModes/Resources/Actions.cfg @@ -1225,7 +1225,7 @@ ceilingalignmode allowscroll = true; } -togglegzdoomrenderingeffects +togglegzdoomgeometryeffects { title = "Toggle Geometry Effects"; category = "visual"; diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs index 65b05f728..415635fc0 100644 --- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs +++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs @@ -2841,12 +2841,13 @@ namespace CodeImp.DoomBuilder.BuilderModes } //mxd - [BeginAction("togglegzdoomrenderingeffects")] - public void ToggleGZDoomRenderingEffects() { + [BeginAction("togglegzdoomgeometryeffects")] + public void ToggleGZDoomRenderingEffects() + { gzdoomRenderingEffects = !gzdoomRenderingEffects; RebuildElementData(); UpdateChangedObjects(); - General.Interface.DisplayStatus(StatusType.Info, "(G)ZDoom rendering effects are " + (gzdoomRenderingEffects ? "ENABLED" : "DISABLED")); + General.Interface.DisplayStatus(StatusType.Info, "(G)ZDoom geometry effects are " + (gzdoomRenderingEffects ? "ENABLED" : "DISABLED")); } //mxd -- GitLab