Advertisement
Guest User

NavLinkObjectUE4

a guest
Apr 13th, 2015
264
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.57 KB | None | 0 0
  1. NavLinkObject.h:
  2.  
  3. class UNavLinkDefinition;
  4.  
  5. UCLASS()
  6. class SHOOTERGAME_API ANavLinkObject : public AActor, public INavLinkHostInterface, public INavRelevantInterface
  7. {
  8. GENERATED_UCLASS_BODY()
  9.  
  10. public:
  11.  
  12. /** check if nav link is enabled */
  13. UFUNCTION(BlueprintCallable, Category = "AI|Navigation")
  14. bool IsNavLinkEnabled() const;
  15.  
  16. /** change state of nav link */
  17. UFUNCTION(BlueprintCallable, Category = "AI|Navigation")
  18. void SetNavLinkEnabled(bool bEnabled);
  19.  
  20. // BEGIN INavRelevantInterface
  21. virtual FBox GetNavigationBounds() const;
  22. // END INavRelevantInterface
  23.  
  24. // BEGIN INavLinkHostInterface
  25. virtual bool GetNavigationLinksClasses(TArray<TSubclassOf<UNavLinkDefinition> >& OutClasses) const override;
  26. // END INavLinkHostInterface
  27.  
  28. /** Nav link: toggle relevancy */
  29. UPROPERTY(EditAnywhere, Category = NavLink)
  30. bool bNavLinkIsRelevant;
  31.  
  32. #if WITH_EDITOR
  33. virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
  34. #endif // WITH_EDITOR
  35.  
  36. private:
  37. UPROPERTY(VisibleAnywhere, Category = NavLink)
  38. class UNavLinkCustomComponent* NavLinkComp;
  39.  
  40. };
  41.  
  42.  
  43. NavLinkObject.cpp
  44.  
  45. // Sets default values
  46. ANavLinkObject::ANavLinkObject(const FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer)
  47. , bNavLinkIsRelevant(false)
  48. {
  49. NavLinkComp = ObjectInitializer.CreateDefaultSubobject<UNavLinkCustomComponent>(this, TEXT("NavLinkObjectComp"));
  50. NavLinkComp->SetNavigationRelevancy(false);
  51. }
  52.  
  53. bool ANavLinkObject::IsNavLinkEnabled() const
  54. {
  55. return NavLinkComp->IsEnabled();
  56. }
  57.  
  58. void ANavLinkObject::SetNavLinkEnabled(bool bEnabled)
  59. {
  60. NavLinkComp->SetEnabled(bEnabled);
  61. }
  62.  
  63. FBox ANavLinkObject::GetNavigationBounds() const
  64. {
  65. return GetComponentsBoundingBox();
  66. }
  67.  
  68. bool ANavLinkObject::GetNavigationLinksClasses(TArray<TSubclassOf<UNavLinkDefinition> >& OutClasses) const
  69. {
  70. return false;
  71. }
  72.  
  73. #if WITH_EDITOR
  74. void ANavLinkObject::PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent)
  75. {
  76. Super::PostEditChangeProperty(PropertyChangedEvent);
  77.  
  78. if (PropertyChangedEvent.Property && PropertyChangedEvent.Property->GetFName() == GET_MEMBER_NAME_CHECKED(ANavLinkObject, bNavLinkIsRelevant))
  79. {
  80. NavLinkComp->SetNavigationRelevancy(bNavLinkIsRelevant);
  81. }
  82. }
  83. #endif // WITH_EDITOR
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement