Unreal Engine 4.19 Released

Ah, thank you. I assumed the use of quoting would be enough to trigger some kind of notification, but let’s hope your method works when editing a post. :slight_smile:

Hello @OverRated_AU

We will be happy to look into if this is a legitimate issue, but you will need to submit this bug through the Bug Submission Form with as much information as you can provide to produce a reproduction. Once it’s in, keep an eye on the Public Bug Tracker to see if the issue is entered after we review it. We will usually try to make the bug have a similar name to your submission.

Thank you. It works!

You can’t :frowning:
Try to decrease resolution though (set vr.PixelDensity < 1).

Folder Favs might be the best update :wink:

It seems the value of the new Motion Source field on MotionControllerComponents is not inherited by children. For example, I have a base Pawn with two motion controller components, one Left and one Right. All pawns inheriting from this pawn default both their motion controllers to Left and I had to manually go through and fix them all, as well as any new child pawns I create.

Thanks for the 4.19 update!

Does the 4.19 engine include the recent updates to AR Kit and AR Core? I’m particularly interested in using AR Kit 1.5’s image recognition ability with blueprints. If this engine doesn’t include the recent AR SDKs can we expect to see them in the near future? Is there a way for me to get the most recent SDKs inside Unreal?

One way is to manually modify GetOrthoProjection in the plugin source

UMotionControllerComponent is messed up now. PlayerIndex and MotionSource are public variables in C++, but if you set them directly nothing works.

From blueprint they have custom setters that do the extra steps needed to register the change with the FMotionDelayService and things work. When a variable has a setter like that and can’t be safely changed without custom logic, it should be private so that callers know to the special method and so that old code won’t compile until it is moved over.

PlayerIndex and MotionSource should both be made private in C++, adding meta=(AllowPrivateAccess=true) to the property specifier so that the blueprint version can still be public to blueprints and go through the special setters.

This broke my code that used PlayerIndex and took a long while to track down.

Edit:

My actual problem seems to be coming from this:



void UMotionControllerComponent::Serialize(FArchive& Ar)
{
    Ar.UsingCustomVersion(FVRObjectVersion::GUID);

    Super::Serialize(Ar);

    if (Ar.CustomVer(FVRObjectVersion::GUID) < FVRObjectVersion::UseFNameInsteadOfEControllerHandForMotionSource)
    {
        LegacyMotionSources::GetSourceNameForHand(Hand_DEPRECATED, MotionSource);
    }
}


When I run things in the debugger, both motion controllers are calling this and then replacing MotionSource (which is correctly set to left and right) with Hand_DEPRECATED, which sets both of them to the left hand even though I had set “Hand” appropriately to left and right enums in my constructor in older engine versions. I looked through the engine ini files and I don’t see any redirector for Hand to Hand_DEPRECATED, could that be the issue? Other properties that get changed to _DEPRECATED seem to have redirectors set up in BaseEngine.ini.

Hi [USER=“36033”] J[/USER] ,

I can’t remember the name of the report , maybe something like “Using Motion Controller In VR will crash engine in 4.19 preview 5”, I just found that you also can’t open Destructible Mesh Editor in 4.19, it will crash the engine instantly. already reported the bug , "Destructible Mesh Editor Crash Engine instantly ", tested in 4.18 destructible Mesh Editor worked fine.

If this is in C++ it seems you have to add two fields in your constructor instead of just changing over to MotionSource alone:



MotionControllerL->MotionSource = FXRMotionControllerBase::LeftHandSourceId;
MotionControllerL->Hand_DEPRECATED = EControllerHand::Left;

MotionControllerR->MotionSource = FXRMotionControllerBase::RightHandSourceId;
MotionControllerR->Hand_DEPRECATED = EControllerHand::Right;


If you don’t add Hand_DEPRECATED, I think when old blueprint derived versions of your class are deserialized the right hand will get defaulted to Left and then does a version check and replaces MotionSource with Left.

And if you don’t set the motion source, once the version check quits triggering after you’ve resaved the blueprint class, it looks like it doesn’t read Hand_DEPRECATED anymore (didn’t test that though).

If you are dealing with blueprints, there also isn’t a “Hand” to “Hand_DEPRECATED” property redirector in place and that may cause issues. Someone mentioned on discord that “_DEPRECATED” properties are automatically picked up and don’t need redirectors, but in BaseEngine.ini there are several _DEPRECATED properties that have explicit redirectors, so I’m not sure about that.

