className: FMeshSceneRayHit

description: FMeshSceneRayHitis returned by various ray-intersection functions below

code: struct FMeshSceneRayHit

HitActor

description: Actor that was hit, if available.

HitComponent

description: Component that was hit, if available.

HitComponentElementIndex

description: ElementIndexon hit Component, if available (eg InstanceIndexon an InstancedStaticMesh)

HitMeshBaryCoords

description: Triangle barycentric coordinates of the hit location.

HitMeshSpatialWrapper

description: SpatialWrapper for the mesh geometry that was hit, if available. This is a pointer to data owned by theFMeshSceneAdapterthat was queried.

HitMeshTriIndex

description: Triangle Index/ID on mesh of hit Component.

LocalToWorld

description: LocalToWorld Transform on theIMeshSpatialWrapper(for convenience)

Ray

description: World ray that was cast, stored here for convenience

RayDistance

description: Distance along ray that intersection occurred at


description: key for this mesh

module: ModelingComponents

code: void * GetMeshKey() const


description: theUStaticMeshthis container contains, if this is a StaticMeshAsset container (otherwise nullptr)

code: [UStaticMesh](API\Runtime\Engine\Engine\UStaticMesh) * GetStaticMesh() const


className: FMeshTypeContainer

description: FMeshTypeContaineris a wrapper for an object that contains a unique Mesh of some kind, which is used by anFActorChildMeshto represent that unique mesh. For example this could be aUStaticMeshasset, aFMeshDescription, aFDynamicMesh3, and so on. (Currently onlyUStaticMeshis supported)

code: struct FMeshTypeContainer

MeshPointer

type: void *

description: Raw pointer to the Mesh, used as a key to identify this mesh in various maps/etc

MeshType

type: ESceneMeshType

description: Type of unique Mesh object this container contains


code: bool operator== ( const [FRenderCaptureConfig](API\Plugins\ModelingComponents\Scene\FRenderCaptureConfig) & Other ) const


code: bool operator!= ( const [FRenderCaptureConfig](API\Plugins\ModelingComponents\Scene\FRenderCaptureConfig) & Other ) const


className: FRenderCaptureConfig

code: struct FRenderCaptureConfig

bAntiAliasing

type: bool

description: You might want to disable this if you're usingFMeshMapBakerbecause it supports multi-sampling in a way which will avoid blending pixels at different depths.


description: Convert normalized device coordinates to render capture image UV coordinates.

code: static FVector2d DeviceToUV ( FVector2d NDC )


description: Convert render capture image pixel coordinates to normalized device coordinates.

code: static FVector2d PixelToDevice ( [FVector2i](API\Runtime\GeometryCore\FVector2i) Pixel, int32 Width, int32 Height )


description: Render capture images use the render target coordinate system, which is defined such that:


description: FRenderCaptureTypeFlagswith all types enabled/true

code: static [FRenderCaptureTypeFlags](API\Plugins\ModelingComponents\Scene\FRenderCaptureTypeFlags) All ( bool bCombinedMRS )


description: FRenderCaptureTypeFlagswith only BaseColor enabled/true


description: FRenderCaptureTypeFlagswith all types disabled/false


code: bool operator!= ( const [FRenderCaptureTypeFlags](API\Plugins\ModelingComponents\Scene\FRenderCaptureTypeFlags) & Other ) const


description: mutable flag corresponding to the given CaptureType

code: bool & operator[] ( [ERenderCaptureType](API\Plugins\ModelingComponents\Scene\UE__Geometry__ERenderCaptureType) CaptureType )


description: constant flag corresponding to the given CaptureType

code: const bool & operator[] ( [ERenderCaptureType](API\Plugins\ModelingComponents\Scene\UE__Geometry__ERenderCaptureType) CaptureType ) const


description: Set the indicated CaptureType to enabled

code: void SetEnabled ( [ERenderCaptureType](API\Plugins\ModelingComponents\Scene\UE__Geometry__ERenderCaptureType) CaptureType, bool bEnabled )


description: FRenderCaptureTypeFlagswith a single capture type enabled/true

code: static [FRenderCaptureTypeFlags](API\Plugins\ModelingComponents\Scene\FRenderCaptureTypeFlags) Single ( [ERenderCaptureType](API\Plugins\ModelingComponents\Scene\UE__Geometry__ERenderCaptureType) CaptureType )


description: FRenderCaptureTypeFlagswith only WorldNormal enabled/true


description: true if the flags for this object match the Other object and false otherwise

code: bool operator== ( const [FRenderCaptureTypeFlags](API\Plugins\ModelingComponents\Scene\FRenderCaptureTypeFlags) & Other ) const


className: FRenderCaptureTypeFlags

description: FRenderCaptureTypeFlagsis a set of per-capture-type booleans

code: struct FRenderCaptureTypeFlags


description: Add captures on the "view sphere", ie a sphere centered/sized such that the target actors will be fully contained inside a square image rendered from locations on the sphere, where the view direction is towards the sphere center. The Directions array defines the directions.

code: void AddExteriorCaptures ( [FImageDimensions](API\Runtime\GeometryCore\Image\FImageDimensions) PhotoDimensions, double HorizontalFOVDegrees, double NearPlaneDist, const [TArray](API\Runtime\Core\Containers\TArray)< FVector3d > & Directions )


description: Add captures at the corners and face centers of the "view box", ie the bounding box that contains the view sphere (see AddExteriorCaptures)

code: void AddStandardExteriorCapturesFromBoundingBox ( [FImageDimensions](API\Runtime\GeometryCore\Image\FImageDimensions) PhotoDimensions, double HorizontalFOVDegrees, double NearPlaneDist, bool bFaces, bool bUpperCorners, bool bLowerCorners, bool bUpperEdges, bool bSideEdges )


code: bool Cancelled() const


description: Render the configured scene, for the configured capture types from the configured viewpoints. This function the does most of the work.

code: void Compute()


description: Sample the requested SampleChannels from the available PhotoSets to determine values at the given 3D Position/Normal. This callsTSpatialPhotoSet::ComputeSample()internally, see that function for more details.

