Defining custom Filters in DarkRadiant

From The DarkMod Wiki
Jump to navigationJump to search

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. The regular expression syntax is like that of JavaScript. Or more precisely, DR uses the default ECMAScript flavor of the standard <regex> library defined for C++ 11. See Regular Expression Syntax.

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 as listed. Adjust the order with the "Move Up" and "Move Down" buttons (and ignore the values under "Index" if they become momentarily out-of-order). Example:

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 (where ".+" means "1 or more characters"):

Hide clip textures.png

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

Hide all .ASE models

Again, use a regular expression to search for ASE:

Hide ase.png

This will match against the "model" spawnarg of entities. If any of them is of the form X.ase it will hide them. Note that the dot has a special meaning in regular expressions (it's a wildcard). To prevent it from matching against any character, you'll have to escape it, therefore the awkward-looking backslash-dot \. notation.

Hide all but Loot

Here, the regular expression includes "^" meaning "start of string", and "|" meaning "or".

Filter Name: Hide All But Loot

Type Entity Key Match Action
entityclass .* hide
entityclass ^atdm:loot_.*|^atdm:moveable_loot_.* show

None of these do what I need!

The above are simple examples - if you need help defining a special filter, head over to the forums and ask in the DarkRadiant or Editor's Guild forum, chances are high that you will receive a qualified answer.