<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Unreal Engine Issues - Latest Bugs]]></title><description><![CDATA[Latest Bugs and Feature Requests For Unreal Engine.]]></description><link>https://issues.unrealengine.com</link><image><url>https://issues.unrealengine.com/favicon.png</url><title>Unreal Engine Issues - Latest Bugs</title><link>https://issues.unrealengine.com</link></image><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 04:00:34 GMT</lastBuildDate><atom:link href="https://issues.unrealengine.com/bugs" rel="self" type="application/rss+xml"/><item><title><![CDATA[Crash when a floor mesh is removed while a Vehicle has SimulatePhysics disabled]]></title><description><![CDATA[<p>When SimulatePhysics is disabled, the constraint update is skipped, so a reference to an invalid (already-removed) particle is left behind.</p>

<p>As a workaround, the approach suggested by the licensee — clearing the invalid particle references from the GroundParticles array inside DisconnectConstraints — was confirmed to work.</p>]]></description><link>https://issues.unrealengine.com/issue/UE-394517</link><guid isPermaLink="false">UE-394517</guid></item><item><title><![CDATA[Level Sequence spending long time validating assets]]></title><description><![CDATA[

<p>Hi</p>

<p>After migrating our animation project from 5.7 -&gt; 5.8 we notice that some level seqeunces take much longer to save (during validation stage). This issue only exhibits when using control rigs in animation mode. Some users have reported it taking up to 30 minutes on some shots, though I have only reproduced it taking 2-3 minutes. These save level sequences in 5.7 would have taken only serveral seconds to save. I attach a simplified repro project which takes about 10 seconds. The more characters the (exponentially) longer it takes to save.</p>]]></description><link>https://issues.unrealengine.com/issue/UE-394313</link><guid isPermaLink="false">UE-394313</guid></item><item><title><![CDATA[Sequencer Crash (GC Leak) in Editor]]></title><description><![CDATA[<p>A GC leak, similar to the one fixed by 44483919 but for Level Sequences in Level Instances rather than ones with Widgets.</p>




<p>A Level Sequence Actor in a Level Instance points to a Level Sequence Asset that has an Event Track that creates the Director when scrubbed over. If Sequencer is open at the same time as the Level Instance is open for edit, a strong reference is created to the Director which uses the Level Sequence Actor in the Level Instance as its outer. When the Level Instance is closed, the level is kept alive by sequencer. Tearing down the level triggers GC which finds the leak and fatal errors.</p>]]></description><link>https://issues.unrealengine.com/issue/UE-394309</link><guid isPermaLink="false">UE-394309</guid></item><item><title><![CDATA[[Mutable] Morph Targets can be disabled in packaged builds when Mesh Streaming is enabled]]></title><description><![CDATA[<p>When a Mutable mesh instance is created while the actor spawns at a distance, only the low LODs are generated, and the mesh is created with no Morph Targets registered. Later, when the camera approaches and the higher LODs are streamed in, the Morph Targets are never restored, resulting in incorrect rendering.</p>]]></description><link>https://issues.unrealengine.com/issue/UE-394214</link><guid isPermaLink="false">UE-394214</guid></item><item><title><![CDATA[Bake To Control Rig produces empty keys when rig uses Import Skeleton in Construction Event and binding is a spawnable in a subsequence]]></title><description><![CDATA[<p>Bake To Control Rig fails to key procedurally-created controls when all three of the following are true:</p>

