Files
UnrealEngineUWP/Engine/Plugins/Runtime/SmartObjects/Source/SmartObjectsModule/Public/SmartObjectBlueprintFunctionLibrary.h
yoan stamant 58db30961d [SmartObject] updated the smartobject blueprint library:
- renamed 'K2_SetSmartObjectEnabled' to 'AddOrRemoveSmartObject' since 'Enabled= false' is a concept used when the object is no longer available for queries but active interactions can finish.
- added functions to add to/remove from the simulation all smart objects from a single or a list of actors.
- added functions to enable/disable smart objects on a single or a list of actors.
#jira UE-165689
#rb mikko.mononen
#rb maxime.mercier
#rb patrick.carroll
#preflight 63c6fda33f587d9e1403726c

[CL 23756424 by yoan stamant in ue5-main branch]
2023-01-18 10:52:56 -05:00

129 lines
7.7 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Kismet/BlueprintFunctionLibrary.h"
#include "SmartObjectRuntime.h"
#include "SmartObjectBlueprintFunctionLibrary.generated.h"
struct FBlackboardKeySelector;
struct FGameplayTagContainer;
class UBlackboardComponent;
class AAIController;
class UBTNode;
UCLASS(meta = (ScriptName = "SmartObjectLibrary"))
class SMARTOBJECTSMODULE_API USmartObjectBlueprintFunctionLibrary : public UBlueprintFunctionLibrary
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintCallable, Category = "SmartObject")
static FSmartObjectClaimHandle GetValueAsSOClaimHandle(UBlackboardComponent* BlackboardComponent, const FName& KeyName);
UFUNCTION(BlueprintCallable, Category = "SmartObject")
static void SetValueAsSOClaimHandle(UBlackboardComponent* BlackboardComponent, const FName& KeyName, FSmartObjectClaimHandle Value);
UFUNCTION(BlueprintCallable, Category = "SmartObject")
static bool IsValidSmartObjectClaimHandle(const FSmartObjectClaimHandle Handle) { return Handle.IsValid(); }
/**
* Adds to the simulation all smart objects for an actor or removes them according to 'bAdd'.
* @param SmartObjectActor The actor containing the smart objects to add or remove from the simulation
* @param bAdd Whether the smart objects should be added or removed from the simulation
* @return True if the requested operation succeeded; false otherwise
* @note Removing a smart object from the simulation will interrupt all active interactions. If you simply need
* to make the object unavailable for queries consider using one of the SetSmartObjectEnabled functions so active
* interactions can be gracefully completed.
* @see SetSmartObjectEnabled, SetMultipleSmartObjectsEnabled
*/
UFUNCTION(BlueprintCallable, Category = "SmartObject")
static bool AddOrRemoveSmartObject(UPARAM(DisplayName = "SmartObjectActor") AActor* SmartObject, UPARAM(DisplayName = "bAdd") const bool bEnabled);
/**
* Adds to the simulation all smart objects for multiple actors or removes them according to 'bAdd'.
* @param SmartObjectActors The actors containing the smart objects to add or remove from the simulation
* @param bAdd Whether the smart objects should be added or removed from the simulation
* @return True if all actors were valid and the requested operation succeeded; false otherwise
* @note Removing a smart object from the simulation will interrupt all active interactions. If you simply need
* to make the object unavailable for queries consider using one of the SetSmartObjectEnabled functions so active
* interactions can be gracefully completed.
* @see SetSmartObjectEnabled, SetMultipleSmartObjectsEnabled
*/
UFUNCTION(BlueprintCallable, Category = "SmartObject")
static bool AddOrRemoveMultipleSmartObjects(const TArray<AActor*>& SmartObjectActors, const bool bAdd);
/**
* Adds to the simulation all smart objects for an actor.
* @param SmartObjectActor The actor containing the smart objects to add to the simulation
* @return True if the requested operation succeeded; false otherwise
*/
UFUNCTION(BlueprintCallable, Category = "SmartObject")
static bool AddSmartObject(AActor* SmartObjectActor);
/**
* Adds to the simulation all smart objects for multiple actors.
* @param SmartObjectActors The actors containing the smart objects to add to the simulation
* @return True if the requested operation succeeded; false otherwise
*/
UFUNCTION(BlueprintCallable, Category = "SmartObject")
static bool AddMultipleSmartObjects(const TArray<AActor*>& SmartObjectActors);
/**
* Removes from the simulation all smart objects for an actor.
* @param SmartObjectActor The actor containing the smart objects to add or remove from the simulation
* @return True if the requested operation succeeded; false otherwise
* @note Removing a smart object from the simulation will interrupt all active interactions. If you simply need
* to make the object unavailable for queries consider using one of the SetSmartObjectEnabled functions so active
* interactions can be gracefully completed.
* @see SetSmartObjectEnabled, SetMultipleSmartObjectsEnabled
*/
UFUNCTION(BlueprintCallable, Category = "SmartObject")
static bool RemoveSmartObject(AActor* SmartObjectActor);
/**
* Removes from the simulation all smart objects for multiple actors.
* @param SmartObjectActors The actors containing the smart objects to remove from the simulation
* @return True if the requested operation succeeded; false otherwise
* @note Removing a smart object from the simulation will interrupt all active interactions. If you simply need
* to make the object unavailable for queries consider using one of the SetSmartObjectEnabled functions so active
* interactions can be gracefully completed.
* @see SetSmartObjectEnabled, SetMultipleSmartObjectsEnabled
*/
UFUNCTION(BlueprintCallable, Category = "SmartObject")
static bool RemoveMultipleSmartObjects(const TArray<AActor*>& SmartObjectActors);
/**
* Marks all smart objects for an actor as enabled or not according to 'bEnabled'. A smart object marked as Enabled is available for queries.
* @param SmartObjectActor The actor containing the smart objects to enable/disable
* @param bEnabled Whether the smart objects should be enabled or not
* @return True if the requested operation succeeded; false otherwise
* @note Disabling a smart object will not interrupt active interactions, it will simply
* mark the object unavailable for new queries and broadcast an event that can be handled
* by the interacting agent to complete earlier. If the object should not be consider usable anymore
* and the interactions aborted then consider using one of the Add/RemoveSmartObject functions.
* @see AddOrRemoveSmartObject, AddOrRemoveMultipleSmartObjects, AddSmartObject, AddMultipleSmartObjects, RemoveSmartObject, RemoveMultipleSmartObjects
*/
UFUNCTION(BlueprintCallable, Category = "SmartObject")
static bool SetSmartObjectEnabled(AActor* SmartObjectActor, const bool bEnabled);
/**
* Marks all smart objects for a list of actors as enabled or not according to 'bEnabled'. A smart object marked as Enabled is available for queries.
* @param SmartObjectActors The actors containing the smart objects to enable/disable
* @param bEnabled Whether the smart objects should be in the simulation (added) or not (removed)
* @return True if all actors were valid and the requested operation succeeded; false otherwise
* @note Disabling a smart object will not interrupt active interactions, it will simply
* mark the object unavailable for new queries and broadcast an event that can be handled
* by the interacting agent to complete earlier. If the object should not be consider usable anymore
* and the interactions aborted then consider using one of the Add/RemoveSmartObject functions.
* @see AddOrRemoveSmartObject, AddOrRemoveMultipleSmartObjects, AddSmartObject, AddMultipleSmartObjects, RemoveSmartObject, RemoveMultipleSmartObjects
*/
UFUNCTION(BlueprintCallable, Category = "SmartObject", meta = (DisplayName = "SetMultipleSmartObjectsEnabled"))
static bool SetMultipleSmartObjectsEnabled(const TArray<AActor*>& SmartObjectActors, const bool bEnabled);
UFUNCTION(BlueprintCallable, Category = "AI|BehaviorTree", meta = (HidePin = "NodeOwner", DefaultToSelf = "NodeOwner", DisplayName = "Set Blackboard Value As Smart Object Claim Handle"))
static void SetBlackboardValueAsSOClaimHandle(UBTNode* NodeOwner, const FBlackboardKeySelector& Key, const FSmartObjectClaimHandle& Value);
UFUNCTION(BlueprintPure, Category = "AI|BehaviorTree", meta = (HidePin = "NodeOwner", DefaultToSelf = "NodeOwner", DisplayName = "Get Blackboard Value As Smart Object Claim Handle"))
static FSmartObjectClaimHandle GetBlackboardValueAsSOClaimHandle(UBTNode* NodeOwner, const FBlackboardKeySelector& Key);
};