#pragma once #include "CoreMinimal.h" #include "Components/ActorComponent.h" #include "GameplayTagContainer.h" #include "GameplayTagAssetInterface.h" #include "GameplayTagContainer.h" #include "SmartObjectID.h" #include "SmartObjectComponent.generated.h" class USmartObjectConfig; UCLASS(Blueprintable, ClassGroup=Custom, Config=Game, meta=(BlueprintSpawnableComponent)) class SMARTOBJECTSMODULE_API USmartObjectComponent : public UActorComponent, public IGameplayTagAssetInterface { GENERATED_BODY() public: protected: UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) TSoftObjectPtr Config; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FSmartObjectID RegisteredID; UPROPERTY(AdvancedDisplay, EditAnywhere, meta=(AllowPrivateAccess=true)) uint32 ExecutionPriorityOverride; UPROPERTY(AdvancedDisplay, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) TScriptInterface GameplayTagAssetInterfaceImplementation; UPROPERTY(AdvancedDisplay, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) uint8 bRichSmartObjectOwner: 1; UPROPERTY(AdvancedDisplay, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) uint8 bRichSmartObjectComponent: 1; public: USmartObjectComponent(); // Fix for true pure virtual functions not being implemented UFUNCTION(BlueprintCallable) bool HasMatchingGameplayTag(FGameplayTag TagToCheck) const override PURE_VIRTUAL(HasMatchingGameplayTag, return false;); UFUNCTION(BlueprintCallable) bool HasAnyMatchingGameplayTags(const FGameplayTagContainer& TagContainer) const override PURE_VIRTUAL(HasAnyMatchingGameplayTags, return false;); UFUNCTION(BlueprintCallable) bool HasAllMatchingGameplayTags(const FGameplayTagContainer& TagContainer) const override PURE_VIRTUAL(HasAllMatchingGameplayTags, return false;); UFUNCTION(BlueprintCallable) void GetOwnedGameplayTags(FGameplayTagContainer& TagContainer) const override PURE_VIRTUAL(GetOwnedGameplayTags,); };