<ol>
	<li>The Control Rig creates its hierarchy at runtime via <b>Import Skeleton</b> in the Construction Event (bones and controls do not exist in the asset's stored initial hierarchy)</li>
	<li>The character is a <b>spawnable whose binding lives in a subsequence</b></li>
	<li><b>Evaluate Sub Sequences In Isolation is OFF</b></li>
</ol>


<p><span class="image-wrap" style="">[Image Removed]</span></p>

<p>Changing <em>any one</em> of these three conditions makes the bake succeed. This points at the rig instance used by the bake being constructed/evaluated without the correct binding context (or with an unapplied sub-section time transform) when evaluation goes through the root sequence hierarchy.</p>



<p><b>Expected</b></p>

<p>Bake To Control Rig should construct/evaluate the rig instance with the resolved spawnable binding and correct time-space regardless of where the binding lives in the sequence hierarchy — or at minimum surface an error instead of silently producing an empty bake.</p>

<p><b>Why it matters</b></p>

<p>Construction-time hierarchy import is the foundation of modular/procedural rigging, and spawnables-in-subsequences is the standard shot structure for linear content pipelines. The intersection silently breaks bake-to-rig, and the failure looks like a rig authoring error to end users (partial keys, no message), which makes it expensive for studios to diagnose — this one cost a client several days.</p>

<p><b>Workarounds (validated)</b></p>

<p>Enable "Evaluate Sub Sequences In Isolation" before baking; or bake in a root-level duplicate of the sub; or use a rig variant with the constructed hierarchy stored in the asset.</p>]]></description><link>https://issues.unrealengine.com/issue/UE-394110</link><guid isPermaLink="false">UE-394110</guid></item><item><title><![CDATA[ShouldMarkSyncPhases causes large pose discontinuities when sync leader changes ]]></title><description><![CDATA[<p>The issue is caused by the way that we calculate the leader sample's Time vs the follower sample’s Time and how that calculation switches on the frame when a follower sample becomes a lead sample.  On that frame, we continue to update LeaderSampleData.Time and PreviousTime using the same logic that we did on previous frames when the leader didn’t change.  ie. the following code:</p>

<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>float CurrentTime = NormalizedCurrentTime * NewAnimLength;
LeaderSampleData.PreviousTime = CurrentTime;
                        	
FAnimationRuntime::AdvanceTime(Instance.bLooping, NewDelta, /*inout*/ CurrentTime, NewAnimLength);
                        	
LeaderSampleData.Time = CurrentTime;
NormalizedCurrentTime = NewAnimLength ? (CurrentTime / NewAnimLength) : 0.0f;</pre>
</div></div>

<p>This uses NormalizedCurrentTime (based on the time accumulator of the BS) to calculate the new PreviousTime and Time of the lead sample (Time is set again in ResetBlendSamples).  But this new time bears no relation to the time of the sample on the previous frame when it was a follower and was being updated via the follower branch logic (ie. by UBlendSpace::TickFollowerSamples).  So we can get pops from large jumps forwards, or backwards, in the playback time.</p>

<p>Note that while the intention with this update mode is that it’s used with a motion matching or blendstack node, the layer blending when the BS parameters change only partially hides the issue.</p>]]></description><link>https://issues.unrealengine.com/issue/UE-393854</link><guid isPermaLink="false">UE-393854</guid></item><item><title><![CDATA[All UKismetStringTableLibrary public method visibility unexpectedly changed from public to private.]]></title><link>https://issues.unrealengine.com/issue/UE-393740</link><guid isPermaLink="false">UE-393740</guid></item><item><title><![CDATA[Cannot get Texture Size property from Texture Collections]]></title><description><![CDATA[<p>The following error is shown when attempting to use the Texture Size of a Texture Collection texture object:</p>

<p>Texture size only available for Texture2D, TextureVirtual, Texture2DArray, VolumeTexture and SparseVolumeTexture, not unknown.</p>




<p>This is because Texture Collections that are Bindless mask their texture type with MCT_TextureCollection and FHLSLMaterialTranslator::TextureProperty doesn't take into account that mask, it just checks equality.</p>]]></description><link>https://issues.unrealengine.com/issue/UE-393690</link><guid isPermaLink="false">UE-393690</guid></item><item><title><![CDATA[HasVertexPositionOffsetConnected returns true even if WorldPosition output isn't connect to output]]></title><description><![CDATA[<p><b>FMaterialCachedExpressionData::UpdateForExpressions</b> iterates on all expressions, even for those that are not enabled in a material instance or not even connected to output. This will enable features (such as WPO) that wouldn't be used since the connection may be on a disconnected path, and this can be create performance issues and make it difficult to debug.</p>


<p>This comment in IsGBufferLayoutSupportedForMaterial hints at the confusion: "FMaterialShaderParameters::bHasVertexPositionOffsetConnected means that the material <b>could</b> have WPO".</p>


<p>In other code, the word connected means something else, for example in U*Material::IsPropertyConnected,* it is considered as "is property used and different from the usual default", such as <b>FMaterialResource::IsNonmetal</b> (the connected constant may be a 1 on Metallic pin)</p>]]></description><link>https://issues.unrealengine.com/issue/UE-393669</link><guid isPermaLink="false">UE-393669</guid></item><item><title><![CDATA[MRG - Cinematic Assembly Tokens From Metadata Return Empty When Rendering]]></title><description><![CDATA[<p>Metadata defined on a Cinematic Assembly isn’t accessible as naming tokens when rendering with Movie Render Graph.  Global naming tokens defined outside of a Cinematic Assembly does work but contextual tokens, which would commonly be used to define render output paths, return empty.</p>

