Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- NavLinkObject.h:
- class UNavLinkDefinition;
- UCLASS()
- class SHOOTERGAME_API ANavLinkObject : public AActor, public INavLinkHostInterface, public INavRelevantInterface
- {
- GENERATED_UCLASS_BODY()
- public:
- /** check if nav link is enabled */
- UFUNCTION(BlueprintCallable, Category = "AI|Navigation")
- bool IsNavLinkEnabled() const;
- /** change state of nav link */
- UFUNCTION(BlueprintCallable, Category = "AI|Navigation")
- void SetNavLinkEnabled(bool bEnabled);
- // BEGIN INavRelevantInterface
- virtual FBox GetNavigationBounds() const;
- // END INavRelevantInterface
- // BEGIN INavLinkHostInterface
- virtual bool GetNavigationLinksClasses(TArray<TSubclassOf<UNavLinkDefinition> >& OutClasses) const override;
- // END INavLinkHostInterface
- /** Nav link: toggle relevancy */
- UPROPERTY(EditAnywhere, Category = NavLink)
- bool bNavLinkIsRelevant;
- #if WITH_EDITOR
- virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
- #endif // WITH_EDITOR
- private:
- UPROPERTY(VisibleAnywhere, Category = NavLink)
- class UNavLinkCustomComponent* NavLinkComp;
- };
- NavLinkObject.cpp
- // Sets default values
- ANavLinkObject::ANavLinkObject(const FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer)
- , bNavLinkIsRelevant(false)
- {
- NavLinkComp = ObjectInitializer.CreateDefaultSubobject<UNavLinkCustomComponent>(this, TEXT("NavLinkObjectComp"));
- NavLinkComp->SetNavigationRelevancy(false);
- }
- bool ANavLinkObject::IsNavLinkEnabled() const
- {
- return NavLinkComp->IsEnabled();
- }
- void ANavLinkObject::SetNavLinkEnabled(bool bEnabled)
- {
- NavLinkComp->SetEnabled(bEnabled);
- }
- FBox ANavLinkObject::GetNavigationBounds() const
- {
- return GetComponentsBoundingBox();
- }
- bool ANavLinkObject::GetNavigationLinksClasses(TArray<TSubclassOf<UNavLinkDefinition> >& OutClasses) const
- {
- return false;
- }
- #if WITH_EDITOR
- void ANavLinkObject::PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent)
- {
- Super::PostEditChangeProperty(PropertyChangedEvent);
- if (PropertyChangedEvent.Property && PropertyChangedEvent.Property->GetFName() == GET_MEMBER_NAME_CHECKED(ANavLinkObject, bNavLinkIsRelevant))
- {
- NavLinkComp->SetNavigationRelevancy(bNavLinkIsRelevant);
- }
- }
- #endif // WITH_EDITOR
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement