Classic modes: added "Show models for current things filter only" model rendering mode.

Things Filters: things filters can now be inverted (added "Invert Filter" checkbox to the Things Filters window).
This commit is contained in:
MaxED 2015-06-27 09:10:24 +00:00
parent 6eef13c252
commit 8f2c6e3f60
13 changed files with 99 additions and 27 deletions

View file

@ -1058,6 +1058,7 @@
<None Include="Resources\MixedThings.png" />
<Content Include="Resources\Model.png" />
<None Include="Resources\ModelDisabled.png" />
<None Include="Resources\ModelFiltered.png" />
<Content Include="Resources\Model_selected.png" />
<None Include="Resources\Replace.png" />
<None Include="Resources\SearchPrev.png" />

View file

@ -4,6 +4,7 @@
{
NONE,
SELECTION,
ACTIVE_THINGS_FILTER,
ALL,
}

View file

@ -39,6 +39,9 @@ namespace CodeImp.DoomBuilder.Editing
// Display name of this filter
protected string name;
//mxd. Invert this filter?
protected bool invert;
// Filter by category
protected string categoryname;
@ -74,6 +77,7 @@ namespace CodeImp.DoomBuilder.Editing
public string Name { get { return name; } internal set { name = value; } }
public string CategoryName { get { return categoryname; } internal set { categoryname = value; } }
public bool Invert { get { return invert; } internal set { invert = value; } } //mxd
internal int ThingType { get { return thingtype; } set { thingtype = value; } }
internal int ThingAngle { get { return thingangle; } set { thingangle = value; } }
internal int ThingZHeight { get { return thingzheight; } set { thingzheight = value; } }
@ -97,6 +101,7 @@ namespace CodeImp.DoomBuilder.Editing
// Copy
name = f.name;
categoryname = f.categoryname;
invert = f.invert; //mxd
thingtype = f.thingtype;
thingzheight = f.thingzheight;
thingangle = f.thingangle;
@ -125,6 +130,7 @@ namespace CodeImp.DoomBuilder.Editing
// Read settings from config
name = cfg.ReadSetting(path + ".name", "Unnamed filter");
categoryname = cfg.ReadSetting(path + ".category", "");
invert = cfg.ReadSetting(path + ".invert", false); //mxd
thingtype = cfg.ReadSetting(path + ".type", -1);
thingangle = cfg.ReadSetting(path + ".angle", -1);
thingzheight = cfg.ReadSetting(path + ".zheight", int.MinValue);
@ -277,6 +283,7 @@ namespace CodeImp.DoomBuilder.Editing
// Write settings to config
cfg.WriteSetting(path + ".name", name);
cfg.WriteSetting(path + ".category", categoryname);
cfg.WriteSetting(path + ".invert", invert); //mxd
cfg.WriteSetting(path + ".type", thingtype);
cfg.WriteSetting(path + ".angle", thingangle);
cfg.WriteSetting(path + ".zheight", thingzheight);
@ -414,6 +421,9 @@ namespace CodeImp.DoomBuilder.Editing
}
}
}
//mxd. Apply inversion
qualifies ^= invert;
// Put the thing in the lists
if(qualifies) visiblethings.Add(t); else hiddenthings.Add(t);

View file

@ -52,6 +52,11 @@ namespace CodeImp.DoomBuilder.GZBuilder
break;
case ModelRenderMode.SELECTION:
General.Settings.GZDrawModelsMode = ModelRenderMode.ACTIVE_THINGS_FILTER;
General.MainWindow.DisplayStatus(StatusType.Action, "Models rendering mode: ACTIVE THINGS FILTER ONLY");
break;
case ModelRenderMode.ACTIVE_THINGS_FILTER:
General.Settings.GZDrawModelsMode = ModelRenderMode.ALL;
General.MainWindow.DisplayStatus(StatusType.Action, "Models rendering mode: ALL");
break;

View file