<p>This is because Movie Render Graph does not pass the Assembly object as a context object when evaluating “cat” tokens.  This context should always be passed when a user renders a Cinematic Assembly.  There is no need to offer an opt-out because always including the context should be considered expected behavior from the perspective of the CAT feature.</p>]]></description><link>https://issues.unrealengine.com/issue/UE-393590</link><guid isPermaLink="false">UE-393590</guid></item><item><title><![CDATA[Object Mixer shows actors the World Outliner hides (5.8 is incompatible with 5.7-and-earlier behavior)]]></title><description><![CDATA[<p>For the same project and the same filter, Object Mixer returns a different set of actors on 5.8 than it does on 5.7. Actors that the World Outliner hides now appear in the Object Mixer list. Editor tools built on Object Mixer therefore behave differently after upgrading to 5.8.</p>

<p>The World Outliner itself is not affected. This behavior change came from //UE5/Main CL49143080.</p>

<p><b>Conditions</b>:</p>

<p>An Object Mixer filter whose GetObjectClassesToFilter() returns AActor. That is the natural thing to write for a tool that lists every actor in a level.</p>

<p>Both Object Mixer surfaces are affected:</p>

<ul>
	<li>Window &gt; Object Mixer, with the filter ticked in its filter-class menu.</li>
	<li>UObjectMixerEditorUWidget placed in an Editor Utility Widget, with Object Mixer Widget User Config &gt; Default Filter Class set to the filter.</li>
</ul>
]]></description><link>https://issues.unrealengine.com/issue/UE-393494</link><guid isPermaLink="false">UE-393494</guid></item><item><title><![CDATA[MID TextureCollections don't work with Post Process Overlays]]></title><description><![CDATA[<p>TextureCollectionParameters in a material assigned to a Post Process Overlay are not overridden by a MID because  CopyInterpParameters in <b><em>Engine\Source\Runtime\Engine\Private\Materials\MaterialInstanceDynamic.cpp</em></b> is missing the logic to override that type.  Adding the following code fixes this issue:</p>

<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>for (auto&amp; it : Source-&gt;TextureCollectionParameterValues)
{
	SetTextureCollectionParameterValue(it.ParameterInfo.Name, it.ParameterValue);
}</pre>
</div></div>]]></description><link>https://issues.unrealengine.com/issue/UE-393451</link><guid isPermaLink="false">UE-393451</guid></item><item><title><![CDATA[Unable to kill UnrealBuildTool, UBT no longer propegates sigterm]]></title><description><![CDATA[

<p>When UBT is launched through one of the standard wrapper scripts, Ctrl-C no longer cancels the build. The `dotnet UnrealBuildTool.dll` process and its compile actions keep running to completion in the background. UBT prints none of its usual cancellation output, and further Ctrl-C presses have no effect — the process tree has to be killed manually.</p>
]]></description><link>https://issues.unrealengine.com/issue/UE-393319</link><guid isPermaLink="false">UE-393319</guid></item><item><title><![CDATA[VRS Cvar Crash during CollectPSOInitializers when CVarEnableVRS.GetValueOnRenderThread() causes Ensure failure]]></title><description><![CDATA[<p>We are running into an ensure that is triggered when <b>CVarEnableVRS.GetValueOnRenderThread()</b> is called on the game thread from <b>FVariableRateShadingImageManager::IsAttachmentVRSEnabled</b>.</p>

