className: FMeshRenderDecomposition

description: FMeshRenderDecompositionrepresents a decomposition of a mesh into "chunks" of triangles, with associated materials. This is passed to the rendering components to split a mesh into multiple RenderBuffers, for more efficient updating.

code: class FMeshRenderDecomposition

Groups

type: TArray<TUnique...

TriangleToGroupMap

description: Mapping from TriangleID to Groups array index.


module: GeometryFramework

code: void ProcessMesh ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & Mesh, [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & OutRenderMesh )


code: virtual ~IRenderMeshPostProcessor()


className: IRenderMeshPostProcessor

description: Interface for a render mesh processor. Use this to process the Mesh stored inUDynamicMeshComponentbefore sending it off for rendering. NOTE: This is called whenever the Mesh is updated and before rendering, so performance matters.

code: class IRenderMeshPostProcessor


description: Apply a vertex deformation change to the internal mesh (implementsIMeshVertexCommandChangeTarget)

code: virtual void ApplyChange ( const [FMeshVertexChange](API\Runtime\GeometryFramework\Changes\FMeshVertexChange) * Change, bool bRevert )


description: Apply a general mesh change to the internal mesh (implementsIMeshCommandChangeTarget)

code: virtual void ApplyChange ( const [FMeshChange](API\Runtime\GeometryFramework\Changes\FMeshChange) * Change, bool bRevert )


description: Apply a full mesh replacement change to the internal mesh (implementsIMeshReplacementCommandChangeTarget)

code: virtual void ApplyChange ( const [FMeshReplacementChange](API\Runtime\GeometryFramework\Changes\FMeshReplacementChange) * Change, bool bRevert )


description: Apply a transform to the mesh

code: virtual void ApplyTransform ( const FTransform3d & Transform, bool bInvert )


description: Clear any active override render material


description: Clear any active secondary render material


className: DefaultVertexColorMaterial

code: static [UMaterialInterface](API\Runtime\Engine\Materials\UMaterialInterface) * DefaultVertexColorMaterial = nullptr;


className: DefaultWireframeMaterial

description: These Materials are used by the render thread. Once the engine is running they should not be modified without using SetDefaultWireframeMaterial/SetDefaultVertexColorMaterial

code: static [UMaterialInterface](API\Runtime\Engine\Materials\UMaterialInterface) * DefaultWireframeMaterial = nullptr;


description: Subclass must implement this to return scene proxy if available, or nullptr


description: active Color Override mode

code: virtual EDynamicMeshComponentColorOverrideMode GetColorOverrideMode() const


description: active Color used for Constant Color Override Mode

code: virtual [FColor](API\Runtime\Core\Math\FColor) GetConstantOverrideColor() const


description: the childUDynamicMesh

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


description: true if raytracing support is currently enabled

code: virtual bool GetEnableRaytracing() const


description: true if wireframe rendering pass is enabled

code: virtual bool GetEnableWireframeRenderPass() const


code: virtual bool GetFlatShadingEnabled() const


description:
Returns the material used by the element at the specified index
the material used by the indexed element of this mesh.

code: virtual [UMaterialInterface](API\Runtime\Engine\Materials\UMaterialInterface) * GetMaterial ( int32 ElementIndex ) const


description: Accesses the scene relevance information for the materials applied to the mesh. Valid from game thread only.

code: virtual [FMaterialRelevance](API\Runtime\Engine\Materials\FMaterialRelevance) GetMaterialRelevance ( [ERHIFeatureLevel::Type](API\Runtime\RHI\ERHIFeatureLevel__Type) InFeatureLevel ) const


description:
Avoid usage of this function, access viaGetDynamicMesh()instead
pointer to internal mesh

