Files
UnrealEngineUWP/Engine/Plugins/Runtime/StateTree/Source/StateTreeModule/Public/Conditions/StateTreeObjectConditions.h
mikko mononen 2a196bac7c StateTree:
- Changed existing conditions to use the simpler instance data getter
- Added UObject based conditions
- Renamed condition file for consistency

#rb Mieszko.Zielinski
#preflight 6304879ca45b007ea268d917

[CL 21512046 by mikko mononen in ue5-main branch]
2022-08-23 13:04:52 -04:00

107 lines
3.1 KiB
C

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "UObject/Object.h"
#include "StateTreeConditionBase.h"
#include "StateTreeObjectConditions.generated.h"
/**
* Condition testing if specified object is valid.
*/
USTRUCT()
struct STATETREEMODULE_API FStateTreeObjectIsValidConditionInstanceData
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, Category = Input)
TObjectPtr<UObject> Object = nullptr;
};
USTRUCT(DisplayName="Object Is Valid")
struct STATETREEMODULE_API FStateTreeObjectIsValidCondition : public FStateTreeConditionCommonBase
{
GENERATED_BODY()
typedef FStateTreeObjectIsValidConditionInstanceData InstanceDataType;
FStateTreeObjectIsValidCondition() = default;
explicit FStateTreeObjectIsValidCondition(const EStateTreeCompare InInverts)
: bInvert(InInverts == EStateTreeCompare::Invert)
{}
virtual const UStruct* GetInstanceDataType() const override { return InstanceDataType::StaticStruct(); }
virtual bool TestCondition(FStateTreeExecutionContext& Context) const override;
UPROPERTY(EditAnywhere, Category = Parameter)
bool bInvert = false;
};
/**
* Condition testing if two object pointers point to the same object.
*/
USTRUCT()
struct STATETREEMODULE_API FStateTreeObjectEqualsConditionInstanceData
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, Category = Input)
TObjectPtr<UObject> Left = nullptr;
UPROPERTY(EditAnywhere, Category = Parameter)
TObjectPtr<UObject> Right = nullptr;
};
USTRUCT(DisplayName="Object Equals")
struct STATETREEMODULE_API FStateTreeObjectEqualsCondition : public FStateTreeConditionCommonBase
{
GENERATED_BODY()
typedef FStateTreeObjectEqualsConditionInstanceData InstanceDataType;
FStateTreeObjectEqualsCondition() = default;
explicit FStateTreeObjectEqualsCondition(const EStateTreeCompare InInverts)
: bInvert(InInverts == EStateTreeCompare::Invert)
{}
virtual const UStruct* GetInstanceDataType() const override { return InstanceDataType::StaticStruct(); }
virtual bool TestCondition(FStateTreeExecutionContext& Context) const override;
UPROPERTY(EditAnywhere, Category = Parameter)
bool bInvert = false;
};
/**
* Condition testing if object is child of specified class.
*/
USTRUCT()
struct STATETREEMODULE_API FStateTreeObjectIsChildOfClassConditionInstanceData
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, Category = Input)
TObjectPtr<UObject> Object = nullptr;
UPROPERTY(EditAnywhere, Category = Parameter)
TObjectPtr<UClass> Class = nullptr;
};
USTRUCT(DisplayName="Object Class Is")
struct STATETREEMODULE_API FStateTreeObjectIsChildOfClassCondition : public FStateTreeConditionCommonBase
{
GENERATED_BODY()
typedef FStateTreeObjectIsChildOfClassConditionInstanceData InstanceDataType;
FStateTreeObjectIsChildOfClassCondition() = default;
explicit FStateTreeObjectIsChildOfClassCondition(const EStateTreeCompare InInverts)
: bInvert(InInverts == EStateTreeCompare::Invert)
{}
virtual const UStruct* GetInstanceDataType() const override { return InstanceDataType::StaticStruct(); }
virtual bool TestCondition(FStateTreeExecutionContext& Context) const override;
UPROPERTY(EditAnywhere, Category = Parameter)
bool bInvert = false;
};