2023-01-25 02:42:36 -05:00
|
|
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
2022-08-23 13:04:52 -04:00
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include "StateTreeConditionBase.h"
|
|
|
|
|
#include "StateTreeObjectConditions.generated.h"
|
|
|
|
|
|
|
|
|
|
USTRUCT()
|
|
|
|
|
struct STATETREEMODULE_API FStateTreeObjectIsValidConditionInstanceData
|
|
|
|
|
{
|
|
|
|
|
GENERATED_BODY()
|
|
|
|
|
|
|
|
|
|
UPROPERTY(EditAnywhere, Category = Input)
|
|
|
|
|
TObjectPtr<UObject> Object = nullptr;
|
|
|
|
|
};
|
|
|
|
|
|
2023-01-11 05:08:00 -05:00
|
|
|
/**
|
|
|
|
|
* Condition testing if specified object is valid.
|
|
|
|
|
*/
|
|
|
|
|
USTRUCT(DisplayName = "Object Is Valid", Category = "Object")
|
2022-08-23 13:04:52 -04:00
|
|
|
struct STATETREEMODULE_API FStateTreeObjectIsValidCondition : public FStateTreeConditionCommonBase
|
|
|
|
|
{
|
|
|
|
|
GENERATED_BODY()
|
|
|
|
|
|
2022-09-29 20:26:53 -04:00
|
|
|
using FInstanceDataType = FStateTreeObjectIsValidConditionInstanceData;
|
2022-08-23 13:04:52 -04:00
|
|
|
|
|
|
|
|
FStateTreeObjectIsValidCondition() = default;
|
|
|
|
|
explicit FStateTreeObjectIsValidCondition(const EStateTreeCompare InInverts)
|
|
|
|
|
: bInvert(InInverts == EStateTreeCompare::Invert)
|
|
|
|
|
{}
|
|
|
|
|
|
2022-09-29 20:26:53 -04:00
|
|
|
virtual const UStruct* GetInstanceDataType() const override { return FInstanceDataType::StaticStruct(); }
|
2022-08-23 13:04:52 -04:00
|
|
|
virtual bool TestCondition(FStateTreeExecutionContext& Context) const override;
|
|
|
|
|
|
|
|
|
|
UPROPERTY(EditAnywhere, Category = Parameter)
|
|
|
|
|
bool bInvert = false;
|
|
|
|
|
};
|
|
|
|
|
|
2023-01-11 05:08:00 -05:00
|
|
|
|
2022-08-23 13:04:52 -04:00
|
|
|
USTRUCT()
|
|
|
|
|
struct STATETREEMODULE_API FStateTreeObjectEqualsConditionInstanceData
|
|
|
|
|
{
|
|
|
|
|
GENERATED_BODY()
|
|
|
|
|
|
2023-01-11 05:08:00 -05:00
|
|
|
UPROPERTY(EditAnywhere, Category = "Input")
|
2022-08-23 13:04:52 -04:00
|
|
|
TObjectPtr<UObject> Left = nullptr;
|
|
|
|
|
|
2023-01-11 05:08:00 -05:00
|
|
|
UPROPERTY(EditAnywhere, Category = "Parameter")
|
2022-08-23 13:04:52 -04:00
|
|
|
TObjectPtr<UObject> Right = nullptr;
|
|
|
|
|
};
|
|
|
|
|
|
2023-01-11 05:08:00 -05:00
|
|
|
/**
|
|
|
|
|
* Condition testing if two object pointers point to the same object.
|
|
|
|
|
*/
|
|
|
|
|
USTRUCT(DisplayName = "Object Equals", Category = "Object")
|
2022-08-23 13:04:52 -04:00
|
|
|
struct STATETREEMODULE_API FStateTreeObjectEqualsCondition : public FStateTreeConditionCommonBase
|
|
|
|
|
{
|
|
|
|
|
GENERATED_BODY()
|
|
|
|
|
|
2022-09-29 20:26:53 -04:00
|
|
|
using FInstanceDataType = FStateTreeObjectEqualsConditionInstanceData;
|
2022-08-23 13:04:52 -04:00
|
|
|
|
|
|
|
|
FStateTreeObjectEqualsCondition() = default;
|
|
|
|
|
explicit FStateTreeObjectEqualsCondition(const EStateTreeCompare InInverts)
|
|
|
|
|
: bInvert(InInverts == EStateTreeCompare::Invert)
|
|
|
|
|
{}
|
|
|
|
|
|
2022-09-29 20:26:53 -04:00
|
|
|
virtual const UStruct* GetInstanceDataType() const override { return FInstanceDataType::StaticStruct(); }
|
2022-08-23 13:04:52 -04:00
|
|
|
virtual bool TestCondition(FStateTreeExecutionContext& Context) const override;
|
|
|
|
|
|
2023-01-11 05:08:00 -05:00
|
|
|
UPROPERTY(EditAnywhere, Category = "Parameter")
|
2022-08-23 13:04:52 -04:00
|
|
|
bool bInvert = false;
|
|
|
|
|
};
|
|
|
|
|
|
2023-01-11 05:08:00 -05:00
|
|
|
|
2022-08-23 13:04:52 -04:00
|
|
|
USTRUCT()
|
|
|
|
|
struct STATETREEMODULE_API FStateTreeObjectIsChildOfClassConditionInstanceData
|
|
|
|
|
{
|
|
|
|
|
GENERATED_BODY()
|
|
|
|
|
|
2023-01-11 05:08:00 -05:00
|
|
|
UPROPERTY(EditAnywhere, Category = "Input")
|
2022-08-23 13:04:52 -04:00
|
|
|
TObjectPtr<UObject> Object = nullptr;
|
|
|
|
|
|
2023-01-11 05:08:00 -05:00
|
|
|
UPROPERTY(EditAnywhere, Category = "Parameter")
|
2022-08-23 13:04:52 -04:00
|
|
|
TObjectPtr<UClass> Class = nullptr;
|
|
|
|
|
};
|
|
|
|
|
|
2023-01-11 05:08:00 -05:00
|
|
|
/**
|
|
|
|
|
* Condition testing if object is child of specified class.
|
|
|
|
|
*/
|
|
|
|
|
USTRUCT(DisplayName = "Object Class Is", Category = "Object")
|
2022-08-23 13:04:52 -04:00
|
|
|
struct STATETREEMODULE_API FStateTreeObjectIsChildOfClassCondition : public FStateTreeConditionCommonBase
|
|
|
|
|
{
|
|
|
|
|
GENERATED_BODY()
|
|
|
|
|
|
2022-09-29 20:26:53 -04:00
|
|
|
using FInstanceDataType = FStateTreeObjectIsChildOfClassConditionInstanceData;
|
2022-08-23 13:04:52 -04:00
|
|
|
|
|
|
|
|
FStateTreeObjectIsChildOfClassCondition() = default;
|
|
|
|
|
explicit FStateTreeObjectIsChildOfClassCondition(const EStateTreeCompare InInverts)
|
|
|
|
|
: bInvert(InInverts == EStateTreeCompare::Invert)
|
|
|
|
|
{}
|
|
|
|
|
|
2022-09-29 20:26:53 -04:00
|
|
|
virtual const UStruct* GetInstanceDataType() const override { return FInstanceDataType::StaticStruct(); }
|
2022-08-23 13:04:52 -04:00
|
|
|
virtual bool TestCondition(FStateTreeExecutionContext& Context) const override;
|
|
|
|
|
|
2023-01-11 05:08:00 -05:00
|
|
|
UPROPERTY(EditAnywhere, Category = "Parameter")
|
2022-08-23 13:04:52 -04:00
|
|
|
bool bInvert = false;
|
|
|
|
|
};
|