Nav Link Proxy SmartLink functionality doesn't work

In 4.8 previews 3 and 4 NavLinkProxy objects’ SmartLink properties don’t work. Neither link nor box obstacle are created when placed and Smart Link Is Relevant checked. Breakpoints in UNavLinkCustomComponent::GetNavigationData() are never hit, though component does register and unregister. NavLinkProxy’s simple links all appear to behave correctly, though, and NavModifier volumes also work

Hi ,

Can you show me a screenshot or video of what you are seeing on my end. We have several users reporting errors with nav links and I’d like to see if issues are same.

Here’s nav link with simple links and smart link turned on

Here’s same link with simple links deleted

Here’s a quick video of me messing around with settings, switching stuff on and off, with only SimpleLinks actually having any kind of effect

http://screencast.com/t/kJyB6zQ8

In all of these nav link smart link arrow isn’t visible, and no nav obstacle is created. Internally in code in order to get these to show up I added checks for smart links in following functions:

bool ANavLinkProxy::IsNavigationRelevant() const
{
	return (PointLinks.Num() > 0) || (SegmentLinks.Num() > 0) || bSmartLinkIsRelevant;  //Relevant if smart link is relevant
}


void ANavLinkProxy::GetNavigationData(FNavigationRelevantData& Data) const
{
	NavigationHelper::ProcessNavLinkAndAppend(&Data.Modifiers, this, PointLinks);
	NavigationHelper::ProcessNavLinkSegmentAndAppend(&Data.Modifiers, this, SegmentLinks);

	if (SmartLinkComp && bSmartLinkIsRelevant)
		SmartLinkComp->GetNavigationData(Data);  //Update nav with obstructions and smart links
}

I also updated PostEditChangeProperty function as follows:

	if (CategoryName == TEXT("SimpleLink") || MemberCategoryName == TEXT("SimpleLink") || bSmartLinkIsRelevant)
	{
		UNavigationSystem* NavSys = UNavigationSystem::GetCurrent(GetWorld());
		if (NavSys)
		{
			NavSys->UpdateNavOctree(this);
		}
	}

With those updates links work, but I don’t remember having to do that in 4.7

Yep, same issues. Attached an empty project from 4.8 launched from EpicGamesLauncher rather than from VS debugger

link text

edit: to clarify above, code edits I did were not present when I took screenshots and video. With code edits nav link proxy behaves like it does in 4.7

Does this occur in a blank project with no additional content?

Unfortunately I haven’t been able to reproduce effects of your video on my end. Do you have any other steps I can take to reproduce this on my end?

I don’t have any other repro steps apart from run Epic Games Launcher, choose 4.8.0 preview 4, and create an empty project. Here’s a video showing just that, with confirmation that Nav Modifier Volumes work where Nav Link Proxy obstacle volumes do not

http://screencast.com/t/GKkZ6gFL

Hi ,

I will continue to try to reproduce this, as it clearly is occurring in video. However I haven’t found any reproduction steps on my side that seem to work. What operating system are you using?

We’re using Windows 8.1 Pro here

Hi ,

I haven’t been able to reproduce this on my end. Can you list step by step exact steps you are taking that cause this to occur in project you posted here?

I can, but I’m just going to be narrating video. steps used to produce project are same in both. I just got officially released 4.8.0 version through launcher, did exact same things in video, and nav link proxy’s Smart Link and Box Obstacle still don’t work.

  1. Get latest release

  2. Start new project.

  3. Put Nav Mesh Bounds Volume into world on platform.

  4. Increase nav mesh bounds volume’s brush extents to make sure whole area is covered in nav mesh. Putting 5000 into X Y and Z fields is a quick and easy way to do this.

  5. Hit P to enable nav display.

  6. Place a NavLinkProxy into nav mesh.

  7. In nav mesh link’s properties check Smart Link is Relevant box to enable Smart Link abilities.

  8. Become concerned when nothing happens.

  9. Wiggle Nav Link Proxy to attempt to force nav mesh to rebuild.

  10. Become more concerned when nav rebuilds but there is no change with Nav Link Proxy.

  11. Check Create Box Obstacle box to create a nav obstacle around Nav Link Proxy.

  12. Repeat steps 8-10.

Following these steps in 4.7.6 diverges at step 7 when Smart Link’s arrows appear, and then when checking Create Box Obstacle box creates an obstruction area that removes nav mesh around proxy. Here’s a 4.7.6 vs 4.8.0 video showing same steps in different versions of engine, with 4.7.6 working correctly and 4.8.0 not.

http://screencast.com/t/QYLAxVQx9SUf

Additionally, here’s both of projects created while recording that video

link text

Hi ,

Ok I see what you are talking about now, I apologize for previous confusion! This is a known issue and is in our system as UE-16448.

cool, thanks!

Ported my project to 4.8 and found this bug too. My nav links don’t work, so 4.8.0 is unusable for me.

Same here, 4.8 makes my project not work as intended because of smart links not working.

Hi ,

I’ve bumped community interest section of this bug report to better reflect how many developers are currently affected by this.

I am sure that important (actually, I just hope) bug like this one (I think Mieszko understand how important it is) will be in first or second hotfix. This one is not like “add it to bugtracker, track community interest and maybe we can look on that for 4.9” :slight_smile:

That’s entirely up to developers. We’ll update this post when we see a fix come through.

I have a partial fix I’ve found that may indicate where deeper problem is. I had output window up, which I’m totally doing more often now, and noticed I kept getting a message early on when level loaded up saying “SmartLinkComponent could not be added to octree because parent (PositionComponent) is not in nav octree.” My super quick fix was to implement GetNavigationParent() in NavLinkCustomComponent and have it always return nullptr. This forces it to always be added into nav tree and voila, my links were working again, obstruction areas and all.

One caveat to this fix though is that it only works on cooked builds with nav mesh in different sublevels if Rebuild At Runtime is enabled. This is due to a separate issue that was reported a bit ago. In PIE mode though, or with all nav mesh and links in main level, it appeared to work all time. YMMV

Anyway, that’s partially fixed that major problem for us, just posting here in case it helps anyone else.

UObject* UNavLinkCustomComponent::GetNavigationParent() const
{
	return nullptr;  //Returning null so that we add this component directly into  nav tree
}

Hey, are there any updates on a fix for this?

We’re really hoping that this will be looked at and fixed soon since it’s severely impacting our project in key areas at moment, and in case that there’s no fix on horizon then we’ll be forced to look at some pretty drastic workarounds and compromises very soon (which we’re really hoping won’t be case)