<p>This happens when using Windows Vulkan ES3_1 Renderer, and we do have our own custom integrated code, however none of our code is in involved with the callstack during this crash.</p>

<p>The calls happens when <b>FMobileBasePassMeshProcessor::CollectPSOInitializers</b> is executed, which is why it happens on the game thread.</p>

<p>When checking if this issue has already been addressed in a later changelist, I found that in <b>CL#54496007</b> from Epic's P4 Main stream, <b>FVariableRateShadingImageManager::IsPipelineVRSEnabled</b> also had the same call to CVarEnableVRS.<b>GetValueOnRenderThread</b>(), which was changed to <b>GetValueOnAnyThread</b>. The changelist comment also mentioned that it can be used during PSO precaching. That function is written right before <b>IsAttachmentVRSEnabled</b> and they both reference the same cvar.</p>

<p>Presumably the appropriate fix is to also change <b>FVariableRateShadingImageManager::IsAttachmentVRSEnabled</b> to use <b>GetValueOnAnyThread.</b></p>]]></description><link>https://issues.unrealengine.com/issue/UE-393217</link><guid isPermaLink="false">UE-393217</guid></item><item><title><![CDATA[FCameraShakePreviewer retains world-outered UCameraShakeBase instances indefinitely, fataling CheckForWorldGCLeaks on editor map change]]></title><description><![CDATA[

<p><tt>FCameraShakePreviewer</tt> is an <tt>FGCObject</tt> that strongly references the <tt>UCameraShakeBase</tt> instances it previews, and creates them outered to the previewed <tt>UWorld</tt>. Nothing releases them on world teardown, so after a Sequencer camera-shake trigger fires, the next editor map change leaves the outgoing world and its package alive and <tt>UEditorEngine::CheckForWorldGCLeaks</tt> raises a fatal error.</p>]]></description><link>https://issues.unrealengine.com/issue/UE-393044</link><guid isPermaLink="false">UE-393044</guid></item><item><title><![CDATA[Chaos: geometry collection with One Way Interaction never breaks from its own collisions]]></title><description><![CDATA[<p>A geometry collection with <b>One Way Interaction Level</b> set to 0 never breaks from its own collisions. It falls, lands, and stays intact no matter what it hits. Set the level to -1 (feature off) and change nothing else, and the same collection breaks on impact as expected.</p>

<p>&#8212;</p>

<h2><a name="Whathappens"></a>What happens</h2>

<p>The collection lands and never breaks. It receives zero <tt>OnChaosBreakEvent</tt> callbacks and its root stays unbroken indefinitely. It comes to rest at the same height as an identical non-one-way collection, so the collision is definitely happening — it just produces no damage.</p>

<p>This is independent of what it lands on ie A one-way collection also cannot be broken by another collection dropped onto it.</p>

<p>&#8212;</p>

<h2><a name="Whatshouldhappen"></a>What should happen</h2>

<p>It should break, identically to the control.</p>

<p>One-way interaction is documented as stopping a body from applying forces to non-one-way bodies. It should suppress the damage a one-way body <em>deals</em> to others; it should not suppress the damage it <em>receives</em>, and it should not stop the body breaking itself on impact.</p>

<p>&#8212;</p>

<h2><a name="Whyithappens"></a>Why it happens</h2>

<p><tt>FRigidClustering::ComputeStrainFromCollision</tt> discards every one-way contact before any strain is accumulated — <tt>Chaos/Private/Chaos/PBDRigidClustering.cpp:2240</tt>:</p>

<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-cpp">if (ContactHandle-&gt;GetContact().GetIsOneWayInteraction())
{
    <span class="code-keyword">continue</span>;
}</pre>
</div></div>

<p>The flag it tests is set in <tt>FPBDCollisionConstraint::Setup</tt> — <tt>Chaos/Private/Chaos/Collision/PBDCollisionConstraint.cpp:351</tt>:</p>

<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-cpp">Flags.bIsOneWayInteraction = (bDynamic0 || bDynamic1) &amp;&amp; (bOneWay0 || bOneWay1);</pre>
</div></div>

