void UNavLinkCustomComponent::SetDisabledArea(TSubclassOf<UNavArea> AreaClass) { DisabledAreaClass = AreaClass; if (IsNavigationRelevant() && !bLinkEnabled && GetWorld() != nullptr ) { UNavigationSystem* NavSys = GetWorld()->GetNavigationSystem(); NavSys->UpdateCustomLink(this); } }
void UNavLinkCustomComponent::SetEnabledArea(TSubclassOf<class UNavArea> AreaClass) { EnabledAreaClass = AreaClass; if (IsNavigationRelevant() && bLinkEnabled) { UNavigationSystem* NavSys = GetWorld()->GetNavigationSystem(); NavSys->UpdateCustomLink(this); } }
void USmartNavLinkComponent::SetDisabledArea(TSubclassOf<class UNavArea> AreaClass) { DisabledAreaClass = AreaClass; if (IsNavigationRelevant() && !bLinkEnabled) { UNavigationSystem* NavSys = GetWorld()->GetNavigationSystem(); NavSys->UpdateSmartLink(this); } }
void UPrimitiveComponent::OnComponentCollisionSettingsChanged() { if (!IsTemplate() && IsRegistered()) // not for CDOs { // changing collision settings could affect touching status, need to update UpdateOverlaps(); // update navigation data if needed const bool bNewNavRelevant = IsNavigationRelevant(); if (bNavigationRelevant != bNewNavRelevant) { bNavigationRelevant = bNewNavRelevant; UNavigationSystem::UpdateNavOctree(this); } } }
void ANavLinkProxy::PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) { Super::PostEditChangeProperty(PropertyChangedEvent); if (PropertyChangedEvent.Property && PropertyChangedEvent.Property->GetFName() == GET_MEMBER_NAME_CHECKED(ANavLinkProxy,bSmartLinkIsRelevant)) { SmartLinkComp->SetNavigationRelevancy(bSmartLinkIsRelevant); } UpdateNavigationRelevancy(); if (PropertyChangedEvent.Property && IsNavigationRelevant() && GetWorld() && GetWorld()->GetNavigationSystem()) { const FName CategoryName = FObjectEditorUtils::GetCategoryFName(PropertyChangedEvent.Property); if (CategoryName == TEXT("SimpleLink") || CategoryName == TEXT("SmartLink") || CategoryName == TEXT("Obstacle")) { GetWorld()->GetNavigationSystem()->UpdateNavOctree(this); } } }