@ -1,7 +1,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:2.0.50727.5466
// Runtime Version:2.0.50727.5420
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@ -459,6 +459,13 @@ namespace CodeImp.DoomBuilder.Properties {
}
}
internal static System.Drawing.Bitmap ModelFiltered {
get {
object obj = ResourceManager.GetObject("ModelFiltered", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
internal static System.Drawing.Bitmap Monster2 {
get {
object obj = ResourceManager.GetObject("Monster2", resourceCulture);

View file

@ -487,4 +487,7 @@
<data name="InfoPanelExpand" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\InfoPanelExpand.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ModelFiltered" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ModelFiltered.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

View file

@ -1221,7 +1221,7 @@ namespace CodeImp.DoomBuilder.Rendering
foreach(Thing t in group.Value)
{
if(t.IsModel && (General.Settings.GZDrawModelsMode == ModelRenderMode.ALL || (General.Settings.GZDrawModelsMode == ModelRenderMode.SELECTION && t.Selected))) continue;
if(t.IsModel && (General.Settings.GZDrawModelsMode == ModelRenderMode.ALL || (General.Settings.GZDrawModelsMode == ModelRenderMode.SELECTION && t.Selected) || (General.Settings.GZDrawModelsMode == ModelRenderMode.ACTIVE_THINGS_FILTER && alpha == 1.0f))) continue;
float scaler = t.Size / info.Radius;
if(Math.Max(spriteWidth, spriteHeight) * scaler < MINIMUM_SPRITE_RADIUS) continue; //don't render tiny little sprites
@ -1335,7 +1335,7 @@ namespace CodeImp.DoomBuilder.Rendering
foreach(Thing t in group.Value)
{
if(General.Settings.GZDrawModelsMode == ModelRenderMode.SELECTION && !t.Selected) continue;
if((General.Settings.GZDrawModelsMode == ModelRenderMode.SELECTION && !t.Selected) || (General.Settings.GZDrawModelsMode == ModelRenderMode.ACTIVE_THINGS_FILTER && alpha < 1.0f)) continue;
Vector2D screenpos = ((Vector2D)t.Position).GetTransformed(translatex, translatey, scale, -scale);
float modelScale = scale * t.ActorScale.Width * t.ScaleX;

Binary file not shown.

After

Width:  |  Height:  |  Size: 620 B

View file

@ -181,6 +181,7 @@ namespace CodeImp.DoomBuilder.Windows
this.modelrendermode = new System.Windows.Forms.ToolStripSplitButton();
this.modelsdontshow = new System.Windows.Forms.ToolStripMenuItem();
this.modelsshowselection = new System.Windows.Forms.ToolStripMenuItem();
this.modelsshowfiltered = 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();
@ -1598,6 +1599,7 @@ namespace CodeImp.DoomBuilder.Windows
this.modelrendermode.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.modelsdontshow,
this.modelsshowselection,
this.modelsshowfiltered,
this.modelsshowall});
this.modelrendermode.Enabled = false;
this.modelrendermode.Image = global::CodeImp.DoomBuilder.Properties.Resources.Model;
@ -1628,13 +1630,23 @@ namespace CodeImp.DoomBuilder.Windows
this.modelsshowselection.Text = "Show models for selected things only";
this.modelsshowselection.Click += new System.EventHandler(this.ChangeModelRenderingMode);
//
// modelsshowfiltered
//
this.modelsshowfiltered.CheckOnClick = true;
this.modelsshowfiltered.Image = global::CodeImp.DoomBuilder.Properties.Resources.ModelFiltered;
this.modelsshowfiltered.Name = "modelsshowfiltered";
this.modelsshowfiltered.Size = new System.Drawing.Size(271, 22);
this.modelsshowfiltered.Tag = 2;
this.modelsshowfiltered.Text = "Show models for current things filter only";
this.modelsshowfiltered.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(271, 22);
this.modelsshowall.Tag = 2;
this.modelsshowall.Tag = 3;
this.modelsshowall.Text = "Always show models";
this.modelsshowall.Click += new System.EventHandler(this.ChangeModelRenderingMode);
//
@ -2493,6 +2505,7 @@ namespace CodeImp.DoomBuilder.Windows
private ToolStripSplitButton modelrendermode;
private ToolStripMenuItem modelsdontshow;
private ToolStripMenuItem modelsshowselection;
private ToolStripMenuItem modelsshowfiltered;
private ToolStripMenuItem modelsshowall;
private DebugConsole console;
private ToolStripMenuItem item2zoom400;

View file

@ -3155,6 +3155,10 @@ namespace CodeImp.DoomBuilder.Windows
General.MainWindow.DisplayStatus(StatusType.Action, "Models rendering mode: SELECTION ONLY");
break;
case ModelRenderMode.ACTIVE_THINGS_FILTER:
General.MainWindow.DisplayStatus(StatusType.Action, "Models rendering mode: ACTIVE THINGS FILTER ONLY");
break;
case ModelRenderMode.ALL:
General.MainWindow.DisplayStatus(StatusType.Action, "Models rendering mode: ALL");
break;

View file

@ -73,6 +73,7 @@ namespace CodeImp.DoomBuilder.Windows
this.label1 = new System.Windows.Forms.Label();
this.cancel = new System.Windows.Forms.Button();
this.apply = new System.Windows.Forms.Button();
this.invert = new System.Windows.Forms.CheckBox();
this.filtergroup.SuspendLayout();
this.tabs.SuspendLayout();
this.tabbasic.SuspendLayout();
@ -95,7 +96,7 @@ namespace CodeImp.DoomBuilder.Windows
this.listfilters.MultiSelect = false;
this.listfilters.Name = "listfilters";
this.listfilters.ShowGroups = false;
this.listfilters.Size = new System.Drawing.Size(202, 379);
this.listfilters.Size = new System.Drawing.Size(202, 387);
this.listfilters.Sorting = System.Windows.Forms.SortOrder.Ascending;
this.listfilters.TabIndex = 0;
this.listfilters.UseCompatibleStateImageBehavior = false;
@ -109,7 +110,7 @@ namespace CodeImp.DoomBuilder.Windows
//
// addfilter
//
this.addfilter.Location = new System.Drawing.Point(12, 397);
this.addfilter.Location = new System.Drawing.Point(12, 405);
this.addfilter.Name = "addfilter";
this.addfilter.Size = new System.Drawing.Size(98, 25);
this.addfilter.TabIndex = 1;
@ -120,7 +121,7 @@ namespace CodeImp.DoomBuilder.Windows
// deletefilter
//
this.deletefilter.Enabled = false;
this.deletefilter.Location = new System.Drawing.Point(116, 397);
this.deletefilter.Location = new System.Drawing.Point(116, 405);
this.deletefilter.Name = "deletefilter";
this.deletefilter.Size = new System.Drawing.Size(98, 25);
this.deletefilter.TabIndex = 2;
@ -133,32 +134,32 @@ namespace CodeImp.DoomBuilder.Windows
this.filtergroup.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.filtergroup.Controls.Add(this.invert);
this.filtergroup.Controls.Add(this.tabs);
this.filtergroup.Controls.Add(this.filtername);
this.filtergroup.Controls.Add(this.label1);
this.filtergroup.Enabled = false;
this.filtergroup.Location = new System.Drawing.Point(220, 12);
this.filtergroup.Location = new System.Drawing.Point(220, 6);
this.filtergroup.Name = "filtergroup";
this.filtergroup.Size = new System.Drawing.Size(465, 385);
this.filtergroup.Size = new System.Drawing.Size(465, 394);
this.filtergroup.TabIndex = 3;
this.filtergroup.TabStop = false;
this.filtergroup.Text = " Selected Filter ";
//
// tabs
//
this.tabs.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
this.tabs.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tabs.Controls.Add(this.tabbasic);
this.tabs.Controls.Add(this.tabflags);
this.tabs.Controls.Add(this.tabaction);
this.tabs.Controls.Add(this.tabcustom);
this.tabs.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.tabs.Location = new System.Drawing.Point(6, 63);
this.tabs.Location = new System.Drawing.Point(6, 60);
this.tabs.Name = "tabs";
this.tabs.Padding = new System.Drawing.Point(24, 3);
this.tabs.SelectedIndex = 0;
this.tabs.Size = new System.Drawing.Size(453, 316);
this.tabs.Size = new System.Drawing.Size(453, 326);
this.tabs.TabIndex = 5;
//
// tabbasic
@ -178,7 +179,7 @@ namespace CodeImp.DoomBuilder.Windows
this.tabbasic.Location = new System.Drawing.Point(4, 22);
this.tabbasic.Name = "tabbasic";
this.tabbasic.Padding = new System.Windows.Forms.Padding(3);
this.tabbasic.Size = new System.Drawing.Size(445, 290);
this.tabbasic.Size = new System.Drawing.Size(445, 300);
this.tabbasic.TabIndex = 0;
this.tabbasic.Text = "Properties";
this.tabbasic.UseVisualStyleBackColor = true;
@ -207,7 +208,10 @@ namespace CodeImp.DoomBuilder.Windows
this.filterzheight.AllowNegative = true;
this.filterzheight.AllowRelative = false;
this.filterzheight.ButtonStep = 1;
this.filterzheight.ButtonStepBig = 10F;
this.filterzheight.ButtonStepFloat = 1F;
this.filterzheight.ButtonStepSmall = 0.1F;
this.filterzheight.ButtonStepsUseModifierKeys = false;
this.filterzheight.ButtonStepsWrapAround = false;
this.filterzheight.Location = new System.Drawing.Point(111, 162);
this.filterzheight.Name = "filterzheight";
@ -233,7 +237,10 @@ namespace CodeImp.DoomBuilder.Windows
this.filterangle.AllowNegative = true;
this.filterangle.AllowRelative = false;
this.filterangle.ButtonStep = 45;
this.filterangle.ButtonStepBig = 10F;
this.filterangle.ButtonStepFloat = 1F;
this.filterangle.ButtonStepSmall = 0.1F;
this.filterangle.ButtonStepsUseModifierKeys = false;
this.filterangle.ButtonStepsWrapAround = false;
this.filterangle.Location = new System.Drawing.Point(111, 119);
this.filterangle.Name = "filterangle";
@ -316,7 +323,7 @@ namespace CodeImp.DoomBuilder.Windows
this.tabflags.Location = new System.Drawing.Point(4, 22);
this.tabflags.Name = "tabflags";
this.tabflags.Padding = new System.Windows.Forms.Padding(3);
this.tabflags.Size = new System.Drawing.Size(445, 290);
this.tabflags.Size = new System.Drawing.Size(445, 300);
this.tabflags.TabIndex = 1;
this.tabflags.Text = "Flags";
this.tabflags.UseVisualStyleBackColor = true;
@ -330,7 +337,7 @@ namespace CodeImp.DoomBuilder.Windows
this.filterfields.Columns = 2;
this.filterfields.Location = new System.Drawing.Point(20, 39);
this.filterfields.Name = "filterfields";
this.filterfields.Size = new System.Drawing.Size(402, 230);
this.filterfields.Size = new System.Drawing.Size(402, 240);
this.filterfields.TabIndex = 5;
this.filterfields.VerticalSpacing = 1;
//
@ -527,7 +534,10 @@ namespace CodeImp.DoomBuilder.Windows
this.filtertag.AllowNegative = true;
this.filtertag.AllowRelative = false;
this.filtertag.ButtonStep = 1;
this.filtertag.ButtonStepBig = 10F;
this.filtertag.ButtonStepFloat = 1F;
this.filtertag.ButtonStepSmall = 0.1F;
this.filtertag.ButtonStepsUseModifierKeys = false;
this.filtertag.ButtonStepsWrapAround = false;
this.filtertag.Location = new System.Drawing.Point(90, 244);
this.filtertag.Name = "filtertag";
@ -579,7 +589,7 @@ namespace CodeImp.DoomBuilder.Windows
//
// filtername
//
this.filtername.Location = new System.Drawing.Point(70, 27);
this.filtername.Location = new System.Drawing.Point(70, 26);
this.filtername.MaxLength = 50;
this.filtername.Name = "filtername";
this.filtername.Size = new System.Drawing.Size(232, 20);
@ -589,7 +599,7 @@ namespace CodeImp.DoomBuilder.Windows
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(27, 30);
this.label1.Location = new System.Drawing.Point(27, 29);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(38, 13);
this.label1.TabIndex = 0;
@ -618,6 +628,17 @@ namespace CodeImp.DoomBuilder.Windows
this.apply.UseVisualStyleBackColor = true;
this.apply.Click += new System.EventHandler(this.apply_Click);
//
// invert
//
this.invert.AutoSize = true;
this.invert.Location = new System.Drawing.Point(339, 28);
this.invert.Name = "invert";
this.invert.Size = new System.Drawing.Size(75, 17);
this.invert.TabIndex = 6;
this.invert.Text = "Invert filter";
this.invert.UseVisualStyleBackColor = true;
this.invert.CheckedChanged += new System.EventHandler(this.invert_CheckedChanged);
//
// ThingsFiltersForm
//
this.AcceptButton = this.apply;
@ -704,5 +725,6 @@ namespace CodeImp.DoomBuilder.Windows
private System.Windows.Forms.Label arg4label;
private CodeImp.DoomBuilder.Controls.FieldsEditorControl fieldslist;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.CheckBox invert;
}
}

View file

@ -215,6 +215,9 @@ namespace CodeImp.DoomBuilder.Windows
// Show name
filtername.Text = f.Name;
//mxd. Invert?
invert.Checked = f.Invert;
// Properties
foreach(object c in filtercategory.Items)
@ -520,6 +523,18 @@ namespace CodeImp.DoomBuilder.Windows
fieldslist.Apply(f.ThingCustomFields);
}
}
//mxd
private void invert_CheckedChanged(object sender, EventArgs e)
{
// Anything selected?
if(!settingup && listfilters.SelectedItems.Count > 0)
{
// Get selected filter
ThingsFilter f = listfilters.SelectedItems[0].Tag as ThingsFilter;
f.Invert = invert.Checked;
}
}
#endregion
}

View file

@ -117,9 +117,6 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="tabs.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="tabbasic.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
@ -159,12 +156,6 @@
<metadata name="fieldslist.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="filtername.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="label1.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="filterfields.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>