Destructibles was moved to ApexDestruction plugin.

Apple has already published the ARKit image detection, so how long will UE4 support it ?

I think it might be very important to all the AR developers, please !

Bring it into UE4! Thanks !

Hello,

I am not sure this is a bug or just a new change.
I would like to ask something.

Unreal 4.19: “PlayerState - PlayerName” inherited variable is not anymore network replicated?

I understand now we have “Should Update Replicated Ping” in PlayerState Class Defaults, but what about PlayerName?

Thanks!

Hello,

can someone confirm that Material for Viewing Stereo Images is not working with 4.19 ? In 4.18 it was working nice on Gear VR but in 4.19 I see horizontal line and looks like it is not working like stereo.

Thanks!

Very happy for the new release \o/ but looks like double click on a Blueprint node still not open the corresponding C++ file :frowning:
Example here:

Yep Done thanks, I have another issue and its only happening when your playing as an client its fine when playing as the server? this was fine on 4.14 - 4.18.2, but when moving in any direction its shacking/ stuttering on 4.19? i tried a few things and can’t seem to find why and FPS is fine so its not that.

Thanks for the coolest engine!

One trouble :frowning: Engine crashed when setting Landscape’s “Max LODLevel” to 0.

Crash report below.



Assertion failed: LODScreenRatioSquared.IsValidIndex(InSelectedLODIndex) [File:D:\Build\++UE4+Release-4.19+Compile\Sync\Engine\Source\Runtime\Landscape\Private\LandscapeRender.cpp] [Line: 1698]

UE4Editor_Core!FDebug::AssertFailed() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\core\private\misc\assertionmacros.cpp:419]
UE4Editor_Landscape!FLandscapeComponentSceneProxy::CalculateLODFromScreenSize() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\landscape\private\landscaperender.cpp:1522]
UE4Editor_Landscape!FLandscapeComponentSceneProxy::CalculateBatchElementLOD() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\landscape\private\landscaperender.cpp:1626]
UE4Editor_Landscape!FLandscapeComponentSceneProxy::InitViewCustomData() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\landscape\private\landscaperender.cpp:1777]
UE4Editor_Renderer!SetDynamicMeshElementViewCustomData() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\renderer\private\scenevisibility.cpp:2065]
UE4Editor_Renderer!FSceneRenderer::GatherDynamicMeshElements() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\renderer\private\scenevisibility.cpp:2110]
UE4Editor_Renderer!FSceneRenderer::ComputeViewVisibility() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\renderer\private\scenevisibility.cpp:2840]
UE4Editor_Renderer!FDeferredShadingSceneRenderer::InitViews() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\renderer\private\scenevisibility.cpp:3067]
UE4Editor_Renderer!FDeferredShadingSceneRenderer::Render() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\renderer\private\deferredshadingrenderer.cpp:593]
UE4Editor_Renderer!RenderViewFamily_RenderThread() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\renderer\private\scenerendering.cpp:2749]
UE4Editor_Renderer!TGraphTask<`FRendererModule::BeginRenderingViewFamily'::`33'::EURCMacro_FDrawSceneCommand>::ExecuteTask() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\core\public\async	askgraphinterfaces.h:829]
UE4Editor_Core!FNamedTaskThread::ProcessTasksNamedThread() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\core\private\async	askgraph.cpp:665]
UE4Editor_Core!FNamedTaskThread::ProcessTasksUntilQuit() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\core\private\async	askgraph.cpp:574]
UE4Editor_RenderCore!RenderingThreadMain() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\rendercore\private\renderingthread.cpp:331]
UE4Editor_RenderCore!FRenderingThread::Run() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\rendercore\private\renderingthread.cpp:465]
UE4Editor_Core!FRunnableThreadWin::Run() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\core\private\windows\windowsrunnablethread.cpp:76]


Please, fix it! Thanks in advance!
PS: I sent bug report, this is dublicate as a precaution :slight_smile:

I have the same issue, so it seems to be a general problem. I disabled everything else and it is still stuttering, so it is not a performance issue.
Also (as in the post above) playerstate - playername is no longer replicated, how do I enable this?

Is this also happening in a packaged dev/shipping build? Or is it only in the editor?