Difference between revisions of "Defining custom Filters in DarkRadiant"

From The DarkMod Wiki
Jump to navigationJump to search
(WIP save)
(2 intermediate revisions by the same user not shown)
Line 4: Line 4:
 
Open the Filter Editor from the top menu bar to define custom filters. By default, there are a couple of read-only stock filters in the list which you can't edit, but you can add new ones to that list by clicking "Add":
 
Open the Filter Editor from the top menu bar to define custom filters. By default, there are a couple of read-only stock filters in the list which you can't edit, but you can add new ones to that list by clicking "Add":
  
[[File:Add filters.png|border|400px]]
+
[[File:Add filters.png|border|700px]]
  
A filter contains one or more '''Filter Rules''' which are applied in the order they appear in the list. The filter defines what criteria to search for and whether the matching objects should be shown or hidden. Look at this example:
+
A filter can contain one or more '''Filter Rules''' which define what to search for and whether the matching objects should be shown or hidden. Look at this example:
  
[[File:Simple filter.png|border|400px]]
+
[[File:Hide caulk.png|border|700px]]
  
The above filter has two rules, both are matching against a material/shader name.
+
The above filter has one rule, and it is searching for a material/shader name:
  
 
  Type = texture
 
  Type = texture
Line 16: Line 16:
 
  Action = hide
 
  Action = hide
  
Any texture name matching the value in the "Match" column will be hidden, as the "Action" column decides (the Entity Key field is empty, as it is not used by texture type filters). This filter will therefore look for all '''caulk''' and '''monster_clip''' materials and hide them.
+
Any texture name matching the value in the "Match" column will be hidden, as the "Action" column decides (the Entity Key field is empty, as it is not used by texture type filters). This filter will therefore look for all '''caulk''' materials and hide them.
  
Note: The text in the "Match" column is evaluated as ''regular expression'' which can be used for wildcard matching and more. See below for some examples.
+
Pro Tip: The text in the "Match" column is evaluated as ''regular expression'' which can be used for wildcard matching and more. See below for some examples.
  
 
=== Filter Types ===
 
=== Filter Types ===
  
Let's go through the filter types to explain what they are doing when the rule is applied:
+
Let's look at the available filter types:
  
- object
+
* '''entityclass''': Matches against certain entity class names (like light_torchflame, worldspawn, etc.)
- entityclass
+
* '''entitykeyvalue''': Matches against the spawnargs of entities.
- entitykeyvalue
+
* '''texture''': Matched against the material/shader names (on primitives as well as on models)
- texture
+
* '''object''': This can be used to filter patches or brushes, only two values are supported in the match field: "brush" or "patch"
  
// WIP
+
== Applying two or more Filter Rules ==
  
== More complex Filters ==
+
It's perfectly possible to define multiple rules for a filter, and they are all evaluated in order (that's what the "Move Up" and "Move Down" button are there for):
It's perfectly possible to define multiple criterions for a filter, the <filterCriterion> tags are evaluated one after the other. Take a look at the "All Entities" filter:
 
<filter name="All entities">
 
<filterCriterion type="entityclass" match=".*" action="hide" />
 
<filterCriterion type="entityclass" match="worldspawn" action="show" />
 
</filter>
 
The first criterion filters all entities with the match '''.*''' (matches everything). As worldspawn is also an entity, this criterion alone would hide ''everything'', that's why the second criterion overrules the first one by showing the worldspawn entity.
 
  
== What filter types do exist? ==
+
[[File:Show worldspawn only.png|700px]]
You can filter the following types:
 
* '''entityclass''': Filters certain entity classes (like light_torchflame, worldspawn, etc.)
 
* '''texture''': This affects all shader names (on primitives as well as on models)
 
* '''object''': This can be used to filter patches.
 
  
== How to display Patches only ==
+
The above filter has two rules:  
The following filter can be used to show patches only:
 
<filter name="Display Patches Only">
 
<filterCriterion type="texture" match=".*" action="hide" />
 
<filterCriterion type="entityclass" match=".*" action="hide" />
 
<filterCriterion type="entityclass" match="worldspawn" action="show" />
 
<filterCriterion type="object" match="patch" action="show" />
 
