In our project level designers and artists have found a workflow they like in which they create one side of a map and negatively scale a copy of the Level Instances to create parts of another side. This mirrored level instance is often nested inside other level instances.
This has some issues immediately if the mirrored side is edited things under certain circumstances will pop into new transforms while the level is being edited, but usually if cancelled go back to the expected position. This is worked around by only ever editing the unscaled side of the map.
We have built some tooling that is attempting to “break” recursively all the LIs/PLAs of the map to re-pack them into PLAs according to various parameters (Size, Position, Clustered Instances, Etc.) However, breaking negatively and/or non uniformly scaled Level instances is not preserving the correct Transform for the actors inside the mirrored level.
It could be a bug. Are any of the other transforms carried over after the break? If you for instance rotate the negatively scaled PLA then does it retain the rotation or is it zeroed out?
Negative scaled Instances have to be contained in their own separate ISMCs/HIMCs with the “bReverseCulling” flag set, otherwise their normals and faces are rendered incorrectly.
When the PLA is created, it works out which ones to use with the ReverseCulling by testing it’s current levels StaticMeshComponents transforms with:
The troubles arise when you try and scale those PLAs (or anything using ISMs) - they don’t usually go through and recalculate what needs the ReverseCulling flag set.
Its likely not ever going to be a supported workflow.
Is it faster? Yea. Im with you/them on that.
Maybe just change/make a bluetility script that duplicates and places level instances at the correct inverted X/Y/Z after giving them the correctly calculated inverted rotation.
A day’s work to make a tool your team can use still beats the extra work having to manually place all the mirrored stuff…
And it gives them the ability to fully change/customize and replace stuff as needed without having to go trhough hoops and normal changes etc.
And in case its not clear - yes, you can programmatically add rotated instances to foliage or HISMC or anything else - so long as you code up the system to do so when you click a button.