code: bool ComputeSample ( const [FRenderCaptureTypeFlags](API\Plugins\ModelingComponents\Scene\FRenderCaptureTypeFlags) & SampleChannels, const FVector3d & Position, const FVector3d & Normal, [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< bool(const FVector3d &, const FVector3d &)> VisibilityFunction, [FSceneSample](API\Plugins\ModelingComponents\Scene\FSceneCapturePhotoSet\FSceneSample) & DefaultsInResultsOut ) const


code: bool ComputeSampleLocation ( const FVector3d & Position, const FVector3d & Normal, float ValidSampleDepthThreshold, [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< bool(const FVector3d &, const FVector3d &)> VisibilityFunction, int & PhotoIndex, FVector2d & PhotoCoords ) const


description: the value of the nearest pixel in the given photo for the given CaptureType Note: This function does not interpolate because this causes artefacts; two adjacent pixels on a photo can be from parts of the scene which are very far from each other so interpolating the values when makes no sense. Texture filtering is accomplished by the baking framework where it can use correctly localized information.

code: template<[ERenderCaptureType](API\Plugins\ModelingComponents\Scene\UE__Geometry__ERenderCaptureType) CaptureType> FVector4f ComputeSampleNearest ( const int & PhotoIndex, const FVector2d & PhotoCoords, const [FSceneSample](API\Plugins\ModelingComponents\Scene\FSceneCapturePhotoSet\FSceneSample) & DefaultSample ) const


description: Disable all capture types.Bydefault a standard set of capture types is enabled but, for performance reasons, you can use this function to disable them all and then only enable the ones you need.

code: void DisableAllCaptureTypes()


className: ECaptureTypeStatus

description: Status of a given capture type

code: enum ECaptureTypeStatus { Disabled = 0, Computed = 1, Pending = 2, }


description: value for the given captured channel, or default value

code: FVector3f GetValue3f &40; ERenderCaptureType CaptureType &41; const


className: FStatus

description: Status of the overall scene capture i.e., the combined status of all capture types


className: FSceneSample

description: FSceneSamplestores a full sample of all possible channels, some values may be default-values though

code: struct FSceneSample

DeviceDepth

type: float

HaveValues

type: FRenderCaptureT...


code: const [FSpatialPhotoSet3f](API\Runtime\GeometryCore\Image\FSpatialPhotoSet3f) & GetBaseColorPhotoSet()


code: [FRenderCaptureConfig](API\Plugins\ModelingComponents\Scene\FRenderCaptureConfig) GetCaptureConfig ( [ERenderCaptureType](API\Plugins\ModelingComponents\Scene\UE__Geometry__ERenderCaptureType) CaptureType ) const


code: FVector4f GetValue4f &40; ERenderCaptureType CaptureType &41; const


code: [TArray](API\Runtime\Core\Containers\TArray)< [AActor](API\Runtime\Engine\GameFramework\AActor) * > GetCaptureSceneActors()


description: Returns the current status of the given capture type

code: [ECaptureTypeStatus](API\Plugins\ModelingComponents\Scene\FSceneCapturePhotoSet\ECaptureTypeStatus) GetCaptureTypeStatus ( [ERenderCaptureType](API\Plugins\ModelingComponents\Scene\UE__Geometry__ERenderCaptureType) CaptureType ) const


code: const [FSpatialPhotoSet1f](API\Runtime\GeometryCore\Image\FSpatialPhotoSet1f) & GetDeviceDepthPhotoSet()


code: const [FSpatialPhotoSet3f](API\Runtime\GeometryCore\Image\FSpatialPhotoSet3f) & GetEmissivePhotoSet()


code: const [FSpatialPhotoSet1f](API\Runtime\GeometryCore\Image\FSpatialPhotoSet1f) & GetMetallicPhotoSet()


code: const [FSpatialPhotoSet3f](API\Runtime\GeometryCore\Image\FSpatialPhotoSet3f) & GetPackedMRSPhotoSet()


code: const [FSpatialPhotoSet1f](API\Runtime\GeometryCore\Image\FSpatialPhotoSet1f) & GetOpacityPhotoSet()


code: const [FSpatialPhotoSet1f](API\Runtime\GeometryCore\Image\FSpatialPhotoSet1f) & GetRoughnessPhotoSet()


description: Returns the current status of all capture types


code: const [TArray](API\Runtime\Core\Containers\TArray)< [FSpatialPhotoParams](API\Runtime\GeometryCore\Image\FSpatialPhotoParams) > & GetSpatialPhotoParams() const


code: const [FSpatialPhotoSet1f](API\Runtime\GeometryCore\Image\FSpatialPhotoSet1f) & GetSpecularPhotoSet()


code: const [FSpatialPhotoSet3f](API\Runtime\GeometryCore\Image\FSpatialPhotoSet3f) & GetSubsurfaceColorPhotoSet()


code: const [FSpatialPhotoSet3f](API\Runtime\GeometryCore\Image\FSpatialPhotoSet3f) & GetWorldNormalPhotoSet()


description: Post-process the various PhotoSets after capture, to reduce memory usage and sampling cost.

code: void OptimizePhotoSets()


code: void SetAllowCancel ( bool bAllowCancelIn )


description: Set the target World and set of Actors If World != this->World or Actors != this->Actors all existing photo sets are cleared

code: void SetCaptureSceneActors ( [UWorld](API\Runtime\Engine\Engine\UWorld) * World, const [TArray](API\Runtime\Core\Containers\TArray)< [AActor](API\Runtime\Engine\GameFramework\AActor) * > & Actors )


description: Configure the given capture type If Config != the existing capture config the corresponding photo set will be cleared

code: void SetCaptureConfig ( [ERenderCaptureType](API\Plugins\ModelingComponents\Scene\UE__Geometry__ERenderCaptureType) CaptureType, const [FRenderCaptureConfig](API\Plugins\ModelingComponents\Scene\FRenderCaptureConfig) & Config )


description: Enable/Disable a particular capture type If bEnabled == false the corresponding photo set will be cleared

code: void SetCaptureTypeEnabled ( [ERenderCaptureType](API\Plugins\ModelingComponents\Scene\UE__Geometry__ERenderCaptureType) CaptureType, bool bEnabled )


description: If enabled, any Component Scene Proxies in the level that are not meant to be included in the capture (ie not added via SetCaptureSceneActors), will be unregistered to hide them. This is generally not necessary, and disabled by default, but in some cases the Renderer may not be able to fully exclude the effects of an object via hidden/visible flags.

code: void SetEnableVisibilityByUnregisterMode ( bool bEnable )


description: Set the parameters positioning the virtual cameras used to capture the photo sets If SpatialParams != this->PhotoSetParams all existing photo sets are cleared (TODO clear on a more granular level)

code: void SetSpatialPhotoParams ( const [TArray](API\Runtime\Core\Containers\TArray)< [FSpatialPhotoParams](API\Runtime\GeometryCore\Image\FSpatialPhotoParams) > & SpatialParams )


code: bool operator== ( const [FSceneGeometryID](API\Plugins\ModelingComponents\Scene\FSceneGeometryID) & Other ) const


code: FSceneCapturePhotoSet()


description: Enable debug image writing. All captured images will be written to/Intermediate/. If FolderName is not specified, "SceneCapturePhotoSet" is used by default. SeeFWorldRenderCapture::SetEnableWriteDebugImage()for more details

code: void SetEnableWriteDebugImages ( bool bEnable, [FString](API\Runtime\Core\Containers\FString) FolderName )


code: FSceneGeometryID ( int32 ID )


className: FSceneGeometryID

code: struct FSceneGeometryID


className: FSceneGeometryPoint

code: struct FSceneGeometryPoint

Actor

type: AActor*

description: Actor that was hit, if available.

Component

type: UPrimitiveCompo...

description: Component that was hit, if available.

ComponentElementIndex

description: ElementIndexon hit Component, if available (eg InstanceIndexon an InstancedStaticMesh)

GeometryIndex

description: Index/ID on geometry of hit Component.

GeometryType

type: EGeometryPointT...

description: Geometry type.

LocalPoint

description: Component-space point.

PointBaryCoords

description: Barycentric coordinates of the point, if that is applicable.

Ray

description: World ray that was cast, stored here for convenience

RayDistance

type: double

description: Distance along ray that point occurs at

WorldPoint

description: World-space point.


code: virtual void DisableGeometryTracking ( [FSceneGeometryID](API\Plugins\ModelingComponents\Scene\FSceneGeometryID) & IdentifierOut )


code: virtual void DisableComponentTracking ( [UPrimitiveComponent](API\Runtime\Engine\Components\UPrimitiveComponent) * Component )


code: virtual bool EnableComponentTracking ( [UPrimitiveComponent](API\Runtime\Engine\Components\UPrimitiveComponent) * Component, [FSceneGeometryID](API\Plugins\ModelingComponents\Scene\FSceneGeometryID) & IdentifierOut )


code: virtual bool FindNearestHit ( const FRay3d & WorldRay, [FSceneGeometryPoint](API\Plugins\ModelingComponents\Scene\FSceneGeometryPoint) & HitResultOut, [FSceneGeometryID](API\Plugins\ModelingComponents\Scene\FSceneGeometryID) & HitIdentifier, const [FSceneQueryVisibilityFilter](API\Runtime\InteractiveToolsFramework\SceneQueries\FSceneQueryVisibilityFilter) * VisibilityFilter, double MaxDistance )


code: virtual bool GetGeometry ( [FSceneGeometryID](API\Plugins\ModelingComponents\Scene\FSceneGeometryID) Identifier, [EGeometryPointType](API\Plugins\ModelingComponents\Scene\UE__Geometry__EGeometryPointType) GeometryType, int32 GeometryIndex, bool bWorldSpace, FVector3d & A, FVector3d & B, FVector3d & C )


className: FSceneCapturePhotoSet

description: One the capture set is computed, theComputeSample()function can be used to call SpatialPhotoSet::ComputeSample() on each photo set, ie to estimate the value of the different channels at a given 3D position/normal by raycasting against the photo set. Again, it can be more efficient to do this on the group, rather than each individually.

code: class FSceneCapturePhotoSet

BaseColorPhotoSet

type: FSpatialPhotoSe...

DebugImagesFolderName

type: FString

PhotoSetParams

type: TArray<FSpatia...

PhotoSetStatus

type: FStatus

PhotoViewMatricies

type: TArray<FViewMa...

description: This used to unproject the DeviceDepth render capture.

RenderCaptureConfig

type: TRenderCaptureT...

TargetWorld

type: UWorld*

VisibleActors

type: TArray<AActor...


code: virtual bool HaveCacheForComponent ( [UPrimitiveComponent](API\Runtime\Engine\Components\UPrimitiveComponent) * Component )


code: virtual bool NotifyGeometryUpdate ( [UPrimitiveComponent](API\Runtime\Engine\Components\UPrimitiveComponent) * Component, bool bDeferRebuild )


code: virtual bool NotifyTransformUpdate ( [UPrimitiveComponent](API\Runtime\Engine\Components\UPrimitiveComponent) * Component )


code: FSceneGeometrySpatialCache()


code: virtual ~FSceneGeometrySpatialCache()


className: FSceneGeometrySpatialCache

code: class FSceneGeometrySpatialCache

BoundsOctree

type: FSparseDynamicO...

ComponentMap

type: TMap<UPrimitiv...

Spatials

type: TMap<FSceneGeo...


description: Depth is a special case and uses different code than capture of color/property channels

code: bool CaptureDeviceDepthFromPosition ( const [FFrame3d](API\Runtime\GeometryCore\FFrame3d_1) & Frame, double HorzFOVDegrees, double NearPlaneDist, [FImageAdapter](API\Runtime\GeometryCore\Image\FImageAdapter) & ResultImageOut, const [FRenderCaptureConfig](API\Plugins\ModelingComponents\Scene\FRenderCaptureConfig) & Config )


description: Emissive is a special case and uses different code than capture of color/property channels

code: bool CaptureEmissiveFromPosition ( const [FFrame3d](API\Runtime\GeometryCore\FFrame3d_1) & Frame, double HorzFOVDegrees, double NearPlaneDist, [FImageAdapter](API\Runtime\GeometryCore\Image\FImageAdapter) & ResultImageOut, const [FRenderCaptureConfig](API\Plugins\ModelingComponents\Scene\FRenderCaptureConfig) & Config )


description: Capture the desired buffer type CaptureType with the given view/camera parameters. The returned image data is interpreted according to the comment inFRenderCaptureCoordinateConverter2Dtrue if capture could be rendered successfully

code: bool CaptureFromPosition ( [ERenderCaptureType](API\Plugins\ModelingComponents\Scene\UE__Geometry__ERenderCaptureType) CaptureType, const [FFrame3d](API\Runtime\GeometryCore\FFrame3d_1) & ViewFrame, double HorzFOVDegrees, double NearPlaneDist, [FImageAdapter](API\Runtime\GeometryCore\Image\FImageAdapter) & ResultImageOut, const [FRenderCaptureConfig](API\Plugins\ModelingComponents\Scene\FRenderCaptureConfig) & Config )


description: Combined Metallic/Roughness/Specular uses a custom postprocess material

code: bool CaptureMRSFromPosition ( const [FFrame3d](API\Runtime\GeometryCore\FFrame3d_1) & Frame, double HorzFOVDegrees, double NearPlaneDist, [FImageAdapter](API\Runtime\GeometryCore\Image\FImageAdapter) & ResultImageOut, const [FRenderCaptureConfig](API\Plugins\ModelingComponents\Scene\FRenderCaptureConfig) & Config )


description: Compute a sphere where, if the camera is on the sphere pointed at the center, then the Visible Actors will be fully visible (ie a square capture will not have any clipping), for the given Field of View. SafetyBoundsScale multiplier is applied to the bounding box.

code: FSphere ComputeContainingRenderSphere ( float HorzFOVDegrees, float SafetyBoundsScale ) const


description: pixel dimensions that target image will be rendered at

code: const [FImageDimensions](API\Runtime\GeometryCore\Image\FImageDimensions) & GetDimensions() const


description: view matrices used in the last call to CaptureFromPosition Useful to get the needed information to unproject the DeviceDepth render capture

code: const [FViewMatrices](API\Runtime\Engine\FViewMatrices) & GetLastCaptureViewMatrices() const


description: Set desired pixel dimensions of the rendered target image

code: void SetDimensions ( const [FImageDimensions](API\Runtime\GeometryCore\Image\FImageDimensions) & Dimensions )


code: [UTextureRenderTarget2D](API\Runtime\Engine\Engine\UTextureRenderTarget2D) * GetRenderTexture ( bool bLinear )


description: Get bounding-box of the Visible actors


description: Enable debug image write. The captured image will be written to/Intermediate//_.bmp If FolderName is not specified, "WorldRenderCapture" is used by default. If an ImageCounter is not specified, an internal static counter is used that increments on every write

code: void SetEnableWriteDebugImage ( bool bEnable, int32 ImageCounter, [FString](API\Runtime\Core\Containers\FString) FolderName )


description: Set the set of Actors in the target World that should be included in the Rendering. Currently rendering an entire World, ie without an explicit list of Actors, is not supported.

code: void SetVisibleActors ( const [TArray](API\Runtime\Core\Containers\TArray)< [AActor](API\Runtime\Engine\GameFramework\AActor) * > & Actors )


description: Set the target World

code: void SetWorld ( [UWorld](API\Runtime\Engine\Engine\UWorld) * World )


description: Explicitly release any allocated textures or other data structres

code: void Shutdown()


code: void WriteDebugImage ( const [FImageAdapter](API\Runtime\GeometryCore\Image\FImageAdapter) & ResultImageOut, const [FString](API\Runtime\Core\Containers\FString) & ImageTypeName )


code: ~FWorldRenderCapture()


description: If possible, spatial data structure should defer construction until this function, which will be called off the game thread (in ParallelFor)

code: bool Build ( const [FMeshSceneAdapterBuildOptions](API\Plugins\ModelingComponents\Scene\FMeshSceneAdapterBuildOptions) & BuildOptions )


className: FWorldRenderCapture

description: FWorldRenderCapturecaptures a rendering of a set of Actors in a World from a specific viewpoint. Various types of rendering are supported, as defined by ERenderCaptureType.

code: class FWorldRenderCapture

bWriteDebugImage

type: bool

DepthRenderTexture

type: UTextureRenderT...

Dimensions

type: FImageDimension...

LastCaptureViewMatrices

type: FViewMatrices

LinearRenderTexture

description: Temporary textures used as render targets. We explicitly prevent this from being GC'd internally.

ReadImageBuffer

type: TArray<FLinear...

description: Temporary buffer used to read from texture

VisibleBounds

type: FBoxSphereBound...

VisiblePrimitives

type: TSet<FPrimitiv...


description: Append the geometry represented by this wrapper to the accumulated AppendTo mesh, under the given world transform

code: void AppendMesh ( [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & AppendTo, const [FTransformSequence3d](API\Runtime\GeometryCore\FTransformSequence3d) & TransformSeq )


description: Collect a set of seed points from this Mesh, mapped through LocalToWorldFunc to world space. Must be callable in parallel from any thread.

code: void CollectSeedPoints ( [TArray](API\Runtime\Core\Containers\TArray)< FVector3d > & WorldPoints, [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< FVector3d(const FVector3d &)> LocalToWorldFunc )


description: Calculate the mesh winding number at the given Position. Must be callable in parallel from any thread.

code: double FastWindingNumber ( const FVector3d & P, const [FTransformSequence3d](API\Runtime\GeometryCore\FTransformSequence3d) & LocalToWorldTransform )


code: int32 GetTriangleCount() const


description: vertex indices of the given triangle

code: [FIndex3i](API\Runtime\GeometryCore\FIndex3i) GetTriangle ( int32 TriId ) const


description: Calculate bounding box for this Mesh

code: [FAxisAlignedBox3d](API\Runtime\GeometryCore\FAxisAlignedBox3d) GetWorldBounds ( [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< FVector3d(const FVector3d &)> LocalToWorldFunc )


description: true if the mesh has UVs

code: bool HasUVs ( int UVLayer ) const


description: true if the mesh has normals

code: bool HasNormals() const


description: true if the given index is a valid triangle

code: bool IsTriangle ( int32 TriId ) const


description: Find the nearest ray-intersection with the mesh. Must be callable in parallel from any thread.

code: bool RayIntersection ( const FRay3d & WorldRay, const [FTransformSequence3d](API\Runtime\GeometryCore\FTransformSequence3d) & LocalToWorldTransform, [FMeshSceneRayHit](API\Plugins\ModelingComponents\Scene\FMeshSceneRayHit) & WorldHitResultOut )


description: Apply ProcessFunc to each vertex in world space. Return false from ProcessFunc to terminate iteration. Returns true if iteration completed.

code: bool ProcessVerticesInWorld ( [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< bool(const FVector3d &)> ProcessFunc, const [FTransformSequence3d](API\Runtime\GeometryCore\FTransformSequence3d) & LocalToWorldTransform )


description: Compute the barycentric interpolated normal for the given tri

code: bool TriBaryInterpolateNormal ( int32 TriId, const FVector3d & BaryCoords, FVector3f & NormalOut ) const


code: FVector3d TriBaryInterpolatePoint ( int32 TriId, const FVector3d & BaryCoords ) const


code: virtual ~IMeshSpatialWrapper()


description: Compute the barycentric interpolated UV for the given tri

code: bool TriBaryInterpolateUV ( int32 TriId, const FVector3d & BaryCoords, int UVLayer, FVector2f & UVOut ) const


className: IMeshSpatialWrapper

description: Abstract interface to a spatial data structure for a mesh

code: class IMeshSpatialWrapper

SourceContainer

type: FMeshTypeContai...


code: bool FindNearestHit ( const FRay3d & WorldRay, [FSceneGeometryPoint](API\Plugins\ModelingComponents\Scene\FSceneGeometryPoint) & HitResultOut, double MaxDistance )


code: bool GetGeometry ( [EGeometryPointType](API\Plugins\ModelingComponents\Scene\UE__Geometry__EGeometryPointType) GeometryType, int32 GeometryIndex, bool bWorldSpace, FVector3d & A, FVector3d & B, FVector3d & C )


code: void OnGeometryModified ( bool bDeferSpatialRebuild )


code: void OnTransformModified()


code: ISceneGeometrySpatial()


className: UniqueIDGenerator

code: static std::atomic< int32 > UniqueIDGenerator = 1;


code: virtual ~ISceneGeometrySpatial()


description: mutable data corresponding to the given CaptureType

code: T & operator[] ( [ERenderCaptureType](API\Plugins\ModelingComponents\Scene\UE__Geometry__ERenderCaptureType) CaptureType )


description: constant data corresponding to the given CaptureType

code: const T & operator[] ( [ERenderCaptureType](API\Plugins\ModelingComponents\Scene\UE__Geometry__ERenderCaptureType) CaptureType ) const


className: TRenderCaptureTypeData

code: template<typename T> struct TRenderCaptureTypeData

BaseColor

type: T

description: FRenderCaptureTypeFlagsuses the correct member naming convention and has additional boolean helpers.


className: ISceneGeometrySpatial

code: class ISceneGeometrySpatial


code: namespace UE { namespace Geometry { MODELINGCOMPONENTS_API [TArray](API\Runtime\Core\Containers\TArray)< [FSpatialPhotoParams](API\Runtime\GeometryCore\Image\FSpatialPhotoParams) > UE::Geometry::ComputeStandardExteriorSpatialPhotoParameters ( [UWorld](API\Runtime\Engine\Engine\UWorld) * World, const [TArray](API\Runtime\Core\Containers\TArray)< [AActor](API\Runtime\Engine\GameFramework\AActor) * > & Actors, [FImageDimensions](API\Runtime\GeometryCore\Image\FImageDimensions) PhotoDimensions, double HorizontalFOVDegrees, double NearPlaneDist, bool bFaces, bool bUpperCorners, bool bLowerCorners, bool bUpperEdges, bool bSideEdges ) } }


description: EActorMeshComponentType enum is used to determine which type of Component anFActorChildMeshrepresents.

code: namespace UE { namespace Geometry { enum EActorMeshComponentType { StaticMesh, InstancedStaticMesh, HierarchicalInstancedStaticMesh, InternallyGeneratedComponent, Unknown, } } }


description: Forward declarations

code: namespace UE { namespace Geometry { enum EGeometryPointType { Triangle = 0, Edge = 1, Vertex = 2, } } }


description: ESceneMeshType is used to indicate which type of Mesh aFMeshTypeContainercontains.

code: namespace UE { namespace Geometry { enum ESceneMeshType { StaticMeshAsset, Unknown, } } }


description: ERenderCaptureType defines which type of render buffer should be captured.

code: namespace UE { namespace Geometry { enum ERenderCaptureType { BaseColor = 1, Roughness = 2, Metallic = 4, Specular = 8, Emissive = 16, WorldNormal = 32, DeviceDepth = 64, CombinedMRS = 128, Opacity = 256, SubsurfaceColor = 512, } } }


description: Call the given Function for each capture type/channel.

code: namespace UE { namespace Geometry { template<typename FunctionType> void UE::Geometry::ForEachCaptureType ( const FunctionType & Function ) } }


code: namespace UE { namespace Geometry { uint32 UE::Geometry::GetTypeHash ( const [FSceneGeometryID](API\Plugins\ModelingComponents\Scene\FSceneGeometryID) & Identifier ) } }


description: Accumulate the bounds of the provided Selection in the provided BoundsInOut. BoundsInOut is not cleared.

code: virtual void AccumulateSelectionBounds ( const [FGeometrySelection](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelection) & Selection, [FGeometrySelectionBounds](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelecti-_1) & BoundsInOut, bool bTransformToWorld )


description: Accumulate geometric elements (currently 3D triangles, line segments, and points) for the provided Selection in the provided ElementsInOut. ElementsInOut is not cleared.

code: virtual void AccumulateSelectionElements ( const [FGeometrySelection](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelection) & Selection, [FGeometrySelectionElements](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelecti-_2) & ElementsInOut, bool bTransformToWorld, bool bIsForPreview )


code: const [UE::Geometry::FColliderMesh](API\Runtime\GeometryCore\DynamicMesh\FColliderMesh) * GetColliderMesh()


description: These need to be public for the Transformers...can we do it another way?

code: [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * GetDynamicMesh() const


code: const [UE::Geometry::FGroupTopology](API\Plugins\DynamicMesh\FGroupTopology) * GetGroupTopology()


code: const [UE::Geometry::FSegmentTree3](API\Runtime\GeometryCore\Spatial\FSegmentTree3) * GetGroupEdgeSpatial()


description: aFGeometryIdentifierfor this Selector.

code: virtual [FGeometryIdentifier](API\Plugins\ModelingComponents\Selection\FGeometryIdentifier) GetIdentifier() const


description: the World transform for the Selector's target object

code: virtual FTransform GetLocalToWorldTransform() const


description: Compute a 3D frame for the provided Selection. For example this could simply be a frame aligned to the XYZ axes at the center of the selection bounding-box, or something more sophisticated, like aligned to the tangent-space of the selected element(s), etc.

code: virtual void GetSelectionFrame ( const [FGeometrySelection](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelection) & Selection, [UE::Geometry::FFrame3d](API\Runtime\GeometryCore\FFrame3d_1) & SelectionFrameOut, bool bTransformToWorld )


description: Query the Selector for a potential selection based on world-space Ray. The intention of this query is that it be used for "selection preview", eg like hover-highlighting. The PreviewEditor will always be updated in 'Add' mode, and currently no result information will be returned.

code: virtual void GetSelectionPreviewForRaycast ( const [FWorldRayQueryInfo](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FWorldRayQueryInfo) & RayInfo, [FGeometrySelectionEditor](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelecti-) & PreviewEditor )


description: Initialize theFBaseDynamicMeshSelectorfor a given source/targetUDynamicMesh.

code: virtual void Initialize ( [FGeometryIdentifier](API\Plugins\ModelingComponents\Selection\FGeometryIdentifier) SourceGeometryIdentifier, [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * TargetMesh, [TUniqueFunction](API\Runtime\Core\Templates\TUniqueFunction)< [UE::Geometry::FTransformSRT3d](API\Runtime\GeometryCore\FTransformSRT3d)()> GetWorldTransformFunc )


description: FGeometryIdentifierfor the parent of this Selector (eg aUDynamicMeshComponentin the common case)


description: Populate a Selection using the provided ReferenceMode, with a Predicate and optional ReferenceSelection. Note that this method does not modify/access any selection that might be "owned" by the Selector. It is part of theIGeometrySelectorAPI because often a Selector has access to internal data structures (like a Mesh, GroupTopology, etc) that are required to initialize a Selection.

code: virtual void InitializeSelectionFromPredicate ( [FGeometrySelection](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelection) & SelectionInOut, [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< bool([UE::Geometry::FGeoSelectionID](API\Plugins\DynamicMesh\Selections\FGeoSelectionID))> SelectionIDPredicate, [EInitializeSelectionMode](API\Plugins\ModelingComponents\Selection\IGeometrySelector\EInitializeSelec-) InitializeMode, const [FGeometrySelection](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelection) * ReferenceSelection )


code: void InvalidateOnMeshChange ( [FDynamicMeshChangeInfo](API\Runtime\GeometryFramework\FDynamicMeshChangeInfo) ChangeInfo )


description:
Check for intersection between a world-space Ray with the Selector's target object and return aFInputRayHitresult.RayHitTest()must return true for other raycast-based functions likeUpdateSelectionViaRaycast()to be called.
true on hit, false on miss

code: virtual bool RayHitTest ( const [FWorldRayQueryInfo](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FWorldRayQueryInfo) & RayInfo, [UE::Geometry::FGeometrySelectionHitQueryConfig](API\Plugins\DynamicMesh\Selections\FGeometrySelectionHitQueryConfig) QueryConfig, [FInputRayHit](API\Runtime\InteractiveToolsFramework\FInputRayHit) & HitResultOut )


code: void RegisterMeshChangedHandler()


description:
Restore a Selector that has hadSleep()called on it.
true on success

code: virtual bool Restore()


description: IGeometrySelectorAPI implementation

code: virtual void Shutdown()


description: The SelectionManager will callSupportsSleep()to determine if anIGeometrySelectorneeds to be destroyed when the target object is deselected, or if it can be re-used (generally more efficient)

code: virtual bool Sleep()


code: virtual bool SupportsSleep() const


description: This is a bit ugly and might be possible to do more cleanly by having the StaticMeshSelector listen to theUDynamicMeshfor changes. However currently we do not have the granularity to have it /only/ listen for external mesh edit changes, and not all changes (and since theUDynamicMeshchanges in response to StaticMesh changes, eg on undo or external edits, it creates a cycle).

code: virtual void UpdateAfterGeometryEdit ( [IToolsContextTransactionsAPI](API\Runtime\InteractiveToolsFramework\IToolsContextTransactionsAPI) * TransactionsAPI, bool bInTransaction, [TUniquePtr](API\Runtime\Core\Templates\TUniquePtr)< [UE::Geometry::FDynamicMeshChange](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshChange) > DynamicMeshChange, [FText](API\Runtime\Core\Internationalization\FText) GeometryEditTransactionString )


code: void UpdateGroupEdgeSegmentTree()


code: void UpdateColliderMesh()


code: void UpdateGroupTopology()


description: Update the active selection based on a world-space Ray. Should only be called ifRayHitTest()returns true. Uses the provided SelectionEditor and UpdateConfig to do the update Information about any changes actually made to the selection via the SelectionEditor are returned in ResultOut

code: virtual void UpdateSelectionViaRaycast ( const [FWorldRayQueryInfo](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FWorldRayQueryInfo) & RayInfo, [FGeometrySelectionEditor](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelecti-) & SelectionEditor, const [FGeometrySelectionUpdateConfig](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelecti-_3) & UpdateConfig, [FGeometrySelectionUpdateResult](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelecti-_4) & ResultOut )


description: Combine FromSelection with the current Selection owned/referenced by the Selector, using the provided SelectionEditor and UpdateConfig. This can be used to explicitly initialize the Selection, restore it to a previous state for undo/redo, etc.

code: virtual void UpdateSelectionFromSelection ( const [FGeometrySelection](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelection) & FromSelection, bool bAllowConversion, [FGeometrySelectionEditor](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelecti-) & SelectionEditor, const [FGeometrySelectionUpdateConfig](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelecti-_3) & UpdateConfig, [UE::Geometry::FGeometrySelectionDelta](API\Plugins\DynamicMesh\Selections\FGeometrySelectionDelta) * SelectionDelta )


code: virtual void UpdateSelectionViaRaycast_GroupEdges ( const [FWorldRayQueryInfo](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FWorldRayQueryInfo) & RayInfo, [FGeometrySelectionEditor](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelecti-) & SelectionEditor, const [FGeometrySelectionUpdateConfig](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelecti-_3) & UpdateConfig, [FGeometrySelectionUpdateResult](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelecti-_4) & ResultOut )


description: Update the active selection based on a world-space Shape. Uses the provided SelectionEditor and UpdateConfig to do the update Information about any changes actually made to the selection via the SelectionEditor are returned in ResultOut

code: virtual void UpdateSelectionViaShape ( const [FWorldShapeQueryInfo](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FWorldShapeQueryInfo) & ShapeInfo, [FGeometrySelectionEditor](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelecti-) & SelectionEditor, const [FGeometrySelectionUpdateConfig](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelecti-_3) & UpdateConfig, [FGeometrySelectionUpdateResult](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelecti-_4) & ResultOut )


code: virtual ~FBaseDynamicMeshSelector()


className: FBaseDynamicMeshSelector

description: FBaseDynamicMeshSelectoris an implementation ofIGeometrySelectorfor aUDynamicMesh. Note that the Selector itself doesnotrequire that the target object be aUDynamicMeshComponent, and subclasses ofFBaseDynamicMeshSelectorare used for both Volumes and StaticMeshComponents. Access to the World transform is provided by aTUniqueFunctionset up in the Factory.

code: class FBaseDynamicMeshSelector : public [IGeometrySelector](API\Plugins\ModelingComponents\Selection\IGeometrySelector)

ColliderMesh

description: FColliderMesh is used to store a hit-testable AABBTree independent of theUDynamicMesh

GetWorldTransformFunc

type: TUniqueFunction...

GroupEdgeSegmentTree

description: GroupEdgeSegmentTree stores a hit-testable AABBTree for the polygroup edges (depends on GroupTopology)

GroupTopology

description: GroupTopology will be built on-demand if polygroup selection queries are made

SleepingTargetMesh

type: TWeakObjectPtr<...

description: Support for sleep/restore

SourceGeometryIdentifier

type: FGeometryIdenti...

type: FDelegateHandle


description: Start a transform (eg called at beginning of a user interaction with a 3D gizmo). The caller provides the active Selection that is intended to be transformed.

code: virtual void BeginTransform ( const [UE::Geometry::FGeometrySelection](API\Plugins\DynamicMesh\Selections\FGeometrySelection) & Selection )


description: Finish a transform (eg called on mouse-up during 3D gizmo interaction). The caller provides a TransactionsAPI implementation which the Transformer/Selector can use to emit change events

code: virtual void EndTransform ( [IToolsContextTransactionsAPI](API\Runtime\InteractiveToolsFramework\IToolsContextTransactionsAPI) * TransactionsAPI )


description: theIGeometrySelectorthat owns this Transformer

code: virtual [IGeometrySelector](API\Plugins\ModelingComponents\Selection\IGeometrySelector) * GetSelector() const


description: Optional function called per-frame to visualize the active Transformation

code: virtual void PreviewRender ( [IToolsContextRenderAPI](API\Runtime\InteractiveToolsFramework\IToolsContextRenderAPI) * RenderAPI )


code: virtual void Initialize ( [FBaseDynamicMeshSelector](API\Plugins\ModelingComponents\Selection\FBaseDynamicMeshSelector) * Selector )


code: virtual void UpdateSelectionViaRaycast_MeshTopology ( const [FWorldRayQueryInfo](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FWorldRayQueryInfo) & RayInfo, [FGeometrySelectionEditor](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelecti-) & SelectionEditor, const [FGeometrySelectionUpdateConfig](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelecti-_3) & UpdateConfig, [FGeometrySelectionUpdateResult](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelecti-_4) & ResultOut )


code: void UpdatePendingVertexChange ( bool bFinal )


className: FBasicDynamicMeshSelectionTransformer

description: BasicDynamicMeshSelectionTransformer is a basic Transformer implementation that can be used with aFBaseDynamicMeshSelector. This Transformer moves the selected vertices and nothing else (ie no polygroup-based soft deformation)

code: class FBasicDynamicMeshSelectionTransformer : public [IGeometrySelectionTransformer](API\Plugins\ModelingComponents\Selection\IGeometrySelectionTransformer)

ActiveSelectionEdges

description: Used for preview rendering

ActiveSelectionVertices

type: TArray< int32 >

ActiveVertexChange

type: TPimplPtr<FMes...

bEnableSelectionTransformDrawing

description: Enable line drawing of selection during transform, this is necessary in some contexts where live mesh update is too slow

InitialPositions

type: TArray< FVector...

OnEndTransformFunc

type: TFunction< void...

OverlayNormalsSet

type: TSet< int32 >

Selector

type: FBaseDynamicMes...


code: virtual void UpdateTransform ( [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< FVector3d(int32[VertexID](API\Plugins\MeshModelingToolsExp\EMeshInspectorToolDrawIndexMode), const FVector3d &InitialPosition, const FTransform &WorldTransform)> PositionTransformFunc )


description: Render the given selection with the default settings of theFToolDataVisualizer. Selected edges are drawn as lines, and selected corners are drawn as points or small, view-facing circles, based on the CornerDrawStyle parameter. (Currently selected faces are not drawn)

code: virtual void DrawSelection ( const [FGroupTopologySelection](API\Plugins\DynamicMesh\FGroupTopologySelection) & Selection, [FToolDataVisualizer](API\Runtime\InteractiveToolsFramework\FToolDataVisualizer) * Renderer, const [FViewCameraState](API\Runtime\InteractiveToolsFramework\FViewCameraState) * CameraState, [ECornerDrawStyle](API\Plugins\ModelingComponents\Selection\FMeshTopologySelector\ECornerDrawStyle) CornerDrawStyle )


className: FBoundarySelector

description: This class allows selection of mesh boundary loops. It inherits fromFGroupTopologySelectorto leverage a lot of the selection functionality, but it uses a FMeshBoundaryLoops object rather than a FGroupTopology object to determine which loops are selectable.

code: class FBoundarySelector : public [FMeshTopologySelector](API\Plugins\ModelingComponents\Selection\FMeshTopologySelector)


description: Initialize the selector with the given Mesh and Topology. This does not create the internal data structures, this happens lazily onGetGeometrySet()

code: FBoundarySelector ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * Mesh, const [FMeshBoundaryLoops](API\Runtime\GeometryCore\FMeshBoundaryLoops) * BoundaryLoops )


code: virtual int FindGroupEdgeID ( int MeshEdgeID ) const


code: virtual void ForGroupSetEdges ( const [TSet](API\Runtime\Core\Containers\TSet)< int32 > & GroupIDs, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< void(int [EdgeID](API\Plugins\MeshModelingToolsExp\EMeshInspectorToolDrawIndexMode))> & EdgeFunc ) const


code: virtual int GetCornerVertexID ( int CornerID ) const


code: virtual void GetEdgePolyline ( int EdgeID, FPolyline3d & OutPolyline ) const


code: virtual const [TArray](API\Runtime\Core\Containers\TArray)< int > & GetGroupEdgeEdges ( int GroupEdgeID ) const


code: virtual const [TArray](API\Runtime\Core\Containers\TArray)< int > & GetGroupEdgeVertices ( int GroupEdgeID ) const


code: virtual int GetGroupIDAt ( int GroupIndex ) const


code: virtual int GetGroupIDForTriangle ( int TriangleID ) const


description: Functions that don't make sense if we don't have Groups and Corners but are still part of the interface:

code: virtual int GetNumCorners() const


code: virtual int GetNumEdges() const


code: virtual [FAxisAlignedBox3d](API\Runtime\GeometryCore\FAxisAlignedBox3d) GetSelectionBounds ( const [FGroupTopologySelection](API\Plugins\DynamicMesh\FGroupTopologySelection) & Selection, [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< FVector3d(const FVector3d &)> TransformFunc ) const


code: virtual int GetNumGroups() const


code: virtual [FFrame3d](API\Runtime\GeometryCore\FFrame3d_1) GetSelectionFrame ( const [FGroupTopologySelection](API\Plugins\DynamicMesh\FGroupTopologySelection) & Selection, [FFrame3d](API\Runtime\GeometryCore\FFrame3d_1) * InitialLocalFrame ) const


code: FBoundaryTopologyProvider ( const [FMeshBoundaryLoops](API\Runtime\GeometryCore\FMeshBoundaryLoops) * BoundaryLoops )


className: FBoundaryTopologyProvider

code: class FBoundaryTopologyProvider : public [FTopologyProvider](API\Plugins\ModelingComponents\Selection\FTopologyProvider)


code: virtual ~FBoundaryTopologyProvider()


description: a newIGeometrySelectorfor the provided TargetIdentifier

code: virtual [TUniquePtr](API\Runtime\Core\Templates\TUniquePtr)< [IGeometrySelector](API\Plugins\ModelingComponents\Selection\IGeometrySelector) > BuildForTarget ( [FGeometryIdentifier](API\Plugins\ModelingComponents\Selection\FGeometryIdentifier) TargetIdentifier ) const


description: true if this Factory can build anIGeometrySelectorfor the provided TargetIdentifier

code: virtual bool CanBuildForTarget ( [FGeometryIdentifier](API\Plugins\ModelingComponents\Selection\FGeometryIdentifier) TargetIdentifier ) const


className: FDynamicMeshComponentSelectorFactory

description: FDynamicMeshComponentSelectorFactoryconstructsFDynamicMeshSelectorinstances for UDynamicMeshComponents

code: class FDynamicMeshComponentSelectorFactory : public [IGeometrySelectorFactory](API\Plugins\ModelingComponents\Selection\IGeometrySelectorFactory)


code: virtual void EndTransform ( [IToolsContextTransactionsAPI](API\Runtime\InteractiveToolsFramework\IToolsContextTransactionsAPI) * TransactionsAPI )


code: virtual void BeginTransform ( const [UE::Geometry::FGeometrySelection](API\Plugins\DynamicMesh\Selections\FGeometrySelection) & Selection )


code: virtual void PreviewRender ( [IToolsContextRenderAPI](API\Runtime\InteractiveToolsFramework\IToolsContextRenderAPI) * RenderAPI )


code: virtual void UpdateTransform ( [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< FVector3d(int32[VertexID](API\Plugins\MeshModelingToolsExp\EMeshInspectorToolDrawIndexMode), const FVector3d &InitialPosition, const FTransform &WorldTransform)> PositionTransformFunc )


className: FDynamicMeshPolygroupTransformer

description: IGeometrySelectionTransformerfor Dynamic Mesh Polygroups, that does various types of soft deformation.

bFallbackToSimpleTransform

type: bool

ROIMap

type: TMap< int32, in...


description: Create and initialize aIGeometrySelectionTransformerfor the provided Selection.IGeometrySelectorretains ownership of the active Transformer, it should not be deleted by the caller, but insteadShutdownTransformation()should be called.

code: virtual [IGeometrySelectionTransformer](API\Plugins\ModelingComponents\Selection\IGeometrySelectionTransformer) * InitializeTransformation ( const [FGeometrySelection](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelection) & Selection )


description: Shutdown an activeIGeometrySelectionTransformer. Generally only one Transformer may be active at any time, and it is an error to shut it down multiple times.

code: virtual void ShutdownTransformation ( [IGeometrySelectionTransformer](API\Plugins\ModelingComponents\Selection\IGeometrySelectionTransformer) * Transformer )


className: FDynamicMeshSelector

description: FDynamicMeshSelectoris an implementation ofFBaseDynamicMeshSelectormeant to be used with UDynamicMeshComponents.

code: class FDynamicMeshSelector : public [FBaseDynamicMeshSelector](API\Plugins\ModelingComponents\Selection\FBaseDynamicMeshSelector)

ActiveTransformer

type: TSharedPtr<FBa...


className: ETopologyType

description: Selection type

code: enum ETopologyType { FGroupTopology, FTriangleGroupTopology, FUVGroupTopology, }


description: selected GroupIDs

code: const [TArray](API\Runtime\Core\Containers\TArray)< int32 > & GetGroupIDs() const


description: true if selection has 3D lines that can be rendered

code: bool HasRenderableLines() const


description: true if selection is empty

code: bool IsEmpty() const


code: bool operator== ( const [FGenericMeshSelection](API\Plugins\ModelingComponents\Selection\FGenericMeshSelection) & Other ) const


className: FGenericMeshSelection

description: this class is likely to change in the future

code: struct FGenericMeshSelection

EdgeIDs

description: Selected edges, represented as index pairs because for many selections, using a pair of vertices defining/on the edge is more reliable (due to unstable edge IDs)

FaceIDs

description: Selected triangles/faces/regions

RenderEdges

description: Set of 3D lines representing selection (in world space)

RenderVertices

description: Set of 3D points representing selection (in world space)

SourceComponent

type: UPrimitiveCompo...

description: Component this selection applies to (eg that owns mesh, etc)

TopologyType

type: ETopologyType

description: Selection type

VertexIDs

description: Selected vertices or "corners" (eg of polygroup topology)


code: bool Equals ( const [FGeometryIdentifier](API\Plugins\ModelingComponents\Selection\FGeometryIdentifier) & Other ) const


className: EObjectType

description: EObjectType is the specific UClass/UObject Type of TargetObject

code: enum EObjectType { Unknown = 0, DynamicMeshComponent = 1, DynamicMesh = 2, BrushComponent = 3, StaticMeshComponent = 4, UserDefinedBase = 64, }


className: ETargetType

description: ETargetType specifies the category of target object

code: enum ETargetType { Unknown = 0, PrimitiveComponent = 1, MeshContainer = 2, UserDefinedBase = 32, }


description: TargetObject cast to template PrimitiveComponent subclass ComponentTypeT, or nullptr if it is not defined or not this type

code: template<typename ComponentTypeT> ComponentTypeT * GetAsComponentType() const


description: TargetObject cast to template ObjectTypeT, or nullptr if it is not defined or not this type

code: template<typename ObjectTypeT> ObjectTypeT * GetAsObjectType() const


description: true if TargetObject is defined and still exists

code: bool HasObject() const


code: bool operator== ( const [FGeometryIdentifier](API\Plugins\ModelingComponents\Selection\FGeometryIdentifier) & Other ) const


description: aFGeometryIdentifierfor a givenUPrimitiveComponentwith the specified ObjectType (may beEObjectType::Unknown)

code: static [FGeometryIdentifier](API\Plugins\ModelingComponents\Selection\FGeometryIdentifier) PrimitiveComponent ( [UPrimitiveComponent](API\Runtime\Engine\Components\UPrimitiveComponent) * Component, [EObjectType](API\Plugins\ModelingComponents\Selection\FGeometryIdentifier\EObjectType) ObjectType )


className: FGeometryIdentifier

description: FGeometryIdentifieris used to represent a specific Geometry-containing object.

code: struct FGeometryIdentifier

ObjectType

type: EObjectType

description: Object Type specifies the specific UClass/UObject Type of TargetObject

TargetObject

description: TargetObject isoptional, depending on the identifier and situation it may or may not exist

TargetType

type: ETargetType

description: Target Type specifies the category of TargetObject


description: Makes the change to the object

code: virtual void Apply ( [UObject](API\Runtime\CoreUObject\UObject\UObject) * Object )


code: virtual void ApplyChange ( [FGeometrySelectionEditor](API\Plugins\ModelingComponents\Selection\IGeometrySelectionChange\FGeometrySelecti-_1) * Editor, [FGeometrySelectionDelta](API\Plugins\ModelingComponents\Selection\IGeometrySelectionChange\FGeometrySelecti-_2) & ApplyDelta )


code: virtual [FGeometryIdentifier](API\Plugins\ModelingComponents\Selection\FGeometryIdentifier) GetIdentifier() const


description: Change has expired if the SelectionManager no longer exists

code: virtual bool HasExpired ( [UObject](API\Runtime\CoreUObject\UObject\UObject) * Object ) const


description: Reverts change to the object

code: virtual void Revert ( [UObject](API\Runtime\CoreUObject\UObject\UObject) * Object )


description: Describes this change (for debugging)

code: virtual [FString](API\Runtime\Core\Containers\FString) ToString() const


code: virtual void RevertChange ( [FGeometrySelectionEditor](API\Plugins\ModelingComponents\Selection\IGeometrySelectionChange\FGeometrySelecti-_1) * Editor, [FGeometrySelectionDelta](API\Plugins\ModelingComponents\Selection\IGeometrySelectionChange\FGeometrySelecti-_2) & RevertDelta )


className: FGeometrySelectionDeltaChange

description: FGeometrySelectionDeltaChangestores a Remove-then-Add change in a FGeometrySelection.

code: class FGeometrySelectionDeltaChange : public [FToolCommandChange](API\Runtime\InteractiveToolsFramework\FToolCommandChange), public [IGeometrySelectionChange](API\Plugins\ModelingComponents\Selection\IGeometrySelectionChange)

Delta

type: FGeometrySelect...


className: FGeometrySelectionHandle

description: FGeometrySelectionHandlestores a Selection and an Identifier for the geometry object that the Selection is defined relative to

code: struct FGeometrySelectionHandle

Selector

type: IGeometrySelect...

description: Optional Selector for SelectionHandle


className: FGeometrySelectionReplaceChange

description: FGeometrySelectionReplaceChangestores a full replacement of a FGeometrySelection, ie full copies of the selection set before and after the change

code: class FGeometrySelectionReplaceChange : public [FToolCommandChange](API\Runtime\InteractiveToolsFramework\FToolCommandChange), public [IGeometrySelectionChange](API\Plugins\ModelingComponents\Selection\IGeometrySelectionChange)

Identifier

type: FGeometryIdenti...


code: virtual int FindGroupEdgeID ( int MeshEdgeID ) const


code: virtual void ForGroupSetEdges ( const [TSet](API\Runtime\Core\Containers\TSet)< int32 > & GroupIDs, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< void(int [EdgeID](API\Plugins\MeshModelingToolsExp\EMeshInspectorToolDrawIndexMode))> & EdgeFunc ) const


code: virtual int GetCornerVertexID ( int CornerID ) const


code: virtual const [TArray](API\Runtime\Core\Containers\TArray)< int > & GetGroupEdgeEdges ( int GroupEdgeID ) const


code: virtual void GetEdgePolyline ( int EdgeID, FPolyline3d & OutPolyline ) const


code: virtual const [TArray](API\Runtime\Core\Containers\TArray)< int > & GetGroupEdgeVertices ( int GroupEdgeID ) const


code: virtual int GetGroupIDAt ( int GroupIndex ) const


code: virtual int GetGroupIDForTriangle ( int TriangleID ) const


code: virtual int GetNumCorners() const


code: virtual int GetNumEdges() const


code: virtual FAxisAlignedBox3d GetSelectionBounds ( const [FGroupTopologySelection](API\Plugins\DynamicMesh\FGroupTopologySelection) & Selection, [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< FVector3d(const FVector3d &)> TransformFunc ) const


code: virtual int GetNumGroups() const


code: virtual FFrame3d GetSelectionFrame ( const [FGroupTopologySelection](API\Plugins\DynamicMesh\FGroupTopologySelection) & Selection, FFrame3d * InitialLocalFrame ) const


code: FGroupTopologyProvider ( const [FGroupTopology](API\Plugins\DynamicMesh\FGroupTopology) * GroupTopology )


className: FGroupTopologyProvider

description: TopologyProvider using FGroupTopology

code: class FGroupTopologyProvider : public [FTopologyProvider](API\Plugins\ModelingComponents\Selection\FTopologyProvider)


code: virtual ~FGroupTopologyProvider()


description: Render the given selection with the default settings of theFToolDataVisualizer. Selected edges are drawn as lines, and selected corners are drawn as points or small, view-facing circles, based on the CornerDrawStyle parameter. (Currently selected faces are not drawn)

code: virtual void DrawSelection ( const [FGroupTopologySelection](API\Plugins\DynamicMesh\FGroupTopologySelection) & Selection, [FToolDataVisualizer](API\Runtime\InteractiveToolsFramework\FToolDataVisualizer) * Renderer, const [FViewCameraState](API\Runtime\InteractiveToolsFramework\FViewCameraState) * CameraState, [ECornerDrawStyle](API\Plugins\ModelingComponents\Selection\FMeshTopologySelector\ECornerDrawStyle) CornerDrawStyle )


description:
Using the edges in the given selection as starting points, add any "edge loops" containing the edges. An edge loop is a sequence of edges that passes through valence-4 corners through the opposite edge, and may not actually form a complete loop if they hit a non-valence-4 corner.
true if selection was modified (i.e., were the already selected edges part of any edge loops whose member edges were not yet all selected).

code: bool ExpandSelectionByEdgeLoops ( [FGroupTopologySelection](API\Plugins\DynamicMesh\FGroupTopologySelection) & Selection )


description: Initialize the selector with the given Mesh and Topology. This does not create the internal data structures, this happens lazily onGetGeometrySet()

code: void Initialize ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * Mesh, const [FGroupTopology](API\Plugins\DynamicMesh\FGroupTopology) * Topology )


description:
Using the edges in the given selection as starting points, add any "edge rings" containing the edges. An edge ring is a sequence of edges that lie on opposite sides of quad-like faces, meaning faces that have four corners.
true if selection was modified (i.e., were the already selected edges part of any edge rings whose member edges were not yet all selected).

code: bool ExpandSelectionByEdgeRings ( [FGroupTopologySelection](API\Plugins\DynamicMesh\FGroupTopologySelection) & Selection )


code: FGroupTopologySelector()


description: Create the selector with the given Mesh and Topology. This does not create the internal data structures, this happens lazily onGetGeometrySet()

code: FGroupTopologySelector ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * Mesh, const [FGroupTopology](API\Plugins\DynamicMesh\FGroupTopology) * Topology )


className: FGroupTopologySelector

description: FGroupTopologySelectoris a MeshTopologySelector subclass using an FGroupTopology to define groups, edges, and vertices

code: class FGroupTopologySelector : public [FMeshTopologySelector](API\Plugins\ModelingComponents\Selection\FMeshTopologySelector)


code: void AddNewEdgeLoopEdgesFromCorner ( int32 EdgeID, int32 CornerID, [TSet](API\Runtime\Core\Containers\TSet)< int32 > & EdgeSet ) const


code: void AddNewEdgeRingEdges ( int32 StartEdgeID, int32 ForwardGroupID, [TSet](API\Runtime\Core\Containers\TSet)< int32 > & EdgeSet ) const


code: [FIndex2i](API\Runtime\GeometryCore\FIndex2i) GetEdgeEndpointCorners ( int EdgeID ) const


code: [FIndex2i](API\Runtime\GeometryCore\FIndex2i) GetEdgeGroups ( int EdgeID ) const


code: bool GetNextEdgeLoopEdge ( int32 IncomingEdgeID, int32 CornerID, int32 & NextEdgeIDOut ) const


code: bool GetQuadOppositeEdge ( int32 EdgeIDIn, int32 GroupID, int32 & OppositeEdgeIDOut ) const


className: FGroupTopologyUtils

description: Additional functionality for operating on FGroupTopology

code: struct FGroupTopologyUtils

GroupTopology

type: constFGroupTop...


code: template<typename EidContainerType> void InitializeFromEdgeIDs ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & Mesh, const EidContainerType & Eids )


code: template<typename EidContainerType> void GetEdgeIDs ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & Mesh, EidContainerType & EidsOut )


className: FMeshEdgesFromTriangleSubIndices

description: Note this way of identifying edges will still not be stable in the case of triangles being reinserted with rotated indices (e.g. a triangle "a, b, c" reinserted as "b, c, d"). Storing Vid pairs would be necessary to be robust to that case, but finding an edge from vertices is a slower operation compared to the constant-time tri/index lookup used here.

code: class FMeshEdgesFromTriangleSubIndices


description: Makes the change to the object

code: virtual void Apply ( [UObject](API\Runtime\CoreUObject\UObject\UObject) * Object )


description: Reverts change to the object

code: virtual void Revert ( [UObject](API\Runtime\CoreUObject\UObject\UObject) * Object )


description: Describes this change (for debugging)

code: virtual [FString](API\Runtime\Core\Containers\FString) ToString() const


code: class FMeshTopologySelectionMechanicSelectionChange : public [FToolCommandChange](API\Runtime\InteractiveToolsFramework\FToolCommandChange)

After

type: FGroupTopologyS...


code: bool DoCornerBasedSelection ( const [FSelectionSettings](API\Plugins\ModelingComponents\Selection\FMeshTopologySelector\FSelectionSettings) & Settings, const FRay3d & Ray, [FDynamicMeshAABBTree3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshAABBTree3) * Spatial, const [FGeometrySet3](API\Runtime\GeometryCore\Spatial\FGeometrySet3) & TopoSpatial, [FGroupTopologySelection](API\Plugins\DynamicMesh\FGroupTopologySelection) & ResultOut, FVector3d & SelectedPositionOut, int32 * EdgeSegmentIdOut ) const


code: bool DoEdgeBasedSelection ( const [FSelectionSettings](API\Plugins\ModelingComponents\Selection\FMeshTopologySelector\FSelectionSettings) & Settings, const FRay3d & Ray, [FDynamicMeshAABBTree3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshAABBTree3) * Spatial, const [FGeometrySet3](API\Runtime\GeometryCore\Spatial\FGeometrySet3) & TopoSpatial, [FGroupTopologySelection](API\Plugins\DynamicMesh\FGroupTopologySelection) & ResultOut, FVector3d & SelectedPositionOut, int32 * EdgeSegmentIdOut ) const


code: void DrawSelection ( const [FGroupTopologySelection](API\Plugins\DynamicMesh\FGroupTopologySelection) & Selection, [FToolDataVisualizer](API\Runtime\InteractiveToolsFramework\FToolDataVisualizer) * Renderer, const [FViewCameraState](API\Runtime\InteractiveToolsFramework\FViewCameraState) * CameraState, [ECornerDrawStyle](API\Plugins\ModelingComponents\Selection\FMeshTopologySelector\ECornerDrawStyle) CornerDrawStyle )


className: ECornerDrawStyle

code: enum ECornerDrawStyle { Circle, Point, }


description:
For group edges, occlusion is checked at endpoints, and if either is occluded, the edge is considered occluded. For faces, occlusion is checked at triangle centroids.
true if something was selected.

code: bool FindSelectedElement ( const [FSelectionSettings](API\Plugins\ModelingComponents\Selection\FMeshTopologySelector\FSelectionSettings) & Settings, const [FCameraRectangle](API\Plugins\ModelingComponents\Mechanics\FCameraRectangle) & CameraRectangle, FTransform3d TargetTransform, [FGroupTopologySelection](API\Plugins\DynamicMesh\FGroupTopologySelection) & ResultOut, [TMap](API\Runtime\Core\Containers\TMap)< int32, bool > * TriIsOccludedCache )


description:
Find which element was selected for a given ray.
true if something was selected

code: bool FindSelectedElement ( const [FSelectionSettings](API\Plugins\ModelingComponents\Selection\FMeshTopologySelector\FSelectionSettings) & Settings, const FRay3d & Ray, [FGroupTopologySelection](API\Plugins\DynamicMesh\FGroupTopologySelection) & ResultOut, FVector3d & SelectedPositionOut, FVector3d & SelectedNormalOut, int32 * EdgeSegmentIdOut )


className: FSelectionSettings

description: Configuration variables Determines the behavior of aFindSelectedElement()call.

code: struct FSelectionSettings

bHitBackFaces

description: When false, hits of a triangles that are facing away from the camera are not considered.

bIgnoreOcclusion

description: Do not check whether the closest element is occluded.

bPreferProjectedElement

description: Prefer an edge projected to a point rather than the point, and a face projected to an edge rather than the edge.

bSelectDownRay

description: If the first element is valid, select all elements behind it that are aligned with it.


description: the internal GeometrySet. This does lazy updating of the GeometrySet, so this function may take some time.

code: const [FGeometrySet3](API\Runtime\GeometryCore\Spatial\FGeometrySet3) & GetGeometrySet()


code: const [FTopologyProvider](API\Plugins\ModelingComponents\Selection\FTopologyProvider) * GetTopologyProvider()


description: Notify the Selector that the mesh has changed.

code: void Invalidate ( bool bTopologyDeformed, bool bTopologyModified )


code: virtual ~FMeshTopologySelector()


description: Provide a function that will return an AABBTree for the Mesh. See class comment for why this is necessary.

code: void SetSpatialSource ( [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< FDynamicMeshAABBTree3 *(void)> GetSpatialFunc )


className: FMeshTopologySelector

description: DrawSelection()can be used to visualize a selection via line/circle drawing.

code: class FMeshTopologySelector

GetSpatial

type: TFunction< FDyn...

Mesh

type: constFDynamicM...

PointsWithinToleranceTest

type: TFunction< bool...

description: This is the function we use to determine if a point on a corner/edge is close enough to the hit-test ray to treat as a "hit".

TopologyProvider

type: TUniquePtr<FTo...

VisualAngleSnapThreshold

type: float

description: Internal rendering parameters


code: FMeshTopologySelector()


description: true if this Change has Expired, ie it will no longer have any effect and could be skipped by undo/redo

code: virtual bool HasExpired ( [UObject](API\Runtime\CoreUObject\UObject\UObject) * Object ) const


description: Makes the change to the object

code: virtual void Apply ( [UObject](API\Runtime\CoreUObject\UObject\UObject) * Object )


description: Reverts change to the object

code: virtual void Revert ( [UObject](API\Runtime\CoreUObject\UObject\UObject) * Object )


description: Describes this change (for debugging)

code: virtual [FString](API\Runtime\Core\Containers\FString) ToString() const


className: FPersistentMeshSelectionChange

description: FPersistentMeshSelectionChangestores a selection change, ie before-and-after states.UDEPRECATED_PersistentMeshSelectionManageremits these changes on selection modifications.

code: class FPersistentMeshSelectionChange : public [FToolCommandChange](API\Runtime\InteractiveToolsFramework\FToolCommandChange)

From

type: FGenericMeshSel...


description:
Test if target is hit by a click
hit information at this point

code: virtual [FInputRayHit](API\Runtime\InteractiveToolsFramework\FInputRayHit) IsHitByClick ( const [FInputDeviceRay](API\Runtime\InteractiveToolsFramework\FInputDeviceRay) & ClickPos )


description: Notify target of current modifier state

code: virtual void OnUpdateModifierState ( int ModifierID, bool bIsOn )


description: Notify Target that click ocurred

code: virtual void OnClicked ( const [FInputDeviceRay](API\Runtime\InteractiveToolsFramework\FInputDeviceRay) & ClickPos )


className: ShiftModifier

description: Can alternately track shift modifier, however client must register this modifier w/ behavior

code: static const int ShiftModifier = 1;


className: FSelectClickedAction

description: BehaviorTarget to do world raycast selection from a click Currently used to click-select reference planes in the world

code: class FSelectClickedAction : public [IClickBehaviorTarget](API\Runtime\InteractiveToolsFramework\BaseBehaviors\IClickBehaviorTarget)

bShiftModifierToggle

type: bool

ExternalCanClickPredicate

type: TUniqueFunction...

InvisibleComponentsToHitTest

type: TArray< constU...

OnClickedPositionFunc

type: TFunction< void...

SnapManager

type: USceneSnappingM...

VisibleComponentsToIgnore

description: These lists can be used to modify which components are hit tested when doing a ray cast.

World

type: UWorld*


code: void Render ( [IToolsContextRenderAPI](API\Runtime\InteractiveToolsFramework\IToolsContextRenderAPI) * RenderAPI ) const


code: void Initialize ( const [FGeometrySelection](API\Plugins\DynamicMesh\Selections\FGeometrySelection) & Selection, const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & SourceMesh, const [FGroupTopology](API\Plugins\DynamicMesh\FGroupTopology) * Topology, const FTransform * ApplyTransform )


code: int FindGroupEdgeID ( int MeshEdgeID ) const


className: FSelectionRenderHelper

code: struct FSelectionRenderHelper

Elements

type: FGeometrySelect...


code: void GetEdgePolyline ( int EdgeID, FPolyline3d & OutPolyline ) const


code: int GetCornerVertexID ( int CornerID ) const


code: void ForGroupSetEdges ( const [TSet](API\Runtime\Core\Containers\TSet)< int32 > & GroupIDs, const [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< void(int [EdgeID](API\Plugins\MeshModelingToolsExp\EMeshInspectorToolDrawIndexMode))> & EdgeFunc ) const


code: const [TArray](API\Runtime\Core\Containers\TArray)< int > & GetGroupEdgeEdges ( int GroupEdgeID ) const


code: int GetGroupIDAt ( int GroupIndex ) const


code: int GetGroupIDForTriangle ( int TriangleID ) const


code: int GetNumCorners() const


code: const [TArray](API\Runtime\Core\Containers\TArray)< int > & GetGroupEdgeVertices ( int GroupEdgeID ) const


code: FAxisAlignedBox3d GetSelectionBounds ( const [FGroupTopologySelection](API\Plugins\DynamicMesh\FGroupTopologySelection) & Selection, [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< FVector3d(const FVector3d &)> TransformFunc ) const


code: int GetNumGroups() const


code: FFrame3d GetSelectionFrame ( const [FGroupTopologySelection](API\Plugins\DynamicMesh\FGroupTopologySelection) & Selection, FFrame3d * InitialLocalFrame ) const


code: virtual ~FTopologyProvider()


className: FTopologyProvider

description: FTopologyProviderprovides selectable edge/group/corner information forFMeshTopologySelectorto use. Users should implement a concrete subclass based on the type of mesh topology they wish to make selectable (e.g. group topology, boundary curves, etc.). Then creating a new TopologySelector subclass should be fairly trivial.

code: class FTopologyProvider


className: FGeometrySelectionEditor


className: FGeometrySelectionDelta


code: int GetNumEdges() const


code: void RevertChange ( [FGeometrySelectionEditor](API\Plugins\ModelingComponents\Selection\IGeometrySelectionChange\FGeometrySelecti-_1) * Editor, [FGeometrySelectionDelta](API\Plugins\ModelingComponents\Selection\IGeometrySelectionChange\FGeometrySelecti-_2) & RevertDelta )


code: virtual ~IGeometrySelectionChange()


description: Start a transform (eg called at beginning of a user interaction with a 3D gizmo). The caller provides the active Selection that is intended to be transformed.

code: void BeginTransform ( const [UE::Geometry::FGeometrySelection](API\Plugins\DynamicMesh\Selections\FGeometrySelection) & Selection )


className: IGeometrySelectionChange

description: Base interface intended to be implemented byFToolCommandChangesubclasses that represent changes to a FGeometrySelection. The point of the interface is to allowUGeometrySelectionManagerto execute theApplyChange()andRevertChange()with the FGeometrySelectionEditor it provides. So the call pattern is that theFToolCommandChange::Apply(), with theUGeometrySelectionManageras theUObjecttarget, will callUGeometrySelectionManager::ApplyChange(), which then in turn will callIGeometrySelectionChange::ApplyChange()

code: class IGeometrySelectionChange


description: theIGeometrySelectorthat owns this Transformer

code: [IGeometrySelector](API\Plugins\ModelingComponents\Selection\IGeometrySelector) * GetSelector() const


code: void ApplyChange ( [FGeometrySelectionEditor](API\Plugins\ModelingComponents\Selection\IGeometrySelectionChange\FGeometrySelecti-_1) * Editor, [FGeometrySelectionDelta](API\Plugins\ModelingComponents\Selection\IGeometrySelectionChange\FGeometrySelecti-_2) & ApplyDelta )


description: Finish a transform (eg called on mouse-up during 3D gizmo interaction). The caller provides a TransactionsAPI implementation which the Transformer/Selector can use to emit change events

code: void EndTransform ( [IToolsContextTransactionsAPI](API\Runtime\InteractiveToolsFramework\IToolsContextTransactionsAPI) * TransactionsAPI )


description: Optional function called per-frame to visualize the active Transformation

code: virtual void PreviewRender ( [IToolsContextRenderAPI](API\Runtime\InteractiveToolsFramework\IToolsContextRenderAPI) * RenderAPI )


description: Update the active transform (eg called on each mouse update during 3D gizmo usage). The caller provides a VertexTransformFunc callback, which will only be called during the call to UpdateTransform to compute new 3D positions for 3D points.

code: void UpdateTransform ( [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< FVector3d(int [VertexID](API\Plugins\MeshModelingToolsExp\EMeshInspectorToolDrawIndexMode), const FVector3d &InitialPosition, const FTransform &WorldTransform)> VertexTransformFunc )


className: IGeometrySelectionTransformer

description: The current API assumes the transformation will be applied "per vertex", ie that the concept of "vertices" exists and that the transform is done pointwise. This may be expanded/revisited in future.

code: class IGeometrySelectionTransformer


description: Accumulate the bounds of the provided Selection in the provided BoundsInOut. BoundsInOut is not cleared.

code: void AccumulateSelectionBounds ( const [FGeometrySelection](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelection) & Selection, [FGeometrySelectionBounds](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelecti-_1) & BoundsInOut, bool bTransformToWorld )


className: EInitializeSelectionMode

code: enum EInitializeSelectionMode { All, Connected, AdjacentToBorder, }


description: Accumulate geometric elements (currently 3D triangles, line segments, and points) for the provided Selection in the provided ElementsInOut. ElementsInOut is not cleared.

code: void AccumulateSelectionElements ( const [FGeometrySelection](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelection) & Selection, [FGeometrySelectionElements](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelecti-_2) & ElementsInOut, bool bTransformToWorld, bool bIsForPreview )


className: FGeometrySelectionBounds


className: FGeometrySelectionElements


className: FGeometrySelectionUpdateConfig


className: FGeometrySelectionUpdateResult


className: FOnGeometryModified

code: typedef TMulticastDelegate_OneParam< void, [IGeometrySelector](API\Plugins\ModelingComponents\Selection\IGeometrySelector) *Selector > FOnGeometryModified


className: FWorldRayQueryInfo

code: struct FWorldRayQueryInfo

CameraState

type: FViewCameraStat...


className: FWorldShapeQueryInfo

code: struct FWorldShapeQueryInfo

Convex

type: FConvexVolume


description: the World transform for the Selector's target object


description: aFGeometryIdentifierfor this Selector.


description: The OnGeometryModified delegate will fire if the geometry of the Selector's Target Object is modified. For example if aUDynamicMeshis edited, OnGeometryModified will be broadcast.


description: Compute a 3D frame for the provided Selection. For example this could simply be a frame aligned to the XYZ axes at the center of the selection bounding-box, or something more sophisticated, like aligned to the tangent-space of the selected element(s), etc.

code: void GetSelectionFrame ( const [FGeometrySelection](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelection) & Selection, [UE::Geometry::FFrame3d](API\Runtime\GeometryCore\FFrame3d_1) & SelectionFrameOut, bool bTransformToWorld )


description: Query the Selector for a potential selection based on world-space Ray. The intention of this query is that it be used for "selection preview", eg like hover-highlighting. The PreviewEditor will always be updated in 'Add' mode, and currently no result information will be returned.

code: void GetSelectionPreviewForRaycast ( const [FWorldRayQueryInfo](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FWorldRayQueryInfo) & RayInfo, [FGeometrySelectionEditor](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelecti-) & PreviewEditor )


description: Populate a Selection using the provided ReferenceMode, with a Predicate and optional ReferenceSelection. Note that this method does not modify/access any selection that might be "owned" by the Selector. It is part of theIGeometrySelectorAPI because often a Selector has access to internal data structures (like a Mesh, GroupTopology, etc) that are required to initialize a Selection.

code: void InitializeSelectionFromPredicate ( [FGeometrySelection](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelection) & SelectionInOut, [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< bool([UE::Geometry::FGeoSelectionID](API\Plugins\DynamicMesh\Selections\FGeoSelectionID))> SelectionIDPredicate, [EInitializeSelectionMode](API\Plugins\ModelingComponents\Selection\IGeometrySelector\EInitializeSelec-) InitializeMode, const [FGeometrySelection](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelection) * ReferenceSelection )


description: Create and initialize aIGeometrySelectionTransformerfor the provided Selection.IGeometrySelectorretains ownership of the active Transformer, it should not be deleted by the caller, but insteadShutdownTransformation()should be called.

code: [IGeometrySelectionTransformer](API\Plugins\ModelingComponents\Selection\IGeometrySelectionTransformer) * InitializeTransformation ( const [FGeometrySelection](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelection) & Selection )


description: Locking support. When a Selector is locked, it will not allow selection changes. The primary use of this is to support configurable enable/disable of selection on certain types of objects (eg on static meshes). Although it could potentially be supported at a higher level, this adds a lot of complications to state management that are avoided if the Selector is always created.

code: virtual bool IsLockable() const


code: virtual bool IsLocked() const


code: void NotifyGeometryModified()


description:
Restore a Selector that has hadSleep()called on it.
true on success

code: virtual bool Restore()


code: virtual void SetLockedState ( bool bLocked )


description: Shutdown an activeIGeometrySelectionTransformer. Generally only one Transformer may be active at any time, and it is an error to shut it down multiple times.

code: void ShutdownTransformation ( [IGeometrySelectionTransformer](API\Plugins\ModelingComponents\Selection\IGeometrySelectionTransformer) * Transformer )


description:
Temporarily disable the Selector, with the intention of re-enabling it (viaRestore()) in the future. Sleep should (currently) free any large memory data structures.
true if Sleep was successful, if not the Selector will likely be Shutdown

code: virtual bool Sleep()


description: Disconnect the Selector from its target object and prepare for deletion.

code: void Shutdown()


description: The SelectionManager will callSupportsSleep()to determine if anIGeometrySelectorneeds to be destroyed when the target object is deselected, or if it can be re-used (generally more efficient)

code: virtual bool SupportsSleep() const


description:
Check for intersection between a world-space Ray with the Selector's target object and return aFInputRayHitresult.RayHitTest()must return true for other raycast-based functions likeUpdateSelectionViaRaycast()to be called.
true on hit, false on miss

code: bool RayHitTest ( const [FWorldRayQueryInfo](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FWorldRayQueryInfo) & RayInfo, [UE::Geometry::FGeometrySelectionHitQueryConfig](API\Plugins\DynamicMesh\Selections\FGeometrySelectionHitQueryConfig) QueryConfig, [FInputRayHit](API\Runtime\InteractiveToolsFramework\FInputRayHit) & HitResultOut )


description: Combine FromSelection with the current Selection owned/referenced by the Selector, using the provided SelectionEditor and UpdateConfig. This can be used to explicitly initialize the Selection, restore it to a previous state for undo/redo, etc.

code: void UpdateSelectionFromSelection ( const [FGeometrySelection](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelection) & FromSelection, bool bAllowConversion, [FGeometrySelectionEditor](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelecti-) & SelectionEditor, const [FGeometrySelectionUpdateConfig](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelecti-_3) & UpdateConfig, [UE::Geometry::FGeometrySelectionDelta](API\Plugins\DynamicMesh\Selections\FGeometrySelectionDelta) * SelectionDelta )


description: Update the active selection based on a world-space Ray. Should only be called ifRayHitTest()returns true. Uses the provided SelectionEditor and UpdateConfig to do the update Information about any changes actually made to the selection via the SelectionEditor are returned in ResultOut

code: void UpdateSelectionViaRaycast ( const [FWorldRayQueryInfo](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FWorldRayQueryInfo) & RayInfo, [FGeometrySelectionEditor](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelecti-) & SelectionEditor, const [FGeometrySelectionUpdateConfig](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelecti-_3) & UpdateConfig, [FGeometrySelectionUpdateResult](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelecti-_4) & ResultOut )


description: Update the active selection based on a world-space Shape. Uses the provided SelectionEditor and UpdateConfig to do the update Information about any changes actually made to the selection via the SelectionEditor are returned in ResultOut

code: void UpdateSelectionViaShape ( const [FWorldShapeQueryInfo](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FWorldShapeQueryInfo) & ShapeInfo, [FGeometrySelectionEditor](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelecti-) & SelectionEditor, const [FGeometrySelectionUpdateConfig](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelecti-_3) & UpdateConfig, [FGeometrySelectionUpdateResult](API\Plugins\ModelingComponents\Selection\IGeometrySelector\FGeometrySelecti-_4) & ResultOut )


code: virtual ~IGeometrySelector()


className: IGeometrySelector

description: Selector implementations should ideally have a strategy to lazy-construct any large data structures (eg mesh AABBTrees, etc). Again this is to avoid excessive overhead when the user (for example) selects a large object but has no intention of doing element-level selection.

code: class IGeometrySelector

OnGeometryModifed

type: FOnGeometryModi...


description: a newIGeometrySelectorfor the provided TargetIdentifier

code: [TUniquePtr](API\Runtime\Core\Templates\TUniquePtr)< [IGeometrySelector](API\Plugins\ModelingComponents\Selection\IGeometrySelector) > BuildForTarget ( [FGeometryIdentifier](API\Plugins\ModelingComponents\Selection\FGeometryIdentifier) TargetIdentifier ) const


description: true if this Factory can build anIGeometrySelectorfor the provided TargetIdentifier

code: bool CanBuildForTarget ( [FGeometryIdentifier](API\Plugins\ModelingComponents\Selection\FGeometryIdentifier) TargetIdentifier ) const


code: virtual ~IGeometrySelectorFactory()


className: IGeometrySelectorFactory

description: Factory for a specific type ofIGeometrySelector

code: class IGeometrySelectorFactory


description: Render the given Elements usingFPrimitiveDrawInterface

code: namespace ToolSelectionUtil { void ToolSelectionUtil::DebugRenderGeometrySelectionElements ( [IToolsContextRenderAPI](API\Runtime\InteractiveToolsFramework\IToolsContextRenderAPI) * RenderAPI, const [UE::Geometry::FGeometrySelectionElements](API\Plugins\DynamicMesh\Selections\FGeometrySelectionElements) & Elements, bool bIsPreview ) }


description: Change the active selection to the given Actors, via given ToolManager. Replaces existing selection.

code: namespace ToolSelectionUtil { void ToolSelectionUtil::SetNewActorSelection ( [UInteractiveToolManager](API\Runtime\InteractiveToolsFramework\UInteractiveToolManager) * ToolManager, const [TArray](API\Runtime\Core\Containers\TArray)< [AActor](API\Runtime\Engine\GameFramework\AActor) * > & Actors ) }


description: Change the active selection to the given Actor, via given ToolManager. Replaces existing selection.

code: namespace ToolSelectionUtil { void ToolSelectionUtil::SetNewActorSelection ( [UInteractiveToolManager](API\Runtime\InteractiveToolsFramework\UInteractiveToolManager) * ToolManager, [AActor](API\Runtime\Engine\GameFramework\AActor) * Actor ) }


description: Add the geometry selection elements corresponding to the given Selection to Elements. This function does not reset Elements before adding elements. If the Selection has Polygroup topology then use the given Topology to accumulate elements if it isn't null, otherwise compute a FGroupTopology from SourceMesh.TriangleGroups and use that to accumulate elements. If the Selection has Triangle topology then the Topology argument is ignored. Return false if there was an error and true otherwise

code: namespace ToolSelectionUtil { bool ToolSelectionUtil::AccumulateSelectionElements ( [UE::Geometry::FGeometrySelectionElements](API\Plugins\DynamicMesh\Selections\FGeometrySelectionElements) & Elements, const [UE::Geometry::FGeometrySelection](API\Plugins\DynamicMesh\Selections\FGeometrySelection) & Selection, const [UE::Geometry::FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & SourceMesh, const [UE::Geometry::FGroupTopology](API\Plugins\DynamicMesh\FGroupTopology) * Topology, const FTransform * ApplyTransform, bool bMapFacesToEdges ) }


code: void Initialize ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * MeshIn, FTransform3d TargetTransformIn, [UWorld](API\Runtime\Engine\Engine\UWorld) * WorldIn, const [UE::Geometry::FMeshBoundaryLoops](API\Runtime\GeometryCore\FMeshBoundaryLoops) * BoundaryLoopsIn, [TFunction](API\Runtime\Core\GenericPlatform\TFunction)< [FDynamicMeshAABBTree3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMeshAABBTree3) *()> GetSpatialSourceFuncIn )


description:
Hover API Update the hover highlight based on the hit elements at the given World Ray
true if something was hit and is now being hovered

code: virtual bool UpdateHighlight ( const FRay & WorldRay )


description:
Selection API Intersect the ray with the mesh and update the selection based on the hit element, modifier states, etc
true if selection was modified

code: virtual bool UpdateSelection ( const FRay & WorldRay, FVector3d & LocalHitPositionOut, FVector3d & LocalHitNormalOut )


className: UBoundarySelectionMechanic


description: Clear the active selection. This is undoable, ie aFPersistentMeshSelectionChangewill be emitted

code: virtual void ClearActiveSelection()


description: true if there is an active selection

code: virtual bool HasActiveSelection()


code: virtual void Initialize ( [TObjectPtr](API\Runtime\Core\Delegates\TObjectPtr)< [UInteractiveToolsContext](API\Runtime\InteractiveToolsFramework\UInteractiveToolsContext) > ToolsContext )


description: the active selection


code: virtual void OnSelectionModified()


code: virtual void SetNewActiveSelectionInternal ( [UDEPRECATED_PersistentMeshSelection](API\Plugins\ModelingComponents\Selection\UDEPRECATED_PersistentMeshSelect-) * Selection )


description: Set a new active selection. This is undoable, ie aFPersistentMeshSelectionChangewill be emitted

code: virtual void SetNewActiveSelection ( [UDEPRECATED_PersistentMeshSelection](API\Plugins\ModelingComponents\Selection\UDEPRECATED_PersistentMeshSelect-) * Selection )


code: virtual void Shutdown()


description: StoredMeshSelectionUtil.h contains various utility functions to simplify usage of this class, those functions are preferable to directly using the Manager.

code: [UCLASS](Programming/UnrealArchitecture/Reference/Classes#classdeclaration)(Deprecated) class UDEPRECATED_PersistentMeshSelectionManager : public [UObject](API\Runtime\CoreUObject\UObject\UObject)

ParentContext

type: TObjectPtr<UIn...

SelectionDisplay

type: TObjectPtr<UPr...


description: Initializes a FGroupTopologySelection using the current contents of the object. The topology must already be initialized.

code: void ExtractIntoSelectionObject ( const [FGroupTopology](API\Plugins\DynamicMesh\FGroupTopology) & TopologyIn, [FGroupTopologySelection](API\Plugins\DynamicMesh\FGroupTopologySelection) & SelectionOut ) const


description: the internal Selection data

code: const [FGenericMeshSelection](API\Plugins\ModelingComponents\Selection\FGenericMeshSelection) & GetSelection() const


description: true if the selection is empty

code: bool IsEmpty() const


description: Replace the internal Selection data

code: void SetSelection ( const [FGenericMeshSelection](API\Plugins\ModelingComponents\Selection\FGenericMeshSelection) & SelectionIn )


code: [UPrimitiveComponent](API\Runtime\Engine\Components\UPrimitiveComponent) * GetTargetComponent() const


description: Resets the contents of the object using the given selection.

code: void SetSelection ( const FGroupTopology & TopologyIn, const FGroupTopologySelection & SelectionIn, const FCompactMaps * CompactMaps )


description: UPersistentMeshSelection is aUObjectwrapper for aFGenericMeshSelection

code: [UCLASS](Programming/UnrealArchitecture/Reference/Classes#classdeclaration)(Deprecated) class UDEPRECATED_PersistentMeshSelection : public [UObject](API\Runtime\CoreUObject\UObject\UObject)


code: void Initialize ( [UPolygonSelectionMechanic](API\Plugins\ModelingComponents\Selection\UPolygonSelectionMechanic) * MechanicIn )


description: DEPRECATED: UseUMeshTopologySelectionMechanicProperties.


description: Clear any currently-active stored Tool selection

code: namespace UE { namespace Geometry { void UE::Geometry::ClearActiveToolSelection ( [UInteractiveToolManager](API\Runtime\InteractiveToolsFramework\UInteractiveToolManager) * ToolManager ) } }


description: Computes the axis aligned bounding box from a given triangle region of interest, useful to compute a DepthBias

code: namespace UE { namespace Geometry { [FAxisAlignedBox3d](API\Runtime\GeometryCore\FAxisAlignedBox3d) UE::Geometry::ComputeBoundsFromTriangleROI ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & Mesh, const [TArray](API\Runtime\Core\Containers\TArray)< int32 > & TriangleROI, const FTransform3d * Transform ) } }


description: Computes the axis aligned bounding box from a given vertex region of interest, useful to compute a DepthBias

code: namespace UE { namespace Geometry { [FAxisAlignedBox3d](API\Runtime\GeometryCore\FAxisAlignedBox3d) UE::Geometry::ComputeBoundsFromVertexROI ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & Mesh, const [TArray](API\Runtime\Core\Containers\TArray)< int32 > & VertexROI, const FTransform3d * Transform ) } }


description:
Remove any existingUDEPRECATED_PersistentMeshSelectionManagerfrom the ToolsContext's ContextObjectStore
true if the ContextObjectStore no longer has aUDEPRECATED_PersistentMeshSelectionManager(whether it was removed, or did not exist)

code: namespace UE { namespace Geometry { bool UE::Geometry::DeregisterPersistentMeshSelectionManager ( [UInteractiveToolsContext](API\Runtime\InteractiveToolsFramework\UInteractiveToolsContext) * ToolsContext ) } }


description:
Find an existingUDEPRECATED_PersistentMeshSelectionManagerin the ToolsContext's ContextObjectStore
SelectionManager pointer or nullptr if not found

code: namespace UE { namespace Geometry { [UDEPRECATED_PersistentMeshSelectionManager](API\Plugins\ModelingComponents\Selection\UDEPRECATED_Pers-) * UE::Geometry::FindPersistentMeshSelectionManager ( [UInteractiveToolManager](API\Runtime\InteractiveToolsFramework\UInteractiveToolManager) * ToolManager ) } }


description:
Find an availableFGeometrySelectionfor the given ToolTarget (via theUGeometrySelectionManagerin the ContextObjectStore)
true if a non-empty selection was found

code: namespace UE { namespace Geometry { bool UE::Geometry::GetCurrentGeometrySelectionForTarget ( [UInteractiveToolManager](API\Runtime\InteractiveToolsFramework\UInteractiveToolManager) * ToolManager, [UToolTarget](API\Runtime\InteractiveToolsFramework\ToolTargets\UToolTarget) * Target, [FGeometrySelection](API\Plugins\DynamicMesh\Selections\FGeometrySelection) & SelectionOut ) } }


description:
Given aFToolBuilderState, find an availableFGeometrySelectionfor the given ToolTarget (via theUGeometrySelectionManagerin the ContextObjectStore)
true if a non-empty selection was found

code: namespace UE { namespace Geometry { bool UE::Geometry::GetCurrentGeometrySelectionForTarget ( const [FToolBuilderState](API\Runtime\InteractiveToolsFramework\FToolBuilderState) & SceneState, [UToolTarget](API\Runtime\InteractiveToolsFramework\ToolTargets\UToolTarget) * Target, [FGeometrySelection](API\Plugins\DynamicMesh\Selections\FGeometrySelection) & SelectionOut ) } }


description:
Given aFToolBuilderState, determine if an Input Selection exists that is applicable to the ToolTarget
Selection if found, or nullptr if not

code: namespace UE { namespace Geometry { const [UDEPRECATED_PersistentMeshSelection](API\Plugins\ModelingComponents\Selection\UDEPRECATED_PersistentMeshSelect-) * UE::Geometry::GetCurrentToolInputSelection ( const [FToolBuilderState](API\Runtime\InteractiveToolsFramework\FToolBuilderState) & SceneState, [UToolTarget](API\Runtime\InteractiveToolsFramework\ToolTargets\UToolTarget) * Target ) } }


description:
Convert the given Seletion to a list of Triangles of the specified Mesh. This will attempt to convert the different selection types represented by PersistentMeshSelection (eg group topology, UV island, etc) to triangle indices in TrianglesOut
true if a list of triangles could be created.

code: namespace UE { namespace Geometry { bool UE::Geometry::GetStoredSelectionAsTriangles ( const [UDEPRECATED_PersistentMeshSelection](API\Plugins\ModelingComponents\Selection\UDEPRECATED_PersistentMeshSelect-) * Selection, const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & Mesh, [TArray](API\Runtime\Core\Containers\TArray)< int32 > & TrianglesOut ) } }


description: See other overload for more details.

code: namespace UE { namespace Geometry { [FIndex2i](API\Runtime\GeometryCore\FIndex2i) UE::Geometry::GetGroupEdgeRepresentativeVerts ( const [FGroupTopology](API\Plugins\DynamicMesh\FGroupTopology) & TopologyIn, int GroupEdgeID ) } }


description: This is basically just identifying the group edge with a specific component edge, but using vids instead of an edge id makes it a bit easier to apply a compact mapping if the mesh was compacted, and helps the representative survive translation to/from a mesh description in cases of compaction.

code: namespace UE { namespace Geometry { [FIndex2i](API\Runtime\GeometryCore\FIndex2i) UE::Geometry::GetGroupEdgeRepresentativeVerts ( const [FGroupTopology](API\Plugins\DynamicMesh\FGroupTopology) & TopologyIn, int GroupEdgeID, const [FCompactMaps](API\Runtime\GeometryCore\Util\FCompactMaps) & CompactMaps ) } }


description: true if there is currently any geometry selection available in the SceneState

code: namespace UE { namespace Geometry { bool UE::Geometry::HaveAvailableGeometrySelection ( const [FToolBuilderState](API\Runtime\InteractiveToolsFramework\FToolBuilderState) & SceneState ) } }


description: Initialize the geometry selection preview geometry. Call this in your tool Setup function

code: namespace UE { namespace Geometry { void UE::Geometry::InitializeGeometrySelectionVisualization ( [UPreviewGeometry](API\Plugins\ModelingComponents\Drawing\UPreviewGeometry) * PreviewGeom, [UGeometrySelectionVisualizationProperties](API\Plugins\ModelingComponents\PropertySets\UGeometrySelecti-) * Settings, const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & SourceMesh, const [FGeometrySelection](API\Plugins\DynamicMesh\Selections\FGeometrySelection) & Selection, const [FGroupTopology](API\Plugins\DynamicMesh\FGroupTopology) * GroupTopology, const [FGeometrySelection](API\Plugins\DynamicMesh\Selections\FGeometrySelection) * TriangleVertexSelection, const [TArray](API\Runtime\Core\Containers\TArray)< int > * TriangleROI, const FTransform * ApplyTransform ) } }


description:
The functions below are helper functions that simplify usage of aUDEPRECATED_PersistentMeshSelectionManagerthat is registered as a ContextStoreObject in an InteractiveToolsContext If one does not already exist, create a new instance ofUDEPRECATED_PersistentMeshSelectionManagerand add it to the ToolsContext's ContextObjectStore
true if the ContextObjectStore now has aUDEPRECATED_PersistentMeshSelectionManager(whether it already existed, or was created)

code: namespace UE { namespace Geometry { bool UE::Geometry::RegisterPersistentMeshSelectionManager ( [UInteractiveToolsContext](API\Runtime\InteractiveToolsFramework\UInteractiveToolsContext) * ToolsContext ) } }


description:
Allow a Tool to return an "output"FGeometrySelectionfor the given ToolTarget (presumably on Tool Shutdown) Target must be an "active" selection target in the currentUGeometrySelectionManager. This function will emit a selection-change transaction and should in most cases be nested inside a tool-shutdown transaction.
true if the selection could be set, ie Target was valid

code: namespace UE { namespace Geometry { bool UE::Geometry::SetToolOutputGeometrySelectionForTarget ( [UInteractiveTool](API\Runtime\InteractiveToolsFramework\UInteractiveTool) * Tool, [UToolTarget](API\Runtime\InteractiveToolsFramework\ToolTargets\UToolTarget) * Target, const [FGeometrySelection](API\Plugins\DynamicMesh\Selections\FGeometrySelection) & OutputSelection ) } }


description: Update the geometry selection preview geometry according to Settings. Call this in your tool OnTick function

code: namespace UE { namespace Geometry { void UE::Geometry::UpdateGeometrySelectionVisualization ( [UPreviewGeometry](API\Plugins\ModelingComponents\Drawing\UPreviewGeometry) * PreviewGeom, [UGeometrySelectionVisualizationProperties](API\Plugins\ModelingComponents\PropertySets\UGeometrySelecti-) * Settings ) } }