</filter>
 
  
== How to display Brushes only ==
+
# The first rule matches against '''all''' entity class names, so it will '''hide''' all entities. (If only this rule was present, the map would appear completely empty.)
Use this filter to display brushes only (''type="object" match="brush"'' doesn't work).
+
# The second rule will match worldspawn and '''show''' it, this will undo the previous rule, but only for worldspawn.
<filter name="Display Brushes Only">
+
 
<filterCriterion type="entityclass" match=".*" action="hide" />
+
As a result, this filter will hide all entities but leave the worldspawn entity visible.
<filterCriterion type="entityclass" match="worldspawn" " action="show" />
+
 
<filterCriterion type="object" match="patch" action="hide" />
+
== Example Filters ==
</filter>
+
 
 +
=== Show Patches only ===
 +
[[File:Show patches only.png|700px]]
 +
 
 +
This filter hides all entities except worldspawn, and will then hide all the brushes - only the patches will be visible. (Note that this also hides any patches that belong to func_static entities or similar.)
 +
 
 +
=== Show Brushes only ===
 +
[[File:Show brushes only.png|700px]]
 +
 
 +
This filter hides all entities except worldspawn, and will then hide all the patches - only the brushes will be visible. (Note that this also hides any brushes that belong to func_static entities or similar.)
 +
 
 +
=== Hide all *_clip Textures ===
 +
Use a regular expression to match against the texture name:
 +
 
 +
[[File:Hide clip textures.png|700px]]
 +
 
 +
It will hide all textures in the textures/common/ folder ending with '''_clip'''
  
 
{{tutorial-editing}}
 
{{tutorial-editing}}
 
{{darkradiant|sort=Filters}}
 
{{darkradiant|sort=Filters}}

Revision as of 11:06, 15 January 2020

Filters can be used to hide certain parts of your map file in DarkRadiant. The filtersystem works independently from the regioning or show/hide commands. This affects the model preview window as well. The defined Filters can be toggled through the Filters menu in the menubar. You can have multiple filters active at the same time.

Adding Filters

Open the Filter Editor from the top menu bar to define custom filters. By default, there are a couple of read-only stock filters in the list which you can't edit, but you can add new ones to that list by clicking "Add":

Add filters.png

A filter can contain one or more Filter Rules which define what to search for and whether the matching objects should be shown or hidden. Look at this example:

Hide caulk.png

The above filter has one rule, and it is searching for a material/shader name:

Type = texture
Match = textures/common/something
Action = hide

Any texture name matching the value in the "Match" column will be hidden, as the "Action" column decides (the Entity Key field is empty, as it is not used by texture type filters). This filter will therefore look for all caulk materials and hide them.

Pro Tip: The text in the "Match" column is evaluated as regular expression which can be used for wildcard matching and more. See below for some examples.

Filter Types

Let's look at the available filter types:

  • entityclass: Matches against certain entity class names (like light_torchflame, worldspawn, etc.)
  • entitykeyvalue: Matches against the spawnargs of entities.
  • texture: Matched against the material/shader names (on primitives as well as on models)
  • object: This can be used to filter patches or brushes, only two values are supported in the match field: "brush" or "patch"

Applying two or more Filter Rules

It's perfectly possible to define multiple rules for a filter, and they are all evaluated in order (that's what the "Move Up" and "Move Down" button are there for):

Show worldspawn only.png

The above filter has two rules:

  1. The first rule matches against all entity class names, so it will hide all entities. (If only this rule was present, the map would appear completely empty.)
  2. The second rule will match worldspawn and show it, this will undo the previous rule, but only for worldspawn.

As a result, this filter will hide all entities but leave the worldspawn entity visible.

Example Filters

Show Patches only

Show patches only.png

This filter hides all entities except worldspawn, and will then hide all the brushes - only the patches will be visible. (Note that this also hides any patches that belong to func_static entities or similar.)

Show Brushes only

Show brushes only.png

This filter hides all entities except worldspawn, and will then hide all the patches - only the brushes will be visible. (Note that this also hides any brushes that belong to func_static entities or similar.)

Hide all *_clip Textures

Use a regular expression to match against the texture name:

Hide clip textures.png

It will hide all textures in the textures/common/ folder ending with _clip