<p>That is true for <em>any</em> contact where at least one body is dynamic and at least one is one-way. It never asks what the other body is, so it cannot distinguish "one-way damaging a non-one-way body" (which should be suppressed) from "one-way body being damaged by anything at all" (which should not). The <tt>bDynamic</tt> term only excludes static/kinematic-vs-static/kinematic pairs, which carry no impulse anyway. That is why the counterpart type above makes no difference.</p>

<p>With level 0, <tt>FGeometryCollectionPhysicsProxy</tt> marks every particle one-way, cluster root included — <tt>GeometryCollectionPhysicsProxy.cpp:1753</tt>:</p>

<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-cpp"><span class="code-keyword">const</span> <span class="code-keyword"><span class="code-object">bool</span></span> bIsOneWayInteraction = (Parameters.OneWayInteractionLevel &gt;= 0) &amp;&amp; (Level[ParticleIndex] &gt;= Parameters.OneWayInteractionLevel);</pre>
</div></div>

<p>So <tt>CollisionImpulses()</tt> stays at 0 for the whole collection, and the release test in <tt>AdvanceClustering</tt> — <tt>PBDRigidClustering.cpp:1178</tt> — never fires:</p>

<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-cpp"><span class="code-keyword">const</span> FRealSingle MaxAppliedStrain = FMath::Max(Child-&gt;CollisionImpulses(), Child-&gt;GetExternalStrain());
if ((MaxAppliedStrain &gt;= Child-&gt;GetInternalStrains()) || bForceRelease)</pre>
</div></div>

<p>Only the first term is affected — externally applied strain still breaks the collection normally.</p>]]></description><link>https://issues.unrealengine.com/issue/UE-392998</link><guid isPermaLink="false">UE-392998</guid></item><item><title><![CDATA[UCharacterMovementComponent::CapsuleTouched crashes on UGeometryCollectionComponent overlap (unchecked USkinnedMeshComponent cast)]]></title><description><![CDATA[<h2><a name="Summary%3A"></a>Summary:</h2>

<p>Confirmed that this exists in latest as well as 5.8 which is the origin or both tickets. This is a regression from 5.7 - although it looks like the guard was not aiming specifically to catch that.</p>

<ul>
	<li>5.6 / 5.7 — a plain two-line accessor. It returns the reinterpreted bytes, and GetBoneName null-checks the result (SkinnedMeshComponent.cpp:2241), so garbage-reading-null yields NAME_None. The bug is exercised on every overlap and stays latent.</li>
</ul>


<ul>
	<li>5.8 / FN Main — gained a KnownSkinnedAsset cache-validation block under #if WITH_EDITOR. When the two disagree it calls OutdatedKnownSkinnedAssetDetected(), whose ensureMsgf message arguments dereference the garbage via GetFullName(). That<br>
dereference has no null-check equivalent, so the latent bad cast becomes a hard crash.</li>
</ul>


<p><tt>UCharacterMovementComponent::CapsuleTouched</tt> casts the overlapped component to <tt>USkinnedMeshComponent*</tt> with a C-style cast, guarded only by <tt>OtherBodyIndex != INDEX_NONE</tt>.</p>

<p><tt>Engine/Source/Runtime/Engine/Private/Components/CharacterMovementComponent.cpp:11693</tt></p>