code: virtual [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * GetMesh()


description: pointer to internal mesh

code: virtual const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * GetMesh() const


description: Standard Component interfaces

code: virtual int32 GetNumMaterials() const


description: true if secondary buffers are currently set to be visible

code: virtual bool GetSecondaryBuffersVisibility() const


description: active override render material for the given MaterialIndex

code: virtual [UMaterialInterface](API\Runtime\Engine\Materials\UMaterialInterface) * GetOverrideRenderMaterial ( int MaterialIndex ) const


description: active secondary render material

code: virtual [UMaterialInterface](API\Runtime\Engine\Materials\UMaterialInterface) * GetSecondaryRenderMaterial() const


code: virtual bool GetShadowsEnabled() const


description: Retrieves the materials used in this component

code: virtual void GetUsedMaterials ( [TArray](API\Runtime\Core\Containers\TArray)< [UMaterialInterface](API\Runtime\Engine\Materials\UMaterialInterface) * > & OutMaterials, bool bGetDebugMaterials ) const


description: active Color Override mode

code: virtual EDynamicMeshVertexColorTransformMode GetVertexColorSpaceTransformMode() const


code: virtual bool GetViewModeOverridesEnabled() const


description: true if an override render material is currently enabled for the given MaterialIndex

code: virtual bool HasOverrideRenderMaterial ( int k ) const


description: true if a secondary render material is set

code: virtual bool HasSecondaryRenderMaterial() const


description: Subclass must implement this to notify allocated proxies of updated materials

code: virtual void NotifyMaterialSetUpdated()


description: Call this if you update the mesh viaGetMesh()

code: virtual void NotifyMeshUpdated()


code: virtual void OnRenderingStateChanged ( bool bForceImmedateRebuild )


description: Called when a property on this object has been modified externally

code: virtual void PostEditChangeProperty ( [FPropertyChangedEvent](API\Runtime\CoreUObject\UObject\FPropertyChangedEvent) & PropertyChangedEvent )


description: Allow external code to read the internal mesh.

code: virtual void ProcessMesh ( [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< void(const [UE::Geometry::FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) &)> ProcessFunc ) const


description: Configure the active Color Override

code: virtual void SetColorOverrideMode ( EDynamicMeshComponentColorOverrideMode NewMode )


description: Configure the Color used with Constant Color Override Mode

code: virtual void SetConstantOverrideColor ( [FColor](API\Runtime\Core\Math\FColor) NewColor )


description: Set the vertex color material used for all BaseDynamicMeshComponent-derived Components

code: static void SetDefaultVertexColorMaterial ( [UMaterialInterface](API\Runtime\Engine\Materials\UMaterialInterface) * Material )


description: Class-wide Default Materials used for Wireframe and VertexColor display mode. These are configured for the Editor when the module loads, defaulting to built-in Engine wireframe and vertex color materials. Note that the ModelingComponents module in the MeshModelingToolset plugin (usually enabled in the UE Editor) will set a new VertexColor material from that plugins Content. Client code can further configure these materials as necessary using the static functions below. Set the wireframe material used for all BaseDynamicMeshComponent-derived Components

code: static void SetDefaultWireframeMaterial ( [UMaterialInterface](API\Runtime\Engine\Materials\UMaterialInterface) * Material )


description: Enable/Disable raytracing support. This is an expensive call as it flushes the rendering queue and forces an immediate rebuild of the SceneProxy.

code: virtual void SetEnableRaytracing ( bool bSetEnabled )


code: virtual void SetEnableFlatShading ( bool bEnable )


description: Configure whether wireframe rendering is enabled or not

code: virtual void SetEnableWireframeRenderPass ( bool bEnable )


description:
Changes the material applied to an element of the mesh.
the material used by the indexed element of this mesh.

code: virtual void SetMaterial ( int32 ElementIndex, [UMaterialInterface](API\Runtime\Engine\Materials\UMaterialInterface) * Material )


description: UBaseDynamicMeshComponentAPI. Subclasses must implement these functions initialize the internal mesh from a DynamicMesh

code: virtual void SetMesh ( [UE::Geometry::FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) && MoveMesh )


code: virtual void SetNumMaterials ( int32 NumMaterials )


description: Override rendering material support. If an Override material is set, then it will be used during drawing of all mesh buffers except Secondary buffers. Set an active override render material. This should replace all materials during rendering.

code: virtual void SetOverrideRenderMaterial ( [UMaterialInterface](API\Runtime\Engine\Materials\UMaterialInterface) * Material )


description: Show/Hide the secondary triangle buffers. Does not invalidate SceneProxy.

code: virtual void SetSecondaryBuffersVisibility ( bool bSetVisible )


description: Secondary Render Buffers support. This requires implementation in subclasses. It allows a subset of the mesh triangles to be moved to a separate set of render buffers, which can then have a separate material (eg to highlight faces), or be shown/hidden independently. Set an active secondary render material.

code: virtual void SetSecondaryRenderMaterial ( [UMaterialInterface](API\Runtime\Engine\Materials\UMaterialInterface) * Material )


description: API for changing Rendering settings. Although some of these settings are available publicly on the Component (in some cases as public members), generally changing them requires more complex Rendering invalidation.

code: virtual void SetShadowsEnabled ( bool bEnabled )


description: Configure the active Color Space Transform Mode

code: virtual void SetVertexColorSpaceTransformMode ( EDynamicMeshVertexColorTransformMode NewMode )


code: virtual void SetViewModeOverridesEnabled ( bool bEnabled )


code: UBaseDynamicMeshComponent ( const [FObjectInitializer](API\Runtime\CoreUObject\UObject\FObjectInitializer) & ObjectInitializer )


className: UBaseDynamicMeshComponent

description: UBaseDynamicMeshComponentis a base interface for aUMeshComponentbased on aUDynamicMesh.

BaseMaterials

type: TArray<TObject...

bDrawSecondaryBuffers

type: bool

bEnableFlatShading

description: Flat shading support.

bEnableRaytracing

description: Raytracing support.

bEnableViewModeOverrides

description: This flag controls whether Editor View Mode Overrides are enabled for this mesh.

bExplicitShowWireframe

description: Built-in Wireframe-on-Shaded Rendering support.

ColorMode

type: EDynamicMeshCom...

description: Built-in Color Rendering Support.

ColorSpaceMode

type: EDynamicMeshVer...

description: Color Space Transform that will be applied to the colors stored in the DynamicMesh Attribute Color Overlay when constructing render buffers.

ConstantColor

type: FColor

description: Constant Color used when Override Color Mode is set to Constant

OverrideRenderMaterial

type: TObjectPtr<UMa...

WireframeColor

type: FLinearColor


description: Change Support. These changes are primarily used for Undo/Redo, however there is no strict assumption about this internally, objects of these change types could also be used to perform more structured editing. (Note that these functions simply forward the change events to the childUDynamicMesh, which will post a mesh-change event that Apply a vertex deformation change to the mesh

code: virtual void ApplyChange ( const [FMeshVertexChange](API\Runtime\GeometryFramework\Changes\FMeshVertexChange) * Change, bool bRevert )


description: Apply a general mesh change to the mesh

code: virtual void ApplyChange ( const [FMeshChange](API\Runtime\GeometryFramework\Changes\FMeshChange) * Change, bool bRevert )


description: Apply a mesh replacement change to mesh

code: virtual void ApplyChange ( const [FMeshReplacementChange](API\Runtime\GeometryFramework\Changes\FMeshReplacementChange) * Change, bool bRevert )


description: Apply transform to internal mesh. In some cases this can be more efficient than a general edit.

code: virtual void ApplyTransform ( const FTransform3d & Transform, bool bInvert )


description: Called before destroying the object. This is called immediately upon deciding to destroy the object, to allow the object to begin an asynchronous cleanup process.

code: virtual void BeginDestroy()


description: Calculate the bounds of the component. Default behavior is a bounding box/sphere of zero size.

code: virtual FBoxSphereBounds CalcBounds ( const FTransform & LocalToWorld ) const


description: Clear the simple collision shapes associated with this mesh component

code: virtual void ClearSimpleCollisionShapes ( bool bUpdateCollision )


description: Clear an active triangle color function if one exists, and update the mesh

code: virtual void ClearTriangleColorFunction ( EDynamicMeshComponentRenderUpdateMode UpdateMode )


description: Clear an active VertexColor Remapping function if one exists, and update the mesh

code: virtual void ClearVertexColorRemappingFunction ( EDynamicMeshComponentRenderUpdateMode UpdateMode )


description: Set new list of Materials for the Mesh. Dynamic Mesh Component does not have Slot Names, so the size of the Material Set should be the same as the number of different Material IDs on the mesh MaterialID attribute

code: void ConfigureMaterialSet ( const [TArray](API\Runtime\Core\Containers\TArray)< [UMaterialInterface](API\Runtime\Engine\Materials\UMaterialInterface) * > & NewMaterialSet )


description:
Interface for checking if the implementing objects contains triangle mesh collision data
true if the implementing object contains triangle mesh data, false otherwise

code: virtual bool ContainsPhysicsTriMeshData ( bool InUseAllTriData ) const


code: virtual [UBodySetup](API\Runtime\Engine\PhysicsEngine\UBodySetup) * CreateBodySetupHelper()


description:
Creates a proxy to represent the primitive to the scene manager in the rendering thread.
The proxy object.

code: virtual [FPrimitiveSceneProxy](API\Runtime\Engine\FPrimitiveSceneProxy) * CreateSceneProxy()


description: Disable secondary triangle buffers. This invalidates the SceneProxy.


description: Allow external code to to edit the internal mesh.

code: virtual void EditMesh ( [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< void([UE::Geometry::FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) &)> EditFunc, EDynamicMeshComponentRenderUpdateMode UpdateMode )


description: Physics APIs calls SetComplexAsSimpleCollisionEnabled(true, true)

code: void EnableComplexAsSimpleCollision()


description: Support for Secondary triangle index buffers. When this is configured, then triangles identified by the filtering predicate function will be placed in a second set of RenderBuffers at the SceneProxy level. This can be combined with the SecondaryRenderMaterial support inUBaseDynamicMeshComponentto draw that triangle set with a different material, to efficiently accomplish UI features like highlighting a subset of mesh triangles. If Secondary triangle buffers are enabled, then we will filter triangles that pass the given predicate function into a second index buffer. These triangles will be drawn with the Secondary render material that is set in the BaseDynamicMeshComponent. Calling this function invalidates the SceneProxy.

code: virtual void EnableSecondaryTriangleBuffers ( [TUniqueFunction](API\Runtime\Core\Templates\TUniqueFunction)< bool(const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) *, int32)> SecondaryTriFilterFunc )


description: Call this instead ofNotifyMeshUpdated()if you have only updated the vertex colors (or triangle color function). This function will update the existing RenderProxy buffers if possible

code: void FastNotifyColorsUpdated()


description: Call this instead ofNotifyMeshUpdated()if you have only updated secondary triangle sorting. This function will update the existing buffers if possible, without rebuilding entire RenderProxy.


description: Call this instead ofNotifyMeshUpdated()if you have only updated the vertex positions (and possibly some attributes). This function will update the existing RenderProxy buffers if possible

code: void FastNotifyPositionsUpdated ( bool bNormals, bool bColors, bool bUVs )


description: This function updates vertex positions/attributes of existing SceneProxy render buffers if possible, for the given triangles. If aFMeshRenderDecompositionhas not been explicitly set, call is forwarded toFastNotifyVertexAttributesUpdated()

code: void FastNotifyTriangleVerticesUpdated ( const [TArray](API\Runtime\Core\Containers\TArray)< int32 > & Triangles, EMeshRenderAttributeFlags UpdatedAttributes )


code: void FastNotifyTriangleVerticesUpdated ( const [TSet](API\Runtime\Core\Containers\TSet)< int32 > & Triangles, EMeshRenderAttributeFlags UpdatedAttributes )


description:
If a Decomposition is set on this Component, and everything is currently valid (proxy/etc), precompute the set of buffers that will be modified, as well as the bounds of the modified region. These are both computed in parallel. UseFastNotifyTriangleVerticesUpdated_ApplyPrecompute()with the returned future to apply this precomputation.
a future that will (eventually) return true if the precompute is OK, and (immediately) false if it is not

code: [TFuture](API\Runtime\Core\Async\TFuture)< bool > FastNotifyTriangleVerticesUpdated_TryPrecompute ( const [TArray](API\Runtime\Core\Containers\TArray)< int32 > & Triangles, [TArray](API\Runtime\Core\Containers\TArray)< int32 > & UpdateSetsOut, [UE::Geometry::FAxisAlignedBox3d](API\Runtime\GeometryCore\FAxisAlignedBox3d) & BoundsOut )


description: This function updates vertex positions/attributes of existing SceneProxy render buffers if possible, for the given triangles. The assumption is thatFastNotifyTriangleVerticesUpdated_TryPrecompute()was used to get the Precompute future, this function will Wait() until it is done and then use the UpdateSets and UpdateSetBounds that were computed (must be the same variables passed to FastNotifyTriangleVerticesUpdated_TryPrecompute). If the Precompute future returns false, then we forward the call toFastNotifyTriangleVerticesUpdated(), which will do more work.

code: void FastNotifyTriangleVerticesUpdated_ApplyPrecompute ( const [TArray](API\Runtime\Core\Containers\TArray)< int32 > & Triangles, EMeshRenderAttributeFlags UpdatedAttributes, [TFuture](API\Runtime\Core\Async\TFuture)< bool > & Precompute, const [TArray](API\Runtime\Core\Containers\TArray)< int32 > & UpdateSets, const [UE::Geometry::FAxisAlignedBox3d](API\Runtime\GeometryCore\FAxisAlignedBox3d) & UpdateSetBounds )


description: Call this instead ofNotifyMeshUpdated()if you have only updated the vertex uvs. This function will update the existing RenderProxy buffers if possible

code: void FastNotifyUVsUpdated()


description: Call this instead ofNotifyMeshUpdated()if you have only updated the vertex positions/attributes This function will update the existing RenderProxy buffers if possible, rather than create new ones.

code: void FastNotifyVertexAttributesUpdated ( EMeshRenderAttributeFlags UpdatedAttributes )


className: FMeshVerticesModified

description: This delegate fires when the mesh vertices have been changed via anFMeshVertexChange

code: typedef TMulticastDelegate_ThreeParams< void, [UDynamicMeshComponent](API\Runtime\GeometryFramework\Components\UDynamicMeshComponent) *, const [FMeshVertexChange](API\Runtime\GeometryFramework\Changes\FMeshVertexChange) *, bool > FMeshVerticesModified


className: FComponentChildrenChangedDelegate

description: Support for Component attachment change notifications via delegates. Standard UE Actor/Component hierarchy does not generally provide these capabilities, but in some use cases (eg procedural mesh Actors) we need to know things like when the Component set inside an Actor is modified.

code: typedef TMulticastDelegate_TwoParams< void, [USceneComponent](API\Runtime\Engine\Components\USceneComponent) *, bool > FComponentChildrenChangedDelegate


description: AutoCalculated Tangent Set, which may require that they be recomputed, or nullptr if not enabled/available

code: const [UE::Geometry::FMeshTangentsf](API\Runtime\GeometryCore\DynamicMesh\FMeshTangentsf) * GetAutoCalculatedTangents()


description: Once async physics cook is done, create needed state

code: virtual void FinishPhysicsAsyncCook ( bool bSuccess, [UBodySetup](API\Runtime\Engine\PhysicsEngine\UBodySetup) * FinishedBodySetup )


description: Call this instead ofNotifyMeshUpdated()if you have only updated the vertex attributes (but not positions). This function will update the existing RenderProxy buffers if possible, rather than create new ones.

code: void FastNotifyVertexAttributesUpdated ( bool bNormals, bool bColors, bool bUVs )


description: current BodySetup for this Component, or nullptr if it does not exist

code: virtual const [UBodySetup](API\Runtime\Engine\PhysicsEngine\UBodySetup) * GetBodySetup() const


description: Subclass must implement this to return scene proxy if available, or nullptr


description:
Return the BodySetup to use for this PrimitiveComponent (single body case)
BodySetup for this Component. A new BodySetup will be created if one does not exist.

code: virtual [UBodySetup](API\Runtime\Engine\PhysicsEngine\UBodySetup) * GetBodySetup()


description: the childUDynamicMesh

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


description: current render proxy, if valid, otherwise nullptr


description: This function is passed via lambda to the RenderProxy when BaseDynamicMeshComponent::ColorMode == Polygroups

code: [FColor](API\Runtime\Core\Math\FColor) GetGroupColor ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * Mesh, int TriangleID ) const


description: true if InvalidateProxyOnChange is enabled (default)


description:
Avoid usage of this function, access viaGetDynamicMesh()instead
pointer to internal mesh

code: virtual const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * GetMesh() const


description:
avoid usage of this function, access viaGetDynamicMesh()instead
pointer to internal mesh

code: virtual [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * GetMesh()


description:
Interface for retrieving triangle mesh collision data from the implementing object
true if successful, false if unable to successfully fill in data structure

code: virtual bool GetPhysicsTriMeshData ( struct [FTriMeshCollisionData](API\Runtime\PhysicsCore\FTriMeshCollisionData) * CollisionData, bool InUseAllTriData )


description: The SceneProxy should call these functions to get the post-processed RenderMesh. (SeeIRenderMeshPostProcessor.)

code: virtual [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * GetRenderMesh()


code: virtual const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * GetRenderMesh() const


code: const [FKAggregateGeom](API\Runtime\Engine\PhysicsEngine\FKAggregateGeom) & GetSimpleCollisionShapes() const


description: This function is passed via lambda to the RenderProxy to be able to access TriangleColorFunc

code: [FColor](API\Runtime\Core\Math\FColor) GetTriangleColor ( const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * Mesh, int TriangleID )


description: true if a triangle color function is configured

code: virtual bool HasTriangleColorFunction()


description: true if a VertexColor Remapping function is configured


code: virtual void InvalidatePhysicsData()


description: This function marks the auto tangents as dirty, they will be recomputed before they are used again


description: This is called to tell our RenderProxy about modifications to the material set. We need to pass this on for things like material validation in the Editor.

code: virtual void NotifyMaterialSetUpdated()


description: You must use this function if the mesh triangulation has been modified, or if polygroups or material assignments have been changed, or if Normal/UV/Color topology has changed (ie new split-vertices have been introduced). If only vertex attribute values (position, normals, UVs, colors) have been modified, then Notify Vertex Attributes Updated can be used to do a faster update.

code: virtual void NotifyMeshModified()


description: it is invalid to call this function if (1) the mesh triangulation has also been changed, (2) triangle MaterialIDs have been changed, or (3) any attribute overlay (normal, color, UV) topology has been modified, ie split-vertices have been added/removed. Behavior of this function is undefined in these cases and may crash. If you are unsure, use Notify Mesh Updated.

code: virtual void NotifyMeshVertexAttributesModified ( bool bPositions, bool bNormals, bool bUVs, bool bColors )


description: RenderBuffer Update API. These functions can be used by external code (and internally in some places) to tell the Component that the Mesh data has been modified in some way, and that the RenderBuffers in the RenderProxy need to be updated (or rebuilt entirely). On large meshes a full rebuild is expensive, so there are quite a few variants that can be used to minimize the amount of data updated in different situations. Call this if you update the mesh viaGetMesh(). This will destroy the existing RenderProxy and create a new one.

code: virtual void NotifyMeshUpdated()


description: Called after a child scene component is attached to this component. Note: Do not change the attachment state of the child during this call.

code: virtual void OnChildAttached ( [USceneComponent](API\Runtime\Engine\Components\USceneComponent) * ChildComponent )


description: Called whenever internal MeshObject is modified, fires OnMeshChanged and OnMeshVerticesChanged above

code: void OnMeshObjectChanged ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * ChangedMeshObject, [FDynamicMeshChangeInfo](API\Runtime\GeometryFramework\FDynamicMeshChangeInfo) ChangeInfo )


description: Called after a child scene component is detached from this component. Note: Do not change the attachment state of the child during this call.

code: virtual void OnChildDetached ( [USceneComponent](API\Runtime\Engine\Components\USceneComponent) * ChildComponent )


description: Called when a property on this object has been modified externally

code: virtual void PostEditChangeProperty ( [FPropertyChangedEvent](API\Runtime\CoreUObject\UObject\FPropertyChangedEvent) & PropertyChangedEvent )


description: Do any object-specific cleanup required immediately after loading an object. This is not called for newly-created objects, and by default will always execute on the game thread.

code: virtual void PostLoad()


description: Allow external code to read the internal mesh.

code: virtual void ProcessMesh ( [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< void(const [UE::Geometry::FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) &)> ProcessFunc ) const


code: virtual void RebuildPhysicsData()


description: This function is passed via lambda to the RenderProxy to be able to access VertexColorMappingFunc

code: void RemapVertexColor ( FVector4f & VertexColorInOut )


description: Handles reading, writing, and reference collecting usingFArchive. This implementation handles allFPropertyserialization, but can be overridden for native variables.

code: virtual void Serialize ( [FArchive](API\Runtime\Core\Serialization\FArchive) & Ar )


description: Fully invalidate all rendering data for this Component. Current Proxy will be discarded, Bounds and possibly Tangents recomputed, etc

code: void ResetProxy()


description: Set new BodySetup for this Component.

code: virtual void SetBodySetup ( [UBodySetup](API\Runtime\Engine\PhysicsEngine\UBodySetup) * NewSetup )


description: Set value of bDeferCollisionUpdates, when enabled, collision is not automatically recomputed each time the mesh changes.

code: void SetDeferredCollisionUpdatesEnabled ( bool bEnabled, bool bImmediateUpdate )


description: If bEnabled=true, sets bEnableComplexCollision=true and CollisionType=CTF_UseComplexAsSimple If bEnabled=true, sets bEnableComplexCollision=false and CollisionType=CTF_UseDefault

code: void SetComplexAsSimpleCollisionEnabled ( bool bEnabled, bool bImmediateUpdate )


description: Support for a Render Decomposition, which is basically a segmentation of the mesh triangles into subsets which will be turned into separate RenderBuffers in the Render Proxy. If this is configured, then various of the FastNotifyXYZUpdated() functions above will only need to rebuild the RenderBuffers that include affected triangles. TheFMeshRenderDecompositionimplementation has various options for building decompositions based on material, spatial clustering, etc. Configure a decomposition of the mesh, which will result in separate render buffers for each decomposition triangle group. Invalidates existing SceneProxy.

code: virtual void SetExternalDecomposition ( [TUniquePtr](API\Runtime\Core\Templates\TUniquePtr)< [FMeshRenderDecomposition](API\Runtime\GeometryFramework\Components\FMeshRenderDecomposition) > Decomposition )


description: If NewMesh is owned/Outer'd to another DynamicMeshComponent, a GLEO error may occur if that Component is serialized.

code: void SetDynamicMesh ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * NewMesh )


description: When aFMeshChangeorFMeshVertexChangeis applied, by default we currently fully invalidate the render proxy. However in certain realtime situations (eg like Sculpting tools) it can be critical to undo/redo performance to do more optimized render data updates (eg using one of the FastXYZ functions above). To allow for that, the full proxy invalidation on change can be (temporarily!) disabled using this function.

code: void SetInvalidateProxyOnChangeEnabled ( bool bEnabled )


description: Initialize the internal mesh from a DynamicMesh

code: virtual void SetMesh ( [UE::Geometry::FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) && MoveMesh )


description: IRenderMeshPostProcessorSupport. If a RenderMesh Postprocessor is configured, then instead of directly passing the internal mesh to the RenderProxy, IRenderMeshPostProcessor::PostProcess is applied to populate the internal RenderMesh which is passed instead. This allows things like Displacement or Subdivision to be done on-the-fly at the rendering level (which is potentially more efficient). Add a render mesh processor, to be called before the mesh is sent for rendering.

code: virtual void SetRenderMeshPostProcessor ( [TUniquePtr](API\Runtime\Core\Templates\TUniquePtr)< [IRenderMeshPostProcessor](API\Runtime\GeometryFramework\Components\IRenderMeshPostProcessor) > Processor )


description: Update the simple collision shapes associated with this mesh component

code: virtual void SetSimpleCollisionShapes ( const struct [FKAggregateGeom](API\Runtime\Engine\PhysicsEngine\FKAggregateGeom) & AggGeom, bool bUpdateCollision )


description: Set whether or not to validate mesh batch materials against the component materials.

code: void SetSceneProxyVerifyUsedMaterials ( bool bState )


code: void SetTangentsType ( EDynamicMeshComponentTangentsMode NewTangentsType )


description: The bDeferCollisionUpdates property is a serialized Component setting that controls when collision is regenerated. However, in some cases where aUDynamicMeshis being programmatically edited (eg like a live deformation/etc), we want to defer collision updates during the user interaction, but not change the serialized property. In this case a non-serialized version of the flag can betemporarilyset via this function in C++.

code: void SetTransientDeferCollisionUpdates ( bool bEnabled )


description: Support for specifying per-triangle colors as vertex colors. This allows external code to dynamically override the vertex colors on the rendered mesh. The lambda that is passed is held for the lifetime of the Component and must remain valid. A Material that uses the vertex colors must be applied, otherwise setting this override will have no visible effect. If the colors change externally,FastNotifyColorsUpdated()can be used to do the minimal vertex buffer updates necessary in the RenderProxySet an active triangle color function if one exists, and update the mesh

code: virtual void SetTriangleColorFunction ( [TUniqueFunction](API\Runtime\Core\Templates\TUniqueFunction)< [FColor](API\Runtime\Core\Math\FColor)(const [FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) *, int)> TriangleColorFuncIn, EDynamicMeshComponentRenderUpdateMode UpdateMode )


description: Support for Vertex Color remapping/filtering. This allows external code to modulate the existing Vertex Colors on the rendered mesh. The remapping is only applied to FVector4f Color Overlay attribute buffers. The lambda that is passed is held for the lifetime of the Component and must remain valid. If the Vertex Colors are modified,FastNotifyColorsUpdated()can be used to do the minimal vertex buffer updates necessary in the RenderProxy Set an active VertexColor Remapping function if one exists, and update the mesh

code: virtual void SetVertexColorRemappingFunction ( [TUniqueFunction](API\Runtime\Core\Templates\TUniqueFunction)< void(FVector4f &)> ColorMapFuncIn, EDynamicMeshComponentRenderUpdateMode UpdateMode )


code: void UpdateAutoCalculatedTangents()


description: Force an update of the Collision/Physics data for this Component.

code: virtual void UpdateCollision ( bool bOnlyIfPending )


description: Recompute LocalBounds from the current Mesh

code: void UpdateLocalBounds()


className: UseDefaultTangentsType

description: Triangle-Vertex Tangents support. The default behavior is to use the provided external Tangents. If TangentsType == EDynamicMeshComponentTangentsMode::ExternallyProvided, the Tangent and Bitangent attributes of the FDynamicMesh3 AttributeSet are used at the SceneProxy level, the Component is not involved If TangentsType == EDynamicMeshComponentTangentsMode::AutoCalculated, the Tangents are computed internally using a fast MikkT approximation via FMeshTangentsf. They will be recomputed when the mesh is modified, however they arenotrecomputed when using the Fast Update functions above (in that caseInvalidateAutoCalculatedTangents()can be used to force recomputation) If TangentsType == EDynamicMeshComponentTangentsMode::NoTangents, the Component will not use Tangents, which will lead to incorrect rendering for any material with Normal Maps and some other shaders.

code: static constexpr EDynamicMeshComponentTangentsMode UseDefaultTangentsType = EDynamicMeshComponentTangentsMode::ExternallyProvided;


description:
Compute the maximum MaterialID on the DynamicMesh, and ensure that Material Slots match. Pass both arguments as false to just do a check.
true if at the end of this function, Material Slot Count == Max MaterialID

code: bool ValidateMaterialSlots ( bool bCreateIfMissing, bool bDeleteExtraSlots )


description: Do we want to create a negative version of this mesh

code: virtual bool WantsNegXTriMesh()


code: UDynamicMeshComponent ( const [FObjectInitializer](API\Runtime\CoreUObject\UObject\FObjectInitializer) & ObjectInitializer )


className: UDynamicMeshComponent

description: There is extensive support for partial updates to render buffers, customizing colors, internally decomposing the mesh into separate chunks for more efficient render updates, and support for attaching a 'Postprocessor' to generate a render mesh on-the-fly See comment sections below for details.

code: class UDynamicMeshComponent : public [UBaseDynamicMeshComponent](API\Runtime\GeometryFramework\Components\UBaseDynamicMeshComponent), public [IInterface_CollisionDataProvider](API\Runtime\Engine\Interfaces\IInterface_CollisionDataProvider)

AggGeom

type: FKAggregateGeom

description: Internals for managing collision representation and setupSimplified collision representation for the mesh component

AsyncBodySetupQueue

description: Queue for async body setups that are being cooked

AutoCalculatedTangents

description: Set of per-triangle-vertex tangents computed for the current mesh.

bAutoCalculatedTangentsValid

description: True if AutoCalculatedTangents has been computed for current mesh

bDeferCollisionUpdates

description: If true, updates to the mesh will not result in immediate collision regeneration.

bEnableComplexCollision

description: If true, current mesh will be used as Complex Collision source mesh.

bInvalidateProxyOnChange

description: If false, we don't completely invalidate the RenderProxy whenApplyChange()is called (assumption is it will be handled elsewhere)

bProxyValid

description: If the render proxy is invalidated (eg byMarkRenderStateDirty()), it will be destroyed at the end of the frame, but the base SceneProxy pointer is not nulled out immediately.

bProxyVerifyUsedMaterials

description: If true, the render proxy will verify that the mesh batch materials match the contents from the componentGetUsedMaterials().

bUseAsyncCooking

description: Controls whether the physics cooking should be done off the game thread.

CollisionType

type: TEnumAsByte< en...

description: Type of Collision Geometry to use for this Mesh

Decomposition

type: TUniquePtr<FMe...

LocalBounds

description: Standard Component internals, for computing bounds and managing the SceneProxyCurrent local-space bounding box of Mesh

MeshBodySetup

type: TObjectPtr<UBo...

MeshObject

type: TObjectPtr<UDy...

description: Internal FDynamicMesh is stored inside aUDynamicMeshcontainer, which allows it to be used from BP, shared with other UObjects, and so on

MeshObjectChangedHandle

type: FDelegateHandle

description: Handle for OnMeshObjectChanged which is registered with MeshObject::OnMeshChanged delegate

OnChildAttachmentModified

type: FComponentChild...

description: TheOnChildAttached()andOnChildDetached()implementations (fromUSceneComponentAPI) broadcast this delegate.

OnMeshChanged

type: FSimpleMulticas...

description: This delegate fires when the mesh has been changed

OnMeshVerticesChanged

type: FMeshVerticesMo...

RenderMesh

type: TUniquePtr<FDy...

RenderMeshPostProcessor

type: TUniquePtr<IRe...

SecondaryTriFilterFunc

type: TUniqueFunction...

TangentsType

description: Tangent source defines whether we use the provided tangents on the Dynamic Mesh, autogenerate tangents, or do not use tangents

TriangleColorFunc

description: If this function is set, we will use these colors instead of vertex colors

VertexColorMappingFunc

description: If this function is set, DynamicMesh Attribute Color Overlay colors will be passed through this function before sending to render buffers


className: FDynamicMeshChangeInfo

description: FDynamicMeshChangeInfostores information about a change to aUDynamicMesh. This struct is emitted by theUDynamicMeshOnPreMeshChanged() and OnMeshChanged() delegates.

code: struct FDynamicMeshChangeInfo

bIsRevertChange

type: bool

description: For changes that are anFChange, indicates whether this is an 'Apply' or 'Revert' of theFChange

Flags

type: EDynamicMeshAtt...

MeshChange

type: constFMeshChan...

description: Internals

ReplaceChange

type: constFMeshRepl...

Type

type: EDynamicMeshCha...

VertexChange

type: constFMeshVert...


description: Registered inStartupModule()with FCoreDelegates::OnPostEngineInit and called once

code: void OnPostEngineInit()


description: Called before the module is unloaded, right before the module object is destroyed. During normal shutdown, this is called in reverse order that modules finishStartupModule(). This means that, as long as a module references dependent modules in it'sStartupModule(), it can safely reference those dependencies inShutdownModule()as well.

code: virtual void ShutdownModule()


description: IModuleInterfaceimplementation

code: virtual void StartupModule()


className: FGeometryFrameworkModule

code: class FGeometryFrameworkModule : public [IModuleInterface](API\Runtime\Core\Modules\IModuleInterface)


className: FOnDynamicMeshModifiedBP

code: class FOnDynamicMeshModifiedBP


description: Change support

code: virtual void ApplyChange ( const [FMeshVertexChange](API\Runtime\GeometryFramework\Changes\FMeshVertexChange) * Change, bool bRevert )


description: IMeshCommandChangeTargetimplementation, allows aFMeshChangeto be applied to the mesh.

code: virtual void ApplyChange ( const [FMeshChange](API\Runtime\GeometryFramework\Changes\FMeshChange) * Change, bool bRevert )


description: IMeshReplacementCommandChangeTargetimplementation, allows aFMeshReplacementChangeto be applied to the mesh.

code: virtual void ApplyChange ( const [FMeshReplacementChange](API\Runtime\GeometryFramework\Changes\FMeshReplacementChange) * Change, bool bRevert )


description: Set the active mesh generator. Clears if nullptr

code: virtual void ClearMeshGenerator()


description: Apply EditFunc to the internal mesh. This will broadcast PreMeshChangedEvent, then call EditFunc(), then broadcast MeshChangedEvent and MeshModifiedBPEvent

code: void EditMesh ( [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< void([UE::Geometry::FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) &)> EditFunc, EDynamicMeshChangeType ChangeType, EDynamicMeshAttributeChangeFlags ChangeFlags, bool bDeferChangeEvents )


description: Internal function that edits the Mesh, but broadcasts PreMeshChangedEvent and MeshChangedEvent, and then MeshModifiedBPEvent

code: void EditMeshInternal ( [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< void([UE::Geometry::FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) &)> EditFunc, const [FDynamicMeshChangeInfo](API\Runtime\GeometryFramework\FDynamicMeshChangeInfo) & ChangeInfo, bool bDeferChangeEvents )


description: Take ownership of the internal Mesh, and have it replaced with a new mesh


className: FOnMeshRealtimeUpdate

description: Realtime Update support. This is intended to be used in situations where the internal mesh is being modified directly, ie instead of viaEditMesh(), and we would like to notify listeners of these changes. GenerallyEditMesh()is preferred but in certain cases (eg like 3D sculpting) it is too complex to refactor all the mesh updates intoEditMesh()calls (eg some are done async/etc). So, code that does those kinds of modifications can callPostRealtimeUpdate()to let any interested parties know that the mesh is actively changing.

code: typedef TMulticastDelegate_OneParam< void, [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * > FOnMeshRealtimeUpdate


description:
CallingProcessMesh()is preferred! This interface may be removed in the future
Const pointer to the internal FDynamicMesh3.

code: const [UE::Geometry::FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) * GetMeshPtr() const


description:
CallingEditMesh()is preferred! This interface may be removed in the future
Writable pointer to the internal FDynamicMesh3.


description:
CallingProcessMesh()is preferred! This interface may be removed in the future
Const reference to the internal FDynamicMesh3.

code: const [UE::Geometry::FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & GetMeshRef() const


description:
CallingEditMesh()is preferred! This interface may be removed in the future
Writable reference to the internal FDynamicMesh3.


description: Serialize Mesh to/from T3D

code: virtual void ExportCustomProperties ( [FOutputDevice](API\Runtime\Core\Misc\FOutputDevice) & Out, uint32 Indent )


description: number of triangles in the mesh

code: int32 GetTriangleCount() const


description: ExportCustomProperties()

code: virtual void ImportCustomProperties ( const TCHAR * SourceText, [FFeedbackContext](API\Runtime\Core\Misc\FFeedbackContext) * Warn )


description: Native access/modification functions Reset the internal mesh data and then optionally run the MeshGenerator

code: virtual void InitializeMesh()


description: Allocate a new Mesh (ie pointer will change) and then callInitializeMesh()

code: void InitializeNewMesh()


description: true if the mesh has no triangles

code: bool IsEmpty() const


description: Broadcast after the internal mesh is modified, in the same cases as OnPreMeshChanged

code: FOnDynamicMeshChanged & OnMeshChanged()


description: Multicast delegate that is broadcast wheneverPostRealtimeUpdate()is called


description: Broadcast before the internal mesh is modified by Reset funcs,SetMesh(),EditMesh(), andApplyChange()'s above


description: Broadcasts FOnMeshRealtimeUpdate

code: virtual void PostRealtimeUpdate()


description: Apply ProcessFunc to the internal Mesh

code: void ProcessMesh ( [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< void(const [UE::Geometry::FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) &)> ProcessFunc ) const


description: Reset()the mesh, which will re-run the active MeshGenerator, if bEnableMeshGenerator

code: virtual void Regenerate()


description: Clear the internal mesh to an empty mesh. Thisdoes notallocate a new mesh, so any existing mesh pointers/refs are still valid


description: Clear the internal mesh to a 100x100x100 cube with base at the origin. This this instead ofReset()if an initially-empty mesh is undesirable (eg for a Component)Clear the internal mesh to an empty mesh. Thisdoes notallocate a new mesh, so any existing mesh pointers/refs are still valid


description: Serialize Mesh to an Archive

code: virtual void Serialize ( [FArchive](API\Runtime\Core\Serialization\FArchive) & Archive )


description: Replace the internal mesh with a copy of MoveMesh

code: void SetMesh ( const [UE::Geometry::FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) & MoveMesh )


description: Replace the internal mesh with the data in MoveMesh

code: void SetMesh ( [UE::Geometry::FDynamicMesh3](API\Runtime\GeometryCore\DynamicMesh\FDynamicMesh3) && MoveMesh )


description: Set the active mesh generator. Clears if nullptr

code: virtual void SetMeshGenerator ( [TObjectPtr](API\Runtime\Core\Delegates\TObjectPtr)< [UDynamicMeshGenerator](API\Runtime\GeometryFramework\UDynamicMeshGenerator) > NewGenerator )


code: UDynamicMesh ( const [FObjectInitializer](API\Runtime\CoreUObject\UObject\FObjectInitializer) & ObjectInitializer )


description: Apply a change to MeshInOut

code: virtual void Generate ( FDynamicMesh3 & MeshInOut )


className: UDynamicMeshGenerator

description: UDynamicMeshGeneratoris an abstract base class for an implementation that can mutate an input mesh into an output mesh. A subclass of this class can be attached to aUDynamicMeshto allow for arbitrarily-complex procedural generation

code: class UDynamicMeshGenerator : public [UObject](API\Runtime\CoreUObject\UObject\UObject)


className: UDynamicMesh

description: UDynamicMeshis aUObjectcontainer for a FDynamicMesh3.

bEnableMeshGenerator

description: Controls whether the active Generator (if configured) will be applied when rebuilding the mesh

Mesh

description: Mesh data, owned by this object.

MeshChangedEvent

type: FOnDynamicMeshC...

description: Broadcast after the internal mesh is modified, in the same cases as PreMeshChangedEvent

MeshGenerator

description: (Preliminary) Procedural Generator support.

MeshModifiedBPEvent

type: FOnDynamicMeshM...

description: Blueprintable event called when mesh is modified, in the same cases as OnMeshChanged

MeshRealtimeUpdateEvent

type: FOnMeshRealtime...

PreMeshChangedEvent

description: Event supportBroadcast before the internal mesh is modified by Reset funcs,SetMesh(),EditMesh(), andApplyChange()'s above


description: Release all GeneratedMeshes back to the pool and allow them to be garbage collected

code: void FreeAllMeshes()


description: an availableUDynamicMeshfrom the pool (possibly allocating a new mesh)


description: Release all GeneratedMeshes back to the pool

code: void ReturnAllMeshes()


description: Release aUDynamicMeshreturned byRequestMesh()back to the pool

code: void ReturnMesh ( [UDynamicMesh](API\Runtime\GeometryFramework\UDynamicMesh) * Mesh )


className: UDynamicMeshPool

description: UDynamicMesh::Reset()is called on the object returned to the Pool, which clears the internal FDynamicMesh3 (which uses normal C++ memory management, so no garbage collection involved) So the Pool does not re-use mesh memory, only theUObjectcontainers.

code: class UDynamicMeshPool : public [UObject](API\Runtime\CoreUObject\UObject\UObject)

AllCreatedMeshes

type: TArray<TObject...

description: All meshes the pool has allocated

CachedMeshes

description: Meshes in the pool that are available


description: Stores if the user is wearing the HMD or not. For HMDs without a sensor to detect the user wearing it, the state defaults to Unknown.

module: HeadMountedDisplay

code: namespace EHMDWornState { enum Type { Unknown, Worn, NotWorn, } }


description: For HMDs that support it, this specifies whether the origin of the tracking universe will be at the floor, or at the user's eye height

code: namespace EHMDTrackingOrigin { enum Type { Floor, Eye, Stage, } }


code: namespace EOrientPositionSelector { enum Type { Orientation, Position, OrientationAndPosition, } }


description: Enumeration of results from Connecting to Remote XR device

code: namespace EXRDeviceConnectionResult { enum Type { NoTrackingSystem, FeatureNotSupported, NoValidViewport, MiscFailure, Success, } }


description: Flags to better inform the user about specifics of the underlying XR system

code: namespace EXRSystemFlags { enum Type { NoFlags = 0x00, IsAR = 0x01, IsTablet = 0x02, IsHeadMounted = 0x04, SupportsHandTracking = 0x08, } }


code: FHeadMountedDisplayPassContext ( [FRHICommandListImmediate](API\Runtime\RHI\FRHICommandListImmediate) & InRHICmdList, const [FSceneView](API\Runtime\Engine\FSceneView) & InView )


className: FHeadMountedDisplayPassContext

code: struct FHeadMountedDisplayPassContext

RHICmdList

type: FRHICommandList...

View

type: constFSceneVie...


code: void BuildMesh ( const FVector2D Positions, uint32 VertexCount, [EHMDMeshType](API\Runtime\HeadMountedDisplay\FHMDViewMesh\EHMDMeshType) MeshType )


className: EHMDMeshType

code: enum EHMDMeshType { MT_HiddenArea, MT_VisibleArea, }


className: FHMDViewMesh

code: class FHMDViewMesh

IndexBufferRHI

type: FBufferRHIRef

NumIndices

type: unsigned


description: Apply the late update delta to the cached components

code: void Apply_RenderThread ( [FSceneInterface](API\Runtime\Engine\FSceneInterface) * Scene, const FTransform & OldRelativeTransform, const FTransform & NewRelativeTransform )


description: Returns true if the LateUpdateSetup data is stale.


description: Setup state for applying the render thread late update

code: void Setup ( const FTransform & ParentToWorld, [USceneComponent](API\Runtime\Engine\Components\USceneComponent) * Component, bool bSkipLateUpdate )


code: virtual ~FLateUpdateManager()


className: FLateUpdateManager

description: Utility class for applying an offset to a hierarchy of components in the renderer thread.

code: class FLateUpdateManager


code: FMotionControllerSource ( [FName](API\Runtime\Core\UObject\FName) InSourceName )


code: void Apply_RenderThread ( [FSceneInterface](API\Runtime\Engine\FSceneInterface) * Scene )


className: FMotionControllerSource

description: Named Motion Controller source. Used for UI display

code: struct FMotionControllerSource

EditorCategory

type: FName


description: Called on game thread when view family is about to be rendered.

code: virtual void BeginRenderViewFamily ( [FSceneViewFamily](API\Runtime\Engine\FSceneViewFamily) & InViewFamily )


code: bool FindDelayTransform ( [USceneComponent](API\Runtime\Engine\Components\USceneComponent) * Target, uint32 Delay, FTransform & TransformOut )


code: uint32 GetDesiredDelay() const


code: virtual void GetExemptTargets ( [TArray](API\Runtime\Core\Containers\TArray)< [USceneComponent](API\Runtime\Engine\Components\USceneComponent) * > & ExemptTargets ) const


description: Called to determine view extensions priority in relation to other view extensions, higher comes first

code: virtual int32 GetPriority() const


description: Called if no IsActive functors returned a definitive answer to whether this extension should be active this frame.

code: virtual bool IsActiveThisFrame_Internal ( const [FSceneViewExtensionContext](API\Runtime\Engine\FSceneViewExtensionContext) & Context ) const


description: Called on render thread at the start of rendering.

code: virtual void PreRenderViewFamily_RenderThread ( [FRDGBuilder](API\Runtime\RenderCore\FRDGBuilder) & GraphBuilder, [FSceneViewFamily](API\Runtime\Engine\FSceneViewFamily) & InViewFamily )


description: Allows to render content after the 3D content scene, useful for debugging

code: virtual void PostRenderViewFamily_RenderThread ( [FRDGBuilder](API\Runtime\RenderCore\FRDGBuilder) & GraphBuilder, [FSceneViewFamily](API\Runtime\Engine\FSceneViewFamily) & InViewFamily )


description: Called on render thread at the start of rendering, for each view, after PreRenderViewFamily_RenderThread call.

code: virtual void PreRenderView_RenderThread ( [FRDGBuilder](API\Runtime\RenderCore\FRDGBuilder) & GraphBuilder, [FSceneView](API\Runtime\Engine\FSceneView) & InView )


code: void Restore_RenderThread ( [FSceneInterface](API\Runtime\Engine\FSceneInterface) * Scene )


description: ISceneViewExtensioninterface

code: virtual void SetupViewFamily ( [FSceneViewFamily](API\Runtime\Engine\FSceneViewFamily) & InViewFamily )


code: FMotionDelayClient ( const [FAutoRegister](API\Runtime\Engine\FAutoRegister) & AutoRegister )


description: Called on game thread when creating the view.

code: virtual void SetupView ( [FSceneViewFamily](API\Runtime\Engine\FSceneViewFamily) & InViewFamily, [FSceneView](API\Runtime\Engine\FSceneView) & InView )


className: FMotionDelayClient

description: FMotionDelayClient

code: class FMotionDelayClient : public [FSceneViewExtensionBase](API\Runtime\Engine\FSceneViewExtensionBase)


code: static void RegisterDelayClient ( [TSharedRef](API\Runtime\Core\Templates\TSharedRef)< [FMotionDelayClient](API\Runtime\HeadMountedDisplay\FMotionDelayClient), ESPMode::ThreadSafe > DelayClient )


code: static bool RegisterDelayTarget ( [USceneComponent](API\Runtime\Engine\Components\USceneComponent) * MotionControlledComponent, const int32 PlayerIndex, const [FName](API\Runtime\Core\UObject\FName) SourceId )


code: static void SetEnabled ( bool bEnable )


className: FMotionDelayService

description: FMotionDelayService

code: class FMotionDelayService


code: FIntRect GetScaledTextureRect ( int SizeX, int SizeY ) const


code: FIntRect GetScaledEyeRect ( int SizeX, int SizeY ) const


code: FSpectatorScreenModeTexturePlusEyeLayout ( FVector2D InEyeRectMin, FVector2D InEyeRectMax, FVector2D InTextureRectMin, FVector2D InTextureRectMax, bool InbDrawEyeFirst, bool InbClearBlack, bool InbUseAlpha )


code: bool IsOwnedBy ( [IXRSystemIdentifier](API\Runtime\HeadMountedDisplay\IXRSystemIdentifier) * XRSystem ) const


code: bool operator== ( const [FXRDeviceId](API\Runtime\HeadMountedDisplay\FXRDeviceId) & Rhs ) const


code: bool operator== ( const [IIdentifiableXRDevice](API\Runtime\HeadMountedDisplay\IIdentifiableXRDevice) * Rhs ) const


code: FXRDeviceId ( [IIdentifiableXRDevice](API\Runtime\HeadMountedDisplay\IIdentifiableXRDevice) * DeviceId )


code: FXRDeviceId ( [IXRSystemIdentifier](API\Runtime\HeadMountedDisplay\IXRSystemIdentifier) * OwningSystem, const int32 DeviceId )


className: FXRDeviceId

code: struct FXRDeviceId


className: FXRGestureConfig

code: struct FXRGestureConfig

AxisGesture

type: ESpatialInputGe...


className: FXRHMDData

code: struct FXRHMDData

ApplicationInstanceID

type: FGuid

Position

type: FVector

Rotation

type: FQuat

TrackingStatus

type: ETrackingStatus


className: FXRMotionControllerData

code: struct FXRMotionControllerData

AimPosition

description: For handheld controllers, gives a vector for pointing at objects.

AimRotation

description: For handheld controllers, gives a quaternion for pointing at objects.

bIsGrasped

type: bool

DeviceVisualType

type: EXRVisualType

GripPosition

description: Vector representing an object being held in the player's hand.

GripRotation

description: Quaternion representing an object being held in the player's hand.

HandIndex

type: EControllerHand

HandKeyPositions

type: TArray< FVector...

description: The indices of this array are the values of EHandKeypoint (Palm, Wrist, ThumbMetacarpal, etc).

HandKeyRadii

type: TArray< float >

HandKeyRotations

type: TArray< FQuat >

PalmPosition

description: For handheld controllers, gives a vector for representing the hand.

PalmRotation

description: For handheld controllers, gives a quaternion for representing the hand.


className: FXRSensorProperties

description: Struct representing the properties of an external tracking sensor.

code: struct FXRSensorProperties

BottomFOV

type: float

description: The downwards field of view of the sensor in degrees

CameraDistance

description: The focal distance of the camera.

FarPlane

description: The far plane of the sensor's effective tracking area

LeftFOV

description: The field of view of the sensor to the left in degrees

NearPlane

description: The near plane of the sensor's effective tracking area

RightFOV

description: The field of view of the sensor to the right in degrees

TopFOV

description: The upwards field of view of the sensor in degrees


code: virtual bool GetHandMeshData ( EControllerHand Hand, [TArray](API\Runtime\Core\Containers\TArray)< FVector > & OutVertices, [TArray](API\Runtime\Core\Containers\TArray)< FVector > & OutNormals, [TArray](API\Runtime\Core\Containers\TArray)< int32 > & OutIndices, FTransform & OutHandMeshTransform ) const


description:
Returns the device type of the controller.
Device type of the controller.


description:
Get the transform and radius (or 0 if radius is not available on this platform) for the given hand keypoint.
true if data was fetched

code: bool GetKeypointState ( EControllerHand Hand, EHandKeypoint Keypoint, FTransform & OutTransform, float & OutRadius ) const


code: virtual bool HasHandMeshData() const


description:
Returns true if hand tracking is available and tracking.
true/false

code: bool IsHandTrackingStateValid() const


className: IHandTracker

code: class IHandTracker : public [IModularFeature](API\Runtime\Core\Features\IModularFeature)


description: Called just before rendering the current frame on the game frame.


code: bool GetAllKeypointStates ( EControllerHand Hand, [TArray](API\Runtime\Core\Containers\TArray)< FVector > & OutPositions, [TArray](API\Runtime\Core\Containers\TArray)< FQuat > & OutRotations, [TArray](API\Runtime\Core\Containers\TArray)< float > & OutRadii ) const


description: Called just before rendering the current frame on the render thread. Invoked before applying late update, so plugins that want to refresh poses on the render thread prior to late update. Use this to perform any initializations prior to rendering.

code: virtual void BeginRendering_RenderThread ( const FTransform & NewRelativeTransform, [FRHICommandListImmediate](API\Runtime\RHI\FRHICommandListImmediate) & RHICmdList, [FSceneViewFamily](API\Runtime\Engine\FSceneViewFamily) & ViewFamily )


description: When implemented, creates a new post process node to provide platform-specific HMD distortion.

code: virtual void CreateHMDPostProcessPass_RenderThread ( [FRDGBuilder](API\Runtime\RenderCore\FRDGBuilder) & GraphBuilder, const [FSceneView](API\Runtime\Engine\FSceneView) & View, const struct [FHMDDistortionInputs](API\Runtime\Renderer\PostProcess\FHMDDistortionInputs) & Inputs, struct [FScreenPassTexture](API\Runtime\Renderer\FScreenPassTexture) & OutPass ) const


description: Returns true, if the app has VR focus, meaning if it is rendered in the HMD.

code: virtual bool DoesAppHaveVRFocus() const


description: Returns true, if the App is using VR focus. This means that the app may handle lifecycle events differently from the regular desktop apps. In this case, FCoreDelegates::ApplicationWillEnterBackgroundDelegate and FCoreDelegates::ApplicationHasEnteredForegroundDelegate reflect the state of VR focus (either the app should be rendered in HMD or not).

code: virtual bool DoesAppUseVRFocus() const


code: virtual void DrawDistortionMesh_RenderThread ( struct [FHeadMountedDisplayPassContext](API\Runtime\HeadMountedDisplay\FHeadMountedDisplayPassContext) & Context, const FIntPoint & TextureSize )


description: Optional method to draw a view's hidden area mesh where supported. This can be used to avoid rendering pixels which are not included as input into the final distortion pass.

code: virtual void DrawHiddenAreaMesh ( class [FRHICommandList](API\Runtime\RHI\FRHICommandList) & RHICmdList, int32 ViewIndex ) const


description: Optional method to draw a view's visible area mesh where supported. This can be used instead of a full screen quad to avoid rendering pixels which are not included as input into the final distortion pass.

code: virtual void DrawVisibleAreaMesh ( class [FRHICommandList](API\Runtime\RHI\FRHICommandList) & RHICmdList, int32 ViewIndex ) const


description: Enables or disables switching to stereo.

code: void EnableHMD ( bool bEnable )


code: virtual const float * GetBlueDistortionParameters() const


description: Gets the chromatic aberration correction shader values for the device. Returns 'false' if chromatic aberration correction is off.

code: virtual bool GetChromaAbCorrectionValues ( FVector4 & K ) const


description: Gets the scaling factor, applied to the post process warping effect

code: virtual float GetDistortionScalingFactor() const


description: Additional optional distortion rendering parameters

code: virtual [FTexture](API\Runtime\RenderCore\FTexture) * GetDistortionTextureLeft() const


description: Gets the barrel distortion shader warp values for the device

code: virtual void GetDistortionWarpValues ( FVector4 & K ) const


code: virtual [FTexture](API\Runtime\RenderCore\FTexture) * GetDistortionTextureRight() const


description: Returns eye render params, used from PostProcessHMD, RenderThread.

code: virtual void GetEyeRenderParams_RenderThread ( const struct [FHeadMountedDisplayPassContext](API\Runtime\HeadMountedDisplay\FHeadMountedDisplayPassContext) & Context, FVector2D & EyeToSrcUVScaleValue, FVector2D & EyeToSrcUVOffsetValue ) const


description: Calculates the FOV, based on the screen dimensions of the device. Original FOV is passed as params.

code: void GetFieldOfView ( float & InOutHFOVInDegrees, float & InOutVFOVInDegrees ) const


description: Whether HMDDistortion post processing is enabled or not

code: bool GetHMDDistortionEnabled ( EShadingPath ShadingPath ) const


code: virtual const float * GetGreenDistortionParameters() const


description: Get the name or id of the display to output for this HMD.

code: bool GetHMDMonitorInfo ( [MonitorInfo](API\Runtime\HeadMountedDisplay\IHeadMountedDisplay\MonitorInfo) & )


description: Retrieves the HMD name.


description: Gets the ideal render target size for the debug canvas on the device.

code: virtual FIntPoint GetIdealDebugCanvasRenderTargetSize() const


description: ReturnsEHMDWornState::Wornif we detect that the user is wearing the HMD,EHMDWornState::NotWornif we detect the user is not wearing the HMD, andEHMDWornState::Unknownif we cannot detect the state.


description: Gets the ideal render target size for the device. See vr.pixeldensity description.

code: virtual FIntPoint GetIdealRenderTargetSize() const


code: float GetInterpupillaryDistance() const


description: Gets the offset (in clip coordinates) from the center of the screen for the lens position

code: virtual float GetLensCenterOffset() const


description: Gets the current pixel density setting.

code: virtual float GetPixelDenity() const


description: Return a pointer to the SpectatorScreenController for the HMD if supported, else null. The controller is owned by the HMD, and will be destroyed when the HMD is destroyed.


code: virtual const float * GetRedDistortionParameters() const


code: virtual [ISpectatorScreenController](API\Runtime\HeadMountedDisplay\ISpectatorScreenController) const * GetSpectatorScreenController() const


code: virtual FVector2D GetTextureOffsetLeft() const


code: virtual FVector2D GetTextureOffsetRight() const


code: virtual FVector2D GetTextureScaleLeft() const


description: true if a hidden area mesh is available for the device.

code: virtual bool HasHiddenAreaMesh() const


description: true if a visible area mesh is available for the device.

code: virtual bool HasVisibleAreaMesh() const


description: Returns 'false' if chromatic aberration correction is off.


description: Returns true if HMD is currently connected. It may or may not be in use.

code: bool IsHMDConnected()


description: Whether or not switching to stereo is enabled; if it is false, then EnableStereo(true) will do nothing.

code: bool IsHMDEnabled() const


description: If true, scene rendering should be skipped.

code: virtual bool IsRenderingPaused() const


description: Are we outputting so a Spectator Screen now.

code: virtual bool IsSpectatorScreenActive() const


className: MonitorInfo

code: struct MonitorInfo

DesktopX

type: int

MonitorName

type: FString


description: Accessors to modify the interpupillary distance (meters)

code: void SetInterpupillaryDistance ( float NewInterpupillaryDistance )


description: Sets near and far clipping planes (NCP and FCP) for the HMD.

code: virtual void SetClippingPlanes ( float NCP, float FCP )


description: Record analytics

code: virtual void RecordAnalytics()


code: virtual FVector2D GetTextureScaleRight() const


description: Sets the pixel density. This may cause render target resizing.

code: virtual void SetPixelDensity ( const float NewDensity )


description: This method is able to change screen settings right before any drawing occurs. It is called at the beginning ofUGameViewportClient::Draw()method. We might remove this one as UpdatePostProcessSettings should be able to capture all needed cases

code: virtual void UpdateScreenSettings ( const class [FViewport](API\Runtime\Engine\FViewport) * InViewport )


className: IHeadMountedDisplay

description: HMD device interface

code: class IHeadMountedDisplay : public [IModuleInterface](API\Runtime\Core\Modules\IModuleInterface)


description:
Attempts to create a new head tracking device interface
Interface to the new head tracking device, if we were able to successfully create one

code: [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< class [IXRTrackingSystem](API\Runtime\HeadMountedDisplay\IXRTrackingSystem), ESPMode::ThreadSafe > CreateTrackingSystem()


className: FCompareModulePriority

description: Sorting method for which plug-in should be given priority

code: struct FCompareModulePriority


code: bool operator&40;&41; &40; IHeadMountedDisplayModule & A, IHeadMountedDisplayModule & B &41; const


description: Singleton-like access toIHeadMountedDisplayModuleReturns reference to the highest priorityIHeadMountedDisplayModulemodule

code: static [IHeadMountedDisplayModule](API\Runtime\HeadMountedDisplay\IHeadMountedDisplayModule) & Get()


description: Get name of audio input device where the HMD was last connected


description: Get name of audio output device where the HMD was last connected


description: Get XR system name


description: currently, for mac,GetGraphicsAdapterLuid()is used to return a device index (how the function "GetGraphicsAdapter" used to work), not a ID... eventually we want the HMD module to return the MTLDevice's registryID, but we cannot fully handle that until we drop support for 10.12 NOTE: this is why we use -1 as a sentinel value representing "no device" (instead of 0, which is used in the LUID case)

code: virtual uint64 GetGraphicsAdapterLuid()


description: Returns an array of alternative ini/config names for this module (helpful if the module's name changes, so we can have back-compat)

code: virtual void GetModuleAliases ( [TArray](API\Runtime\Core\Containers\TArray)< [FString](API\Runtime\Core\Containers\FString) > & AliasesOut ) const


description: Returns the key into the HMDPluginPriority section of the config file for this module


description: Returns the priority of this module from INI file configuration

code: float GetModulePriority() const


description: Extensions: If the HMD supports the various extensions listed below, it should return a valid pointer to an implementation contained within it.


description:
Checks to see if there exists a module registered as an HMD. It is only valid to callGet()ifIsAvailable()returns true.
True if there exists a module registered as an HMD.

code: static bool IsAvailable()


description: Indicates that the device we're currently running does not support a spectator view. This will only be called once at initialization and should only return a result based for the current device the engine is running on.


description: Optionally pre-initialize the HMD module. Return false on failure.

code: virtual bool PreInit()


description: Test to see whether HMD is connected. Used to guide which plug-in to select.

code: virtual bool IsHMDConnected()


className: IHeadMountedDisplayModule

description: The public interface of the HeadmountedDisplay Module

code: class IHeadMountedDisplayModule : public [IModuleInterface](API\Runtime\Core\Modules\IModuleInterface), public [IModularFeature](API\Runtime\Core\Features\IModularFeature)


description: Register module as an HMD on startup.

code: virtual void StartupModule()


code: bool GetVulkanDeviceExtensionsRequired ( struct VkPhysicalDevice_T * pPhysicalDevice, [TArray](API\Runtime\Core\Containers\TArray)< const ANSICHAR * > & Out )


code: bool GetVulkanInstanceExtensionsRequired ( [TArray](API\Runtime\Core\Containers\TArray)< const ANSICHAR * > & Out )


className: IHeadMountedDisplayVulkanExtensions

description: Knowledge of these extensions is required during Vulkan RHI initialization.


description: If true and VK_PRESENT_MODE_MAILBOX_KHR is not available, VK_PRESENT_MODE_IMMEDIATE_KHR will be preferred over VK_PRESENT_MODE_FIFO_KHR when creating the swap chain for the spectator window.

code: virtual bool ShouldDisableVulkanVSync() const


description:
Returns a unique identifier that can be used to reference this device within the system is belongs to.
A numerical identifier, unique to this device (not guaranteed to be unique outside of the system this belongs to).

code: int32 GetSystemDeviceId() const


className: IIdentifiableXRDevice

description: Additionally, it can be used to tie variousIModularFeaturedevice interfaces together. For example, if you have separateIXRTrackingSystemandIXRSystemAssetsinterfaces which both reference the same devices, then this base class gives you a way to communicate between the two.

code: class IIdentifiableXRDevice : public [IXRSystemIdentifier](API\Runtime\HeadMountedDisplay\IXRSystemIdentifier)


code: static FRotator AngularVelocityAsAxisAndLengthToRotator ( const FVector AngularVelocityAsAxisAndLength )


description: Called to request the motion sources that thisIMotionControllerprovides

code: void EnumerateSources ( [TArray](API\Runtime\Core\Containers\TArray)< [FMotionControllerSource](API\Runtime\HeadMountedDisplay\FMotionControllerSource) > & SourcesOut ) const


className: FeatureName

code: static [FName](API\Runtime\Core\UObject\FName) FeatureName = FName(TEXT("MotionController"));


description:
Returns the calibration-space orientation of the requested controller's hand.
True if the device requested is valid and tracked, false otherwise

code: bool GetControllerOrientationAndPosition ( const int32 ControllerIndex, const [FName](API\Runtime\Core\UObject\FName) MotionSource, FRotator & OutOrientation, FVector & OutPosition, float WorldToMetersScale ) const


code: bool GetControllerOrientationAndPosition ( const int32 ControllerIndex, const [FName](API\Runtime\Core\UObject\FName) MotionSource, FRotator & OutOrientation, FVector & OutPosition, bool & OutbProvidedLinearVelocity, FVector & OutLinearVelocity, bool & OutbProvidedAngularVelocity, FVector & OutAngularVelocityAsAxisAndLength, bool & OutbProvidedLinearAcceleration, FVector & OutLinearAcceleration, float WorldToMetersScale ) const


description:
Returns the calibration-space orientation of the requested controller's hand at the specified time for potentially improved temporal precision, particularly fetching the controller transform when a button was pressed on a platform that provides sub-frame timing for button presses. This is only intended to work with times very near the current frame. In general it should be called immediatly after receiving the button press. On many platforms this functionality is not supported and this function will set OutTimeWasUsed to false and then call GetControllerOrientationAndPosition, ignoring Time.
True if the device requested is valid and tracked, false otherwise

code: bool GetControllerOrientationAndPositionForTime ( const int32 ControllerIndex, const [FName](API\Runtime\Core\UObject\FName) MotionSource, [FTimespan](API\Runtime\Core\Misc\FTimespan) Time, bool & OutTimeWasUsed, FRotator & OutOrientation, FVector & OutPosition, bool & OutbProvidedLinearVelocity, FVector & OutLinearVelocity, bool & OutbProvidedAngularVelocity, FVector & OutAngularVelocityAsAxisAndLength, bool & OutbProvidedLinearAcceleration, FVector & OutLinearAcceleration, float WorldToMetersScale ) const


description:
Returns the tracking status (e.g. not tracked, intertial-only, fully tracked) of the specified controller
Tracking status of the specified controller, or ETrackingStatus::NotTracked if the device is not found

code: ETrackingStatus GetControllerTrackingStatus ( const int32 ControllerIndex, const [FName](API\Runtime\Core\UObject\FName) MotionSource ) const


description:
Returns a custom names parameter value
The value of the parameter

code: float GetCustomParameterValue ( const [FName](API\Runtime\Core\UObject\FName) MotionSource, [FName](API\Runtime\Core\UObject\FName) ParameterName, bool & bOutValueFound ) const


code: static bool GetHandEnumForSourceName ( const [FName](API\Runtime\Core\UObject\FName) Source, EControllerHand & OutHand )


code: bool GetHandJointPosition ( const [FName](API\Runtime\Core\UObject\FName) MotionSource, int jointIndex, FVector & OutPosition ) const


description:
Returns the device type of the controller.
Device type of the controller.


className: LeftHandSourceId

description: Explicit source names


code: virtual ~IMotionController()


className: IMotionController

description: NOTE: This intentionally does NOT derive fromIInputDeviceModule, to allow a clean separation for devices which exclusively track motion with no tactile input NOTE: You must MANUALLY callIModularFeatures::Get().RegisterModularFeature( GetModularFeatureName(), this ) in your implementation! This allows motion controllers to be both piggy-backed off HMD devices which support them, as well as standing alone.

code: class IMotionController : public [IModularFeature](API\Runtime\Core\Features\IModularFeature)


description: Disable tracking of the specified controller, by player index and tracked device type.

code: void DisableMotionTrackingOfDevice ( const int32 ControllerIndex, const EControllerHand DeviceHand )


description: Disable tracking for all controllers.


description: Disable tracking for all controllers of a certain player.

code: void DisableMotionTrackingOfControllersForPlayer ( int32 PlayerIndex )


description:
Add a player mappable input config to the motion controller. This allows the motion controller to support Enhanced Input actions.
False if the input config can't be attached to the session, true otherwise

code: virtual PRAGMA_DISABLE_DEPRECATION_WARNINGSbool SetPlayerMappableInputConfig ( [TObjectPtr](API\Runtime\Core\Delegates\TObjectPtr)< class UPlayerMappableInputConfig > InputConfig )


description:
Enaable tracking of the specified controller, by player index and tracked device type.
(Boolean) true if the specified device is now set to be tracked. This could fail due to tracking limits, or on invalid input.

code: bool EnableMotionTrackingOfDevice ( const int32 ControllerIndex, const EControllerHand DeviceHand )


description:
Get the maximum number of controllers that can be tracked.
(int) number of controllers that can be tracked.


description:
Returns true if the specified device is supposed to be tracked
(Boolean) true if the specified device is set to be tracked.

code: bool IsMotionTrackingEnabledForDevice ( const int32 ControllerIndex, const EControllerHand DeviceHand ) const


description:
Get the number of controllers for which motion tracking is enabled.
(int) number of controllers tracked now.


description: Set whether controller tracking is enabled by default or whether controllers must be specifically enabled.

code: void SetIsControllerMotionTrackingEnabledByDefault ( bool Enable )


className: IMotionTrackingSystemManagement

description: This exposes management options for a motion tracking system. Some platforms will not implement it.

code: class IMotionTrackingSystemManagement : public [IModularFeature](API\Runtime\Core\Features\IModularFeature)


description: Get the texture that would currently be displayed on the social screen (if in a mode that does that)

code: virtual [UTexture](API\Runtime\Engine\Engine\UTexture) * GetSpectatorScreenTexture() const


code: void QueueDebugCanvasLayerID ( int32 LayerID )


description: Change the texture displayed on the social screen

code: void SetSpectatorScreenTexture ( [UTexture](API\Runtime\Engine\Engine\UTexture) * InTexture )


description: Setup the layout for ESpectatorScreenMode::TexturePlusEye.

code: void SetSpectatorScreenModeTexturePlusEyeLayout ( const [FSpectatorScreenModeTexturePlusEyeLayout](API\Runtime\HeadMountedDisplay\FSpectatorScreenModeTexturePlusE-) & Layout )


description: Sets the social screen mode.

code: void SetSpectatorScreenMode ( ESpectatorScreenMode Mode )


description: Optionally called byAPlayerControllerto apply the orientation of the headset to the PC's rotation. If this is not done then the PC will face differently than the camera, which might be good (depending on the game).

code: void ApplyHMDRotation ( [APlayerController](API\Runtime\Engine\GameFramework\APlayerController) * PC, FRotator & ViewRotation )


code: virtual ~ISpectatorScreenController()


description: Calculates the offset for the camera position, given the specified eye pass, position and rotation. An XR plugin implementing stereo rendering should forward all calls of CalculateStereoViewOffset to this method.

code: void CalculateStereoCameraOffset ( const int32 ViewIndex, FRotator & ViewRotation, FVector & ViewLocation )


description: This method should only be called from the render thread.

code: virtual bool GetPassthroughCameraUVs_RenderThread ( [TArray](API\Runtime\Core\Containers\TArray)< FVector2D > & OutUVs )


description: Gets the view offset mode to assume an implied HMD position

code: bool GetUseImplicitHMDPosition() const


description: Override the Field of View for the player camera component.

code: void OverrideFOV ( float & InOutFOV )


description: Setup state for applying the render thread late update

code: void SetupLateUpdate ( const FTransform & ParentToWorld, [USceneComponent](API\Runtime\Engine\Components\USceneComponent) * Component, bool bSkipLateUpdate )


description: Apply the orientation and position of the headset to the Camera.

code: bool UpdatePlayerCamera ( FQuat & CurrentOrientation, FVector & CurrentPosition )


description: Set the view offset mode to assume an implied HMD position

code: void UseImplicitHMDPosition ( bool bInImplicitHMDPosition )


className: ISpectatorScreenController

description: This is the interface to control the spectator screen, on platforms that support it.

code: class ISpectatorScreenController : public [IModularFeature](API\Runtime\Core\Features\IModularFeature)


className: IXRCamera

description: To reduce duplicated code, implementations should use the FXRCameraBase instead of implementing this interface directly.

code: class IXRCamera : public [IIdentifiableXRDevice](API\Runtime\HeadMountedDisplay\IIdentifiableXRDevice)


description: Passing key events to HMD. If returns 'false' then key will be handled by PlayerController; otherwise, key won't be handled by the PlayerController.

code: virtual bool HandleInputKey ( class [UPlayerInput](API\Runtime\Engine\GameFramework\UPlayerInput) *, const struct [FKey](API\Runtime\InputCore\FKey) & Key, EInputEvent EventType, float AmountDepressed, bool bGamepad )


className: IXRInput

description: Optional interface returned fromIXRTrackingSystemif the plugin requires being able to grab touch or keyboard input events.

code: class IXRInput


description: Passing touch events to HMD. If returns 'false' then touch will be handled by PlayerController; otherwise, touch won't be handled by the PlayerController.

code: virtual bool HandleInputTouch ( uint32 Handle, [ETouchType::Type](API\Runtime\InputCore\ETouchType__Type) Type, const FVector2D & TouchLocation, [FDateTime](API\Runtime\Core\Misc\FDateTime) DeviceTimestamp, uint32 TouchpadIndex )


description: Registers a splash to be shown while the loading screen is active.

code: void AddSplash ( const [FSplashDesc](API\Runtime\HeadMountedDisplay\IXRLoadingScreen\FSplashDesc) & Splash )


description: Removes all splashes. Use this to replace the existing splashes before calling AddSplash.

code: void ClearSplashes()


className: FSplashDesc

description: Splashes are shown in a tracker-relative space with the orientation reset to the direction the player is facing when brought up.

code: struct FSplashDesc

bIgnoreAlpha

description: If set, the splash texture will be rendered opaque regardless of the alpha channel. Not supported by all platforms.

bIsDynamic

description: Set to true to tell that the texture is dynamically generated and may update each frame.

bIsExternal

description: Set this to true if the assigned texture is an external texture, for instance if using the media framework.

DeltaRotation

description: Simple animation. Rotation that will be applied to the splash every other frame.

LeftTexture

type: FTextureRHIRef

description: If set, overrides the texture shown for the left eye.

QuadSize

description: Size of rendered quad in UE units.

Texture

description: The texture shown. Can be set to a 2D or a Cube texture. (Cube textures may not be supported by all platforms.)

Transform

type: FTransform

description: Transform of the splash relative to the HMD orientation and location at the time of showing the loading screen.

UVRect

description: UVs of the rendered texture.


description: Hides the loading screen.

code: void HideLoadingScreen()


description: Returns whether a loading movie is playing or not.

code: bool IsPlayingLoadingMovie() const


description: Returns whether the loading screen is currently active or not.

code: bool IsShown() const


description: Activates the loading screen. If called while the loading screen is active, this will reinitialize the positions of all splashes according to the current HMD pose.

code: void ShowLoadingScreen()


description: Internal utility method for implementing backwards compatibility with IStereoLayers::Show/HideSplashScreen. Should be called from implementations overriding IStereoLayer::UpdateSplashScreen()

code: static void ShowLoadingScreen_Compat ( bool bShow, FTexture2DRHIRef Texture, const FVector & Offset, const FVector2D & Scale )


code: virtual ~IXRLoadingScreen()


className: IXRLoadingScreen

description: To reduce duplicated code, implementations should use the FXRLoadingScreenBase ofFDefaultXRLoadingScreeninstead of implementing this interface directly.

code: class IXRLoadingScreen


description:
NOTE: Resource loads for this component may be asynchronous. The component can be attached and registered immediately, but there may be a delay before it renders properly. To make the operation synchronous use the bForceSynchronous param.
A valid component pointer if the method succeeded, otherwise null.

code: [UPrimitiveComponent](API\Runtime\Engine\Components\UPrimitiveComponent) * CreateRenderComponent ( const int32 DeviceId, [AActor](API\Runtime\Engine\GameFramework\AActor) * Owner, EObjectFlags Flags, const bool bForceSynchronous, const FXRComponentLoadComplete & OnLoadComplete )


description:
These IDs are intended to be used with certain methods to reference a specific device (like withCreateRenderComponent(), etc.). NOTE: that these IDs are NOT interoperable across XR systems (vive vs. oculus, etc.). Using an ID from one system with another will have undefined results.
True if the DeviceList was successfully updated, otherwise false.

code: bool EnumerateRenderableDevices ( [TArray](API\Runtime\Core\Containers\TArray)< int32 > & DeviceListOut )


description:
NOTE: Not all XR systems support every EControllerHand value. If that's the case, then this will return an invalid device ID, though that specific value is undetermined and up to each XRSystem for interpretation.
A device ID that is specific to this XRSystem (can only be interpreted by other members belonging to the sameIXRSystemIdentifier)

code: int32 GetDeviceId ( EControllerHand ControllerHand )


className: IXRSystemAssets

code: class IXRSystemAssets : public [IModularFeature](API\Runtime\Core\Features\IModularFeature), public [IXRSystemIdentifier](API\Runtime\HeadMountedDisplay\IXRSystemIdentifier)


description:
Returns a unique identifier that's supposed to represent the third party system that this object is part of (Vive, Oculus, PSVR, etc.).
A name unique to the system which this object belongs to.


className: IXRSystemIdentifier

code: class IXRSystemIdentifier


description: Called to calibrate the offset transform between an external tracking source and the internal tracking source (e.g. mocap tracker to and HMD tracker). This should be called once per session, or when the physical relationship between the external tracker and internal tracker changes (e.g. it was bumped or reattached). After calibration, calling UpdateExternalTrackingPosition will try to correct the internal tracker to the calibrated offset to prevent drift between the two systems

code: virtual void CalibrateExternalTrackingSource ( const FTransform & ExternalTrackingTransform )


description: Deprecated* The only implementation for this function was removed many UE releases ago.

code: virtual bool ConfigureGestures ( const struct [FXRGestureConfig](API\Runtime\HeadMountedDisplay\FXRGestureConfig) & GestureConfig )


code: virtual [EXRDeviceConnectionResult::Type](API\Runtime\HeadMountedDisplay\EXRDeviceConnectionResult__Type) ConnectRemoteXRDevice ( const [FString](API\Runtime\Core\Containers\FString) & IpAddress, const int32 BitRate )


description:
Get the count of tracked devices
the count of matching tracked devices

code: uint32 CountTrackedDevices ( EXRTrackedDeviceType Type )


code: virtual void DisconnectRemoteXRDevice()


description: Note that for backwards compatibility with plugins written before 4.19, this method defaults to returning 'true'

code: virtual bool DoesSupportLateUpdate() const


description: Note that late projection update isn't compatible with all XR implementations because of projection matrix fetch restrictions.

code: virtual bool DoesSupportLateProjectionUpdate() const


description: Whether or not the system supports positional tracking (either via sensor or other means)


description: Reports all devices currently available to the system, optionally limiting the result to a given class of devices.

code: bool EnumerateTrackedDevices ( [TArray](API\Runtime\Core\Containers\TArray)< int32 > & OutDevices, EXRTrackedDeviceType Type )


description: Access optionsal ARCompositionComponent

code: virtual [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [FARSupportInterface](API\Runtime\AugmentedReality\FARSupportInterface), ESPMode::ThreadSafe > GetARCompositionComponent()


code: virtual const [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< const [FARSupportInterface](API\Runtime\AugmentedReality\FARSupportInterface), ESPMode::ThreadSafe > GetARCompositionComponent() const


description:
Get the offset, in device space, of the reported device (screen / eye) position to the center of the head.
a vector containing the offset coordinates, ZeroVector if not supported.

code: virtual FVector GetAudioListenerOffset ( int32 DeviceId ) const


description: Returns current base orientation of HMD as a quaternion.

code: virtual FQuat GetBaseOrientation() const


description: Returns current base position of HMD.

code: virtual FVector GetBasePosition() const


description: Returns current base orientation of HMD as yaw-pitch-roll combination.

code: virtual FRotator GetBaseRotation() const


description:
Get the current pose for a device. This method must be callable both on the render thread and the game thread. For devices that don't support positional tracking, OutPosition will be at the base position.
true if the pose is valid or not.

code: bool GetCurrentPose ( int32 DeviceId, FQuat & OutOrientation, FVector & OutPosition )


code: bool GetCurrentInteractionProfile ( const EControllerHand Hand, [FString](API\Runtime\Core\Containers\FString) & InteractionProfile )


description:
Computes a transform to convert from 'Floor' origin space to 'Eye' origin space. Useful when changing between the two different TrackingOrigin spaces. Invert the transform to get the opposite.
True if the transform was successfully constructed.

code: bool GetFloorToEyeTrackingTransform ( FTransform & OutFloorToEye ) const


description: Platform Agnostic Query about HMD details

code: virtual void GetHMDData ( [UObject](API\Runtime\CoreUObject\UObject\UObject) * WorldContext, [FXRHMDData](API\Runtime\HeadMountedDisplay\FXRHMDData) & HMDData )


description:
Access the loading screen interface associated with this tracking system, if any.
anIXRLoadingScreenpointer or a nullptr if this tracking system does not support loading screens.

code: virtual [IXRLoadingScreen](API\Runtime\HeadMountedDisplay\IXRLoadingScreen) * GetLoadingScreen()


description:
Access HMD rendering-related features.
a IHeadmountedDisplay pointer or a nullptr if this tracking system does not support head mounted displays.

code: virtual [IHeadMountedDisplay](API\Runtime\HeadMountedDisplay\IHeadMountedDisplay) * GetHMDDevice()


description: Platform Agnostic Query about MotionControllers details

code: void GetMotionControllerData ( [UObject](API\Runtime\CoreUObject\UObject\UObject) * WorldContext, const EControllerHand Hand, [FXRMotionControllerData](API\Runtime\HeadMountedDisplay\FXRMotionControllerData) & MotionControllerData )


description: Get the bounds of the area where the user can freely move while remaining tracked centered around the specified origin

code: virtual FVector2D GetPlayAreaBounds ( [EHMDTrackingOrigin::Type](API\Runtime\HeadMountedDisplay\EHMDTrackingOrigin__Type) Origin ) const


description: Get the transform and dimensions of the area where the user can freely move while remaining tracked centered around the specified origin transform

code: virtual bool GetPlayAreaRect ( FTransform & OutTransform, FVector2D & OutRect ) const


description:
If the device id represents a head mounted display, fetches the relative position of the given eye relative to the eye. If the device is does not represent a stereoscopic tracked camera, orientation and position should be identity and zero and the return value should be false.
true if the pose is valid or not. If the device is not a stereoscopic device, return false.

code: bool GetRelativeEyePose ( int32 DeviceId, int32 ViewIndex, FQuat & OutOrientation, FVector & OutPosition )


description:
If the device id represents a tracking sensor, reports the serial number as a string if the device supports it.
the serial number of the device if it's available.

code: [FString](API\Runtime\Core\Containers\FString) GetTrackedDevicePropertySerialNumber ( int32 DeviceId )


description:
Access Stereo rendering device associated with this XR system. IfGetHMDDevice()returns non-null, this method should also return a vaild instance.
aIStereoRenderingpointer or a nullptr if this tracking system does not support stereo rendering.

code: virtual [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< class [IStereoRendering](API\Runtime\Engine\IStereoRendering), ESPMode::ThreadSafe > GetStereoRenderingDevice()


description:
If the device id represents a tracking sensor, reports the device type.
the device type enum.

code: EXRTrackedDeviceType GetTrackedDeviceType ( int32 DeviceId ) const


description: Returns current tracking origin.


description: Get the transform of the specified tracking origin, if available.

code: virtual bool GetTrackingOriginTransform ( [TEnumAsByte](API\Runtime\Core\Containers\TEnumAsByte)< [EHMDTrackingOrigin::Type](API\Runtime\HeadMountedDisplay\EHMDTrackingOrigin__Type) > Origin, FTransform & OutTransform ) const


description: Returns version string.


description:
If the device id represents a tracking sensor, reports the frustum properties in game-world space of the sensor.
true if the device tracking is valid and supports returning tracking sensor properties.

code: bool GetTrackingSensorProperties ( int32 DeviceId, FQuat & OutOrientation, FVector & OutPosition, [FXRSensorProperties](API\Runtime\HeadMountedDisplay\FXRSensorProperties) & OutSensorProperties )


description: Returns the system's latest known tracking-to-world transform. Useful for translating poses fromGetCurrentPose()into unreal world space.


description:
This method should return the world to meters scale for the current frame. Should be callable on both the render and the game threads.
the current world to meter scale.

code: float GetWorldToMetersScale() const


description:
Get the IXCamera instance for the given device.
a shared pointer to anIXRCamera.

code: [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< class [IXRCamera](API\Runtime\HeadMountedDisplay\IXRCamera), ESPMode::ThreadSafe > GetXRCamera ( int32 DeviceId )


description:
Access optional HMD input override interface.
aIXRInputpointer or a nullptr if not supported

code: virtual [IXRInput](API\Runtime\HeadMountedDisplay\IXRInput) * GetXRInput()


description: Returns device specific flags.

code: int32 GetXRSystemFlags() const


description: If the system currently has valid tracking positions. If not supported at all, returns false.

code: bool HasValidTrackingPosition()


className: HMDDeviceId

description: Device id 0 is reserved for an HMD. This should represent the HMD or the first HMD in case multiple HMDs are supported. Other devices can have arbitrary ids defined by each system. If a tracking system does not support tracking HMDs, device ID zero should be treated as invalid.

code: static const int32 HMDDeviceId = 0;


description: Returns true, if head tracking is allowed. Most common case: it returns true when GEngine->IsStereoscopic3D() is true, but some overrides are possible.

code: bool IsHeadTrackingAllowed() const


description: Same as IsHeadTrackingAllowed, but returns false if the World is not using VR (such as with the non-VR PIE instances when using VR Preview)

code: virtual bool IsHeadTrackingAllowedForWorld ( [UWorld](API\Runtime\Engine\Engine\UWorld) & World ) const


description:
Check current tracking status of a device.
true if the system currently has valid tracking info for the given device ID.

code: bool IsTracking ( int32 DeviceId )


description: This method is called when playing begins. Useful to reset all runtime values stored in the plugin.

code: virtual void OnBeginPlay ( [FWorldContext](API\Runtime\Engine\Engine\FWorldContext) & InWorldContext )


description: Called just before rendering the current frame on the game frame.


description: Can be used to enforce tracking even when stereo rendering is disabled. The default implementation does not allow enforcing tracking and always returns false. This method is called both from the game and render threads.

code: virtual bool IsHeadTrackingEnforced() const


description: Called just before rendering the current frame on the render thread. Invoked before applying late update, so plugins that want to refresh poses on the render thread prior to late update. Use this to perform any initializations prior to rendering.

code: virtual void OnBeginRendering_RenderThread ( [FRHICommandListImmediate](API\Runtime\RHI\FRHICommandListImmediate) & RHICmdList, [FSceneViewFamily](API\Runtime\Engine\FSceneViewFamily) & ViewFamily )


description: This method is called when game frame ends (called on a game thread).

code: virtual bool OnEndGameFrame ( [FWorldContext](API\Runtime\Engine\Engine\FWorldContext) & WorldContext )


description: This method is called when playing ends. Useful to reset all runtime values stored in the plugin.

code: virtual void OnEndPlay ( [FWorldContext](API\Runtime\Engine\Engine\FWorldContext) & InWorldContext )


description: Called just after the late update on the render thread passing back the current relative transform.

code: virtual void OnLateUpdateApplied_RenderThread ( [FRHICommandListImmediate](API\Runtime\RHI\FRHICommandListImmediate) & RHICmdList, const FTransform & NewRelativeTransform )


description: This method is called when new game frame begins (called on a game thread).

code: virtual bool OnStartGameFrame ( [FWorldContext](API\Runtime\Engine\Engine\FWorldContext) & WorldContext )


description: Refresh poses. Tells the system to update the poses for its tracked devices. May be called both from the game and the render thread.

code: virtual void RefreshPoses()


description: Temporary method until Morpheus controller code has been refactored.

code: virtual void RebaseObjectOrientationAndPosition ( FVector & Position, FQuat & Orientation ) const


description: Resets orientation by setting roll and pitch to 0, assuming that current yaw is forward direction. Position is not changed.

code: virtual void ResetOrientation ( float Yaw )


description: Resets orientation by setting roll and pitch to 0, assuming that current yaw is forward direction and assuming current position as a 'zero-point' (for positional tracking).

code: void ResetOrientationAndPosition ( float Yaw )


description: Resets position, assuming current position as a 'zero-point'.

code: virtual void ResetPosition()


description: Sets base orientation, assuming that this is forward direction. Position is not changed.

code: virtual void SetBaseOrientation ( const FQuat & BaseOrient )