Mirror Constraint
The MirrorConstraint is a generator constraint that ensures that the generated output is symmetric about a given axis.
You can select one axis, X, Y or Z. If you want symmetry about 2 axes, use two copies of this constraint.
The mirror constraint is unlikely to work very well unless you enable reflectable
on your tiles.
If you have initial constraint tiles, then the empty cell that mirrors that is ignored by the mirror constraint.
Odd vs evens
If the tile generator is an odd number of cells wide, then the center line reflects onto itself. All tiles placed on the center line must therefore be symmetric themselves. If the width is even, then there is less restriction as tiles on one side of the center line just have to connect to their own reflection.
Specifying tile symmetry
By default, the constraint looks at the painted sides of each tile, and infers that the tile is symmetric in a given axis if the painted pattern is symmetric. It does not look at any other details of the tile. So, for example, if you had an asymmetric mesh, but with symmetric connectivity, you would need to override that.
To do so, enable "Override Symmetric Tiles" and check and uncheck which tiles should be considered symmetric. Marking a tile as symmetric means when it is placed in a cell, it'll also be placed in the mirrored cell, with the same reflection and rotation. Marking a tile as asymmetric means when it is placed in a cell, a mirrored copy of it will be placed in the mirrored cell. If the tile is marked as asymmetric and it does not have reflectable
and rotatble
set to enable that, then it cannot be placed at all.
Note that due to rotations, you may need to specify y and z symmetry even when reflecting on the x axis, and so on.