<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-cpp">if (OtherComp != <span class="code-keyword">NULL</span> &amp;&amp; OtherComp-&gt;IsAnySimulatingPhysics())
{
    ...
    FName BoneName = NAME_None;
    if (OtherBodyIndex != INDEX_NONE)
    {
        BoneName = ((USkinnedMeshComponent*)OtherComp)-&gt;GetBoneName(OtherBodyIndex);   <span class="code-comment">// line 11713
</span>    }</pre>
</div></div>

<p>A <tt>UGeometryCollectionComponent</tt> is not a <tt>USkinnedMeshComponent</tt>, but it satisfies both guards: it reports <tt>IsAnySimulatingPhysics() == true</tt> while simulating, and it delivers a per-particle <tt>OtherBodyIndex &gt;= 0</tt> rather than <tt>INDEX_NONE</tt>. The cast is therefore taken on an unrelated type and <tt>GetBoneName</tt> reads through a garbage <tt>SkinnedAsset</tt> pointer.</p>

<p><tt>OtherBodyIndex</tt> is only meaningful as a bone index for skinned meshes. For a geometry collection it is a particle/transform index and should not be passed to <tt>GetBoneName</tt> at all.</p>

<h2><a name="Callstack%3A"></a>Call stack:</h2>

<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0x0000000000000012

UCharacterMovementComponent::CapsuleTouched()               CharacterMovementComponent.cpp:11713
USkinnedMeshComponent::GetBoneName()                        SkinnedMeshComponent.cpp:2542
USkinnedMeshComponent::GetSkinnedAsset()                    SkinnedMeshComponent.cpp:2882
USkinnedMeshComponent::OutdatedKnownSkinnedAssetDetected()  SkinnedMeshComponent.cpp:6119
UObjectBaseUtility::GetFullName()                           UObjectBaseUtility.cpp:117</pre>
</div></div>

<p>Reached through the ordinary movement path:</p>

<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>UCharacterMovementComponent::TickComponent()
UCharacterMovementComponent::ControlledCharacterMove()
UCharacterMovementComponent::PerformMovement()
FScopedMovementUpdate::~FScopedMovementUpdate()
USceneComponent::UpdateOverlaps()
UPrimitiveComponent::BeginComponentOverlap()
UCharacterMovementComponent::CapsuleTouched()</pre>
</div></div>]]></description><link>https://issues.unrealengine.com/issue/UE-392989</link><guid isPermaLink="false">UE-392989</guid></item><item><title><![CDATA[Interchange GLTF importer truncates skeletal mesh bone influences to 4 per vertex]]></title><description><![CDATA[<p>cf <a href="https://forums.unrealengine.com/t/interchange-gltf-importer-truncates-skeletal-mesh-bone-influences-to-4-per-vertex/2745391/2" title="smart-link" class="external-link" rel="nofollow noreferrer">https://forums.unrealengine.com/t/interchange-gltf-importer-truncates-skeletal-mesh-bone-influences-to-4-per-vertex/2745391/2</a> </p>



<p><b>Original message</b></p>

<p>The UE5 Interchange GLTF importer appears to truncate skeletal mesh bone influences to a maximum of 4 influences per vertex, even when the source glTF asset contains additional valid JOINTS_n / WEIGHTS_n attribute sets representing more than four influences.</p>

<p>As a result, importing a glTF skeletal mesh through the Interchange GLTF pipeline can produce a skeletal mesh whose skinning data differs from the source asset, with additional bone influences being silently discarded.</p>

<p>Only the first 4 bone influences per vertex are imported. Additional influences present in the source glTF are discarded, resulting in incorrect skinning compared to the original asset.</p>

<p><b>Flavien reply</b></p>

<p>Flavien argue that this is what the spec said but the user said I misread the spec</p>

<p>It is the glTF specification that limits mesh bone influences to 4 per vertex. UE is aligned on the format spec.</p>

<p>Where do you get your glTF from? Are you exporting it from a specific DCC?</p>

<p>[Link Removed] </p>

<p><b>User reply</b></p>

<p>The glTF spec limits each <tt>JOINTS_n</tt> / <tt>WEIGHTS_n</tt> attribute to 4 joints/weights, but it does not necessarily limit a vertex to 4 total influences. Additional influences can be stored in additional attribute sets, for example:</p>

<ul>
	<li><tt>JOINTS_0</tt> / <tt>WEIGHTS_0</tt> → influences 0–3</li>
	<li><tt>JOINTS_1</tt> / <tt>WEIGHTS_1</tt> → influences 4–7</li>
	<li>and so on…</li>
</ul>


<p>The spec explicitly describes this mechanism for vertices influenced by more than four joints.</p>

