Add a comment noting that this is intentional, despite looking broken since the function calls PostAction(CancelCurrent)
#rb semion.piskarev
#jira UE-193338
[CL 30054469 by jimmy andrews in ue5-main branch]
also do some cleanup / generalization of the utility functions and change geometry script's append simple collision function to use them.
#rb David.Hill
[CL 29763193 by jimmy andrews in ue5-main branch]
this fixes an ensure on trying to place a new modeling tools primitive mesh in a level when a volume is in the level and volume snapping is enabled
#rb david.hill
[CL 29615343 by jimmy andrews in ue5-main branch]
also add a little utility struct to manage this kind of held-open transaction, with some error checking to help catch any errors where these transactions end up opened but not closed or vice versa
#jira UE-197380
#rb semion.piskarev, matija.kecman
[CL 29328451 by jimmy andrews in ue5-main branch]
UE::AssetUtils::GetStaticMeshLODMaterialListBySection() now returns the slot name for each Material
BP function GetSectionMaterialListFromStaticMesh() now returns slot names. Fixed issue in this function where LODIndex was clamped to Render LODs, not SourceModel LODs. This function now also works for RenderData LODs. In CopyMeshToStaticMesh, for RenderData LODs, the MaterialID is set to the MaterialIndex referenced by each mesh section. So in this case in GetSectionMaterialListFromStaticMesh, the Asset Material List is returned directly. This is not really a "per Section Material List' as the function name implies, however it allows this function to provide comparable behavior between SourceModel and RenderData LODs.
Add new BP function RemapToNewMaterialIDsByMaterial() which figures out MaterialID remapping based on original and new Material lists (assuming MaterialID indexes into original Material list)
Add BP functions GetNumStaticMeshLODsOfType() and CheckStaticMeshHasAvailableLOD(), these utilities are useful for dealing w/ multi-LOD assets
#rb jimmy.andrews
[CL 29052212 by ryan schmidt in ue5-main branch]
+ add a callback to the modeling editor mode so it can know whether a tool was cancelled, and make the modeling mode use the selection manager's new save-on-clear/restore feature automatically when its tools are cancelled.
+ make some tools (normals, tangents, inspector) restore the before-tool-start selection after tool use via a utility function, since they shouldn't change mesh IDs that the selection relies on.
#jira UE-195948
#rb Ryan.Schmidt
[CL 29027037 by jimmy andrews in ue5-main branch]
+ Add fallback logic in case the primitive bounds are still invalid / empty
#jira UE-194785
#rb matija.kecman
[CL 29022684 by jimmy andrews in ue5-main branch]