Selection Rule
A selection rule is a blueprint class (or C++ class) that is used to decide if the current node is to be attached to the scene. This rule replaces the default Probability property that is used for randomly deciding if visual node needs spawning based on a probability.
Selection rules gives you more power, when you need it. In the rule's blueprint logic, you can query the dungeon model and determin if this node should be inserted into the scene
Using Selection Rules
To assing an existing rule into the node, Check the Use Selection Logic property and select the rule you would like to attach to the node from the dropdown list

Create a new selection rule by creating a new blueprint class derived from the appropriate DungeonSelectorLogic. It should match the builder you are targeting

Open up the blueprint and override the Select Node function. This function will be called by the engine and the logic you put here will let you decide if the node should to be selected

The selection can be combined with the Probability varaible by unchecking Logic Overrides Probability

Example #1
Here is an example of a selection logic that selects a node only if the sum of their X and Y positions are even numbers (logic for a checkerboard pattern)

And the result after applying this rule to the ground node:

You can add more visual nodes and experiment with the Consume on Attach parameter to get interesting results

In the above example, the first node has Consume on Attach checked. So if your blueprint logic selects the node, the sandstone mesh will be inserted and the execution stops. However if the selection node doesn't select the node, the execution will always proceed to the next node and execute the mesh which inserts a clay brick mesh

In the above example, the selection rule is applied to the golden pillar. But whenever it is selected, it stops execution because the Consume on Attach variable is set and doesn't build a ground mesh there. Unchecking Consume on Attach on the first node lets the execution proceed even if it is inserted into the scene

Example #2
This example places a stone mesh on the ground, but only if the cell is inside a room (and not a corridor)


The above Selection logic was attached to the stone mesh ground node so it gets selected only when the ground marker is inside a room
Example #3
Ignore nodes that are near other markers. This is very useful if you don't want to place blocking items near stairs, doors etc