<p>The asset was exported from Blender 5.2 using its built-in glTF 2.0 exporter.</p>]]></description><link>https://issues.unrealengine.com/issue/UE-392966</link><guid isPermaLink="false">UE-392966</guid></item><item><title><![CDATA[NavMoverComponent ConsumeNavMovementData returns true on any repeat call within the same game frame]]></title><description><![CDATA[<p><tt>UNavMoverComponent::ConsumeNavMovementData</tt> returns <tt>true</tt> on any repeat call<br>
  within the same game frame, even when there is no nav movement to report.<br>
  Callers that trust the return value then act on zeroed input.</p>]]></description><link>https://issues.unrealengine.com/issue/UE-392894</link><guid isPermaLink="false">UE-392894</guid></item><item><title><![CDATA[Enhanced Input Gesture keys (Pinch/Rotate/Flick) never release after touch ends — regression in 5.8]]></title><description><![CDATA[<p><b><ins>POST LINK</ins></b>: <a href="https://forums.unrealengine.com/t/enhanced-input-gesture-keys-pinch-rotate-flick-never-release-after-touch-ends-regression-in-5-8/2745006" class="external-link" rel="nofollow noreferrer">https://forums.unrealengine.com/t/enhanced-input-gesture-keys-pinch-rotate-flick-never-release-after-touch-ends-regression-in-5-8/2745006</a></p>



<p><b><ins>POST BODY</ins></b>:</p>

<ul>
	<li>Summary<br>
An Input Action mapped directly to a Gesture key (e.g. "Pinch", EKeys::Gesture_Pinch)<br>
keeps firing the Triggered event every frame indefinitely after all fingers are lifted<br>
from the screen.</li>
</ul>


<p>Cause:</p>
<ul class="alternate" type="square">
	<li>In 5.8 the gesture keys became analog (FKeyDetails::Axis1D added in InputCoreTypes.cpp,<br>
  ~line 753); in 5.5 they were Gesture-only, so IsAnalog() was false.</li>
	<li>On release, UPlayerInput::InputGesture stores the last (non-zero) value into RawValue<br>
  instead of 0, and gesture keys lack UpdateAxisWithoutSamples, so RawValue never decays.</li>
	<li>UEnhancedPlayerInput's "analog inputs pulse every non-zero tick" rule then treats the<br>
  stuck RawValue as held every frame, so the default Down behavior stays Triggered.</li>
</ul>


<p>Fix (any one):</p>
<ul class="alternate" type="square">
	<li>Zero RawValue on IE_Released in UPlayerInput::InputGesture; or</li>
	<li>Add UpdateAxisWithoutSamples to the gesture keys; or</li>
	<li>Remove Axis1D from the gesture keys (restore 5.5 behavior).</li>
</ul>


<ul>
	<li>What Type of Bug are you experiencing?<br>
Gameplay</li>
</ul>


<ul>
	<li>Steps to Reproduce<br>
1. Input Action IA_Pinch (Axis1D), no Triggers, no Modifiers.<br>
2. Map it to the "Pinch" gesture key in an IMC.<br>
3. Log its Triggered / Completed events.<br>
4. Do a two-finger pinch, then lift all fingers.</li>
</ul>


<ul>
	<li>Expected Result<br>
Triggered stops and Completed fires after release (as in 5.5).</li>
</ul>


<ul>
	<li>Observed Result<br>
Triggered keeps firing every frame forever; Completed never fires.</li>
</ul>


<ul>
	<li>Affects Versions<br>
5.8</li>
</ul>


<ul>
	<li>Platform(s)<br>
Windows</li>
</ul>


<h6><a name="%7B%7DPOSTAUTHOR%7B%7D%3Asharidi"></a><b><ins>POST AUTHOR</ins></b>: shari_di</h6>
<h6><a name="%7B%7DCREATEDAT%7B%7D%3A08%2F19%2F202607%3A43AMEDT"></a><b><ins>CREATED AT</ins></b>: 08/19/2026 07:43 AM EDT</h6>
<h6><a name="%7B%7DUPDATEDAT%7B%7D%3A08%2F20%2F202612%3A34AMEDT"></a><b><ins>UPDATED AT</ins></b>: 08/20/2026 12:34 AM EDT</h6>]]></description><link>https://issues.unrealengine.com/issue/UE-392736</link><guid isPermaLink="false">UE-392736</guid></item></channel></rss>