/Engine/Plugins/Runtime/MeshModelingToolset/Source/MeshModelingTools/Public/ToolActivities/PolyEditExtrudeActivity.h
There is a lot of overlap in the options for Extrude, Offset, and Push/Pull, and they map to the same op behind the scenes. However, we want to keep them as separate buttons to keep some amount of shallowness in the UI, to make it more likely that new users will find the setting they are looking for. A couple of settings are entirely replicated: namely, doing an offset or "extrude" with SelectedTriangleNormals or SelectedTriangleNormalsEven as the movement direction is actually equivalent. Properly speaking, these two should only be options under Offset, not Extrude, but we keep them as (non-default) options in both because an "extrude along local normals" is a common operation that some users are likely to look for under extrude, regardless of it not lining up with the physical meaning of extrusion. We use different property set objects so that we can customize category names, etc, as well as have different defaults and saved settings.
enum EPolyEditExtrudeModeOptions { SingleDirection = static_cast<int>(UE::Geometry::FExtrudeOp::EDirectionMode::SingleDirection), SelectedTriangleNormals = static_cast<int>(UE::Geometry::FExtrudeOp::EDirectionMode::SelectedTriangleNormals), SelectedTriangleNormalsEven = static_cast<int>(UE::Geometry::FExtrudeOp::EDirectionMode::SelectedTriangleNormalsEven), }